# autocomplete ssh hosts configured in ~/.ssh/config _ssh() { local cur prev opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" opts=$(grep '^Host' ~/.ssh/config | grep -v '[?*]' | cut -d ' ' -f 2-) COMPREPLY=( $(compgen -W "$opts" -- ${cur}) ) return 0 } complete -F _ssh ssh complete -F _ssh scp complete -F _ssh ssh-copy-id function showcolors256() { local row col blockrow blockcol red green blue local showcolor=_showcolor256_${1:-bg} local white="\033[1;37m" local reset="\033[0m" echo -e "Set foreground color: \\\\033[38;5;${white}NNN${reset}m" echo -e "Set background color: \\\\033[48;5;${white}NNN${reset}m" echo -e "Reset color & style: \\\\033[0m" echo echo 16 standard color codes: for row in {0..1}; do for col in {0..7}; do $showcolor $(( row*8 + col )) $row done echo done echo echo 6·6·6 RGB color codes: for blockrow in {0..2}; do for red in {0..5}; do for blockcol in {0..1}; do green=$(( blockrow*2 + blockcol )) for blue in {0..5}; do $showcolor $(( red*36 + green*6 + blue + 16 )) $green done echo -n " " done echo done echo done echo 24 grayscale color codes: for row in {0..1}; do for col in {0..11}; do $showcolor $(( row*12 + col + 232 )) $row done echo done echo } function _showcolor256_fg() { local code=$( printf %03d $1 ) echo -ne "\033[38;5;${code}m" echo -nE " $code " echo -ne "\033[0m" } function _showcolor256_bg() { if (( $2 % 2 == 0 )); then echo -ne "\033[1;37m" else echo -ne "\033[0;30m" fi local code=$( printf %03d $1 ) echo -ne "\033[48;5;${code}m" echo -nE " $code " echo -ne "\033[0m" }