Linux

Linux commands
adduser Add a user to the system addgroup Add a group to the system alias   Create an alias • apropos Search Help manual pages (man -k) apt-get Search for and install software packages (Debian/Ubuntu) aptitude Search for and install software packages (Debian/Ubuntu) aspell  Spell Checker awk     Find and Replace text, database sort/validate/index at queue, examine or delete jobs for later execution basename Strip directory and suffix from filenames bash    GNU Bourne-Again SHell bc      Arbitrary precision calculator language bg      Send to background break   Exit from a loop • builtin Run a shell builtin bzip2   Compress or decompress named file(s) cal     Display a calendar case    Conditionally perform a command cat     Concatenate and print (display) the content of files cd      Change Directory cfdisk  Partition table manipulator for Linux chgrp   Change group ownership chmod   Change access permissions chown   Change file owner and group chroot  Run a command with a different root directory chkconfig System services (runlevel) cksum   Print CRC checksum and byte counts clear   Clear terminal screen cmp     Compare two files comm    Compare two sorted files line by line command Run a command - ignoring shell functions • continue Resume the next iteration of a loop • cp      Copy one or more files to another location cron    Daemon to execute scheduled commands crontab Schedule a command to run at a later time csplit  Split a file into context-determined pieces cut     Divide a file into several parts date    Display or change the date & time dc      Desk Calculator dd      Convert and copy a file, write disk headers, boot records ddrescue Data recovery tool declare Declare variables and give them attributes • df      Display free disk space diff    Display the differences between two files diff3   Show differences among three files dig     DNS lookup dir     Briefly list directory contents dircolors Colour setup for `ls' dirname Convert a full pathname to just a path dirs    Display list of remembered directories dmesg   Print kernel & driver messages du      Estimate file space usage echo    Display message on screen • egrep   Search file(s) for lines that match an extended expression eject   Eject removable media enable  Enable and disable builtin shell commands • env     Environment variables ethtool Ethernet card settings eval    Evaluate several commands/arguments exec    Execute a command exit    Exit the shell expect  Automate arbitrary applications accessed over a terminal expand  Convert tabs to spaces export  Set an environment variable expr    Evaluate expressions false   Do nothing, unsuccessfully fdformat Low-level format a floppy disk fdisk   Partition table manipulator for Linux fg      Send job to foreground fgrep   Search file(s) for lines that match a fixed string file    Determine file type find    Search for files that meet a desired criteria fmt     Reformat paragraph text fold    Wrap text to fit a specified width. for     Expand words, and execute commands format  Format disks or tapes free    Display memory usage fsck    File system consistency check and repair ftp     File Transfer Protocol function Define Function Macros fuser   Identify/kill the process that is accessing a file gawk    Find and Replace text within file(s) getopts Parse positional parameters grep    Search file(s) for lines that match a given pattern groups  Print group names a user is in  gzip     Compress or decompress named file(s) hash    Remember the full pathname of a name argument head    Output the first part of file(s) help    Display help for a built-in command • history Command History hostname Print or set system name iconv   Convert the character set of a file id      Print user and group id's  if       Conditionally perform a command ifconfig Configure a network interface ifdown  Stop a network interface ifup    Start a network interface up  import   Capture an X server screen and save the image to file install Copy files and set attributes jobs    List active jobs join    Join lines on a common field kill    Stop a process from running killall Kill processes by name less    Display output one screen at a time let     Perform arithmetic on shell variables ln      Make links between files local   Create variables locate  Find files logname Print current login name logout  Exit a login shell • look    Display lines beginning with a given string lpc     Line printer control program lpr     Off line print lprint  Print a file lprintd Abort a print job lprintq List the print queue lprm    Remove jobs from the print queue ls      List information about file(s) lsof    List open files make    Recompile a group of programs man     Help manual mkdir   Create new folder(s) mkfifo  Make FIFOs (named pipes) mkisofs Create an hybrid ISO9660/JOLIET/HFS filesystem mknod   Make block or character special files more    Display output one screen at a time mount   Mount a file system mtools  Manipulate MS-DOS files mtr     Network diagnostics (traceroute/ping) mv      Move or rename files or directories mmv     Mass Move and rename (files) netstat Networking information nice    Set the priority of a command or job nl      Number lines and write files nohup   Run a command immune to hangups notify-send Send desktop notifications nslookup Query Internet name servers interactively open    Open a file in its default application op      Operator access passwd  Modify a user password paste   Merge lines of files pathchk Check file name portability ping    Test a network connection pkill   Stop processes from running popd    Restore the previous value of the current directory pr      Prepare files for printing printcap Printer capability database printenv Print environment variables printf  Format and print data • ps      Process status pushd   Save and then change the current directory pwd     Print Working Directory quota   Display disk usage and limits quotacheck Scan a file system for disk usage quotactl Set disk quotas ram     ram disk device rcp     Copy files between two machines read    Read a line from standard input • readarray Read from stdin into an array variable • readonly Mark variables/functions as readonly reboot  Reboot the system rename  Rename files renice  Alter priority of running processes remsync Synchronize remote files via email return  Exit a shell function rev     Reverse lines of a file rm      Remove files rmdir   Remove folder(s) rsync   Remote file copy (Synchronize file trees) screen  Multiplex terminal, run remote shells via ssh scp     Secure copy (remote file copy) sdiff   Merge two files interactively sed     Stream Editor select  Accept keyboard input seq     Print numeric sequences set     Manipulate shell variables and functions sftp    Secure File Transfer Program shift   Shift positional parameters shopt   Shell Options shutdown Shutdown or restart linux sleep   Delay for a specified time slocate Find files sort    Sort text files source  Run commands from a file `.' split   Split a file into fixed-size pieces ssh     Secure Shell client (remote login program) strace  Trace system calls and signals su      Substitute user identity sudo    Execute a command as another user sum     Print a checksum for a file suspend Suspend execution of this shell • symlink Make a new name for a file sync    Synchronize data on disk with memory tail    Output the last part of files tar     Tape ARchiver tee     Redirect output to multiple files test    Evaluate a conditional expression time    Measure Program running time times   User and system times touch   Change file timestamps top     List processes running on the system traceroute Trace Route to Host trap    Run a command when a signal is set(bourne) tr      Translate, squeeze, and/or delete characters true    Do nothing, successfully tsort   Topological sort tty     Print filename of terminal on stdin type    Describe a command ulimit  Limit user resources umask   Users file creation mask umount  Unmount a device unalias Remove an alias uname   Print system information unexpand Convert spaces to tabs uniq    Uniquify files units   Convert units from one scale to another unset   Remove variable or function names unshar  Unpack shell archive scripts until   Execute commands (until error) useradd Create new user account usermod Modify user account users   List users currently logged in  uuencode Encode a binary file uudecode Decode a file created by uuencode v       Verbosely list directory contents (`ls -l -b') vdir    Verbosely list directory contents (`ls -l -b') vi      Text Editor vmstat  Report virtual memory statistics wait    Wait for a process to complete watch   Execute/display a program periodically wc      Print byte, word, and line counts whereis Search the user's $path, man pages and source files for a program which   Search the user's $path for a program file while   Execute commands who     Print all usernames currently logged in  whoami   Print the current user id and name (`id -un') Wget    Retrieve web pages or files via HTTP, HTTPS or FTP write   Send a message to another user xargs   Execute utility, passing constructed argument list(s) xdg-open Open a file or URL in the user's preferred application. yes     Print a string continuously until interrupted / repeatedly output a string until killed .       Run a command script in the current shell !!      Run the last command again ###     Comment / Remark Examples: apropos whatis	Show commands pertinent to string man -t ascii | ps2pdf - > ascii.pdf	make a pdf of a manual page 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 directory navigation cd -	Go to previous directory cd	Go to $HOME directory (cd dir && command)	Change to dir, execute command and return to current dir pushd. Put current dir on stack so you can restore the previous value to it( popd). File searching commands: alias l='ls -l --color=auto'	quick dir listing ls -lrt	List files by date. See also newest and find_mm_yyyy ls /usr/bin | pr -T9 -W$COLUMNS	Print in 9 columns to width of terminal 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 'hallo' - Search all regular files for 'hallo' in this dir and below find -maxdepth 1 -type f | xargs grep -F 'hallo'	Search all regular files for 'hallo' 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 / very useful to web sites find -type d ! -perm -111	Find dirs not accessible by all also useful for web sites locate -r 'file[^/]*\.txt'	Search cached index for names. This re is like glob *file*.txt look reference	Quickly search (sorted) dictionary for prefix grep --color reference /usr/share/dict/words -	Highlight occurances of regular expression in dictionary archives and compression gpg -c file	Encrypt file gpg file.gpg	Decrypt file tar -c dir/ | bzip2 > dir.tar.bz2	Make compressed 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 -c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar -x -p' 	Copy (with permissions) copy/ dir to remote:/where/to/ dir dd bs=1M if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz'	Backup harddisk to remote machine rsync (Network efficient file copier: 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 ssh (Secure SHell) ssh $USER@$HOST command	Run command on $HOST as $USER (default command=shell) ssh -f -Y $USER@$HOSTNAME xeyes	Run GUI command on $HOSTNAME as $USER scp -p -r $USER@$HOST: file dir/	Copy with permissions to $USER's home directory on $HOST scp -c arcfour $USER@$LANHOST: bigfile	Use faster crypto for local LAN. This might saturate GigE ssh -g -L 8080:localhost:80 root@$HOST	Forward connections to $HOSTNAME:8080 out to $HOST:80 ssh -R 1434:imap:143 root@$HOST	Forward connections 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) (cd dir/ && wget -nd -pHEKk http://www.icteduwiki.org/index.php)	Store local browsable version of a page to the current dir wget -c http://icteduwiki.org.com/smal.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.icteduwiki.org/!@^3^3^6^/^6^5^/^i^n^d^e^x^.php | 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) networking (Note ifconfig, route, mii-tool, nslookup commands are obsolete) ethtool eth0	Show status of ethernet interface eth0 ethtool --change eth0 autoneg off speed 100 duplex full	Manually set ethernet interface speed iwconfig eth1	Show status of wireless interface eth1 iwconfig eth1 rate 1Mb/s fixed	Manually set wireless interface speed iwlist scan	List wireless networks in range ip link show	List network interfaces ip link set dev eth0 name wan	Rename interface eth0 to wan ip link set dev eth0 up	Bring interface eth0 up (or down) ip addr show	List addresses for interfaces ip addr add 1.2.3.4/24 brd + dev eth0	Add (or del) ip and mask (255.255.255.0) ip route show	List routing table ip route add default via 1.2.3.254	Set default gateway to 1.2.3.254 host pixelbeat.org	Lookup DNS ip address for name or vice versa hostname -i	Lookup local ip address (equivalent to host `hostname`) whois pixelbeat.org	Lookup whois info for hostname or ip address netstat -tupl	List internet services on a system netstat -tup	List active connections to/from system Windows networking (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) Text manipulation (Note sed uses stdin and stdout. Newer versions support inplace editing with the -i option): 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 ':a; /\\$/N; s/\\\n//; ta'	Concatenate lines with trailing \ sed 's/[ \t]*$//'	Remove trailing spaces from lines sed 's/\([`"$\]\)/\\\1/g'	Escape shell 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 	sed -n 's/.* \(.*\)<\/title>.*/\1/ip;T;q'	Extract title from HTML web page 	sed -i 42d ~/.ssh/known_hosts	Delete a particular line 	sort -t. -k1,1n -k2,2n -k3,3n -k4,4n	Sort IPV4 ip addresses	echo 'Test' | tr '[:lower:]' '[:upper:]'	Case conversion	tr -dc '[:print:]' < /dev/urandom	Filter non printable characters	tr -s '[:blank:]' '\t' </proc/diskstats | cut -f4	cut fields separated by 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) 	sort file1 file2 | uniq		Union of unsorted files 	sort file1 file2 | uniq -d		Intersection of unsorted files 	sort file1 file1 file2 | uniq -u	Difference of unsorted files sort file1 file2 | uniq -u		Symmetric Difference of unsorted files join -t'\0' -a1 -a2 file1 file2	Union of sorted files join -t'\0' file1 file2		Intersection of sorted files join -t'\0' -v2 file1 file2		Difference of sorted files join -t'\0' -v1 -v2 file1 file2	Symmetric Difference of sorted files

Math: echo '(1 + sqrt(5))/2' | bc -l	Quick math (Calculate φ). view also bc seq -f '4/%g' 1 2 99999 | paste -sd-+ | bc -l	Calculate π the unix way 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 echo 'obase=16; ibase=10; 64206' | bc	Base conversion (decimal to hexadecimal) echo $((0x2dec))	Base conversion (hex to dec) ((shell arithmetic expansion)) units -t '100m/9.58s' 'miles/hour'	Unit conversion (metric to imperial) units -t '500GB' 'GiB'	Unit conversion (SI to IEC prefixes) units -t '1 googol'	Definition lookup seq 100 | (tr '\n' +; echo 0) | bc	Add a column of numbers. See also add and funcpy 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 -d '12:00 +1 day' +%d) = '01' ] || exit exit a script unless it's the last day of the month date --date='25 Dec' +%A	What day does xmas fall on, this year date --date='@2147483647'	Convert seconds since the epoch (1970-01-01 UTC) to date TZ='America/Los_Angeles' date	What time is it on west coast of US (use tzselect to find TZ) date --date='TZ="America/Los_Angeles" 09:00 next Fri'	What's the local time for 9AM next Friday on west coast US locales printf "%'d\n" 1234	Print number with thousands grouping appropriate to locale BLOCK_SIZE=\'1 ls -l	Use locale thousands grouping in ls. See also l echo "I live in `locale territory`"	Extract info from locale database LANG=en_IE.utf8 locale int_prefix	Lookup locale info for specific country. See also ccodes locale -kc $(locale | sed -n 's/\(LC_.\{4,\}\)=.*/\1/p') | less List fields available in locale database 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.qp > file.txt	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 CDs gzip < /dev/cdrom > cdrom.iso.gz	Save copy of data cdrom mkisofs -V LABEL -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 -pad *.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 disk space (See also FSlint) ls -lSr	Show files by size, biggest last du -s * | sort -k1,1rn | head	Show top disk users in current dir. See also dutop du -hs /home/* | sort -k1,1h	Sort paths by easy to interpret disk usage df -h	Show free space on mounted filesystems df -i	Show free inodes on mounted filesystems 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 distros dd bs=1 seek=2TB if=/dev/null of=ext3.test	Create a large test file (taking no space). you can also view truncate > file	truncate data of file or create an empty file monitoring/debugging tail -f /var/log/messages	Monitor messages in a log file 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 strace -f -e trace=write -e write=1,2 ls >/dev/null	Monitor what's written to stdout and stderr 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 (KB) usage. view also ps_mem.py ps -C firefox-bin -L -o pid,tid,pcpu,state	List all threads for a particular process ps -p 1,$$ -o etime=	List elapsed wall time for particular process IDs last reboot	Show system reboot history free -m	Show amount of (remaining) RAM (-m displays in MB) watch -n.1 'cat /proc/interrupts'	Watch changeable data continuously udevadm monitor	Monitor udev events to help configure rules system information (view also sysinfo) ('#' means root access is required) uname -a	Show kernel version and system architecture head -n1 /etc/issue	Show name and version of distribution 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 mount | column -t	List mounted filesystems on the system (and align output) grep -F capacity: /proc/acpi/battery/BAT0/info	Show state of cells in laptop battery dmidecode -q | less	Display SMBIOS/DMI information smartctl -A /dev/sda | grep Power_On_Hours	How long has this disk (system) been powered on in total hdparm -i /dev/sda	Show info about disk sda hdparm -tT /dev/sda	Do a read speed test on disk sda badblocks -s /dev/sda	Test for unreadable blocks on disk sda interactive (see also linux keyboard shortcuts) readline	Line editor used by bash, python, bc, gnuplot, ... screen	Virtual terminals with detach capability, ... mc	Powerful file manager that can browse rpm, tar, ftp, ssh, ... gnuplot	Interactive/scriptable graphing links	Web browser xdg-open. open a file or url with the registered desktop application