Never been to CodeSnippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world (or not, you can keep them private!)

About this user

jvscode [[at]] fastmail [[dot]] fm

2 total

ANSI terminal color chart

1.
#!/bin/bash
#
#   This file echoes a bunch of color codes to the 
#   terminal to demonstrate what's available.  Each 
#   line is the color code of one forground color,
#   out of 17 (default + 16 escapes), followed by a 
#   test use of that color on all nine background 
#   colors (default + 8 escapes).
#
#   Author: Giles Orr
#   URL: http://gilesorr.com/bashprompt/howto/c350.html
#   License: GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation;
#            http://gilesorr.com/bashprompt/howto/a1004.html


T='gYw'   # The test text

echo -e "\n                 40m     41m     42m     43m\
     44m     45m     46m     47m";

for FGs in '    m' '   1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' \
           '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' \
           '  36m' '1;36m' '  37m' '1;37m';
  do FG=${FGs// /}
  echo -en " $FGs \033[$FG  $T  "
  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
    do echo -en "$EINS \033[$FG\033[$BG  $T  \033[0m";
  done
  echo;
done
echo

2.
#!/bin/sh
#
#  colors v1.03
#
#  A simple shell script to output an ANSI terminal color chart.
#  It may be useful when trying to customize your ANSI terminal
#  color scheme!
#
#  Written and placed in the public domain by Ian Abbott <ian@abbott.org>
#
#  ANSI terminal color chart generator
#  Author: Ian Abbott
#  License: BSD License, http://www.opensource.org/licenses/bsd-license.php
#  URL: http://www.snippetcenter.org/de/ansi-terminal-color-chart-generator-s1346.aspx

for h in 0 1; do
  echo -e "\\033[0;${h}m\\c"
  case $h in
  0) echo -e "Normal\\c" ;;
  1) echo -e "High\\c" ;;
  esac
  echo -e " intensity foreground (background color in parentheses)\\033[m"
  for f in 0 1 2 3 4 5 6 7; do
    for b in 0 1 2 3 4 5 6 7 8; do
      echo -e "\\033[${h};3${f}\\c"
      if [ $b -lt 8 ]; then
        echo -e ";4${b}m\\c"
      else
        echo -e "m\\c"
      fi
      case $f in
      0) echo -e " BLACK \\c" ;;
      1) echo -e "  RED  \\c" ;;
      2) echo -e " GREEN \\c" ;;
      3) echo -e " YELLOW\\c" ;;
      4) echo -e "  BLUE \\c" ;;
      5) echo -e "MAGENTA\\c" ;;
      6) echo -e "  CYAN \\c" ;;
      7) echo -e " WHITE \\c" ;;
      esac
      case $b in
      8) echo -e "\\033[m" ;;
      *) echo -e " \\033[m \\c" ;;
      esac
    done
  done
  echo -e "\\033[${h}m\\c"
  for b in 0 1 2 3 4 5 6 7 8; do
    case $b in
    0) echo -e "(black)  \\c" ;;
    1) echo -e " (red)   \\c" ;;
    2) echo -e "(green)  \\c" ;;
    3) echo -e "(yellow) \\c" ;;
    4) echo -e " (blue)  \\c" ;;
    5) echo -e "(magenta)\\c" ;;
    6) echo -e " (cyan)  \\c" ;;
    7) echo -e "(white)  \\c" ;;
    8) echo -e " (none)\\c" ;;
    esac
  done
  echo -e "\\033[m\\n"
done

Terminal window commands

# Inspired by: 
# - Re-size and Move with Escape Sequences, http://www.osxfaq.com/tips/unix-tricks/week99/monday.ws
# - Define Aliases and Functions, http://www.osxfaq.com/tips/unix-tricks/week99/tuesday.ws
# - Focus and Dock with Escape Sequences, http://www.osxfaq.com/Tips/unix-tricks/week99/wednesday.ws
# Author: Adrian Mayo, http://101.1dot1.com and http://www.peachpit.com/title/0321374118
# also see: http://en.wikipedia.org/wiki/ANSI_escape_code

function title() { if [[ $# -eq 1 && -n "$@" ]]; then printf "\e]0;${@}\a"; fi; return 0; }  
function title() { if [[ -n "$@" ]]; then printf "\033]0;${1}\007"; fi; return 0; }
function docktw() { printf "\e[2t"; return 0; }
function docktw() { printf "\e[2t"; sleep 5; printf "\e[5t"; return 0; }
function bgtw() { printf "\e[6t"; return 0; }
function bgtw() { printf "\e[6t"; sleep 5; printf "\e[5t"; return 0; }    # background the Terminal window

title 'Hello, world!'
docktw
bgtw


# positive integer test (including zero)
function positive_int() { return $(test "$@" -eq "$@" > /dev/null 2>&1 && test "$@" -ge 0 > /dev/null 2>&1); }

# move the Terminal window
function mvtw() { 
   if [[ $# -eq 2 ]] && $(positive_int "$1") && $(positive_int "$2"); then 
      printf "\e[3;${1};${2};t"
      return 0
   fi
   return 1
}


# resize the Terminal window
function sizetw() { 
   if [[ $# -eq 2 ]] && $(positive_int "$1") && $(positive_int "$2"); then 
      printf "\e[8;${1};${2};t"
      /usr/bin/clear
      return 0
   fi
   return 1
}


# full screen
function fscreen() { printf "\e[3;0;0;t\e[8;0;0t"; /usr/bin/clear; return 0; }

# default screen
function dscreen() { printf "\e[8;35;150;t"; printf "\e[3;300;240;t"; /usr/bin/clear; return 0; }

# max columns
function maxc() { printf "\e[3;0;0;t\e[8;50;0t"; /usr/bin/clear; return 0; }

# max rows
function maxr() { printf "\e[3;0;0;t\e[8;0;100t"; /usr/bin/clear; return 0; }

# show number of lines & columns
function lc() { printf "lines: $(/usr/bin/tput lines)\ncolums: $(/usr/bin/tput cols)\n"; return 0; }

# move cursor
function mvc() { 
   if [[ $# -eq 2 ]] && $(positive_int "$1") && $(positive_int "$2"); then 
      /usr/bin/tput cup "$1" "$2"
      /usr/bin/tput el  # clear to end of line
      #/usr/bin/tput ed
      return 0
   fi
   return 1

}


# wrap lines according to the number of columns of the Terminal window
function wraptw() { 
   declare str var=$(/usr/bin/tput cols)
   if [[ -s /dev/stdin ]]; then str="$(</dev/stdin)"; else str="$@"; fi 
   printf "%s\n" "$str" | /usr/bin/fmt -w $var
   #printf "%s\n" "$str" | /usr/bin/fold -w $(/usr/bin/tput cols)
   return 0
}


long_line="$(/usr/bin/jot -b 'This is a test sentence!' 100 | /usr/bin/tr '\n' ' ')"
printf "%s\n" "$long_line" | wraptw

lc
mvtw 0 0
mvtw 0 300
mvtw 300 300
mvtw 80 140
fscreen
dscreen
maxc
maxr

lc
sizetw 0 0
sizetw 0 50
sizetw 1 50
sizetw 50 50
sizetw 50 500
sizetw 50 150

mvc 2 45
mvc 100 23
mvc 99 3

dscreen


#-----------------------------------------------------


# customize the Terminal window's title bar text

# show the current date as title bar text
declare -x PROMPT_COMMAND='printf "\e]0; $(/bin/date)\a"'   
declare -x PROMPT_COMMAND='printf "\e]0;$(/bin/date "+%a %b %e   %H:%M:%S ")\a"'
declare -x PROMPT_COMMAND='printf "\e]0;$(/bin/date "+%Y-%m-%d   %H:%M:%S ")\a"'

# show current working directory 
declare -x PROMPT_COMMAND='printf "\e]0;$(/bin/pwd) \a"'
declare -x PROMPT_COMMAND='printf "\e]0;$(/bin/pwd | /usr/bin/tr -d "[[:cntrl:]]") \a"'

# show OLDPWD 
declare -x PROMPT_COMMAND='printf "\e]0;$(printf %s "$OLDPWD") \a"'
declare -x PROMPT_COMMAND='printf "\e]0;$(printf %s "$OLDPWD" | /usr/bin/cut -c 1-100) \a"'

export -p | grep -i PROMPT_COMMAND
env | grep -i PROMPT_COMMAND
unset -v PROMPT_COMMAND


# first create environment variable TITLE 
# cf. Prompt Commands, http://www.osxfaq.com/Tips/unix-tricks/week71/wednesday.ws
# Author: Adrian Mayo, http://101.1dot1.com and http://www.peachpit.com/title/0321374118

unset -v TITLE PROMPT_COMMAND
declare -x TITLE="Terminal"
declare -x PROMPT_COMMAND='printf "\e]0;${TITLE}\a"'

# message as title bar text
function message_title() { 
   if [[ $# -eq 1 && -n "$@" ]]; then 
      #TITLE="$@"
      TITLE="$(printf %s "$@" | /usr/bin/cut -c 1-100)"
   fi
   return 0
}

export -f message_title
export -p | grep -i message_title
env | grep -i message_title
#unset -f message_title 

message_title 'Hello, world!'


# show OS information in title bar
function osinfo() { 
   x1="$(/usr/bin/sw_vers -productName)"
   x2="$(/usr/bin/sw_vers -productVersion)"
   x3="$(/usr/bin/sw_vers -buildVersion)"
   x4="$(/usr/bin/arch)"
   TITLE="${x1} - ${x2} - ${x3} - ${x4}"
   return 0
}

export -f osinfo
osinfo


function eval_title() { 
   if [[ -n "$(printf %s "$@") | /usr/bin/egrep '^date|whoami|logname|uname|machine|pwd|hostname$'" ]]; then 
      cmd_output="$(eval "$@")"
      TITLE="$cmd_output"
   fi
   return 0
}
export -f eval_title

eval_title "date"
eval_title "whoami"
eval_title "logname"
eval_title "uname"
eval_title "machine"
eval_title "pwd"
eval_title "hostname"


function date_title() { TITLE="$(/bin/date "+%Y-%m-%d")"; return 0; }
export -f date_title
date_title

function logname_title() { TITLE="$(/usr/bin/logname)"; return 0; }
export -f logname_title
logname_title


# show last command in title bar
help fc
unset -v TITLE PROMPT_COMMAND
declare -x PROMPT_COMMAND='printf %b "\e]0;$(fc -ln | tail -n 1 | cut -c 2-150 | tr -d "\\")\a"'


# show current command in title bar
help history
unset -v TITLE PROMPT_COMMAND
declare -x PROMPT_COMMAND='printf %b "\e]0;$(history 1 | /usr/bin/cut -c 8-150 | tr -d "\\")\a"'
declare -x PROMPT_COMMAND='printf %b "\e]0;$(history 1 | sed -E "s/^[[:space:]]*[[:digit:]]+[[:space:]]+(.*)$/\\1/" | cut -c 1-150 | tr -d "\\")\a"'


#-----------------------------------------------------


# increase font size
function ifont() { 
/usr/bin/osascript <<__END__
    tell application "System Events" to tell process "Terminal" to keystroke "+" using command down
__END__
  return 0 
}

ifont


# decrease font size
function dfont() { 
/usr/bin/osascript <<__END__
    tell application "System Events" to tell process "Terminal" to keystroke "-" using command down
__END__
  return 0 
}

dfont


# hide all Terminal windows
function hideall() { 
   /usr/bin/osascript -e 'tell application "System Events" to set visible of some item of ( get processes whose name = "Terminal" ) to false'
   return 0
}

hideall


# create a new Terminal window and cd to the same current working directory
# cf. http://justinfrench.com/index.php?id=231

unset -f newin

function newin() {
   /bin/pwd | /usr/bin/pbcopy
   /usr/bin/open -a Terminal
   /usr/bin/osascript -e 'tell application "Terminal" to do script with command "cd \"$(/usr/bin/pbpaste)\"; echo \" \" | /usr/bin/pbcopy; /usr/bin/clear"'
   return 0 
}

cd ~/Desktop
newin
2 total