コマンドラインでのクリップボードの操作(linux)

1416 ワード

cb() {
    local _scs_col="\e[0;32m"; local _wrn_col='\e[1;31m'; local _trn_col='\e[0;33m'
    # Check that xclip is installed.
    if ! type xclip > /dev/null 2>&1; then
	echo -e "$_wrn_col""You must have the 'xclip' program installed.\e[0m"
	# Check user is not root (root doesn't have access to user xorg server)
    elif [[ "$USER" == "root" ]]; then
	echo -e "$_wrn_col""Must be regular user (not root) to copy a file to the clipboard.\e[0m"
    else
	# If no tty, data should be available on stdin
	if ! [[ "$( tty )" == /dev/* ]]; then
	    input="$(< /dev/stdin)"
	    # Else, fetch input from params
	else
	    input="$*"
	fi
	if [ -z "$input" ]; then  # If no input, print usage message.
	    echo "Copies a string to the clipboard."
	    echo "Usage: cb <string>"
	    echo "       echo <string> | cb"
	else
	    # Copy input to clipboard
	    echo -n "$input" | xclip -selection c
	    # Truncate text for status
	    if [ ${#input} -gt 80 ]; then input="$(echo $input | cut -c1-80)$_trn_col...\e[0m"; fi
	    # Print status.
	    echo -e "$_scs_col""Copied to clipboard:\e[0m $input"
	fi
    fi
    input=""
}

使用方法:
alias cpwd="pwd | cb"