You are on page 1of 10

This is a linux command line reference for common operations.

Examples marked with ‡ are valid/safe to paste without modification into a terminal, so you may want to keep a terminal window open while reading this so you can cut & paste. All these commands have been tested both on Fedora and Ubuntu. Seealso more linuxcommands. Command ‡ aproposwhatis ‡ man -t ascii | ps2pdf - > ascii.pdf whichcommand time command ‡ time cat dirnavigation ‡ cd ‡ cd (cd dir&&command) ‡ pushd . file searching ‡ alias l='ls -l --color=auto' ‡ ls -lrt ‡ ls /usr/bin | pr -T9 -W$COLUMNS find -name '*.[ch]' | xargsgrep -E 'expr' find -type f -print0 | xargs -r0 grep -F 'example' find -maxdepth 1 -type f | xargsgrep -F 'example' find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done Description Show commands pertinent to string. Seealso threadsafe make a pdf of a manual page Show full path name of command See how long a command takes Start stopwatch. Ctrl-d to stop. Seealso sw Gotopreviousdirectory Goto $HOME directory Go to dir, execute command and return to current dir Put current dir on stack so you can popd back to it quickdirlisting List files by date. See also newest and find_mm_ yyyy Print in 9 columns to width of terminal Search 'expr' in this dir and below. Seealso findrepo Search all regular files for 'example' in this dir and below Search all regular files for 'example' in this dir Process each item with multiple commands (in

bz2 of dir/ Extract archive (use gzip bzip2 -dc dir.txt' ‡ look reference ‡ grep --color reference /usr/share/dict/words archives and compression gpg -c file gpgfile.txt' | xargscp -a --target-directory=dir_txt/ -. ) | ( cd /where/to/ && tar -x -p ) contents of copy/ dir to /where/to/ Copy (with permissions) ( tar -c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && copy/ dir to tar -x -p' remote:/where/to/ dir Backup harddisk to remote ddbs=1M if=/dev/sda | gzip | sshuser@remote 'dd of=sda.gpg' dir/ on remote machine find dir/ -name '*.gz.com/path/to/file file times for troublesome downloads rsync --bwlimit=1000 fromfiletofile Locally copy with rate .bz2 | tar -x instead of bzip2 for tar.tar.gz files) tar -c dir/ | gzip | gpg -c | sshuser@remote 'dd Make encrypted archive of of=dir.bz2 dir/ and below find dir/ -name '*.gz' machine rsync (Network efficient file copier: Use the --dry-run option for testing) Only get diffs.server.tar.tar.‡ find -type f ! -perm -444 ‡ find -type d ! -perm -111 ‡ locate -r 'file[^/]*\.| bzip2 > Make archive of subset of dir_txt.txt Quickly search (sorted) dictionary for prefix Highlight occurances of regular expression in dictionary Encrypt file Decrypt file Make compressed archive tar -c dir/ | bzip2 > dir.gpg while loop) Find files not readable by all (useful for web site) Find dirs not accessible by all (useful for web site) Search cached index for names. Do multiple rsync -P rsync://rsync.Make copy of subset of parents dir/ and below Copy (with permissions) ( tar -c /dir/to/copy ) | ( cd /where/to/ && tar -x -p ) copy/ dir to /where/to/ dir Copy (with permissions) ( cd /dir/to/copy && tar -c .txt' | tar -c --files-from=.tar. This re is like glob *file*.

