Threadsafe Man: Command Description
Threadsafe Man: Command Description
Show commands
• apropos whatis pertinent to string.
See also threadsafe
make a pdf of a
• man -t ascii | ps2pdf - > ascii.pdf
manual page
Show full path name
which command
of command
See how long a
time command
command takes
Start stopwatch. Ctrl-
• time cat
d to stop. See also sw
dir navigation
Go to previous
• cd -
directory
Go to $HOME
• cd
directory
Go to dir, execute
(cd dir && command) command and return
to current dir
Put current dir on
• pushd . stack so you can
popd back to it
file searching
• alias l='ls -l --color=auto' quick dir listing
List files by date. See
• ls -lrt also newest and
find_mm_yyyy
Print in 9 columns to
• ls /usr/bin | pr -T9 -W$COLUMNS
width of terminal
Search 'expr' in this
find -name '*.[ch]' | xargs grep -E 'expr' dir and below. See
also findrepo
Search all regular
find -type f -print0 | xargs -r0 grep -F 'example' files for 'example' in
this dir and below
Search all regular
find -maxdepth 1 -type f | xargs grep -F 'example' 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 files not readable
• find -type f ! -perm -444 by all (useful for web
site)
Find dirs not
• find -type d ! -perm -111 accessible by all
(useful for web site)
Search cached index
• locate -r 'file[^/]*\.txt' for names. This re is
like glob *file*.txt
Quickly search
• look reference (sorted) dictionary for
prefix
Highlight occurances
• grep --color reference /usr/share/dict/words of regular expression
in dictionary
archives and compression
gpg -c file Encrypt file
gpg file.gpg Decrypt file
Make compressed
tar -c dir/ | bzip2 > dir.tar.bz2
archive of dir/
Extract archive (use
bzip2 -dc dir.tar.bz2 | tar -x gzip instead of bzip2
for tar.gz files)
Make encrypted
tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg' archive of dir/ on
remote machine
Make archive of
find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2 subset of dir/ and
below
Make copy of subset
find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents
of dir/ and below
Copy (with
( tar -c /dir/to/copy ) | ( cd /where/to/ && tar -x -p ) permissions) copy/ dir
to /where/to/ dir
Copy (with
permissions) contents
( cd /dir/to/copy && tar -c . ) | ( cd /where/to/ && tar -x -p )
of copy/ dir to
/where/to/
( tar -c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar -x -p' Copy (with
permissions) copy/ dir
to remote:/where/to/
dir
Backup harddisk to
dd bs=1M if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz'
remote machine
rsync (Network efficient file copier: Use the --dry-run option for testing)
Only get diffs. Do
multiple times for
rsync -P rsync://rsync.server.com/path/to/file file
troublesome
downloads
Locally copy with
rsync --bwlimit=1000 fromfile tofile rate limit. It's like nice
for I/O
Mirror web site (using
rsync -az -e ssh --delete ~/public_html/ remote.com:'~/public_html' compression and
encryption)
Synchronize current
rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/ directory with remote
one
ssh (Secure SHell)
Run command on
$HOST as $USER
ssh $USER@$HOST command
(default
command=shell)
Run GUI command
• ssh -f -Y $USER@$HOSTNAME xeyes on $HOSTNAME as
$USER
Copy with
permissions to
scp -p -r $USER@$HOST: file dir/
$USER's home
directory on $HOST
Use faster crypto for
scp -c arcfour $USER@$LANHOST: bigfile local LAN. This
might saturate GigE
Forward connections
to
ssh -g -L 8080:localhost:80 root@$HOST
$HOSTNAME:8080
out to $HOST:80
Forward connections
ssh -R 1434:imap:143 root@$HOST from $HOST:1434 in
to imap:143
ssh-copy-id $USER@$HOST Install public key for
$USER@$HOST for
password-less log in
wget (multi purpose download tool)
Store local browsable
• (cd dir/ && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html) version of a page to
the current dir
Continue
downloading a
wget -c http://www.example.com/large.file
partially downloaded
file
Download a set of
wget -r -nd -np -l1 -A '*.jpg' http://www.example.com/dir/ files to the current
directory
FTP supports
wget ftp://remote/file[1-9].iso/
globbing directly
Process output
• wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | head
directly
Download url at 1AM
echo 'wget url' | at 01:00
to current dir
Do a low priority
wget --limit-rate=20k url download (limit to
20KB/s in this case)
wget -nv --spider --force-html -i bookmarks.html Check links in a file
Efficiently update a
wget --mirror http://www.example.com/ local copy of a site
(handy from cron)
networking (Note ifconfig, route, mii-tool, nslookup commands are obsolete)
Show status of
ethtool eth0
ethernet interface eth0
Manually set ethernet
ethtool --change eth0 autoneg off speed 100 duplex full
interface speed
Show status of
iwconfig eth1 wireless interface
eth1
Manually set wireless
iwconfig eth1 rate 1Mb/s fixed
interface speed
List wireless
• iwlist scan
networks in range
List network
• ip link show
interfaces
ip link set dev eth0 name wan Rename interface
eth0 to wan
Bring interface eth0
ip link set dev eth0 up
up (or down)
List addresses for
• ip addr show
interfaces
Add (or del) ip and
ip addr add 1.2.3.4/24 brd + dev eth0
mask (255.255.255.0)
• ip route show List routing table
Set default gateway to
ip route add default via 1.2.3.254
1.2.3.254
Lookup DNS ip
• host pixelbeat.org address for name or
vice versa
Lookup local ip
• hostname -i address (equivalent to
host `hostname`)
Lookup whois info
• whois pixelbeat.org for hostname or ip
address
List internet services
• netstat -tupl
on a system
List active
• netstat -tup connections to/from
system
windows networking (Note samba is the package that provides all this windows specific
networking support)
Find windows
• smbtree machines. See also
findsmb
Find the windows
(netbios) name
nmblookup -A 1.2.3.4
associated with ip
address
List shares on
smbclient -L windows_box windows machine or
samba server
Mount a windows
mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share
share
echo 'message' | smbclient -M windows_box Send popup to
windows machine
(off by default in XP
sp2)
text manipulation (Note sed uses stdin and stdout. Newer versions support inplace editing with
the -i option)
Replace string1 with
sed 's/string1/string2/g'
string2
Modify anystring1 to
sed 's/\(.*\)1/\12/g'
anystring2
Remove comments
sed '/ *#/d; /^ *$/d'
and blank lines
Concatenate lines
sed ':a; /\\$/N; s/\\\n//; ta'
with trailing \
Remove trailing
sed 's/[ \t]*$//'
spaces from lines
Escape shell
sed 's/\([`"$\]\)/\\\1/g' metacharacters active
within double quotes
• seq 10 | sed "s/^/ /; s/ *\(.\{7,\}\)/\1/" Right align numbers
sed -n '1000{p;q}' Print 1000th line
sed -n '10,20p;20q' Print lines 10 to 20
Extract title from
sed -n 's/.*<title>\(.*\)<\/title>.*/\1/ip;T;q'
HTML web page
Delete a particular
sed -i 42d ~/.ssh/known_hosts
line
Sort IPV4 ip
sort -t. -k1,1n -k2,2n -k3,3n -k4,4n
addresses
• echo 'Test' | tr '[:lower:]' '[:upper:]' Case conversion
Filter non printable
• tr -dc '[:print:]' < /dev/urandom
characters
cut fields separated by
• tr -s '[:blank:]' '\t' </proc/diskstats | cut -f4
blanks
• history | wc -l Count lines
set operations (Note you can export LANG=C for speed. Also these assume no duplicate lines
within a file)
Union of unsorted
sort file1 file2 | uniq
files
Intersection of
sort file1 file2 | uniq -d
unsorted files
Difference of
sort file1 file1 file2 | uniq -u
unsorted files
Symmetric Difference
sort file1 file2 | uniq -u
of unsorted files
join -t'\0' -a1 -a2 file1 file2 Union of sorted files
Intersection of sorted
join -t'\0' file1 file2
files
Difference of sorted
join -t'\0' -v2 file1 file2
files
Symmetric Difference
join -t'\0' -v1 -v2 file1 file2
of sorted files
math
Quick math
• echo '(1 + sqrt(5))/2' | bc -l (Calculate φ). See
also bc
More complex (int)
• echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bc e.g. This shows max
FastE packet rate
Python handles
• echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | python
scientific notation
Plot FastE packet rate
• echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist
vs packet size
Base conversion
• echo 'obase=16; ibase=10; 64206' | bc (decimal to
hexadecimal)
Base conversion (hex
to dec) ((shell
• echo $((0x2dec))
arithmetic
expansion))
Unit conversion
• units -t '100m/9.58s' 'miles/hour'
(metric to imperial)
Unit conversion (SI to
• units -t '500GB' 'GiB'
IEC prefixes)
• units -t '1 googol' Definition lookup
Add a column of
• seq 100 | (tr '\n' +; echo 0) | bc numbers. See also add
and funcpy
calendar
• cal -3 Display a calendar
Display a calendar for
• cal 9 1752 a particular month
year
What date is it this
• date -d fri
friday. See also day
exit a script unless it's
• [ $(date -d "tomorrow" +%d) = "01" ] || exit the last day of the
month
What day does xmas
• date --date='25 Dec' +%A
fall on, this year
Convert seconds since
• date --date='@2147483647' the epoch (1970-01-
01 UTC) to date
What time is it on
• TZ='America/Los_Angeles' date west coast of US (use
tzselect to find TZ)
What's the local time
• date --date='TZ="America/Los_Angeles" 09:00 next Fri' for 9AM next Friday
on west coast US
locales
Print number with
• printf "%'d\n" 1234 thousands grouping
appropriate to locale
Use locale thousands
• BLOCK_SIZE=\'1 ls -l grouping in ls. See
also l
Extract info from
• echo "I live in `locale territory`"
locale database
Lookup locale info
• LANG=en_IE.utf8 locale int_prefix for specific country.
See also ccodes
List fields available in
• locale | cut -d= -f1 | xargs locale -kc | less
locale database
recode (Obsoletes iconv, dos2unix, unix2dos)
Show available
• recode -l | less conversions (aliases
on each line)
Windows "ansi" to
local charset (auto
recode windows-1252.. file_to_change.txt
does CRLF
conversion)
Windows utf8 to local
recode utf-8/CRLF.. file_to_change.txt
charset
recode iso-8859-15..utf8 file_to_change.txt Latin9 (western
europe) to utf8
recode ../b64 < file.txt > file.b64 Base64 encode
Quoted printable
recode /qp.. < file.qp > file.txt
decode
recode ..HTML < file.txt > file.html Text to HTML
Lookup table of
• recode -lf windows-1252 | grep euro
characters
Show what a code
• echo -n 0x80 | recode latin-9/x1..dump represents in latin-9
charmap
Show latin-9
• echo -n 0x20AC | recode ucs-2/x2..latin-9/x
encoding
• echo -n 0x20AC | recode ucs-2/x2..utf-8/x Show utf-8 encoding
CDs
Save copy of data
gzip < /dev/cdrom > cdrom.iso.gz
cdrom
Create cdrom image
mkisofs -V LABEL -r dir | gzip > cdrom.iso.gz
from contents of dir
Mount the cdrom
mount -o loop cdrom.iso /mnt/dir image at /mnt/dir
(read only)
cdrecord -v dev=/dev/cdrom blank=fast Clear a CDRW
Burn cdrom image
(use dev=ATAPI
gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -
-scanbus to confirm
dev)
Rip audio tracks from
cdparanoia -B CD to wav files in
current dir
Make audio CD from
cdrecord -v dev=/dev/cdrom -audio -pad *.wav all wavs in current dir
(see also cdrdao)
Make ogg file from
oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'
wav file
disk space (See also FSlint)
Show files by size,
• ls -lSr
biggest last
Show top disk users
• du -s * | sort -k1,1rn | head in current dir. See
also dutop
Sort paths by easy to
• du -hs /home/* | sort -k1,1h
interpret disk usage
Show free space on
• df -h
mounted filesystems
Show free inodes on
• df -i
mounted filesystems
Show disks partitions
• fdisk -l sizes and types (run
as root)
List all packages by
• rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n installed size (Bytes)
on rpm distros
List all packages by
installed size
• dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n
(KBytes) on deb
distros
Create a large test file
• dd bs=1 seek=2TB if=/dev/null of=ext3.test (taking no space). See
also truncate
truncate data of file or
• > file
create an empty file
monitoring/debugging
Monitor messages in
• tail -f /var/log/messages
a log file
Summarise/profile
• strace -c ls >/dev/null system calls made by
command
List system calls
• strace -f -e open ls >/dev/null
made by command
Monitor what's
• strace -f -e trace=write -e write=1,2 ls >/dev/null written to stdout and
stderr
List library calls made
• ltrace -f -e getenv ls >/dev/null
by command
List paths that process
• lsof -p $$
id has open
List processes that
• lsof ~ have specified path
open
• tcpdump not port 22 Show network traffic
except ssh. See also
tcpdump_not_me
List processes in a
• ps -e -o pid,args --forest
hierarchy
List processes by %
• ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'
cpu usage
List processes by
• ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS mem (KB) usage. See
also ps_mem.py
List all threads for a
• ps -C firefox-bin -L -o pid,tid,pcpu,state
particular process
List elapsed wall time
• ps -p 1,$$ -o etime= for particular process
IDs
Show system reboot
• last reboot
history
Show amount of
• free -m (remaining) RAM (-m
displays in MB)
Watch changeable
• watch -n.1 'cat /proc/interrupts'
data continuously
Monitor udev events
• udevadm monitor to help configure
rules
system information (see also sysinfo) ('#' means root access is required)
Show kernel version
• uname -a and system
architecture
Show name and
• head -n1 /etc/issue
version of distribution
Show all partitions
• cat /proc/partitions registered on the
system
Show RAM total seen
• grep MemTotal /proc/meminfo
by the system
• grep "model name" /proc/cpuinfo Show CPU(s) info
• lspci -tv Show PCI info
• lsusb -tv Show USB info
• mount | column -t List mounted
filesystems on the
system (and align
output)
Show state of cells in
• grep -F capacity: /proc/acpi/battery/BAT0/info
laptop battery
Display
# dmidecode -q | less SMBIOS/DMI
information
How long has this
# smartctl -A /dev/sda | grep Power_On_Hours disk (system) been
powered on in total
Show info about disk
# hdparm -i /dev/sda
sda
Do a read speed test
# hdparm -tT /dev/sda
on disk sda
Test for unreadable
# badblocks -s /dev/sda
blocks on disk sda
interactive (see also linux keyboard shortcuts)
Line editor used by
• readline bash, python, bc,
gnuplot, ...
Virtual terminals with
• screen
detach capability, ...
Powerful file manager
• mc that can browse rpm,
tar, ftp, ssh, ...
Interactive/scriptable
• gnuplot
graphing
• links Web browser
open a file or url with
• xdg-open . the registered desktop
application