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!)

Terminal window commands (See related posts)

# 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

You need to create an account or log in to post comments to this site.