100% found this document useful (1 vote)
216 views

Linux Commands

The document provides many useful Linux commands for tasks like file management, compression, networking, and remote access. It lists commands for navigating directories, searching files, making archives, securely transferring files over networks, and managing network interfaces.

Uploaded by

Pragathesh
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
216 views

Linux Commands

The document provides many useful Linux commands for tasks like file management, compression, networking, and remote access. It lists commands for navigating directories, searching files, making archives, securely transferring files over networks, and managing network interfaces.

Uploaded by

Pragathesh
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 8

command Description

Show commands pertinent to string.


• apropos whatis
See also threadsafe
• man -t man | ps2pdf - > man.pdf make a pdf of a manual page
which command Show full path name of command
time command See how long a command takes
Start stopwatch. Ctrl-d to stop. See
• time cat
also sw
Run a low priority command (The
• nice info
"info" reader in this case)
Make shell (script) low priority. Use
• renice 19 -p $$
for non interactive tasks
dir navigation
• cd - Go to previous directory
• cd Go to $HOME directory
Go to dir, execute command and
(cd dir && command)
return to current dir
Put current dir on stack so you can
• pushd .
popd back to it
file searching
• alias l='ls -l --color=auto' quick dir listing
List files by date. See also newest and
• ls -lrt
find_mm_yyyy
Print in 9 columns to width of
• ls /usr/bin | pr -T9 -W$COLUMNS
terminal
Search 'expr' in this dir and below.
find -name '*.[ch]' | xargs grep -E 'expr'
See also findrepo
Search all regular files for 'example'
find -type f -print0 | xargs -r0 grep -F 'example'
in this dir and below
Search all regular files for 'example'
find -maxdepth 1 -type f | xargs grep -F 'example'
in this dir
find -maxdepth 1 -type d | while read dir; do echo Process each item with multiple
$dir; echo cmd2; done commands (in while loop)
Find files not readable by all (useful
• find -type f ! -perm -444
for web site)
Find dirs not accessible by all (useful
• find -type d ! -perm -111
for web site)
Search cached index for names. This
• locate -r 'file[^/]*\.txt'
re is like glob *file*.txt
Quickly search (sorted) dictionary for
• look reference
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/
Extract archive (use gzip instead of
bzip2 -dc dir.tar.bz2 | tar -x
bzip2 for tar.gz files)
tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd Make encrypted archive of dir/ on
of=dir.tar.gz.gpg' remote machine
find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 Make archive of subset of dir/ and
> dir_txt.tar.bz2 below
find dir/ -name '*.txt' | xargs cp -a --target- Make copy of subset of dir/ and
directory=dir_txt/ --parents 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/ && Copy (with permissions) contents of
tar -x -p ) copy/ dir to /where/to/
( tar -c /dir/to/copy ) | ssh -C user@remote 'cd Copy (with permissions) copy/ dir to
/where/to/ && tar -x -p' remote:/where/to/ dir
dd bs=1M if=/dev/sda | gzip | ssh user@remote
Backup harddisk to remote machine
'dd of=sda.gz'
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 rate limit. It's like
rsync --bwlimit=1000 fromfile tofile
nice for I/O
rsync -az -e ssh --delete ~/public_html/ Mirror web site (using compression
remote.com:'~/public_html' and encryption)
rsync -auz -e ssh remote:/dir/ . && rsync -auz -e Synchronize current directory with
ssh . remote:/dir/ remote one
ssh (Secure SHell)
Run command on $HOST as $USER
ssh $USER@$HOST command
(default command=shell)
Run GUI command on
• ssh -f -Y $USER@$HOSTNAME xeyes
$HOSTNAME as $USER
Copy with permissions to $USER's
scp -p -r $USER@$HOST: file dir/
home directory on $HOST
Forward connections to
ssh -g -L 8080:localhost:80 root@$HOST $HOSTNAME:8080 out to
$HOST:80
Forward connections from
ssh -R 1434:imap:143 root@$HOST
$HOST:1434 in to imap:143
wget (multi purpose download tool)
• (cd dir/ && wget -nd -pHEKk Store local browsable version of a
http://www.pixelbeat.org/cmdline.html) page to the current dir
Continue downloading a partially
wget -c http://www.example.com/large.file
downloaded file
wget -r -nd -np -l1 -A '*.jpg' Download a set of files to the current
http://www.example.com/dir/ directory
wget ftp://remote/file[1-9].iso/ FTP supports globbing directly
wget -q -O-
• http://www.pixelbeat.org/timeline.html | grep 'a Process output directly
href' | head
echo 'wget url' | at 01:00 Download url at 1AM to current dir
Do a low priority download (limit to
wget --limit-rate=20k url
20KB/s in this case)
wget -nv --spider --force-html -i bookmarks.html Check links in a file
Efficiently update a local copy of a
wget --mirror http://www.example.com/
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
Manually set ethernet interface speed
duplex full
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
Add (or del) ip and mask
ip addr add 1.2.3.4/24 brd + dev eth0
(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
tc qdisc add dev lo root handle 1:0 netem delay Add 20ms latency to loopback device

20msec (for testing)
• tc qdisc del dev lo root Remove latency added above
Lookup DNS ip address for name or
• host pixelbeat.org
vice versa
Lookup local ip address (equivalent
• hostname -i
to host `hostname`)
Lookup whois info for hostname or ip
• whois pixelbeat.org
address
• netstat -tupl List internet services on a system
List active connections to/from
• netstat -tup
system
windows networking (Note samba is the package that provides all this windows specific
networking support)
Find windows machines. See also
• smbtree
findsmb
Find the windows (netbios) name
nmblookup -A 1.2.3.4
associated with ip address
List shares on windows machine or
smbclient -L windows_box
samba server
mount -t smbfs -o fmask=666,guest
Mount a windows share
//windows_box/share /mnt/share
Send popup to windows machine (off
echo 'message' | smbclient -M windows_box
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
Escape shell metacharacters active
sed 's/\([`"$\]\)/\\\1/g'
within double quotes
• seq 10 | sed "s/^/ /; s/ *\(.\{7,\}\)/\1/" Right align numbers
sed -n '1000p;1000q' Print 1000th line
sed -n '10,20p;20q' Print lines 10 to 20
sed -n 's/.*<title>\(.*\)<\/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
• 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
Symmetric Difference of unsorted
sort file1 file2 | uniq -u
files
join -a1 -a2 file1 file2 Union of sorted files
join file1 file2 Intersection of sorted files
join -v2 file1 file2 Difference of sorted files
join -v1 -v2 file1 file2 Symmetric Difference of sorted files
math
• echo '(1 + sqrt(5))/2' | bc -l Quick math (Calculate φ). See also bc
• echo 'pad=20; min=64; (100*10^6)/ More complex (int) e.g. This shows
((pad+min)*8)' | bc max FastE packet rate
echo 'pad=20; min=64; print (100E6)/
• Python handles scientific notation
((pad+min)*8)' | python
echo 'pad=20; plot [64:1518] (100*10**6)/
• Plot FastE packet rate vs packet size
((pad+x)*8)' | gnuplot -persist
Base conversion (decimal to
• echo 'obase=16; ibase=10; 64206' | bc
hexadecimal)
Base conversion (hex to dec) ((shell
• echo $((0x2dec))
arithmetic expansion))
• units -t '100m/9.69s' 'miles/hour' Unit conversion (metric to imperial)
• units -t '500GB' 'GiB' Unit conversion (SI to IEC prefixes)
• units -t '1 googol' Definition lookup
Add a column of numbers. See also
• seq 100 | (tr '\n' +; echo 0) | bc
add and funcpy
calendar
• cal -3 Display a calendar
Display a calendar for a particular
• cal 9 1752
month year
What date is it this friday. See also
• date -d fri
day
exit a script unless it's the last day of
• [ $(date -d "tomorrow" +%d) = "01" ] || exit
the month
• date --date='25 Dec' +%A What day does xmas fall on, this year
Convert seconds since the epoch
• date --date='@2147483647'
(1970-01-01 UTC) to date
What time is it on West coast of US
• TZ=':America/Los_Angeles' date
(use tzselect to find TZ)
echo "mail -s 'get the train' [email protected]
Email reminder
< /dev/null" | at 17:45
echo "DISPLAY=$DISPLAY xmessage cooker" |
• Popup reminder
at "NOW + 30 minutes"
locales
Print number with thousands
• printf "%'d\n" 1234
grouping appropriate to locale
get ls to do thousands grouping
• BLOCK_SIZE=\'1 ls -l
appropriate to locale
• echo "I live in `locale territory`" Extract info from locale database
Lookup locale info for specific
• LANG=en_IE.utf8 locale int_prefix
country. See also ccodes
List fields available in locale
• locale | cut -d= -f1 | xargs locale -kc | less
database
recode (Obsoletes iconv, dos2unix, unix2dos)
Show available conversions (aliases
• recode -l | less
on each line)
Windows "ansi" to local charset (auto
recode windows-1252.. file_to_change.txt
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
Show what a code represents in latin-
• echo -n 0x80 | recode latin-9/x1..dump
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
Create cdrom image from contents of
mkisofs -V LABEL -r dir | gzip > cdrom.iso.gz
dir
Mount the cdrom image at /mnt/dir
mount -o loop cdrom.iso /mnt/dir
(read only)
cdrecord -v dev=/dev/cdrom blank=fast Clear a CDRW
gzip -dc cdrom.iso.gz | cdrecord -v Burn cdrom image (use dev=ATAPI
dev=/dev/cdrom - -scanbus to confirm dev)
Rip audio tracks from CD to wav
cdparanoia -B
files in current dir
Make audio CD from all wavs in
cdrecord -v dev=/dev/cdrom -audio *.wav
current dir (see also cdrdao)
oggenc --tracknum='track' track.cdda.wav -o
Make ogg file from wav file
'track.ogg'
disk space (See also FSlint)
• ls -lSr Show files by size, biggest last
Show top disk users in current dir.
• du -s * | sort -k1,1rn | head
See also dutop
Show free space on mounted
• df -h
filesystems
Show free inodes on mounted
• df -i
filesystems
Show disks partitions sizes and types
• fdisk -l
(run as root)
rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort List all packages by installed size

-k1,1n (Bytes) on rpm distros
dpkg-query -W -f='${Installed-Size;10}\t$ List all packages by installed size

{Package}\n' | sort -k1,1n (KBytes) on deb distros
Create a large test file (taking no
• dd bs=1 seek=2TB if=/dev/null of=ext3.test
space). See also truncate
truncate data of file or create an
• > file
empty file
monitoring/debugging
• tail -f /var/log/messages Monitor messages in a log file
Summarise/profile system calls made
• strace -c ls >/dev/null
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
List processes that have specified
• lsof ~
path open
Show network traffic except ssh. See
• tcpdump not port 22
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
• List processes by % cpu usage
pcpu | sed '/^ 0.0 /d'
ps -e -orss=,args= | sort -b -k1,1n | pr List processes by mem usage. See

-TW$COLUMNS also ps_mem.py
List all threads for a particular
• ps -C firefox-bin -L -o pid,tid,pcpu,state
process
• ps -p 1,2 List info for particular process IDs
• last reboot Show system reboot history
Show amount of (remaining) RAM (-
• free -m
m displays in MB)
• watch -n.1 'cat /proc/interrupts' Watch changeable data continuously
system information (see also sysinfo) ('#' means root access is required)
Show kernel version and system
• uname -a
architecture
Show name and version of
• head -n1 /etc/issue
distribution
Show all partitions registered on the
• cat /proc/partitions
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
List mounted filesystems on the
• mount | column -t
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
How long has this disk (system) been
# smartctl -A /dev/sda | grep Power_On_Hours
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
Test for unreadable blocks on disk
# badblocks -s /dev/sda
sda
interactive (see also linux keyboard shortcuts)
Line editor used by bash, python, bc,
• readline
gnuplot, ...
Virtual terminals with detach
• screen
capability, ...
Powerful file manager that can
• mc
browse rpm, tar, ftp, ssh, ...
• gnuplot Interactive/scriptable graphing
• links Web browser
open a file or url with the registered
• xdg-open http://www.pixelbeat.org/
desktop application
miscellaneous
Handy hexdump. (usage e.g.: • hd
• alias hd='od -Ax -tx1z -v'
/proc/self/cmdline | less)
Canonicalize path. (usage e.g.: •
• alias realpath='readlink -f'
realpath ~/../$USER)
• set | grep $USER Search current environment
Set file timestamp
touch -c -t 0304050607 file
(YYMMDDhhmm)
Serve current directory tree at http://
• python -m SimpleHTTPServer
$HOSTNAME:8000/
© Jan 7 2008 [Comments] | [Add link to ...]

You might also like