UNIX / Linux Shell Cheat Sheet

Document Sample
UNIX / Linux Shell Cheat Sheet Powered By Docstoc                                                                                               v1.1 – 7 Aug 2007

                UNIX / Linux Shell Cheat Sheet

File Manipulation                                         Test Operators                   Variable Substitution
> file          create (overwrite) file                   if [ “$x” -lt “$y” ]; then       ${V:-def}         $V, or “def” if unset
>> file         append to file                                 # do something              ${V:=def}         $V (set to “def” if unset)
>file 2>&1      both output and errors to file            fi                               ${V:?err}         $V, or “err” if unset
< file          read from file
a|b             pipe output from 'a' as input to 'b'      Numeric Tests                    Conditional Execution
                                                          lt         less than             c1 || c2          run c1; if it fails, run c2
Common Constructs                                         gt         greater than          c1 && c2          run c1; if it works, run c2
while read f                                              eq         equal to
do                                         read text      ne         not equal             Common utilities and switches
 echo “Line is $f”                         file line      ge         greater or equal      ls -lSr           list files, biggest last
done < file                                 by line       le         less or equal         ls -ltr           list files, newest last
                                                                                           ls -lh            human-readable filesizes
$ grep foo myfile                                         File Tests                       du -sk *          directory sizes (slow)
afoo                                         find         nt      newer than               sort -n           sort numerically (not alpha)
foo                                       matching        d          is a directory        ps -ef            list my commands
foobar                                     lines          f          is a file             wget URL          download URL
                                                          r          readable              time cmd          stopwatch on `cmd`
$ cut -d: -f5 /etc/passwd                  get field      w          writeable             touch file        create file
Dilbert                               with delimiter      x          executable            read x            read “x” from keyboard
                                                                                           cmd | \           cmd output to stdout and
foo=`ls`                               get output         String Tests                      tee file.txt      also to file.txt
                                      of command          =       equal to                 nice cmd          run cmd with low priority
                                                          z          zero length
case $foo in                                              n          not zero length       Networking
 a)                                  case is a good                                        ifconfig -a       list all network interfaces
  echo “foo is A”                     way to avoid        Logical Tests                    netstat -r        show routers
  ;;                                     iterating        &&         logical AND           ssh u@host        log in to host as user “u”
 b)                                  through many         ||         logical OR            scp file.txt \    copy file.txt to host as
  echo “foo is B”                     if/elif/elif/elif   !          logical NOT            u@host:            user “u”
  ;;                                      constructs.
 *)                                                       Argument Variables               General Admin
   echo “foo is not A or B”                               $0         program name          less file         display file, page by page
   ;;                                                     $1         1st argument          alias l='ls -l'   create “l” as alias for “ls -l”
esac                                                      $2         2nd argument          tar cf t.tar \    create a tar archive t.tar
                                                          ...        ...                    list_of_files     from the listed dirs/files
doubleit() {                               function       $9         9th argument          cal 3 1973        display a calendar (Mar 73)
 expr $1 \* 2                             declaration     $*         all arguments         df -h             show disk mounts
}                                         and calling     $#         No. of arguments      truss -p PID      show syscalls of PID
doubleit 3     # returns 6                  syntax
                                                          Files: Contents / Attributes
                                          A for loop      find . -size 10k -print                            files over 10Kb
for i in *                          iterates through      find . -name “*.txt” -print                        find text files
do                                   its input (which     find /foo -type d -ls                              ls all directories
 echo “File is $i”                    is subject to                                                          under /foo
done                                    globbing)         three=`expr 1 + 2`                                 simple maths
                                                          echo "scale = 5 ; 5121 / 1024” | bc                better maths
                                                          egrep “(foo|bar)” file                             find “foo” or
Useful Variables                                                                                             “bar” in file
$IFS            Internal File Separator                   awk '{ print $5 }' file                            print the 5th word
$?              return code from last program                                                                of each line
$SHELL          what shell is running this script?        sed s/foo/bar/g file                               replace “foo” in
LANG            Language; C is US English                                                                    file with “bar”

                         A full PDF and online tutorial is available at

Shared By: