Command Ref

Command Description

apropos word	                                           -- Show commands pertinent to word. See also threadsafe
which command	                                           -- Show full path name of command
time command	                                           -- See how long a command takes
time cat	                                           -- Start stopwatch. Ctrl-d to stop. See also sw
nice info	                                           -- Run a low priority command (info in this case)
renice 19 -p $$	                                           -- Make shell (script) low priority. Use for non interactive tasks
look reference	                                           -- Quickly search (sorted) dictionary for prefix
gpg -c file	                                           -- Encrypt file
gpg file.gpg	                                           -- Decrypt file
alias hd='od -Ax -tx1z -v'	                           -- Handy hexdump. (usage e.g.: • hd /proc/self/cmdline | less)
alias realpath='readlink -f'	                           -- Canonicalize path. (usage e.g.: • realpath ~/../$USER)
set | grep $USER	                                   -- Search current environment
ls /usr/bin | pr -T9 -W$COLUMNS	                           -- Print in 9 columns to width of terminal
touch -c -t 0304050607 file	                           -- Set file timestamp (YYMMDDhhmm)

text manipulation

sed

sed 's/string1/string2/g'	                        -- Replace string1 with string2
sed 's/\(.*\)1/\12/g'	                                -- Modify anystring1 to anystring2
sed '/ *#/d; /^ *$/d'	                                -- Remove comments and blank lines
sed -n '30,40p;40q'	                                -- Print lines 30 to 40
sed -n '10p;10q'	                                -- Print 10th line
sed -n 's/.*<title>\(.*\)<\/title>.*/\1/ip;T;q'	        -- Extract title from HTML web page
  

sort

sort -t. -k1,1n -k2,2n -k3,3n -k4,4n	                -- Sort IPV4 ip addresses

tr

tr -dc '[:print:]' < /dev/urandom	                  -- Filter non printable characters
tr -d "\n"                                               -- Delete all \n chars in a file

grep

grep 'processor' /proc/cpuinfo | wc -l	                             -- Count lines
grep --color reference /usr/share/dict/words	                     -- Highlight occurances of regular expression in dictionary
grep -e <pattern> -H -f /<dir>/<dir>/*                              -- Show filenames next to results
egrep -o '\@/:[:space:]]+\>@[a-zA-Z_\.]+?\.[a-zA-Z]{2,3}' somefile  -- Get an email address from a file
grep -r --include=*.txt rc /home                                    -- only find the string in .txt files in the /home directory
grep --line-buffered -m 5 <large file>                              -- Exit after 5 matches
grep 'processor' /proc/cpuinfo | wc -l	                             -- Count lines

misc

echo 'Test' | tr '[:lower:]' '[:upper:]'	          -- Case conversion
nl                                                       -- list file with line numbers
rename s/\.tgz$/\.tar.gz/ *.tgz                          -- rename all files w/ .tgz ext. to tar.gz
rename 'y/ /_/' *                                        -- replace spaces with _ in file names
for file in *; do mv -v “$i” “${i/name/newname/}”; done; -- rename
mv */* .                                                 -- move sub folders into current

dir navigation

cd 	                -- Go to previous directory
cd	                -- Go to home directory
(cd dir && command)	-- Go to dir, execute command and return to current dir
pushd .	                -- Put current dir on stack so you can popd back to it

CDs

gzip < /dev/cdrom > cdrom.iso.gz	                    -- Save copy of data cdrom
mkisofs -V NAME -r dir | gzip > cdrom.iso.gz	            -- Create cdrom image from contents of dir
mount -o loop cdrom.iso /mnt/dir	                    -- Mount the cdrom image at /mnt/dir (read only)
cdrecord -v dev=/dev/cdrom blank=fast	                    -- Clear a CDRW
gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom         -- Burn cdrom image (use dev=ATAPI -scanbus to confirm dev)
cdparanoia -B	                                            -- Rip audio tracks from CD to wav files in current dir
cdrecord -v dev=/dev/cdrom -audio *.wav	                    -- Make audio CD from all wavs in current dir (see also cdrdao)
oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'    -- Make ogg file from wav file

backup/archives

tar

tar c dir/ | bzip2 > dir.tar.bz2	                                                 -- Make archive of dir/
bzip2 -dc dir.tar.bz2 | tar x	Extract archive                                          -- (use gzip instead of bzip2 for tar.gz files)
tar c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'	                 -- Make encrypted archive of dir/ on remote machine
find dir/ -name '*.txt' | tar c --files-from=- | bzip2 > dir_txt.tar.bz2	         -- Make archive of subset of dir/ and below
find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents	         -- Make copy of subset of dir/ and below
( tar c /dir/to/copy ) | ( cd /where/to/ && tar x -p )	                                 -- Copy (with permissions) copy/ dir to /where/to/ dir
( cd /dir/to/copy && tar c . ) | ( cd /where/to/ && tar x -p )	                         -- Copy (with permissions) contents of copy/ dir to /where/to/
tar cf - <directory> | (cd /<directory>/<directory>/ ; tar xvf -)                       -- Default tar/copy command I use most
tar czvf - /_BACKUP_  | ssh -C user@example.com "cd /user/name/_BACKUP_/ && tar zxf -" 	 -- Copy dir to remote:/where/to/ dir

ls *.tar.gz | xargs -n 1 tar xvzf – Extract multiple tarballs

dd

dd bs=1M if=/dev/hda | gzip | ssh user@remote 'dd of=hda.gz'	                         -- Backup harddisk to remote machine

rsync

(Use the –dry-run option for testing)

rsync -P rsync://rsync.server.com/path/to/file file	                  -- Only get diffs. Do multiple times for troublesome downloads
rsync --bwlimit=1000 fromfile tofile	                                  -- Locally copy with rate limit. It's like nice for I/O
rsync -az -e ssh --delete ~/public_html/ remote.com:'~/public_html'	  -- Mirror web site (using compression and encryption)
rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/	  -- Synchronize current directory with remote one
rsync -e 'ssh -ax' -avz example.org:/tmp .                                -- Synchronize remote /tmp to current directory
rsync --verbose --compress --recursive --stats --links --numeric-ids -e ssh /foo/bar root@ecample.com:/foo/bar

file searching

alias l='ls -l --color=auto'	                                                -- quick dir listing
ls -lrt	                                                                        -- List files by date. See also newest
find -name '*.[ch]' | xargs grep -E 'expr'	                                -- Search 'expr' in this dir and below. See also findrepo
find -type f -print0 | xargs -r0 grep -F 'example'	                        -- Search all regular files for 'example' in this dir and below
find -maxdepth 1 -type f | xargs grep -F 'example'	                        -- Search all regular files for 'example' in this dir
find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done       -- Process each item with multiple commands (in while loop)
find -type f ! -perm -444	                                                -- Find files not readable by all (useful for web site)
find -type d ! -perm -111	                                                -- Find dirs not accessible by all (useful for web site)
find . -printf ‘%CY-%Cm-%Cd:%CT %p\n’ | sort                                   -- find recursive by time
find -L /proc/*/fd -links 0 2>/dev/null                                        -- find removed files still in use
locate -r 'file[^/]*\.txt'	                                                -- search cached index for names. This re is like glob *file*.txt
egrep -v "(^#.*|^$)"                                                           -- search without comments
egrep -v "^\s*(#|$)"                                                           -- search without comments or preceding spaces

recently installed
rpm -qa --queryformat '%{installtime} %{name}-%{version}-%{release} %{installtime:date}\n' | sort -nr +1 | sed -e 's/^[^ ]* //'

largest installed
rpm -qa --queryformat '%{name-%{version}-%{release} %{size}\n' | sort -nr +1

similar
rpm -qa --queryformat '%10{NAME} %20{GROUP}\n' | grep -i shells

info
rpm -qpil foo.bar

networking

(Note ifconfig, route, mii-tool, nslookup commands are obsolete)

ip link show	                                                -- List interfaces
ethtool interface	                                        -- List interface status
ip link set dev eth0 name wan	                                -- Rename eth0 to wan
ip addr add 1.2.3.4/24 brd + dev eth0	                        -- Add ip and mask(255.255.255.0)
ip link set dev interface up	                                -- Bring interface up (or down)
ip route add default via 1.2.3.254	                        -- Set default gateway to 1.2.3.254
tc qdisc add dev lo root handle 1:0 netem delay 20msec	        -- Add 20ms latency to loopback device (for testing)
tc qdisc del dev lo root	                                -- Remove latency added above
host pixelbeat.org	                                        -- Lookup ip address for name or vice versa
hostname -i	                                                -- Lookup local ip address (equivalent to host `hostname`)
netstat -tupl	                                                -- List internet services on a system
netstat -tup	                                                -- List active connections to/from system

wget

(multi purpose download tool)

(cd cmdline && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html) 	        -- Store local browsable version of a page to the current dir
wget -c http://www.example.com/large.file	                                -- Continue downloading a partially downloaded file
wget -r -nd -np -l1 -A '*.jpg' http://www.example.com/dir/	                -- Download a set of files to the current directory
wget ftp://remote/file[1-9].iso/	                                        -- FTP supports globbing directly
wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | head	-- Process output directly
echo 'wget url' | at 01:00	                                                -- Download url at 1AM to current dir
wget --limit-rate=20k url	                                                -- Do a low priority download (limit to 20KB/s in this case)
wget -nv --spider --force-html -i bookmarks.html	                        -- Check links in a file
wget --mirror http://www.example.com/	                                        -- Efficiently update a local copy of a site (handy from cron)

windows

(note samba is the package that provides all this windows specific networking support)

smbtree	                                                                -- Find windows machines. See also findsmb
nmblookup -A 1.2.3.4	                                                -- Find the windows (netbios) name associated with ip address
smbclient -L windows_box	                                        -- List shares on windows machine or samba server
mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share	-- Mount a windows share
echo 'message' | smbclient -M windows_box	                        -- Send popup to windows machine (off by default in XP sp2)

math

bc                                                                              -- Calculator
echo '(1 + sqrt(5))/2' | bc -l	                                                -- Quick math (Calculate φ). See also bc
echo 'obase=16; ibase=10; 64206' | bc	                                        -- Base conversion (decimal to hexadecimal)
echo $((0x2dec))	                                                        -- Base conversion (hex to dec) ((shell arithmetic expansion))
echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bc	                        -- More complex (int) e.g. This shows max FastE packet rate
echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | python	                -- Python handles scientific notation
echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist	-- Plot FastE packet rate vs packet size
seq 100 | (tr '\n' +; echo 0) | bc	                                        -- Add a column of numbers. See also add and funcpy

set operations

(Note LANG=C is for speed) (Note also these assume no duplicate lines within a file)

LANG=C sort file1 file2 | uniq	                -- Union of unsorted files
LANG=C sort file1 file2 | uniq -d	        -- Intersection of unsorted files
LANG=C sort file1 file1 file2 | uniq -u	        -- Difference of unsorted files
LANG=C sort file1 file2 | uniq -u	        -- Symmetric Difference of unsorted files
LANG=C comm file1 file2 | sed 's/^\t*//'	-- Union of sorted files
LANG=C comm -12 file1 file2	                -- Intersection of sorted files
LANG=C comm -13 file1 file2	                -- Difference of sorted files
LANG=C comm -3 file1 file2 | sed 's/^\t*//'	-- Symmetric Difference of sorted files

