Variables : |
Assigning values to local variables | set x = 5 | x=5 | x=5 | x=5 |
Assigning variable attributes | | | declare or typeset | typeset |
Assigning values to environment variables | setenv NAME Bob | NAME='Bob'; export NAME | export NAME='Bob' | export NAME='Bob' |
Read-Only Variables: | | | |
Accessing variables | echo $NAME set var = net echo ${var}work network | echo $NAME var=net echo ${var}work network | echo $NAME var=net echo ${var}work network | echo $NAME or print $NAME var=net print ${var}work network |
Number of characters | echo $%var (tcsh only) | N/A | ${#var} | ${#var} |
Special Variables: |
PID of the process | $$ | $$ | $$ | $$ |
Exit status | $status, $? | $? | $? | $? |
Last background job | $! (tcsh only) | $! | $! | $! |
Arrays: |
Assigning arrays | set x = (a b c) | N/A | y[0]='a'; y[2]='b'; y[2]='c' fruit=(apples pears peaches plums) | y[0]='a'; y[1]='b'; y[2]='c' set A fruit apples pears plums |
Accessing array elements | echo $x[1] $x[2] | N/A | echo ${y[0]} ${y[1]} | print ${y[0]} ${y[1]} |
All elements | echo $x or $x[*] | N/A | echo ${y[*]}, ${fruit[0]} | print ${y[*]}, ${fruit[0]} |
No. of elements | echo $#x | N/A | echo $y{#[*]} | print ${#y[*]} |
Command Substitution: |
Assigning output of command to variable | set d = `date` | d=`date` | d=$(date) or d=`date` | d=$(date) or d=`date` |
Accessing values | echo $d echo $d[1], $d[2], ... echo $#d | echo $d | echo $d | print $d |
Command Line Arguments (Positional Parameters): |
Accessing | $argv[1], $argv[2] or , ... | $1, $2 ... $9 | $1, $2, ... ${10} ... | $1, $2, ... ${10} ... |
Setting positional parameters | N/A | set a b c set `date` echo ... | set a b c set `date` or set $(date) echo ... | set a b c set `date` or set $(date) print ... |
No. of command line arguments | $#argv $# (tcsh) | $# | $# | $# |
No. of characters in $arg[number] | $%1, $%2, (tcsh) | N/A | N/A | N/A |
Metacharacters for Filename Expansion: |
Matches for: | | | | |
Single character | ? | ? | ? | ? |
Zero or more characters | * | * | * | * |
One character from a set | [abc] | [abc] | [abc] | [abc] |
One character from a range of characters in a set | [a “c] | [a “c] | [a-c] | [a “c] |
One character not in the set | N/A (csh) [^abc] (tcsh) | [!abc] | [!abc] | [!abc] |
? matches zero or one occurrences of any pattern in the parentheses. The vertical bar represents an OR condition; e.g., either 2 or 9. Matches abc21, abc91, or abc1. | | | abc?(29)1 | abc?(29)1 |
Filenames not matching a pattern | ^pattern (tcsh) | | | |
I/O Redirection and Pipes: |
Command output redirected to a file | cmd > file | cmd > file | cmd > file | cmd > file |
Command output redirected and appended to a file | cmd >> file | cmd >> file | cmd >> file | cmd >> file |
Command input redirected from a file | cmd < file | cmd < file | cmd < file | cmd < file |
Command errors redirected to a file | (cmd > /dev/tty)>&errors | cmd 2>errors | cmd 2> file | cmd 2> errors |
Output and errors redirected to a file | cmd >& file | cmd > file 2>&1 | cmd >& file or cmd &> file or cmd > file 2>&1 | cmd > file 2>&1 |
Assign output and ignore noclobber | cmd > file | N/A | cmd > file | cmd > file |
here document | cmd << EOF input EOF | cmd << EOF input EOF | cmd << EOF input EOF | cmd << EOF input EOF |
Pipe output of one command to input of another command | cmd cmd | cmd cmd | cmd cmd | cmd cmd |
Pipe output and error to a command | cmd & cmd | N/A | N/A | (See coprocesses) |
Coprocess | N/A | N/A | N/A | command & |
Conditional statement | cmd && cmd cmd cmd | cmd && cmd cmd cmd | cmd && cmd cmd cmd | cmd && cmd cmd cmd |
Reading from the Keyboard: |
Read a line of input and store into variable(s) | set var = $< set var = 'line' | read var read var1 var2... | read var read var1 var2... read read -p prompt read -a arrayname | read var read var1 var2... read read var?"Enter value" |
Arithmetic: |
Perform calculation | @ var = 5 + 1 | var=`expr 5 + 1` | ((var = 5 + 1)) let var=5+1 | ((var = 5 + 1)) let var=5+1 |
Tilde Expansion: |
Represent home directory of user | ~username | N/A | ~username | ~username |
Represent home directory | ~ | N/A | ~ | ~ |
Represent present working directory | N/A | N/A | ~+ | ~+ |
Represent previous working directory | N/A | N/A | ~- | ~ “ |
Aliases: |
Create an alias | alias m more | N/A | alias m=more | alias m=more |
List aliases | alias | | alias, alias -p | alias, alias “t |
Remove an alias | unalias m | N/A | unalias m | unalias m |
History: |
Set history | set history = 25 | N/A | automatic or HISTSIZE=25 | automatic or HISTSIZE=25 |
Display numbered history list | history | | history, fc -l | history, fc “l |
Display portion of list selected by number | history 5 | | history 5 | history 5 10 history 5 |
Re-execute a command | !! (last command) !5 (5th command) !v (last command starting with v) | | !! (last command) !5 (5th command) !v (last command starting with v) | r (last command) r5 (5th command) r v (last command starting with v) |
Set interactive editor | N/A (csh) bindkey -v or bindkey -e (tcsh) | N/A | set -o vi set -o emacs | set -o vi set -o emacs |
Signals: |
Command | onintr | trap | trap | trap |
Initialization Files: |
Executed at login | .login | .profile | .bash_profile | .profile |
Executed every time the shell is invoked | . cshrc | N/A | BASH_ENV=.bashrc (or other filename) (bash 2.x) ENV=.bashrc | ENV=. kshrc (or other filename) |
Functions: |
Define a function | N/A | fun() { commands; } | function fun { commands; } | function fun { commands; } |
Call a function | N/A | fun fun param1 param2 ... | fun fun param1 param2 ... | fun fun param1 param2 ... |
Programming Constructs: |
if conditional | if (expression) then commands endif if { (command) } then commands endif | if [ expression ] then commands fi if command then commands fi | if [[ string expression ]] then commands fi if ((numeric expression)) then commands fi | if [[ string expression ]] then commands fi if ((numeric expression)) then commands fi |
if/else conditional | if (expression) then commands else commands endif | if command then commands else ... fi | if command then commands else ... fi | if command then commands else ... fi |
if/else/elseif conditional | if (expression) then commands else if (expression) then commands else commands endif | if command then commands elif command then commands else commands fi | if command then commands elif command then commands else commands fi | if command then commands elif command then commands else commands fi |
goto | goto label ... label: | N/A | N/A | N/A |
switch and case | switch ("$value") case pattern1: commands breaksw case pattern2: commands breaksw default: commands breaksw endsw | case "$value" in pattern1) commands ;; pattern2) commands ;; *) commands ;; esac | case "$value" in pattern1) commands ;; pattern2) commands ;; *) commands ;; esac | case "$value" in pattern1) commands ;; pattern2) commands ;; *) commands ;; esac |
Loops: |
while | while (expression) commands end | while command do command done | while command do command done | while command do commands done |
for/foreach | foreach var (wordlist) commands end | for var in wordlist do commands done | for var in wordlist do commands done | for var in wordlist do commands done |
until | N/A | until command do commands done | until command do commands done | until command do commands done |
repeat | repeat 3 "echo hello" hello hello hello | N/A | N/A | N/A |
select | N/A | N/A | PS3="Please select a menu item" select var in wordlist do commands done | PS3="Please select a menu item" select var in wordlist do commands done |