org/cmdline.pixelbeat.rsync -az -e ssh --delete ~/public_html/ remote.html | grep 'a href' | head echo 'wgeturl' | at 01:00 wget --limit-rate=20k url . ThismightsaturateGigE Forward connections to $HOSTNAME:8080 out to $HOST:80 Forward connections from $HOST:1434 in to imap:143 Install public key for $USER@$HOST for password-less log in Store local browsable version of a page to the current dir Continue downloading a partially downloaded file Download a set of files to the current directory FTP supportsglobbingdirectly Process output directly Download url at 1AM to current dir Do a low priority download (limit to scp -c arcfour $USER@$LANHOST: bigfile ssh -g -L 8080:localhost:80 root@$HOST ssh -R 1434:imap:143 root@$HOST ssh-copy-id $USER@$HOST wget (multi purpose download tool) ‡ (cd dir/ &&wget -nd -pHEKk http://www.http://www.pixelbeat.example. remote:/dir/ ssh (SecureSHell) ssh $USER@$HOST command ‡ ssh -f -Y $USER@$HOSTNAME xeyes scp -p -r $USER@$HOST: file dir/ limit. It's like nice for I/O Mirror web site (using compression and encryption) Synchronize current directory with remote one Run command on $HOST as $USER (default command=shell) Run GUI command on $HOSTNAME as $USER Copy with permissions to $USER's home directory on $HOST Use faster crypto for local LAN.com/dir/ wget ftp://remote/file[1-9].example.com/large.iso/ ‡ wget -q -O.org/timeline.jpg' http://www.html) wget -c http://www. &&rsync -auz -e ssh .com:'~/public_html' rsync -auz -e sshremote:/dir/ .file wget -r -nd -np -l1 -A '*.

0) ‡ iproute show Listroutingtable Set default gatewayto ip route add default via 1.3.2.2.org for name or vice versa Lookup local ip address ‡ hostname -i (equivalent to host `hostname`) Lookup whois info for ‡ whois pixelbeat. route.20KB/s in this case) wget -nv --spider --force-html -i bookmarks.254 1.3.html Check links in a file Efficiently update a local wget --mirror http://www.254 Lookup DNS ip address ‡ host pixelbeat.org hostname or ip address List internet services on a ‡ netstat -tupl system List active connections ‡ netstat -tup to/from system windows networking (Note samba is the package that provides all this windows specific networking support) Find windows machines.4/24 brd + dev eth0 (255.com/ copy of a site (handy from cron) networking (Note ifconfig.255.example. mii-tool.255. ‡ smbtree See also findsmb . nslookup commands are obsolete) Show status of ethernet ethtool eth0 interface eth0 Manually set ethernet ethtool --change eth0 autoneg off speed 100 duplex full interface speed Show status of wireless iwconfig eth1 interface eth1 Manually set wireless iwconfig eth1 rate 1Mb/s fixed interface speed List wireless networks in ‡ iwlist scan range ‡ ip link show Listnetwork interfaces Rename interface eth0 to ip link set dev eth0 name wan wan Bring interface eth0 up (or ip link set dev eth0 up down) ‡ ipaddr show Listaddressesfor interfaces Add (or del) ip and mask ipaddr add 1.2.3.

\}\)/\1/" Rightalignnumbers sed -n '1000{p. /^ *$/d' blank lines Concatenatelineswithtraili sed ':a. s/\\\n//.20p.1n -k2.guest //windows_box/share /mnt/share echo 'message' | smbclient -M windows_box Find the windows (netbios) name associated with ip address List shares on windows machine or samba server Mount a windows share Send popup to windows machine (off by default in XP sp2) text manipulation (Note sed uses stdin and stdout. Alsotheseassume no duplicatelineswithin a file) sort file1 file2 | uniq Union of unsorted files . -k1.nmblookup -A 1.*/\1/ip.4 smbclient -L windows_box mount -t smbfs -o fmask=666.*<title>\(.2.3. /\\$/N.q}' Print 1000th line sed -n '10.20q' Printlines 10 to 20 Extract title from HTML sed -n 's/. Newer versions support inplace editing with the -i option) Replace string1 with sed 's/string1/string2/g' string2 Modify anystring1 to sed 's/\(.2n -k3.*\)1/\12/g' anystring2 Remove comments and sed '/ *#/d.q' web page sed -i 42d ~/.4n Sort IPV4 ipaddresses ‡ echo 'Test' | tr '[:lower:]' '[:upper:]' Case conversion Filter non ‡ tr -dc '[:print:]' < /dev/urandom printablecharacters cut fields separated by ‡ tr -s '[:blank:]' '\t' </proc/diskstats | cut -f4 blanks ‡ history | wc -l Countlines set operations (Note you can export LANG=C for speed.ssh/known_hosts Delete a particular line sort -t. ta' ng \ Remove trailing spaces sed 's/[ \t]*$//' from lines Escape shell sed 's/\([`"$\]\)/\\\1/g' metacharacters active within double quotes ‡ seq 10 | sed "s/^/ /. s/ *\(.3n -k4.\{7.*\)<\/title>.T.

print (100E6)/((pad+min)*8)' | python ation echo 'pad=20. ‡ seq 100 | (tr '\n' +. 64206' | bc to hexadecimal) Base conversion (hex to ‡ echo $((0x2dec)) dec) ((shell arithmetic expansion)) Unit conversion (metric to ‡ units -t '100m/9. ibase=10. min=64. See also bc ‡ seq -f '4/%g' 1 2 99999 | paste -sd-+ | bc -l Calculate the unix way More complex (int) e. echo 0) | bc See also add and funcpy calendar ‡ cal -3 Display a calendar Display a calendar for a ‡ cal 9 1752 particular month year What date is it this ‡ date -d fri friday. min=64. ‡ echo 'pad=20.g. (100*10^6)/((pad+min)*8)' | bc This shows max FastE packet rate Pythonhandlesscientificnot ‡ echo 'pad=20.Seealso day ‡ [ $(date -d '12:00 +1 day' +%d) = '01' ] || exit exit a script unless it's the ‡ echo '(1 + sqrt(5))/2' | bc -l .sort file1 file2 | uniq -d sort file1 file1 file2 | uniq -u sort file1 file2 | uniq -u join -t'\0' -a1 -a2 file1 file2 join -t'\0' file1 file2 join -t'\0' -v2 file1 file2 join -t'\0' -v1 -v2 file1 file2 math Intersection of unsorted files Difference of unsorted files Symmetric Difference of unsorted files Union of sorted files Intersection of sorted files Difference of sorted files Symmetric Difference of sorted files Quick math (Calculate ).58s' 'miles/hour' imperial) Unit conversion ‡ units -t '500GB' 'GiB' (SI to IEC prefixes) ‡ units -t '1 googol' Definitionlookup Add a column of numbers. plot [64:1518] (100*10**6)/((pad+x)*8)' | Plot FastE packet rate vs ‡ gnuplot -persist packet size Base conversion (decimal ‡ echo 'obase=16.

\{4...utf8 file_to_change. unix2dos) ‡ recode -l | less last day of the month What day does xmas fall on. <file..txt recode iso-8859-15.dump .HTML < file..qp> file. file_to_change.b64 recode /qp.. dos2unix.txt > file. this year Convert seconds since the epoch (1970-01-01 UTC) to date What time is it on west coast of US (use tzselect to find TZ) What's the local time for 9AM next Friday on west coast US Print number with thousands grouping appropriate to locale Use locale thousands grouping in ls. Seealso ccodes List fields available in locale database Show available conversions (aliases on each line) Windows "ansi" to local charset (auto does CRLF conversion) Windows utf8 to local charset Latin9 (western europe) to utf8 Base64 encode Quotedprintabledecode Text to HTML Lookup table of characters Show what a code represents in latin-9 recode windows-1252./b64 < file.‡ date --date='25 Dec' +%A ‡ date --date='@2147483647' ‡ TZ='America/Los_Angeles' date ‡ date --date='TZ="America/Los_Angeles" 09:00 nextFri' locales ‡ printf "%'d\n" 1234 ‡ BLOCK_SIZE=\'1 ls -l ‡ echo "I live in `locale territory`" ‡ LANG=en_IE..txt recode .*/\1/p') | less recode (Obsoletesiconv. file_to_change.txt recode ..txt recode utf-8/CRLF.\}\)=.html ‡ recode -lf windows-1252 | grep euro ‡ echo -n 0x80 | recode latin-9/x1.txt > file.utf8 locale int_prefix ‡ locale -kc $(locale | sed -n 's/\(LC_. Seealso l Extract info from locale database Lookup locale info for specific country.

gz mkisofs -V LABEL -r dir | gzip> cdrom.cdda.utf-8/x CDs gzip< /dev/cdrom> cdrom.test (taking no space).ogg' disk space (See also FSlint) charmap Show latin-9 encoding Show utf-8 encoding Save copy of data cdrom Create cdrom image from contents of dir Mount the cdrom image at /mnt/dir (read only) Clear a CDRW Burn cdrom image (use dev=ATAPI -scanbus to confirm dev) Rip audio tracks from CD to wav files in current dir Make audio CD from all wavs in current dir (see also cdrdao) Make ogg file from wav file Show files by size.iso.1n installed size (Bytes) on rpm distros List all packages by dpkg-query -W -f='${Installed-Size.latin-9/x ‡ echo -n 0x20AC | recode ucs-2/x2.gz | cdrecord -v dev=/dev/cdrom cdparanoia -B cdrecord -v dev=/dev/cdrom -audio -pad *.‡ echo -n 0x20AC | recode ucs-2/x2.10}\t${Package}\n' | sort ‡ installed size (KBytes) on -k1.wav oggenc --tracknum='track' track.gz mount -o loop cdrom.. Seealso truncate ‡ ls -lSr . biggest last Show top disk users in ‡ du -s * | sort -k1..1n deb distros Create a large test file ‡ ddbs=1 seek=2TB if=/dev/null of=ext3.1h interpret disk usage Show free space on ‡ df -h mounted filesystems Show free inodes on ‡ df -i mounted filesystems Show disks partitions sizes ‡ fdisk -l and types (run as root) List all packages by ‡ rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1.wav -o 'track.iso.1rn | head current dir.iso /mnt/dir cdrecord -v dev=/dev/cdrom blank=fast gzip -dc cdrom. Seealso dutop Sort paths by easy to ‡ du -hs /home/* | sort -k1.iso.

See also tcpdump_not_me List processes in a ‡ ps -e -o pid.cputime.cpu.tid.2 ls>/dev/null stdout and stderr List library calls made by ‡ ltrace -f -e getenvls>/dev/null command List paths that process id ‡ lsof -p $$ has open List processes that have ‡ lsof ~ specified path open Show network traffic ‡ tcpdumpnotport 22 except ssh.state.args --sort pcpu | sed '/^ List processes by % cpu ‡ 0.args --forest hierarchy ps -e -o pcpu.args= | sort -b -k1.state particular process List elapsed wall time for ‡ ps -p 1.nice.1 'cat /proc/interrupts' continuously Monitor udev events to ‡ udevadm monitor help configure rules system information (see also sysinfo) ('#' means root access is required) Show kernel version and ‡ uname -a system architecture ‡ tail -f /var/log/messages . See also ps_mem.py List all threads for a ‡ ps -C firefox-bin -L -o pid.pcpu.$$ -o etime= particular process IDs ‡ lastreboot Show systemreboothistory Show amount of ‡ free -m (remaining) RAM (-m displays in MB) Watchchangeable data ‡ watch -n.‡ > file monitoring/debugging truncate data of file or create an empty file Monitor messages in a log file Summarise/profile system ‡ strace -c ls>/dev/null calls made by command List system calls made by ‡ strace -f -e open ls>/dev/null command Monitor what's written to ‡ strace -f -e trace=write -e write=1.0 /d' usage List processes by mem ‡ ps -e -orss=.1n | pr -TW$COLUMNS (KB) usage.

gnuplot. tar. Show name and version of distribution Show all partitions registered on the system Show RAM total seen by the system Show CPU(s) info Show PCI info Show USB info List mounted filesystems on the system (and align output) Show state of cells in laptop battery Display SMBIOS/DMI information How long has this disk (system) been powered on in total Show info about disk sda Do a read speed test on disk sda Test for unreadable blocks on disk sda Line editor used by bash. . .. Virtual terminals with detach capability... Powerful file manager that can browse rpm.. bc. Interactive/scriptablegraph ing Web browser open a file or url with the registered desktop application . python...‡ head -n1 /etc/issue ‡ cat /proc/partitions ‡ grep MemTotal /proc/meminfo ‡ grep "model name" /proc/cpuinfo ‡ lspci -tv ‡ lsusb -tv ‡ mount | column -t ‡ grep -F capacity: /proc/acpi/battery/BAT0/info # dmidecode -q | less # smartctl -A /dev/sda | grepPower_On_Hours # hdparm -i /dev/sda # hdparm -tT /dev/sda # badblocks -s /dev/sda interactive (see also linux keyboard shortcuts) ‡ readline ‡ screen ‡ mc ‡ gnuplot ‡ links ‡ xdg-open . ssh. ftp. .