calendar

cal -3	                                                                        -- Display a calendar
cal 9 1752	                                                                -- Display a calendar for a particular month year
date -d fri	                                                                -- What date is it this friday. See also day
date --date='25 Dec' +%A	                                                -- What day does xmas fall on, this year
date --date '1970-01-01 UTC 1234567890 seconds'	                                -- Convert number of seconds since the epoch to a date
TZ=':America/Los_Angeles' date	                                                -- What time is it on West coast of US (use tzselect to find TZ)
echo "mail -s 'get the train' someone@somewhere.com < /dev/null" | at 17:45	-- Email reminder
echo "DISPLAY=$DISPLAY xmessage cooker" | at "NOW + 30 minutes"	                -- Popup reminder
, ,

locales

printf "%'d\n" 1234	                                -- Print number with thousands grouping appropriate to locale
BLOCK_SIZE=\'1 ls -l	                                -- get ls to do thousands grouping appropriate to locale
echo "I live in `locale territory`"	                -- Extract info from locale database
locale | cut -d= -f1 | xargs locale -kc | less	        -- List fields in locale database
LANG=en_IE.utf8 locale int_prefix	                -- Lookup locale info for specific country. See also ccodes

disk space

(See also FSlint)

ls -lSr	                                                                      -- Show files, biggest last
du -s * | sort -k1,1rn | head	                                              -- Show 
du --si | grep [0-9]K | sort -n -k 1 ; du --si | grep [0-9]M | sort -n -k 1
du -ah * | grep '[0-9]M' | sort -n -k 1 | less
du -sh * |grep G 
du -sh * |grep M
du -s */ .[^.]*/ | sort -nr                                                  -- Show hidden directories as well
du -s ./* | sort -n| cut -f 2-|xargs -i du -sh {}                            -- sort folders by size

top disk users in current dir. See also dutop

df -h	                                                                    -- Show free disk space
df -i	                                                                    -- Show free inodes
fdisk -l	                                                            -- Show disks partitions sizes and types (run as root)
rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n	                    -- List all packages by installed size (Bytes) on rpm distros
dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n	    -- List all packages by installed size (KBytes) on deb 
, , , ,

disk

fuser -km /mnt                                                              -- Kill processes that are mounted
umount -l /mnt                                                              -- Lazy unmount
mount -o loop /path/to/image.iso /media/cdrom                               -- Mount ISO like a cdrom

distros

dd bs=1 seek=2TB if=/dev/null of=ext3.test	                          -- Create a large test file (taking no space). See also truncate monitoring/debugging
strace -c ls >/dev/null	                                                  -- Summarise/profile system calls made by command
strace -f -e open ls >/dev/null	                                          -- List system calls made by command
ltrace -f -e getenv ls >/dev/null	                                  -- List library calls made by command
lsof -p $$	                                                          -- List paths that process id has open
lsof ~	                                                                  -- List processes that have specified path open
lsof -u <username> or <uid>                                              -- Lists all open files for user
lsof /dev/sda1                                                           -- Lists all open files on partition
lsof -u <uid> -a /dev/sda1                                               -- Combine listing user on partition
lsof -p  <pid>                                                           -- Lists by PID number
lsof -c <name>                                                           -- Lists by process name
lsof -i @192.168.50.50:1-1024                                            -- Lists connections from an IP address within a port range
tcpdump not port 22	                                                  -- Show network traffic except ssh. See also tcpdump_not_me
ps -e -o pid,args --forest	                                          -- List processes in a hierarchy
ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'  -- List processes by % cpu usage
ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS	                  -- List processes by mem usage. See also ps_mem.py
ps -C firefox-bin -L -o pid,tid,pcpu,state	                          -- List all threads for a particular process
ps -p 1,2	                                                          -- List info for particular process IDs
last reboot	                                                          -- Show system reboot history
free -m	                                                                  -- Show amount of (remaining) RAM (-m displays in MB)
watch -n1 'cat /proc/interrupts'	                                  -- Watch changeable data continuously

System information

(see also sysinfo)

hdparm -i /dev/hda	                -- Show info about disk hda
hdparm -tT /dev/hda	                -- Do a read speed test on disk hda
badblocks -s /dev/hda	                -- Test for unreadable blocks on disk hda
mount | column -t	                -- Show mounted filesystems on the system (and align output)
cat /proc/partitions	                -- Show all partitions registered on the system
grep MemTotal /proc/meminfo	        -- Show RAM total seen by the system
grep "model name" /proc/cpuinfo	        -- Show CPU(s) info
lspci -tv	                        -- Show PCI info
lsusb -tv	                        -- Show USB info
pgrep                                 -- display pids

recode

(Obsoletes iconv, dos2unix, unix2dos)

recode -l | less	                          -- Show available conversions (aliases on each line)
recode windows-1252.. file_to_change.txt	  -- Windows "ansi" to local charset (auto does CRLF conversion)
recode utf-8/CRLF.. file_to_change.txt	          -- Windows utf8 to local charset
recode iso-8859-15..utf8 file_to_change.txt	  -- Latin9 (western europe) to utf8
recode ../b64 < file.txt > file.b64	          -- Base64 encode
recode /qp.. < file.txt > file.qp	          -- Quoted printable decode
recode ..HTML < file.txt > file.html	          -- Text to HTML
recode -lf windows-1252 | grep euro	          -- Lookup table of characters
echo -n 0x80 | recode latin-9/x1..dump	          -- Show what a code represents in latin-9 charmap
echo -n 0x20AC | recode ucs-2/x2..latin-9/x	  -- Show latin-9 encoding
echo -n 0x20AC | recode ucs-2/x2..utf-8/x	  -- Show utf-8 encoding

interactive

mc	        -- Powerful file manager that can browse rpm, tar, ftp, ssh
screen	        -- Virtual terminals with detach capability
links	        -- Web browser
gnuplot	        -- Interactive/scriptable graphing
octave	        -- Matlab like environment

monitor/debug

netstat -nlp                                                                         -- list all ports in a listening state
strace -c ls >/dev/null	                                                              -- Summarise/profile system calls made by command
strace -f -e open ls >/dev/null	                                                      -- List system calls made by command
ltrace -f -e getenv ls >/dev/null	                                              -- List library calls made by command
lsof -p $$	                                                                      -- List paths that process id has open
lsof ~	                                                                              -- List processes that have specified path open
tcpdump not port 22	                                                              -- Show network traffic except ssh. See also tcpdump_not_me
ps -e -o pid,args --forest	                                                      -- List processes in a hierarchy
ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'	              -- List processes by % cpu usage
ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS	                              -- List processes by mem usage. See also ps_mem.py
ps -C firefox-bin -L -o pid,tid,pcpu,state	                                      -- List all threads for a particular process
ps -p 1,2	                                                                      -- List info for particular process IDs
last reboot	                                                                      -- Show system reboot history
free -m	                                                                              -- Show amount of (remaining) RAM (-m displays in MB)
watch -n1 'cat /proc/interrupts'	                                              -- Watch changeable data continuously
watch 'netstat -aniv'                                                                -- Watch network traffic for errors

List

xlsclients                                             --Running client applications

Mail

mail root < /tmp/message.log                          --Send message log as mail body

Personal Tools
  • --> Export to PDF
  •