Bash Cheat Sheet: From My Wiki
Bash Cheat Sheet: From My Wiki
http://wiki.timgurney.net/index.php/Bash_Cheat_Sheet
Contents
1 Checking files 1.1 Example 2 Checking strings 2.1 Example 3 Checking numbers 3.1 Example 4 Boolean operators 4.1 Example 5 I/O Redirection 6 Shell Built-in Variables 7 Pattern Matching 8 Quoting 8.1 Example 9 Grouping 10 Case statement 11 Loops 12 Shell Arithmetic 12.1 Example 13 Order of Interpretation 14 Other Shell Features
Checking files
1 of 8
http://wiki.timgurney.net/index.php/Bash_Cheat_Sheet
-r -w -x -f -s -d -e
if if if if if if if
file is readable. file is writable. we have execute access to file. file is an ordinary file (as opposed to a directory, a device special file, etc.) file has size greater than 0. file is a directory. file exists. Is true even if file is a directory.
Example
if [[ -s file ]] then #such and such fi
Checking strings
s1 s1 -z -n s1 = s2 != s2 s1 s1 Check Check Check Check Check if if if if if s1 s1 s1 s2 s1 equals s2. is not equal to s2. has size 0. has nonzero size. is not the empty string.
Example
if [[ $myvar = "hello" ]] then echo "We have a match" fi
Checking numbers
Note that a shell variable could contain a string that represents a number. If you want to check the numerical value use one of the following:
n1 n1 n1 n1 n1 n1 -eq -ne -lt -le -gt -ge n2 n2 n2 n2 n2 n2 Check Check Check Check Check Check to to to to to to see see see see see see if if if if if if n1 n1 n1 n1 n1 n1 equals n2. is not equal to n2. < n2. <= n2. > n2. >= n2.
Example
2 of 8
http://wiki.timgurney.net/index.php/Bash_Cheat_Sheet
Boolean operators
! -a -o not and or
Example
if [[ $num -lt 10 -o $num -gt 100 ]] then echo "Number $num is out of range" elif [[ ! -w $filename ]] then echo "Cannot write to $filename" fi
The above example also illustrates the use of read to read a string from the keyboard and place it into a shell variable. Also note that most UNIX commands return a true (nonzero) or false (0) in the shell variable status to indicate whether they succeeded or not. This return value can be checked. At the command line echo $status. In a shell script use something like this:
if grep -q shell bshellref then echo "true" else echo "false" fi
3 of 8
http://wiki.timgurney.net/index.php/Bash_Cheat_Sheet
Note that -q is the quiet version of grep. It just checks whether it is true that the string shell occurs in the file bshellref. It does not print the matching lines like grep would otherwise do.
I/O Redirection
pgm > file pgm < file pgm >> file pgm1 | pgm2 n > file n >> file n >& m n <& m << tag Output of pgm is redirected to file. Program pgm reads its input from file. Output of pgm is appended to file. Output of pgm1 is piped into pgm2 as the input to pgm2. Output from stream with descriptor n redirected to file. Output from stream with descriptor n appended to file. Merge output from stream n with stream m. Merge input from stream n with stream m. Standard input comes from here through next tag at start of line.
Note that file descriptor 0 is normally standard input, 1 is standard output, and 2 is standard error output.
Pattern Matching
* ? [AaBbCc] [^RGB] [a-g] Matches 0 or more characters. Matches 1 character. Example: matches any 1 char from the list. Example: matches any 1 char not in the list. Example: matches any 1 char from this range.
Quoting
\c `cmd` "whatever" 'whatever' Take character c literally. Run cmd and replace it in the line of code with its output. Take whatever literally, after first interpreting $, `...`, \ Take whatever absolutely literally.
4 of 8
http://wiki.timgurney.net/index.php/Bash_Cheat_Sheet
Example
match=`ls *.bak` echo \* echo '$1$2hello' echo "$1$2hello" Puts names of .bak files into shell variable match. Echos * to screen, not all filename as in: echo * Writes literally $1$2hello on screen. Writes value of parameters 1 and 2 and string hello.
Grouping
Parentheses may be used for grouping, but must be preceded by backslashes since parentheses normally have a different meaning to the shell (namely to run a command or commands in a subshell). For example, you might use:
if test \( -r $file1 -a -r $file2 \) -o \( -r $1 -a -r $2 \) then #do whatever fi
Case statement
Here is an example that looks for a match with one of the characters a, b, c. If $1 fails to match these, it always matches the * case. A case statement can also use more advanced pattern matching.
case "$1" in a) cmd1 ;; b) cmd2 ;; c) cmd3 ;; *) cmd4 ;; esac
Loops
Bash supports loops written in a number of forms,
for arg in [list] do echo $arg done for arg in [list] ; do echo $arg done
http://wiki.timgurney.net/index.php/Bash_Cheat_Sheet
NUMBERS="1 2 3" for number in `echo $NUMBERS` do echo $number done for number in $NUMBERS do echo -n $number done for number in 1 2 3 do echo -n $number done
If [list] is a glob pattern then bash can expand it directly, for example:
for file in *.tar.gz do tar -xzf $file done
Shell Arithmetic
In the original Bourne shell arithmetic is done using the expr command as in:
result=`expr $1 + 2` result2=`expr $2 + $1 / 2` result=`expr $2 \* 5`
With bash, an expression is normally enclosed using [ ] and can use the following operators, in order of precedence:
* / % + < > <= >= == != && || = (times, divide, remainder) (add, subtract) (the obvious comparison operators) (equal to, not equal to) (logical and) (logical or) (assignment)
http://wiki.timgurney.net/index.php/Bash_Cheat_Sheet
Example
result=$[$1 + 3]
In this example we take the value of the first parameter, add 3, and place the sum into result.
Order of Interpretation
The bash shell carries out its various types of interpretation for each line in the following order:
brace expansion ~ expansion parameters variables command substitution arithmetic word splitting pathname expansion (see a reference book) (for login ids) (such as $1) (such as $var) (Example: match=`grep DNS *` ) (from left to right) (using *, ?, and [abc] )
See a good reference book for information on traps, signals, exporting of variables, functions, eval, source, etc.
download this page as a pdf (http://wiki.timgurney.net /index.php?title=Bash_Cheat_Sheet&action=pdfbook&format=single) Retrieved from "http://wiki.timgurney.net/index.php/Bash_Cheat_Sheet" Categories: Bash | Cheat Sheets
7 of 8
http://wiki.timgurney.net/index.php/Bash_Cheat_Sheet
8 of 8