Unix And Linux Shell Cheat Sheet

ADVERTISEMENT

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
Conditional Execution
a | b
pipe output from 'a' as input to 'b'
Numeric Tests
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
Common utilities and switches
do
read text
ne
not equal
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
Networking
case $foo in
n
not zero length
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
1
st
argument
alias l='ls -l'
create “l” as alias for “ls -l”
nd
esac
$2
2
argument
tar cf t.tar \
create a tar archive t.tar
...
...
list_of_files
from the listed dirs/files
doubleit() {
function
$9
9
th
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 5
th
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

ADVERTISEMENT

00 votes

Related Articles

Related forms

Related Categories

Parent category: Education
Go