Linux Commands
Linux Commands
• apropos whatis
• man -t man | ps2pdf - > man.pdf
which command
time command
• time cat
• nice info
• renice 19 -p $$
dir navigation
• 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]' | xargs grep -E 'expr'
find -type f -print0 | xargs -r0 grep -F 'example'
find -maxdepth 1 -type f | xargs grep -F 'example'
find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done
• find -type f ! -perm -444
• find -type d ! -perm -111
• locate -r 'file[^/]*\.txt'
• look reference
• grep --color reference /usr/share/dict/words
archives and compression
gpg -c file
gpg file.gpg
tar -c dir/ | bzip2 > dir.tar.bz2
bzip2 -dc dir.tar.bz2 | tar -x
tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2
find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents
( tar -c /dir/to/copy ) | ( cd /where/to/ && tar -x -p )
( cd /dir/to/copy && tar -c . ) | ( cd /where/to/ && tar -x -p )
( tar -c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar -x -p'
dd bs=1M if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz'
rsync (Network efficient file copier: Use the --dry-run option for testing)
rsync -P rsync://rsync.server.com/path/to/file file
rsync --bwlimit=1000 fromfile tofile
rsync -az -e ssh --delete ~/public_html/ remote.com:'~/public_html'
rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/
ssh (Secure SHell)
ssh $USER@$HOST command
• ssh -f -Y $USER@$HOSTNAME xeyes
scp -p -r $USER@$HOST: file dir/
ssh -g -L 8080:localhost:80 root@$HOST
ssh -R 1434:imap:143 root@$HOST
wget (multi purpose download tool)
• (cd dir/ && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html)
wget -c http://www.example.com/large.file
wget -r -nd -np -l1 -A '*.jpg' http://www.example.com/dir/
wget ftp://remote/file[1-9].iso/
• wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | head
echo 'wget url' | at 01:00
wget --limit-rate=20k url
wget -nv --spider --force-html -i bookmarks.html
wget --mirror http://www.example.com/
networking (Note ifconfig, route, mii-tool, nslookup commands are obsolete)
ethtool eth0
ethtool --change eth0 autoneg off speed 100 duplex full
iwconfig eth1
iwconfig eth1 rate 1Mb/s fixed
• iwlist scan
• ip link show
ip link set dev eth0 name wan
ip link set dev eth0 up
• ip addr show
ip addr add 1.2.3.4/24 brd + dev eth0
• ip route show
ip route add default via 1.2.3.254
• tc qdisc add dev lo root handle 1:0 netem delay 20msec
• tc qdisc del dev lo root
• host pixelbeat.org
• hostname -i
• whois pixelbeat.org
• netstat -tupl
• netstat -tup
windows networking (Note samba is the package that provides all this windows specific networking support)
• smbtree
nmblookup -A 1.2.3.4
smbclient -L windows_box
mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share
echo 'message' | smbclient -M windows_box
text manipulation (Note sed uses stdin and stdout. Newer versions support inplace editing with the -i option)
sed 's/string1/string2/g'
sed 's/\(.*\)1/\12/g'
sed '/ *#/d; /^ *$/d'
sed ':a; /\\$/N; s/\\\n//; ta'
sed 's/[ \t]*$//'
sed 's/\([`"$\]\)/\\\1/g'
• seq 10 | sed "s/^/ /; s/ *\(.\{7,\}\)/\1/"
sed -n '1000{p;q}'
sed -n '10,20p;20q'
sed -n 's/.*<title>\(.*\)<\/title>.*/\1/ip;T;q'
sed -i 42d ~/.ssh/known_hosts
sort -t. -k1,1n -k2,2n -k3,3n -k4,4n
• echo 'Test' | tr '[:lower:]' '[:upper:]'
• tr -dc '[:print:]' < /dev/urandom
• history | wc -l
set operations (Note you can export LANG=C for speed. Also these assume no duplicate lines within a file)
sort file1 file2 | uniq
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
• echo '(1 + sqrt(5))/2' | bc -l
• echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bc
• echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | python
• echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist
• echo 'obase=16; ibase=10; 64206' | bc
• echo $((0x2dec))
• units -t '100m/9.58s' 'miles/hour'
• units -t '500GB' 'GiB'
• units -t '1 googol'
• seq 100 | (tr '\n' +; echo 0) | bc
calendar
• cal -3
• cal 9 1752
• date -d fri
• [ $(date -d "tomorrow" +%d) = "01" ] || exit
• date --date='25 Dec' +%A
• date --date='@2147483647'
• TZ=':America/Los_Angeles' date
echo "mail -s 'get the train' [email protected] < /dev/null" | at 17:45
• echo "DISPLAY=$DISPLAY xmessage cooker" | at "NOW + 30 minutes"
locales
• printf "%'d\n" 1234
• BLOCK_SIZE=\'1 ls -l
• echo "I live in `locale territory`"
• LANG=en_IE.utf8 locale int_prefix
• locale | cut -d= -f1 | xargs locale -kc | less
recode (Obsoletes iconv, dos2unix, unix2dos)
• recode -l | less
recode windows-1252.. file_to_change.txt
recode utf-8/CRLF.. file_to_change.txt
recode iso-8859-15..utf8 file_to_change.txt
recode ../b64 < file.txt > file.b64
recode /qp.. < file.txt > file.qp
recode ..HTML < file.txt > file.html
• recode -lf windows-1252 | grep euro
• echo -n 0x80 | recode latin-9/x1..dump
• echo -n 0x20AC | recode ucs-2/x2..latin-9/x
• echo -n 0x20AC | recode ucs-2/x2..utf-8/x
CDs
gzip < /dev/cdrom > cdrom.iso.gz
mkisofs -V LABEL -r dir | gzip > cdrom.iso.gz
mount -o loop cdrom.iso /mnt/dir
cdrecord -v dev=/dev/cdrom blank=fast
gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -
cdparanoia -B
cdrecord -v dev=/dev/cdrom -audio *.wav
oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'
disk space (See also FSlint)
• ls -lSr
• du -s * | sort -k1,1rn | head
• df -h
• df -i
• fdisk -l
• rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n
• dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n
• dd bs=1 seek=2TB if=/dev/null of=ext3.test
• > file
monitoring/debugging
• tail -f /var/log/messages
• strace -c ls >/dev/null
• strace -f -e open ls >/dev/null
• ltrace -f -e getenv ls >/dev/null
• lsof -p $$
• lsof ~
• tcpdump not port 22
• ps -e -o pid,args --forest
• ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'
• ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS
• ps -C firefox-bin -L -o pid,tid,pcpu,state
• ps -p 1,2
• last reboot
• free -m
• watch -n.1 'cat /proc/interrupts'
system information (see also sysinfo) ('#' means root access is required)
• uname -a
• 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 | grep Power_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 .
miscellaneous
• alias hd='od -Ax -tx1z -v'
• alias realpath='readlink -f'
• set | grep $USER
touch -c -t 0304050607 file
• python -m SimpleHTTPServer
System information
Command
# arch
# cal 2007
# cat /proc/cpuinfo
# cat /proc/interrupts
# cat /proc/meminfo
# cat /proc/swaps
# cat /proc/version
# cat /proc/net/dev
# cat /proc/mounts
# clock -w
# date
# date 041217002007.00
# dmidecode -q
# hdparm -i /dev/hda
# hdparm -tT /dev/sda
# lspci -tv
# lsusb -tv
# uname -m
# uname -r
« TOP «
# cp -a /tmp/dir1 .
# cp -a dir1 dir2
# cp file file1
# iconv -l
# iconv -f fromEncoding -t toEncoding inputFile > outputFile
# find . -maxdepth 1 -name *.jpg -print -exec convert
# ln -s file1 lnk1
# ln file1 lnk1
# ls
# ls -F
# ls -l
# ls -a
# ls *[0-9]*
# lstree
# mkdir dir1
# mkdir dir1 dir2
# mkdir -p /tmp/dir1/dir2
# mv dir1 new_dir
# pwd
# rm -f file1
# rm -rf dir1
# rmdir dir1
# touch -t 0712250000 file1
# tree
« TOP «
File search
Command
# find / -name file1
# locate \*.ps
# whereis halt
# which halt
« TOP «
Mounting a Filesystem
Command
# fuser -km /mnt/hda2
# mount /dev/hda2 /mnt/hda2
# umount /dev/hda2
# umount -n /mnt/hda2
« TOP «
Disk Space
Command
# df -h
# dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n
# du -sh dir1
# du -sk * | sort -rn
# ls -lSr |more
« TOP «
# passwd
# passwd user1
# pwck
« TOP «
Permits on Files
Command
# chgrp group1 file1
# chmod ugo+rwx directory1
# chattr +d file1
# chattr +i file1
# chattr +s file1
# chattr +S file1
# chattr +u file1
# lsattr
« TOP «
« TOP «
# rpm -U [package.rpm]
# rpm -F [package.rpm]
# rpm -e [package]
# rpm -qa
# rpm -qa | grep httpd
# rpm -qi [package]
# rpm -qg "System Environment/Daemons"
# rpm -ql [package]
# rpm -Va
# yum -y update
# yum update [package]
# yum remove [package]
# yum list
# yum search [package]
# yum clean [package]
# yum clean headers
# dpkg -L [package]
# dpkg -S /bin/ping
« TOP «
# head -2 file1
# less file1
# more file1
# tac file1
# tail -2 file1
# tail -f /var/log/messages
« TOP «
Text Manipulation
Command
# cat example.txt | awk 'NR%2==1'
# echo a b c | awk '{print $1}'
# echo a b c | awk '{print $1,$3}'
# cat -n file1
# comm -1 file1 file2
Filesystem Analysis
Command
# badblocks -v /dev/hda1
# dosfsck /dev/hda1
# e2fsck /dev/hda1
# e2fsck -j /dev/hda1
# fsck /dev/hda1
# fsck.ext2 /dev/hda1
# fsck.ext3 /dev/hda1
# fsck.vfat /dev/hda1
# fsck.msdos /dev/hda1
« TOP «
Format a Filesystem
Command
# fdformat -n /dev/fd0
# mke2fs /dev/hda1
# mke2fs -j /dev/hda1
# mkfs /dev/hda1
# mkfs -t vfat 32 -F /dev/hda1
# mkswap /dev/hda3
« TOP «
Filesystem SWAP
Command
# mkswap /dev/hda3
# swapon /dev/hda3
# swapon /dev/hda2 /dev/hdb3
« TOP «
Backup
Command
# find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2
# dd if=/dev/sda of=/tmp/file1
# dd if=/dev/hda of=/dev/fd0 bs=512 count=1
# ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p'
« TOP «
CDROM
Command
# cd-paranoia -B
# cd-paranoia --
# cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force
# cdrecord -v dev=/dev/cdrom cd.iso
# gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom -
# cdrecord --scanbus
# dd if=/dev/hdc | md5sum
# mkisofs /dev/cdrom > cd.iso
# mkisofs /dev/cdrom | gzip > cd_iso.gz
# mkisofs -J -allow-leading-dots -R -V
# mount -o loop cd.iso /mnt/iso
« TOP «
# hostname
# ifconfig eth0
# ifconfig eth0 192.168.1.1 netmask 255.255.255.0
# ifconfig eth0 promisc
# ifdown eth0
# ifup eth0
# ip link show
# iwconfig eth1
# iwlist scan
# mii-tool eth0
# netstat -tup
# netstat -tupl
# netstat -rn
# nslookup www.example.com
# route -n
# route add -net 0/0 gw IP_Gateway
# route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
# nbtscan ip_addr
# nmblookup -A ip_addr
# smbclient -L ip_addr/hostname
# smbget -Rr smb://ip_addr/share
« TOP «
IPTABLES (firewall)
Command
# iptables -t filter -L
# iptables -t nat -L
# iptables -t filter -F
# iptables -t nat -F
# iptables -t filter -X
# iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT
# iptables -t filter -A OUTPUT -p tcp --dport http -j DROP
# iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT
# iptables -t filter -A INPUT -j LOG --log-prefix
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# smartctl -i /dev/hda
# strace -c ls >/dev/null
# tail /var/log/messages
# top
# watch -n1 'cat /proc/interrupts'
« TOP «
# chsh
# chsh --list-shells
# gpg -c file1
# gpg file1.gpg
# ldd /usr/bin/ssh
# man ping
Go to previous directory
Go to $HOME directory
Go to dir, execute command and return to current dir
Put current dir on stack so you can popd back to it
Encrypt file
Decrypt file
Make compressed archive of dir/
Extract archive (use gzip instead of bzip2 for tar.gz files)
Make encrypted archive of dir/ on remote machine
Make archive of subset of dir/ and below
Make copy of subset of dir/ and below
Copy (with permissions) copy/ dir to /where/to/ dir
Copy (with permissions) contents of copy/ dir to /where/to/
Copy (with permissions) copy/ dir to remote:/where/to/ dir
Backup harddisk to remote machine
Display a calendar
Display a calendar for a particular month year
What date is it this friday. See also day
exit a script unless it's the last day of the month
What day does xmas fall on, 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)
Email reminder
Popup reminder
ormation
Description
show architecture of machine(1) [man]
show the timetable of 2007 [man]
show information CPU info [man]
show interrupts [man]
verify memory use [man]
show file(s) swap [man]
show version of the kernel [man]
show network adpters and statistics [man]
show mounted file system(s) [man]
save date changes on BIOS [man]
show system date [man]
set date and time - MonthDayhoursMinutesYear.Seconds [man]
d Logout of a system
Description
shutdown system(2) [man]
leaving session [man]
reboot(2) [man]
shutdown system(1) [man]
planned shutdown of the system at 16:30 [man]
cancel a planned shutdown of the system [man]
reboot(1) [man]
shutdown system(3) [man]
Directory
Description
enter to directory '/ home' [man]
go back one level [man]
go back two levels [man]
go to home directory [man]
go to home directory [man]
go to previous directory [man]
copying a file [man]
copy all files of a directory within the current work directory [man]
earch
Description
search file and directory into root filesystem from '/' [man]
search binary files are not used in the last 100 days [man]
search files created or changed within 10 days [man]
search files with '.rpm' extension and modify permits [man]
search files with '.rpm' extension ignoring removable partitions as cdrom, pen-drive, etc.… [man]
find files with the '.ps' extension - first run 'updatedb' command [man]
Filesystem
Description
force umount when the device is busy [man]
mount disk called hda2 - verify existence of the directory '/ mnt/hda2' [man]
unmount disk called hda2 - exit from mount point '/ mnt/hda2' first [man]
run umount without writing the file /etc/mtab - useful when the file is read-only or the hard disk is full [man]
pace
Description
show list of partitions mounted [man]
show the used space by installed deb packages, sorting by size (debian, ubuntu and alike) [man]
show the used space by rpm packages installed sorted by size (fedora, redhat and alike) [man]
d Groups
Description
set deadline for user password [man]
create a new group [man]
delete a group [man]
rename a group from moon to sun [man]
check correct syntax and file format of '/etc/group' and groups existence [man]
log into a new group to change default group of newly created files [man]
on Files
Description
change group of files [man]
set permissions reading (r), write (w) and (x) access to users owner (u) group (g) and others (o) [man]
remove permits reading (r), write (w) and (x) access to users group (g) and others (or [man]
set SUID bit on a binary file - the user that running that file gets same privileges as owner [man]
utes on files
Description
allows write opening of a file only append mode [man]
allows that a file is compressed / decompressed automatically by the kernel [man]
makes sure that the program ignores Dump the files during backup [man]
makes it an immutable file, which can not be removed, altered, renamed or linked [man]
mpressed files
Description
decompress a file called 'file1.bz2' [man]
compress a file called 'file1' [man]
decompress a file called 'file1.gz' [man]
compress a file called 'file1' [man]
compress with maximum compression [man]
create an archive rar called 'file1.rar' [man]
compress 'file1', 'file2' and 'dir1' simultaneously [man]
decompress rar archive [man]
create a uncompressed tarball [man]
create an archive containing 'file1', 'file2' and 'dir1' [man]
show contents of an archive [man]
extract a tarball [man]
extract a tarball into / tmp [man]
create a tarball compressed into bzip2 [man]
decompress a compressed tar archive in bzip2 [man]
create a tarball compressed into gzip [man]
decompress a compressed tar archive in gzip [man]
decompress rar archive [man]
decompress a zip archive [man]
create an archive compressed in zip [man]
compress in zip several files and directories simultaneously [man]
check all rpm packages installed on the system - use with caution [man]
content
Description
view the contents of a file starting from the first row [man]
ipulation
Description
remove all even lines from example.txt [man]
view the first column of a line [man]
view the first and third column of a line [man]
number row of a file [man]
compare contents of two files by deleting only unique lines from 'file1' [man]
compare contents of two files by deleting only unique lines from 'file2' [man]
compare contents of two files by deleting only the lines that appear on both files [man]
select from file '/var/log/messages' all lines that contain numbers [man]
find differences between two files and merge interactively alike "diff" [man]
m Analysis
Description
check bad blocks on disk hda1 [man]
repair / check integrity of dos filesystems on disk hda1 [man]
ilesystem
Description
format a floppy disk [man]
create a filesystem type linux ext2 on hda1 partition [man]
kup
Description
find all files with '.log' extention and make an bzip archive [man]
find and copy all files with '.txt' extention from a directory to another [man]
make a backup of a local hard disk on remote host via ssh [man]
synchronize a remote directory with a local directory via ssh and compression [man]
OM
Description
rip audio tracks from a CD to wav files [man]
rip first three audio tracks from a CD to wav files [man]
clean a rewritable cdrom [man]
burn an ISO image [man]
burn a compressed ISO image [man]
scan bus to identify the channel scsi [man]
perform an md5sum on a device, like a CD [man]
create an iso image of cdrom on disk [man]
create a compressed iso image of cdrom on disk [man]
create an iso image of a directory [man]
mount an ISO image [man]
(LAN / WiFi)
Description
active interface 'eth0' in dhcp mode [man]
show network statistics of eth0 [man]
lookup hostname to resolve name to ip address and viceversa [man]
networks (samba)
Description
mount a windows network share [man]
(firewall)
Description
show all chains of filtering table [man]
show all chains of nat table [man]
clear all rules from filtering table [man]
clear all rules from table nat [man]
delete any chains created by user [man]
allow telnet connections to input [man]
block HTTP connections to output [man]
allow POP3 connections to forward chain [man]
Logging on input chain [man]
configure a PAT (Port Address Traslation) on eth0 masking outbound packets [man]
nd debugging
Description
displays status of RAM in megabytes [man]
force closure of the process and finish it [man]
force a process to reload configuration [man]
show history reboot [man]
display kernel loaded [man]
display a list of files opened by processes [man]
displays a list of open files in a given path system [man]
displays linux tasks [man]
displays linux tasks in a hierarchical mode [man]
Shows a tree system processes [man]
monitoring reliability of a hard-disk through SMART [man]
l commands
Description
set an alias for a command - hh = history [man]
display a list of commands that pertain to keywords of a program , useful when you know what your program does, but you d