To apply changes from this article to your .bashrc (without ending subshells), do:
$ source ~/.bashrc oder $ . .bashrc
Or, if you want, you can build your prompt using the ✓ unicode symbol for a zero status and the ✗ unicode symbol for a nonzero status:
0 ✓ andy@alba ~ $ true
0 ✓ andy@alba ~ $ false
1 ✗ andy@alba ~ $ I will try to type a wrong command…
bash: I will try to type a wrong command…: command not found
127 ✗ andy@alba ~ $ _
#return value visualisation PS1="[�33[01;37m]$? $(if [[ $? == 0 ]]; then echo “[�33[01;32m]342234223”; else echo “[�33[01;31m]342234227”; fi) $(if [[ ${EUID} == 0 ]]; then echo ‘[�33[01;31m]h’; else echo ‘[�33[01;32m]u@h’; fi)[�33[01;34m] w $[�33[00m] "
Alternatively, this can be made more readable with PROMPT_COMMAND:
set_prompt () { Last_Command=$? # Must come first! Blue='[e[01;34m]' White='[e[01;37m]' Red='[e[01;31m]' Green='[e[01;32m]' Reset='[e[00m]' FancyX=‘342234227’ Checkmark=‘342234223’
PS1="$White$? "
# If it was successful, print a green check mark. Otherwise, print
# a red X.
if \[\[ $Last\_Command == 0 \]\]; then
PS1+="$Green$Checkmark "
else
PS1+="$Red$FancyX "
fi
# If root, just print the host in red. Otherwise, print the current user
# and host in green.
if \[\[ $EUID == 0 \]\]; then
PS1+="$Red\\h "
else
PS1+="$Green\\u@\\h "
fi
# Print the working directory and prompt marker in blue, and reset
# the text color to the default.
PS1+="$Blue\\w \\$$Reset "
} PROMPT_COMMAND=‘set_prompt’
Here’s an alternative that only includes the error status, if non-zero:
PROMPT_COMMAND=‘es=$?; [[ $es -eq 0 ]] && unset error || error=$(echo -e “e[1;41m $es e[40m”)’ PS1="${error} ${PS1}"
If you do not reset the text color at the end of your prompt, both the text you enter and the console text will simply stay in that color. If you want to edit text in a special color but still use the default color for command output, you will need to reset the color after you press Enter, but still before any commands get run. You can do this by installing a DEBUG trap, like this:
~/.bashrc trap ‘echo -ne “e[0m”’ DEBUG
For a brown Fortune prompt, add:
~/.bashrc [[ “$PS1” ]] && echo -e “e[00;33m$(/usr/bin/fortune)e[00m”
~/.bashrc
if [ “$PS1” ] && [[ $(ping -c1 www.google.com 2>&-) ]]; then
echo -e “$(echo $(curl –silent https://www.archlinux.org/feeds/news/ | sed -e ‘:a;N;$!ba;s/n/ /g’) | sed -e ’s/&/&/g s/<|</</g s/>|>/>/g s//£/g s/href="/§/g s//\n\n\n :: \e[01;31m/g; s//\e[00m ::\n/g s// [ \e[01;36m/g; s//\e[00m ]/g s//\n\n\e[00;37m/g; s//\e[00m\n\n/g s/<p( [^>]*)?>|<brs*/?>/n/g s/<b( [^>]*)?>|<strong( [^>]*)?>/\e[01;30m/g; s/|/\e[00;37m/g s/<i( [^>]*)?>|<em( [^>]*)?>/\e[41;37m/g; s/|/\e[00;37m/g s/<u( [^>]*)?>/\e[4;37m/g; s//\e[00;37m/g s/<code( [^>]*)?>/\e[00m/g; s//\e[00;37m/g s/<a[^§|t]*§([^"]*)"[^>]*>([^£]*)[^£]*£/\e[01;31m2\e[00;37m \e[01;34m[\e[00;37m \e[04m1\e[00;37m\e[01;34m ]\e[00;37m/g s/<li( [^>]*)?>/n \e[01;34m*\e[00;37m /g s/<![CDATA[|]]>//g s/|>s*<//g s/ *<[^>]+> */ /g s/[<>£§]//g')nn”; fi
To only get the absolute latest item, use this:
# Arch latest news if [ “$PS1” ] && [[ $(ping -c1 www.google.com 2>&-) ]]; then
echo -e “$(echo $(curl –silent https://www.archlinux.org/feeds/news/ | awk ' NR == 1 {while ($0 !~ //) {print;getline} sub(/.*/,"") ;print}' | sed -e ‘:a;N;$!ba;s/n/ /g’) | sed -e ’s/&/&/g s/<|</</g s/>|>/>/g s//£/g s/href="/§/g s//\n\n\n :: \e[01;31m/g; s//\e[00m ::\n/g s// [ \e[01;36m/g; s//\e[00m ]/g s//\n\n\e[00;37m/g; s//\e[00m\n\n/g s/<p( [^>]*)?>|<brs*/?>/n/g s/<b( [^>]*)?>|<strong( [^>]*)?>/\e[01;30m/g; s/|/\e[00;37m/g s/<i( [^>]*)?>|<em( [^>]*)?>/\e[41;37m/g; s/|/\e[00;37m/g s/<u( [^>]*)?>/\e[4;37m/g; s//\e[00;37m/g s/<code( [^>]*)?>/\e[00m/g; s//\e[00;37m/g s/<a[^§|t]*§([^"]*)"[^>]*>([^£]*)[^£]*£/\e[01;31m2\e[00;37m \e[01;34m[\e[00;37m \e[04m1\e[00;37m\e[01;34m ]\e[00;37m/g s/<li( [^>]*)?>/n \e[01;34m*\e[00;37m /g s/<![CDATA[|]]>//g s/|>s*<//g s/ *<[^>]+> */ /g s/[<>£§]//g')nn”; fi
The page at ascii-table.com describes the various available color escapes. The following Bash function displays a table with ready-to-copy escape codes.
~/.bashrc colors() { local fgc bgc vals seq0 printf “Color escapes are %sn” ‘e[${value};…;${value}m’ printf “Values 30..37 are e[33mforeground colorse[mn” printf “Values 40..47 are e[43mbackground colorse[mn” printf “Value 1 gives a e[1mbold-faced looke[mnn”
for fgc in {30..37}; do
for bgc in {40..47}; do fgc=${fgc#37} # white bgc=${bgc#40} # black vals="${fgc:+$fgc;}${bgc}" vals=${vals%%;} seq0="${vals:+e[${vals}m}" printf " %-9s" “${seq0:-(default)}” printf " ${seq0}TEXTe[m" printf " e[${vals:+${vals+$vals;}}1mBOLDe[m" done echo; echo done }
Der Texteditor vi auf der Konsole, der in keinem LINUX/UNIX fehlt, ist in den modernen Linuxsystemen auf einen wesentlich leistungsfähigeren Nachfolger vim oder einen Klon davon, gelinkt. Dieser Editor kann unter Anderem auch Syntax Highlighting" für eine Vielzahl von Dateitypen. Im Verzeichnis /usr/share/vim/current/syntax/ stehen die Syntaxkonfigurationsfiles. Anhand der Endung (prefix) der zu editierenden Datei erkennt vim welche Syntax für diesen Dateitype zu benutzen ist. Selbstverständlich kann man auch seine eigenen Syntax-Konfigurationsfiles entwerfen und einsetzen und auch die Farben anpassen. Siehe dazu vimdoc.sourceforge.net
permanent durch Eintrag in der Vim-Konfigurationsdatei ~/.vimrc
anlegen der Datei bzw. erweitern dieser Datei und folgenden Eintrag vornehmen
syntax on
bei Bedarf durch Zeilenoption beim Start von vi
# vi +“syn on” file.prefix
bei Bedarf während der Sitzung im Kommandomodus
hier kann während der Sitzung dieser Modus nach Belieben Ein- und Ausgeschaltet werden
:syntax on
Analog Ausschalten
:syntax off
So I’ve found the following cool Bash prompt:

..with the very basic logic of:
PS1="[�33[01;37m]$? $(if [[ $? == 0 ]];
then echo "[�33[01;32m]342234223";
else echo "[�33[01;31m]342234227"; fi) $(if [[ ${EUID} == 0 ]];
then echo '[�33[01;31m]h'; else echo '[�33[01;32m]u@h'; fi)[�33[01;34m] w $[�33[00m] "
However, this is not very basic and happens to be an incredible mess. I’d like to make it more readable.
Use PROMPT_COMMAND to build the value up in a sane fashion. This saves a lot of quoting and makes the text much more readable. Note that you can use e instead of �33 to represent the escape character inside a prompt.
set_prompt () {
local last_command=$? # Must come first!
PS1=""
# Add a bright white exit status for the last command
PS1+='[e[01;37m]$? '
# If it was successful, print a green check mark. Otherwise, print
# a red X.
if [[ $last_command == 0 ]]; then
PS1+='[e[01;32m]342234223 '
else
PS1+='[e[01;31m]342234227 '
fi
# If root, just print the host in red. Otherwise, print the current user
# and host in green.
# in
if [[ $EUID == 0 ]]; then
PS1+='[e[01;31m]h '
else
PS1+='[e[01;32m]u@h '
fi
# Print the working directory and prompt marker in blue, and reset
# the text color to the default.
PS1+='[e[01;34m] w $[e[00m] '
}
PROMPT_COMMAND='set_prompt'
You can define variables for the more esoteric escape sequences, at the cost of needing some extra escapes inside the double quotes, to accommodate parameter expansion.
set_prompt () {
local last_command=$? # Must come first!
PS1=""
local blue='[e[01;34m]'
local white='[e[01;37m]'
local red='[e[01;31m]'
local green='[e[01;32m]'
local reset='[e[00m]'
local fancyX='342234227'
local checkmark='342234223'
# =============================================================== #
#+ Here is the place to define your aliases, functions and #+ other interactive features like your prompt.
#+ system (most likely a Linux box) and is often based on code #+ found on Usenet or Internet.
#+ (white on black), and this is usually also suited for pure text-mode #+ consoles (no X server available). If you use a white background, #+ you’ll have to do some other choices for readability.
[ -z “$PS1” ] && return #————————————————————-
#————————————————————- if [ -f /etc/bashrc ]; then . /etc/bashrc # –> Read /etc/bashrc, if present. fi #————————————————————–
#+ different answers to ‘who am i’ (rxvt in particular can be #+ troublesome) - however this code seems to work in a majority #+ of cases. #————————————————————– function get_xserver () { case $TERM in xterm ) XSERVER=$(who am i | awk ‘{print $NF}’ | tr -d ‘)''(’ )
XSERVER=${XSERVER%%:*} ;; aterm | rxvt)
;; esac } if [ -z ${DISPLAY:=""} ]; then get_xserver if [[ -z ${XSERVER} || ${XSERVER} == $(hostname) || ${XSERVER} == “unix” ]]; then DISPLAY=":0.0" # Display on local host. else DISPLAY=${XSERVER}:0.0 # Display on remote host. fi fi export DISPLAY #————————————————————-
#————————————————————- #set -o nounset # These two options are useful for debugging. #set -o xtrace alias debug=“set -o nounset; set -o xtrace” ulimit -S -c 0 # Don’t want coredumps. set -o notify set -o noclobber set -o ignoreeof
shopt -s cdspell shopt -s cdable_vars shopt -s checkhash shopt -s checkwinsize shopt -s sourcepath shopt -s no_empty_cmd_completion shopt -s cmdhist shopt -s histappend histreedit histverify shopt -s extglob # Necessary for programmable completion.
shopt -u mailwarn unset MAILCHECK # Don’t want my shell to warn me of incoming mail. #————————————————————-
#————————————————————-
Black=‘e[0;30m’ # Black Red=‘e[0;31m’ # Red Green=‘e[0;32m’ # Green Yellow=‘e[0;33m’ # Yellow Blue=‘e[0;34m’ # Blue Purple=‘e[0;35m’ # Purple Cyan=‘e[0;36m’ # Cyan White=‘e[0;37m’ # White
BBlack=‘e[1;30m’ # Black BRed=‘e[1;31m’ # Red BGreen=‘e[1;32m’ # Green BYellow=‘e[1;33m’ # Yellow BBlue=‘e[1;34m’ # Blue BPurple=‘e[1;35m’ # Purple BCyan=‘e[1;36m’ # Cyan BWhite=‘e[1;37m’ # White
On_Black=‘e[40m’ # Black On_Red=‘e[41m’ # Red On_Green=‘e[42m’ # Green On_Yellow=‘e[43m’ # Yellow On_Blue=‘e[44m’ # Blue On_Purple=‘e[45m’ # Purple On_Cyan=‘e[46m’ # Cyan On_White=‘e[47m’ # White NC=“e[m” # Color Reset ALERT=${BWhite}${On_Red} # Bold White on red background echo -e “${BCyan}This is BASH ${BRed}${BASH_VERSION%.*}${BCyan}
#————————————————————-
if [ -n “${SSH_CONNECTION}” ]; then CNX=${Green} # Connected on remote machine, via ssh (good). elif [[ “${DISPLAY%%:0*}” != "" ]]; then CNX=${ALERT} # Connected on remote machine, not via ssh (bad). else CNX=${BCyan} # Connected on local machine. fi
if [[ ${USER} == “root” ]]; then SU=${Red} # User is root. elif [[ ${USER} != $(logname) ]]; then SU=${BRed} # User is not login user. else SU=${BCyan} # User is normal (well … most of us are). fi NCPU=$(grep -c ‘processor’ /proc/cpuinfo) # Number of CPUs SLOAD=$(( 100*${NCPU} )) # Small load MLOAD=$(( 200*${NCPU} )) # Medium load XLOAD=$(( 400*${NCPU} )) # Xlarge load
function load() { local SYSLOAD=$(cut -d " " -f1 /proc/loadavg | tr -d ‘.')
echo $((10#$SYSLOAD)) # Convert to decimal. }
function load_color() { local SYSLOAD=$(load) if [ ${SYSLOAD} -gt ${XLOAD} ]; then echo -en ${ALERT} elif [ ${SYSLOAD} -gt ${MLOAD} ]; then echo -en ${Red} elif [ ${SYSLOAD} -gt ${SLOAD} ]; then echo -en ${BRed} else echo -en ${Green} fi }
function disk_color() { if [ ! -w “${PWD}” ] ; then echo -en ${Red}
elif [ -s “${PWD}” ] ; then local used=$(command df -P “$PWD” | awk ‘END {print $5} {sub(/%/,"")}') if [ ${used} -gt 95 ]; then echo -en ${ALERT} # Disk almost full (>95%). elif [ ${used} -gt 90 ]; then echo -en ${BRed} # Free disk space almost gone. else echo -en ${Green} # Free disk space is ok. fi else echo -en ${Cyan}
fi }
function job_color() { if [ $(jobs -s | wc -l) -gt “0” ]; then echo -en ${BRed} elif [ $(jobs -r | wc -l) -gt “0” ] ; then echo -en ${BCyan} fi }
PROMPT_COMMAND=“history -a” case ${TERM} in *term | rxvt | linux) PS1="[$(load_color)][A[${NC}] "
PS1="[$(load_color)][A[${NC}] "
PS1=${PS1}"[${SU}]u[${NC}]@[${CNX}]h[${NC}] "
PS1=${PS1}"[$(disk_color)]W][${NC}] "
PS1=${PS1}"[$(job_color)]>[${NC}] "
PS1=${PS1}"[e]0;[u@h] wa]" ;; *) PS1="(A u@h W) > " # –> PS1="(A u@h w) > "
;; esac export TIMEFORMAT=$‘nreal %3Rtuser %3Utsys %3Stpcpu %Pn’ export HISTIGNORE="&:bg:fg:ll:h" export HISTTIMEFORMAT="$(echo -e ${BCyan})[%d/%m %H:%M:%S]$(echo -e ${NC}) " export HISTCONTROL=ignoredups export HOSTFILE=$HOME/.hosts # Put a list of remote hosts in ~/.hosts #============================================================
#+ be converted into scripts and removed from here.
#============================================================ #——————-
#——————- alias rm=‘rm -i’ alias cp=‘cp -i’ alias mv=‘mv -i’
alias mkdir=‘mkdir -p’ alias h=‘history’ alias j=‘jobs -l’ alias which=‘type -a’ alias ..=‘cd ..’
alias path=‘echo -e ${PATH//:/\n}’ alias libpath=‘echo -e ${LD_LIBRARY_PATH//:/\n}’ alias du=‘du -kh’ # Makes a more readable output. alias df=‘df -kTh’ #————————————————————-
#————————————————————-
alias ls=‘ls -h –color’ alias lx=‘ls -lXB’ # Sort by extension. alias lk=‘ls -lSr’ # Sort by size, biggest last. alias lt=‘ls -ltr’ # Sort by date, most recent last. alias lc=‘ls -ltcr’ # Sort by/show change time,most recent last. alias lu=‘ls -ltur’ # Sort by/show access time,most recent last.
alias ll=“ls -lv –group-directories-first” alias lm=’ll |more’ # Pipe through ‘more’ alias lr=’ll -R' # Recursive ls. alias la=’ll -A' # Show hidden files. alias tree=‘tree -Csuh’ # Nice alternative to ‘recursive ls’ … #————————————————————-
#————————————————————- alias more=‘less’ export PAGER=less export LESSCHARSET=‘latin1’ export LESSOPEN='|/usr/bin/lesspipe.sh %s 2>&-'
export LESS='-i -N -w -z-4 -g -e -M -X -F -R -P%t?f%f :stdin .?pb%pb%:?lbLine %lb:?bbByte %bb:-…'
export LESS_TERMCAP_mb=$‘E[01;31m’ export LESS_TERMCAP_md=$‘E[01;31m’ export LESS_TERMCAP_me=$‘E[0m’ export LESS_TERMCAP_se=$‘E[0m’ export LESS_TERMCAP_so=$‘E[01;44;33m’ export LESS_TERMCAP_ue=$‘E[0m’ export LESS_TERMCAP_us=$‘E[01;32m’ #————————————————————-
#————————————————————- alias xs=‘cd’ alias vf=‘cd’ alias moer=‘more’ alias moew=‘more’ alias kk=’ll' #————————————————————-
#————————————————————-
function xtitle() { case “$TERM” in *term* | rxvt) echo -en “e]0;$*a” ;; *) ;; esac }
alias top=‘xtitle Processes on $HOST && top’ alias make=‘xtitle Making $(basename $PWD) ; make’
function man() { for i ; do xtitle The $(basename $1|tr -d .[:digit:]) manual command man -a “$i” done } #————————————————————-
#————————————————————- function te() # wrapper around xemacs/gnuserv { if [ “$(gnuclient -batch -eval t 2>&-)” == “t” ]; then gnuclient -q “$@"; else ( xemacs “$@” &); fi } function soffice() { command soffice “$@” & } function firefox() { command firefox “$@” & } function xpdf() { command xpdf “$@” & } #————————————————————-
#————————————————————-
function ff() { find . -type f -iname ‘*'"$*"'*’ -ls ; }
function fe() { find . -type f -iname ‘*'"${1:-}"'*’ -exec ${2:-file} {} ; ; }
#+ (needs a recent version of egrep). function fstr() { OPTIND=1 local mycase=”" local usage=“fstr: find string in files. Usage: fstr [-i] “pattern” [“filename pattern”] " while getopts :it opt do case “$opt” in i) mycase="-i " ;; *) echo “$usage”; return ;; esac done shift $(( $OPTIND - 1 )) if [ “$#” -lt 1 ]; then echo “$usage” return; fi find . -type f -name “${2:-*}” -print0 | xargs -0 egrep –color=always -sn ${case} “$1” 2>&- | more } function swap() { # Swap 2 filenames around, if they exist (from Uzi’s bashrc). local TMPFILE=tmp.$$ [ $# -ne 2 ] && echo “swap: 2 arguments needed” && return 1 [ ! -e $1 ] && echo “swap: $1 does not exist” && return 1 [ ! -e $2 ] && echo “swap: $2 does not exist” && return 1 mv “$1” $TMPFILE mv “$2” “$1” mv $TMPFILE “$2” } function extract() # Handy Extract Program { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xvjf $1 ;; *.tar.gz) tar xvzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xvf $1 ;; *.tbz2) tar xvjf $1 ;; *.tgz) tar xvzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; *) echo “'$1' cannot be extracted via >extract<” ;; esac else echo “'$1' is not a valid file!” fi }
function maketar() { tar cvzf “${1%%/}.tar.gz” “${1%%/}/"; }
function makezip() { zip -r “${1%%/}.zip” “$1” ; }
function sanitize() { chmod -R u=rwX,g=rX,o= “$@” ;} #————————————————————-
#————————————————————- function my_ps() { ps $@ -u $USER -o pid,%cpu,%mem,bsdtime,command ; } function pp() { my_ps f | awk ‘!/awk/ && $0~var’ var=${1:-”.*"} ; }
function killps() # kill by process name { local pid pname sig="-TERM” # default signal if [ “$#” -lt 1 ] || [ “$#” -gt 2 ]; then echo “Usage: killps [-SIGNAL] pattern” return; fi if [ $# = 2 ]; then sig=$1 ; fi for pid in $(my_ps| awk ‘!/awk/ && $0~pat { print $1 }’ pat=${!#} ) do pname=$(my_ps | awk ‘$1~var { print $5 }’ var=$pid ) if ask “Kill process $pid <$pname> with signal $sig?” then kill $sig $pid fi done } function mydf() # Pretty-print of ‘df’ output. { # Inspired by ‘dfc’ utility. for fs ; do if [ ! -d $fs ] then echo -e $fs" :No such file or directory" ; continue fi local info=( $(command df -P $fs | awk ‘END{ print $2,$3,$5 }') ) local free=( $(command df -Pkh $fs | awk ‘END{ print $4 }') ) local nbstars=$(( 20 * ${info[1]} / ${info[0]} )) local out="[" for ((j=0;j<20;j++)); do if [ ${j} -lt ${nbstars} ]; then out=$out"*" else out=$out"-" fi done out=${info[2]}" “$out”] ("$free" free on “$fs”)" echo -e $out done } function my_ip() # Get IP adress on ethernet. { MY_IP=$(/sbin/ifconfig eth0 | awk ‘/inet/ { print $2 } ' | sed -e s/addr://) echo ${MY_IP:-“Not connected”} } function ii() # Get current host related info. { echo -e “nYou are logged on ${BRed}$HOST” echo -e “n${BRed}Additionnal information:$NC " ; uname -a echo -e “n${BRed}Users logged on:$NC " ; w -hs | cut -d " " -f1 | sort | uniq echo -e “n${BRed}Current date :$NC " ; date echo -e “n${BRed}Machine stats :$NC " ; uptime echo -e “n${BRed}Memory stats :$NC " ; free echo -e “n${BRed}Diskspace :$NC " ; mydf / $HOME echo -e “n${BRed}Local IP Address :$NC” ; my_ip echo -e “n${BRed}Open connections :$NC “; netstat -pan –inet; echo } #————————————————————-
#————————————————————- function repeat() # Repeat n times command. { local i max max=$1; shift; for ((i=1; i <= max ; i++)); do # –> C-like syntax eval “$@"; done } function ask() # See ‘killps’ for example of use. { echo -n “$@” ‘[y/n] ' ; read ans case “$ans” in y*|Y*) return 0 ;; *) return 1 ;; esac } function corename() # Get name of app that created a corefile. { for file ; do echo -n $file : ; gdb –core=$file –batch | head -1 done } #=========================================================================
#========================================================================= if [ “${BASH_VERSION%.*}” < “3.0” ]; then echo “You will need to upgrade to version 3.0 for full programmable completion features” return fi shopt -s extglob # Necessary. complete -A hostname rsh rcp telnet rlogin ftp ping disk complete -A export printenv complete -A variable export local readonly unset complete -A enabled builtin complete -A alias alias unalias complete -A function function complete -A user su mail finger complete -A helptopic help # Currently same as builtins. complete -A shopt shopt complete -A stopped -P ‘%’ bg complete -A job -P ‘%’ fg jobs disown complete -A directory mkdir rmdir complete -A directory -o default cd
complete -f -o default -X ‘*.+(zip|ZIP)’ zip complete -f -o default -X ‘!*.+(zip|ZIP)’ unzip complete -f -o default -X ‘*.+(z|Z)’ compress complete -f -o default -X ‘!*.+(z|Z)’ uncompress complete -f -o default -X ‘*.+(gz|GZ)’ gzip complete -f -o default -X ‘!*.+(gz|GZ)’ gunzip complete -f -o default -X ‘*.+(bz2|BZ2)’ bzip2 complete -f -o default -X ‘!*.+(bz2|BZ2)’ bunzip2 complete -f -o default -X ‘!*.+(zip|ZIP|z|Z|gz|GZ|bz2|BZ2)’ extract
complete -f -o default -X ‘!*.+(ps|PS)’ gs ghostview ps2pdf ps2ascii complete -f -o default -X ‘!*.+(dvi|DVI)’ dvips dvipdf xdvi dviselect dvitype complete -f -o default -X ‘!*.+(pdf|PDF)’ acroread pdf2ps complete -f -o default -X ‘!*.@(@(?(e)ps|?(E)PS|pdf|PDF)? (.gz|.GZ|.bz2|.BZ2|.Z))’ gv ggv complete -f -o default -X ‘!*.texi*’ makeinfo texi2dvi texi2html texi2pdf complete -f -o default -X ‘!*.tex’ tex latex slitex complete -f -o default -X ‘!*.lyx’ lyx complete -f -o default -X ‘!*.+(htm*|HTM*)’ lynx html2ps complete -f -o default -X ‘!*.+(doc|DOC|xls|XLS|ppt|PPT|sx?|SX?|csv|CSV|od?|OD?|ott|OTT)’ soffice
complete -f -o default -X ‘!*.+(gif|GIF|jp*g|JP*G|bmp|BMP|xpm|XPM|png|PNG)’ xv gimp ee gqview complete -f -o default -X ‘!*.+(mp3|MP3)’ mpg123 mpg321 complete -f -o default -X ‘!*.+(ogg|OGG)’ ogg123 complete -f -o default -X ‘!*.@(mp[23]|MP[23]|ogg|OGG|wav|WAV|pls| m3u|xm|mod|s[3t]m|it|mtm|ult|flac)’ xmms complete -f -o default -X ‘!*.@(mp?(e)g|MP?(E)G|wma|avi|AVI| asf|vob|VOB|bin|dat|vcd|ps|pes|fli|viv|rm|ram|yuv|mov|MOV|qt| QT|wmv|mp3|MP3|ogg|OGG|ogm|OGM|mp4|MP4|wav|WAV|asx|ASX)’ xine complete -f -o default -X ‘!*.pl’ perl perl5
#+ a so-called ‘long options’ mode , ie: ‘ls –all’ instead of ‘ls -a’
#+ (try the commented-out version if not available).
#+ (this will allow completions like ‘ls –color=auto’ to work correctly). COMP_WORDBREAKS=${COMP_WORDBREAKS/=/} _get_longopts() { #$1 –help | sed -e ‘/–/!d’ -e ’s/.*–([^[:space:].,]*).*/–1/'| #grep ^"$2” |sort -u ; $1 –help | grep -o -e “–[^[:space:].,]*” | grep -e “$2” |sort -u } _longopts() { local cur cur=${COMP_WORDS[COMP_CWORD]} case “${cur:-*}” in -*) ;; *) return ;; esac case “$1” in ~*) eval cmd="$1” ;; *) cmd="$1” ;; esac COMPREPLY=( $(_get_longopts ${1} ${cur} ) ) } complete -o default -F _longopts configure bash complete -o default -F _longopts wget id info a2ps ls recode _tar() { local cur ext regex tar untar COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]}
case “$cur” in -*) COMPREPLY=( $(_get_longopts $1 $cur ) ); return 0;; esac if [ $COMP_CWORD -eq 1 ]; then COMPREPLY=( $( compgen -W ‘c t x u r d A’ – $cur ) ) return 0 fi case “${COMP_WORDS[1]}” in ?(-)c*f) COMPREPLY=( $( compgen -f $cur ) ) return 0 ;; +([^Izjy])f) ext=‘tar’ regex=$ext ;; *z*f) ext=‘tar.gz’ regex=’t(ar.)(gz|Z)’ ;; *[Ijy]*f) ext=’t?(ar.)bz?(2)’ regex=’t(ar.)bz2?’ ;; *) COMPREPLY=( $( compgen -f $cur ) ) return 0 ;; esac if [[ “$COMP_LINE” == tar*.$ext’ ‘* ]]; then
tar=$( echo “$COMP_LINE” | sed -e ’s|^.* ([^ ]*'$regex’) .*$|1|' )
untar=t${COMP_WORDS[1]//[^Izjyf]/} COMPREPLY=( $( compgen -W “$( echo $( tar $untar $tar 2>/dev/null ) )” – “$cur” ) ) return 0 else
COMPREPLY=( $( compgen -G $cur*.$ext ) ) fi return 0 } complete -F _tar -o default tar _make() { local mdef makef makef_dir=”.” makef_inc gcmd cur prev i; COMPREPLY=(); cur=${COMP_WORDS[COMP_CWORD]}; prev=${COMP_WORDS[COMP_CWORD-1]}; case “$prev” in -*f) COMPREPLY=($(compgen -f $cur )); return 0 ;; esac; case “$cur” in -*) COMPREPLY=($(_get_longopts $1 $cur )); return 0 ;; esac;
if [ -f ${makef_dir}/GNUmakefile ]; then makef=${makef_dir}/GNUmakefile elif [ -f ${makef_dir}/makefile ]; then makef=${makef_dir}/makefile elif [ -f ${makef_dir}/Makefile ]; then makef=${makef_dir}/Makefile else makef=${makef_dir}/*.mk # Local convention. fi
#+ specified with -f. for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do if [[ ${COMP_WORDS[i]} == -f ]]; then
eval makef=${COMP_WORDS[i+1]} break fi done [ ! -f $makef ] && return 0
makef_inc=$( grep -E ‘^-?include’ $makef | sed -e “s,^.* ,"$makef_dir”/,” ) for file in $makef_inc; do [ -f $file ] && makef="$makef $file” done
#+ to matches of that word. if [ -n “$cur” ]; then gcmd=‘grep “^$cur”’ ; else gcmd=cat ; fi COMPREPLY=( $( awk -F':' ‘/^[a-zA-Z0-9][^$#/t=]*:([^=]|$)/ {split($1,A,/ /);for(i in A)print A[i]}’ $makef 2>/dev/null | eval $gcmd )) } complete -F _make -X ‘+($*|*.[cho])’ make gmake pmake _killall() { local cur prev COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]}
#+ (the first sed evaluation #+ takes care of swapped out processes, the second #+ takes care of getting the basename of the process). COMPREPLY=( $( ps -u $USER -o comm | sed -e ‘1,1d’ -e ’s#[][]##g' -e ’s#^.*/##'| awk ‘{if ($0 ~ /^'$cur’/) print $0}' )) return 0 } complete -F _killall killall killps
# ~/.bash_profile:
#+ if it will be exported.
DARKGRAY=‘e[1;30m’ LIGHTRED=‘e[1;31m’ GREEN=‘e[32m’ YELLOW=‘e[1;33m’ LIGHTBLUE=‘e[1;34m’ NC=‘e[m’
PCT="`if [[ $EUID -eq 0 ]]; then T='$LIGHTRED' ; else T='$LIGHTBLUE'; fi; echo $T `”
#+ use escapes and double quotes:
#+ PCT="\` ... \`" . . .
# Otherwise, the value of PCT variable is assigned only once,
#+ when the variable is exported/read from .bash\_profile,
#+ and it will not change afterwards even if the user ID changes.
PS1=“n$GREEN[w] n$DARKGRAY($PCTt$DARKGRAY)-($PCTu$DARKGRAY)-($PCT! $DARKGRAY)$YELLOW-> $NC”
# if \[\[ $EUID -eq 0 \]\],
# Otherwise the value of the EUID variable will be assigned only once,
#+ as above.
#+ echo $T,
# Otherwise the value of the T variable is taken from the moment the PCT
#+ variable is exported/read from .bash\_profile.
# So, in this example it would be null.
# T='$LIGHTRED',
# Otherwise, the semicolon will be interpreted as a command separator.
PS1="`if [[ $EUID -eq 0 ]]; then PCT='$LIGHTRED'; else PCT='$LIGHTBLUE'; fi; echo ‘n$GREEN[w] n$DARKGRAY('$PCT’t$DARKGRAY)- ('$PCT’u$DARKGRAY)-('$PCT’!$DARKGRAY)$YELLOW-> $NC'`”
#######################################################
#######################################################
####################################################### PATH=$PATH:/usr/lib/festival/ ;export PATH export PS1="[[�33[1;34mw[�33[0m]n[t u]$ " export EDITOR=/usr/bin/pico export HISTFILESIZE=3000 # the bash history should save 3000 commands export HISTCONTROL=ignoredups #don’t put duplicate lines in the history. alias hist=‘history | grep $1’ #Requires one input
BLACK=‘e[0;30m’ BLUE=‘e[0;34m’ GREEN=‘e[0;32m’ CYAN=‘e[0;36m’ RED=‘e[0;31m’ PURPLE=‘e[0;35m’ BROWN=‘e[0;33m’ LIGHTGRAY=‘e[0;37m’ DARKGRAY=‘e[1;30m’ LIGHTBLUE=‘e[1;34m’ LIGHTGREEN=‘e[1;32m’ LIGHTCYAN=‘e[1;36m’ LIGHTRED=‘e[1;31m’ LIGHTPURPLE=‘e[1;35m’ YELLOW=‘e[1;33m’ WHITE=‘e[1;37m’ NC=‘e[0m’ # No Color
#######################################################
source ~/.bbips/commandline/bbipsbashrc
if [ -f /etc/bashrc ]; then . /etc/bashrc fi
if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi
#######################################################
alias tom=‘ssh 192.168.2.102 -l root’ alias jason=‘ssh 192.168.2.103 -l root’ alias randy=‘ssh 192.168.2.104 -l root’ alias bob=‘ssh 192.168.2.105 -l root’ alias don=‘ssh 192.168.2.106 -l root’ alias counter=‘ssh 192.168.2.107 -l root’
alias ANYNAMEHERE=‘ssh YOURWEBSITE.com -l USERNAME -p PORTNUMBERHERE’
alias d1=‘xt5250 env.TERM = IBM-3477-FC env.DEVNAME=D1 192.168.2.5 &’ alias d2=‘xt5250 env.TERM = IBM-3477-FC env.DEVNAME=D2 192.168.2.5 &’ alias tn5250j=‘nohup java -jar /home/crouse/tn5250j/lib/tn5250j.jar 2»error.log &’
alias bics=‘sh /home/crouse/scripts/bics/bics.sh’ alias backup=‘sh /home/crouse/scripts/usalugbackup.sh’ alias calc=‘sh /home/crouse/scripts/bashcalc.sh’ alias makepdf=‘sh /home/crouse/scripts/makepdf.sh’ alias phonebook=‘sh /home/crouse/scripts/PHONEBOOK/baps.sh’ alias pb=‘sh /home/crouse/scripts/PHONEBOOK/baps.sh’ alias ppe='/home/crouse/scripts/passphraseencryption.sh' alias scripts=‘cd /home/crouse/scripts’
alias cdo=‘eject /dev/cdrecorder’ alias cdc=‘eject -t /dev/cdrecorder’ alias dvdo=‘eject /dev/dvd’ alias dvdc=‘eject -t /dev/dvd’ alias scan=‘scanimage -L’ alias playw=‘for i in *.wav; do play $i; done’ alias playo=‘for i in *.ogg; do play $i; done’ alias playm=‘for i in *.mp3; do play $i; done’ alias copydisk=‘dd if=/dev/dvd of=/dev/cdrecorder’ # Copies bit by bit from dvd to cdrecorder drives. alias dvdrip=‘vobcopy -i /dev/dvd/ -o ~/DVDs/ -l’
alias ps=‘ps auxf’ alias home=‘cd ~’ alias pg=‘ps aux | grep’ #requires an argument alias un=‘tar -zxvf’ alias mountedinfo=‘df -hT’ alias ping=‘ping -c 10’ alias openports=‘netstat -nape –inet’ alias ns=‘netstat -alnp –protocol=inet | grep -v CLOSE_WAIT | cut -c-6,21-94 | tail +2’ alias du1=‘du -h –max-depth=1’ alias da=‘date “+%Y-%m-%d %A %T %Z”’ alias ebrc=‘pico ~/.bashrc’
alias la=‘ls -Al’ # show hidden files alias ls=‘ls -aF –color=always’ # add colors and file type extensions alias lx=‘ls -lXB’ # sort by extension alias lk=‘ls -lSr’ # sort by size alias lc=‘ls -lcr’ # sort by change time alias lu=‘ls -lur’ # sort by access time alias lr=‘ls -lR’ # recursive ls alias lt=‘ls -ltr’ # sort by date alias lm=‘ls -al |more’ # pipe through ‘more’
alias mx=‘chmod a+x’ alias 000=‘chmod 000’ alias 644=‘chmod 644’ alias 755=‘chmod 755’
alias kwrite=‘kwrite 2>/dev/null &’ alias firefox=‘firefox 2>/dev/null &’ alias gaim=‘gaim 2>/dev/null &’ alias kate=‘kate 2>/dev/null &’ alias suk=‘kdesu konqueror 2>/dev/null &’
alias term=‘xterm -bg AntiqueWhite -fg Black &’ alias termb=‘xterm -bg AntiqueWhite -fg NavyBlue &’ alias termg=‘xterm -bg AntiqueWhite -fg OliveDrab &’ alias termr=‘xterm -bg AntiqueWhite -fg DarkRed &’ alias aterm=‘aterm -ls -fg gray -bg black’ alias xtop=‘xterm -fn 6x13 -bg LightSlateGray -fg black -e top &’ alias xsu=‘xterm -fn 7x14 -bg DarkOrange4 -fg white -e su &’
alias bbc=‘lynx -term=vt100 http://news.bbc.co.uk/text_only.stm’ alias nytimes=‘lynx -term=vt100 http://nytimes.com’ alias dmregister=‘lynx -term=vt100 http://desmoinesregister.com’
#######################################################
####################################################### netinfo () { echo “————— Network Information —————” /sbin/ifconfig | awk /‘inet addr/ {print $2}’ echo "" /sbin/ifconfig | awk /‘Bcast/ {print $3}’ echo "" /sbin/ifconfig | awk /‘inet addr/ {print $4}’
echo “—————————————————” } spin () { echo -ne “${RED}-” echo -ne “${WHITE}b|” echo -ne “${BLUE}bx” sleep .02 echo -ne “${RED}b+${NC}” } scpsend () { scp -P PORTNUMBERHERE “$@” USERNAME@YOURWEBSITE.com:/var/www/html/pathtodirectoryonremoteserver/; }
#######################################################
####################################################### clear for i in `seq 1 15` ; do spin; done ;echo -ne “${WHITE} USA Linux Users Group ${NC}"; for i in `seq 1 15` ; do spin; done ;echo “"; echo -e ${LIGHTBLUE}`cat /etc/SuSE-release` ; echo -e “Kernel Information: " `uname -smr`; echo -e ${LIGHTBLUE}`bash –version`;echo "” echo -ne “Hello $USER today is “; date echo -e “${WHITE}"; cal ; echo “"; echo -ne “${CYAN}";netinfo; mountedinfo ; echo "” echo -ne “${LIGHTBLUE}Uptime for this computer is “;uptime | awk /‘up/ {print $3,$4}’ for i in `seq 1 15` ; do spin; done ;echo -ne “${WHITE} http://usalug.org ${NC}"; for i in `seq 1 15` ; do spin; done ;echo “"; echo “"; echo "”
An alias is nothing but shortcut to commands. The alias command allows user to launch any command or group of commands (including options and filenames) by entering a single word. Use alias command to display list of all defined aliases. You can add user defined aliases to ~/.bashrc file. You can cut down typing time with these aliases, work smartly, and increase productivity at the command prompt.
The general syntax for the alias command for the bash shell is as follows.
Type the following command:
alias
Sample outputs:
alias ..=‘cd ..’ alias amazonbackup=‘s3backup’ alias apt-get=‘sudo apt-get’ …
By default alias command shows a list of aliases that are defined for the current user.
To create the alias use the following syntax:
alias name=value alias name=‘command’ alias name=‘command arg1 arg2’ alias name='/path/to/script' alias name='/path/to/script.pl arg1'
In this example, create the alias c for the commonly used clear command, which clears the screen, by typing the following command and then pressing the ENTER key:
alias c=‘clear’
Then, to clear the screen, instead of typing clear, you would only have to type the letter ‘c’ and press the [ENTER] key:
c
An alias can be disabled temporarily using the following syntax:
## path/to/full/command /usr/bin/clear
c
You need to use the command called unalias to remove aliases. Its syntax is as follows:
unalias aliasname
In this example, remove the alias c which was created in an earlier example:
unalias c
You also need to delete the alias from the ~/.bashrc file using a text editor (see next section).
The alias c remains in effect only during the current login session. Once you logs out or reboot the system the alias c will be gone. To avoid this problem, add alias to your ~/.bashrc file, enter:
vi ~/.bashrc
The alias c for the current user can be made permanent by entering the following line:
alias c=‘clear’
Save and close the file. System-wide aliases (i.e. aliases for all users) can be put in the /etc/bashrc file. Please note that the alias command is built into a various shells including ksh, tcsh/csh, ash, bash and others.
You can add code as follows in ~/.bashrc:
# if user is not root, pass all commands via sudo # if [ $UID -ne 0 ]; then alias reboot=‘sudo reboot’ alias update=‘sudo apt-get upgrade’ fi
You can add code as follows in ~/.bashrc using the case statement:
### Get os name via uname ### _myos="$(uname)”
### add alias as per os using $_myos ### case $_myos in Linux) alias foo='/path/to/linux/bin/foo';; FreeBSD|OpenBSD) alias foo='/path/to/bsd/bin/foo' ;; SunOS) alias foo='/path/to/sunos/bin/foo' ;; *) ;; esac
You can define various types aliases as follows to save time and increase productivity.
The ls command lists directory contents and you can colorize the output:
## Colorize the ls output ## alias ls=‘ls –color=auto’
## Use a long listing format ## alias ll=‘ls -la’
## Show hidden files ## alias l.=‘ls -d .* –color=auto’
## get rid of command not found ## alias cd..=‘cd ..’
alias ..=‘cd ..’ alias …=‘cd ../../../’ alias ….=‘cd ../../../../’ alias …..=‘cd ../../../../’ alias .4=‘cd ../../../../’ alias .5=‘cd ../../../../..’
grep command is a command-line utility for searching plain-text files for lines matching a regular expression:
alias grep=‘grep –color=auto’ alias egrep=‘egrep –color=auto’ alias fgrep=‘fgrep –color=auto’
alias bc=‘bc -l’
alias sha1=‘openssl sha1’
mkdir command is used to create a directory:
alias mkdir=‘mkdir -pv’
You can compare files line by line using diff and use a tool called colordiff to colorize diff output:
# install colordiff package :) alias diff=‘colordiff’
alias mount=‘mount |column -t’
# handy short cuts # alias h=‘history’ alias j=‘jobs -l’
alias path=‘echo -e ${PATH//:/\n}’ alias now=‘date +"%T”’ alias nowtime=now alias nowdate=‘date +"%d-%m-%Y”’
alias vi=vim alias svi=‘sudo vi’ alias vis=‘vim “+set si”’ alias edit=‘vim’
# Stop after sending count ECHO_REQUEST packets # alias ping=‘ping -c 5’
alias fastping=‘ping -c 100 -s.2’
Use netstat command to quickly list all TCP/UDP port on the server:
alias ports=‘netstat -tulanp’
Wake-on-LAN (WOL) is an Ethernet networking standard that allows a server to be turned on by a network message. You can quickly wakeup nas devices and server using the following aliases:
## replace mac with your actual server mac address # alias wakeupnas01='/usr/bin/wakeonlan 00:11:32:11:15:FC' alias wakeupnas02='/usr/bin/wakeonlan 00:11:32:11:15:FD' alias wakeupnas03='/usr/bin/wakeonlan 00:11:32:11:15:FE'
Netfilter is a host-based firewall for Linux operating systems. It is included as part of the Linux distribution and it is activated by default. This post list most common iptables solutions required by a new Linux user to secure his or her Linux operating system from intruders.
## shortcut for iptables and pass it via sudo# alias ipt=‘sudo /sbin/iptables’
# display all rules # alias iptlist=‘sudo /sbin/iptables -L -n -v –line-numbers’ alias iptlistin=‘sudo /sbin/iptables -L INPUT -n -v –line-numbers’ alias iptlistout=‘sudo /sbin/iptables -L OUTPUT -n -v –line-numbers’ alias iptlistfw=‘sudo /sbin/iptables -L FORWARD -n -v –line-numbers’ alias firewall=iptlist
# get web server headers # alias header=‘curl -I’
# find out if remote server supports gzip / mod_deflate or not # alias headerc=‘curl -I –compress’
# do not delete / or prompt if deleting more than 3 files at a time # alias rm=‘rm -I –preserve-root’
# confirmation # alias mv=‘mv -i’ alias cp=‘cp -i’ alias ln=‘ln -i’
alias chown=‘chown –preserve-root’ alias chmod=‘chmod –preserve-root’ alias chgrp=‘chgrp –preserve-root’
apt-get command is used for installing packages over the internet (ftp or http). You can also upgrade all packages in a single operations:
# distro specific - Debian / Ubuntu and friends #
alias apt-get=“sudo apt-get” alias updatey=“sudo apt-get –yes”
# update on one command alias update=‘sudo apt-get update && sudo apt-get upgrade’
yum command is a package management tool for RHEL / CentOS / Fedora Linux and friends:
## distrp specifc RHEL/CentOS ## alias update=‘yum update’ alias updatey=‘yum -y update’
# become root # alias root=‘sudo -i’ alias su=‘sudo -i’
shutdown command bring the Linux / Unix system down:
# reboot / halt / poweroff alias reboot=‘sudo /sbin/reboot’ alias poweroff=‘sudo /sbin/poweroff’ alias halt=‘sudo /sbin/halt’ alias shutdown=‘sudo /sbin/shutdown’
# also pass it via sudo so whoever is admin can reload it without calling you # alias nginxreload=‘sudo /usr/local/nginx/sbin/nginx -s reload’ alias nginxtest=‘sudo /usr/local/nginx/sbin/nginx -t’ alias lightyload=‘sudo /etc/init.d/lighttpd reload’ alias lightytest=‘sudo /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf -t’ alias httpdreload=‘sudo /usr/sbin/apachectl -k graceful’ alias httpdtest=‘sudo /usr/sbin/apachectl -t && /usr/sbin/apachectl -t -D DUMP_VHOSTS’
# if cron fails or if you want backup on demand just run these commands #
alias backup=‘sudo /home/scripts/admin/scripts/backup/wrapper.backup.sh –type local –taget /raid1/backups’ alias nasbackup=‘sudo /home/scripts/admin/scripts/backup/wrapper.backup.sh –type nas –target nas01’ alias s3backup=‘sudo /home/scripts/admin/scripts/backup/wrapper.backup.sh –type nas –target nas01 –auth /home/scripts/admin/.authdata/amazon.keys’ alias rsnapshothourly=‘sudo /home/scripts/admin/scripts/backup/wrapper.rsnapshot.sh –type remote –target nas03 –auth /home/scripts/admin/.authdata/ssh.keys –config /home/scripts/admin/scripts/backup/config/adsl.conf’ alias rsnapshotdaily=‘sudo /home/scripts/admin/scripts/backup/wrapper.rsnapshot.sh –type remote –target nas03 –auth /home/scripts/admin/.authdata/ssh.keys –config /home/scripts/admin/scripts/backup/config/adsl.conf’ alias rsnapshotweekly=‘sudo /home/scripts/admin/scripts/backup/wrapper.rsnapshot.sh –type remote –target nas03 –auth /home/scripts/admin/.authdata/ssh.keys –config /home/scripts/admin/scripts/backup/config/adsl.conf’ alias rsnapshotmonthly=‘sudo /home/scripts/admin/scripts/backup/wrapper.rsnapshot.sh –type remote –target nas03 –auth /home/scripts/admin/.authdata/ssh.keys –config /home/scripts/admin/scripts/backup/config/adsl.conf’ alias amazonbackup=s3backup
## play video files in a current directory ##
alias playavi=‘mplayer *.avi’ alias vlc=‘vlc *.avi’
# play all music files from the current directory # alias playwave=‘for i in *.wav; do mplayer “$i”; done’ alias playogg=‘for i in *.ogg; do mplayer “$i”; done’ alias playmp3=‘for i in *.mp3; do mplayer “$i”; done’
# play files from nas devices # alias nplaywave=‘for i in /nas/multimedia/wave/*.wav; do mplayer “$i”; done’ alias nplayogg=‘for i in /nas/multimedia/ogg/*.ogg; do mplayer “$i”; done’ alias nplaymp3=‘for i in /nas/multimedia/mp3/*.mp3; do mplayer “$i”; done’
# shuffle mp3/ogg etc by default # alias music=‘mplayer –shuffle *’
vnstat is console-based network traffic monitor. dnstop is console tool to analyze DNS traffic. tcptrack and iftop commands displays information about TCP/UDP connections it sees on a network interface and display bandwidth usage on an interface by host respectively.
## All of our servers eth1 is connected to the Internets via vlan / router etc ## alias dnstop=‘dnstop -l 5 eth1’ alias vnstat=‘vnstat -i eth1’ alias iftop=‘iftop -i eth1’ alias tcpdump=‘tcpdump -i eth1’ alias ethtool=‘ethtool eth1’
# work on wlan0 by default #
alias iwconfig=‘iwconfig wlan0’
## pass options to free ## alias meminfo=‘free -m -l -t’
## get top process eating memory alias psmem=‘ps auxf | sort -nr -k 4’ alias psmem10=‘ps auxf | sort -nr -k 4 | head -10’
## get top process eating cpu ## alias pscpu=‘ps auxf | sort -nr -k 3’ alias pscpu10=‘ps auxf | sort -nr -k 3 | head -10’
## Get server cpu info ## alias cpuinfo=‘lscpu’
## older system use /proc/cpuinfo ## ##alias cpuinfo=‘less /proc/cpuinfo’ ##
## get GPU ram on desktop / laptop## alias gpumeminfo=‘grep -i –color memory /var/log/Xorg.0.log’
The curl command can be used to reboot Linksys routers.
# Reboot my home Linksys WAG160N / WAG54 / WAG320 / WAG120N Router / Gateway from *nix. alias rebootlinksys=“curl -u ‘admin:my-super-password’ ‘http://192.168.1.2/setup.cgi?todo=reboot’”
# Reboot tomato based Asus NT16 wireless bridge alias reboottomato=“ssh admin@192.168.1.1 /sbin/reboot”
The GNU Wget is a free utility for non-interactive download of files from the Web. It supports HTTP, HTTPS, and FTP protocols, and it can resume downloads too:
## this one saved by butt so many times ## alias wget=‘wget -c’
## this one saved by butt so many times ## alias ff4='/opt/firefox4/firefox' alias ff13='/opt/firefox13/firefox' alias chrome='/opt/google/chrome/chrome' alias opera='/opt/opera/opera'
#default ff alias ff=ff13
#my default browser alias browser=chrome
Do not create ssh alias, instead use ~/.ssh/config OpenSSH SSH client configuration files. It offers more option. An example:
Host server10 Hostname 1.2.3.4 IdentityFile ~/backups/.ssh/id_dsa user foobar Port 30000 ForwardX11Trusted yes TCPKeepAlive yes
You can now connect to peer1 using the following syntax: $ ssh server10
## set some other defaults ## alias df=‘df -H’ alias du=‘du -ch’
# top is atop, just like vi is vim alias top=‘atop’
## nfsrestart - must be root ##
alias nfsrestart=‘sync && sleep 2 && /etc/init.d/httpd stop && umount netapp2:/exports/http && sleep 2 && mount -o rw,sync,rsize=32768,wsize=32768,intr,hard,proto=tcp,fsc natapp2:/exports /http/var/www/html && /etc/init.d/httpd start’
## Memcached server status ## alias mcdstats='/usr/bin/memcached-tool 10.10.27.11:11211 stats' alias mcdshow='/usr/bin/memcached-tool 10.10.27.11:11211 display'
## quickly flush out memcached server ## alias flushmcd=‘echo “flush_all” | nc 10.10.27.11 11211’
## Remove assets quickly from Akamai / Amazon cdn ## alias cdndel='/home/scripts/admin/cdn/purge_cdn_cache –profile akamai' alias amzcdndel='/home/scripts/admin/cdn/purge_cdn_cache –profile amazon'
## supply list of urls via file or stdin alias cdnmdel='/home/scripts/admin/cdn/purge_cdn_cache –profile akamai –stdin' alias amzcdnmdel='/home/scripts/admin/cdn/purge_cdn_cache –profile amazon –stdin'
This post summaries several types of uses for *nix bash aliases: