Skip to content

Instantly share code, notes, and snippets.

@espenfjo
Created February 18, 2014 14:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save espenfjo/9071780 to your computer and use it in GitHub Desktop.
Save espenfjo/9071780 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
_scs_col="\e[0;32m";
_wrn_col='\e[1;31m';
_trn_col='\e[0;33m'
# Check that xclip is installed.
platform=$(uname)
if [[ "${platform}" == Linux ]]; then
tardown="tar cJf - --exclude-vcs --exclude=blib --exclude=spec"
elif [[ "${platform}" == Darwin ]]; then
tardown="gtar cJf - --exclude-vcs --exclude=blib --exclude=spec"
fi
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
if [[ -d $* || -f $* ]]; then
input=$(${tardown} $* | base64 -w0)
else
echo "$_wrn_col""No such file or directory: ${*}\e[0m"
exit 1
fi
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 "echo -n $input | base64 -d | tar xvJf -" | xclip -selection c
# Truncate text for status
if [ ${#input} -gt 80 ]; then input="$(echo $* | cut -c1-80)$_trn_col...\e[0m"; fi
# Print status.
echo -e "$_scs_col""Copied to clipboard:\e[0m $*"
fi
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment