Sei sulla pagina 1di 14

Command apropos whatis man -t ascii | ps2pdf - > ascii.

i.pdf which command time command time cat 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'

Description Show commands pertinent to string. See also 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. See also sw 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 quick dir listing 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. See also 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 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

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

names. This re is like glob *file*.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.tar.bz2 of dir/ Extract archive (use gzip bzip2 -dc dir.tar.bz2 | tar -x instead of bzip2 for tar.gz files) Make encrypted archive tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg' of dir/ on remote machine Make archive of subset of find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2 dir/ and below find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ -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) contents of copy/ dir to ( cd /dir/to/copy && tar -c . ) | ( cd /where/to/ && tar -x -p ) /where/to/ Copy (with permissions) ( tar -c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar -x copy/ dir to p' 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 rate rsync --bwlimit=1000 fromfile tofile 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) ssh $USER@$HOST command Run command on $HOST

ssh -f -Y $USER@$HOSTNAME xeyes scp -p -r $USER@$HOST: file dir/

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.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

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. This might saturate GigE Forward connections to $HOSTNAME:8080 out to $HOST:80 Forward connections from $HOST:1434 in to imap:143 Install $USER's public key on $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 supports globbing directly Process output directly

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 site (handy wget --mirror http://www.example.com/ from cron) networking (Note ifconfig, route, mii-tool, nslookup commands are obsolete) Show status of ethernet ethtool eth0 interface eth0 ethtool --change eth0 autoneg off speed 100 duplex full Manually set ethernet

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 List network interfaces Rename interface eth0 to ip link set dev eth0 name wan wan Bring interface eth0 up ip link set dev eth0 up (or down) List addresses for ip addr show 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 Set default gateway to ip route add default via 1.2.3.254 1.2.3.254 Lookup DNS ip address host pixelbeat.org for name or vice versa Lookup local ip address (equivalent to host hostname -i `hostname`) Lookup whois info for whois 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. smbtree See also findsmb Find the windows nmblookup -A 1.2.3.4 (netbios) name associated with ip address List shares on windows smbclient -L windows_box machine or samba server mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share Mount a windows share Send popup to windows echo 'message' | smbclient -M windows_box 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 string2 Modify anystring1 to sed 's/\(.*\)1/\12/g' anystring2 Remove comments and sed '/ *#/d; /^ *$/d' blank lines Concatenate lines with sed ':a; /\\$/N; s/\\\n//; ta' trailing \ Remove trailing spaces sed 's/[ \t]*$//' 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 '1000{p;q}' Print 1000th line sed -n '10,20p;20q' Print lines 10 to 20 Extract title from HTML sed -n 's/.*<title>\(.*\)<\/title>.*/\1/ip;T;q' 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 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) sort file1 file2 | uniq Union of unsorted files Intersection of unsorted sort file1 file2 | uniq -d files Difference of unsorted sort file1 file1 file2 | uniq -u files Symmetric Difference of sort file1 file2 | uniq -u 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 Symmetric Difference of join -t'\0' -v1 -v2 file1 file2 sorted files math Quick math (Calculate ). echo '(1 + sqrt(5))/2' | bc -l See also bc sed 's/string1/string2/g'

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 date --date='TZ="America/Los_Angeles" 09:00 next Fri' locales printf "%'d\n" 1234 BLOCK_SIZE=\'1 ls -l

More complex (int) e.g. This shows max FastE packet rate Python handles scientific notation Plot FastE packet rate vs packet size Base conversion (decimal to hexadecimal) Base conversion (hex to dec) ((shell arithmetic expansion)) Unit conversion (metric to imperial) Unit conversion (SI to IEC prefixes) Definition lookup Add a column of numbers. See also add and funcpy 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) What's the local time for 9AM next Friday on west coast US Print number with thousands grouping appropriate to locale Use locale thousands

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

grouping in ls. See also l Extract info from locale database Lookup locale info for specific country. See also 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 Quoted printable decode Text to HTML Lookup table of characters Show what a code represents in latin-9 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)

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.qp > file.txt 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 -pad *.wav

oggenc --tracknum='track' track.cdda.wav -o 'track.ogg' disk space (See also FSlint)

Make ogg file from wav file

Show files by size, biggest last Show top disk users in current dir. See also du -s * | sort -k1,1rn | head 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 sizes and types (run as fdisk -l root) List all packages by installed size (Bytes) on rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n rpm distros List all packages by dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n installed size (KBytes) on deb distros Create a large test file (taking no space). See dd bs=1 seek=2TB if=/dev/null of=ext3.test also truncate truncate data of file or > file create an empty file monitoring/debugging Monitor messages in a tail -f /var/log/messages 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,2 ls >/dev/null stdout and stderr List library calls made by ltrace -f -e getenv ls >/dev/null command List paths that process id lsof -p $$ has open List processes that have lsof ~ specified path open tcpdump not port 22 Show network traffic ls -lSr

except ssh. See also tcpdump_not_me List processes in a ps -e -o pid,args --forest hierarchy List processes by % cpu ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d' usage List processes by mem (KB) usage. See also ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS ps_mem.py List all threads for a ps -C firefox-bin -L -o pid,tid,pcpu,state particular process List elapsed wall time for ps -p 1,$$ -o etime= particular process IDs Show system reboot last reboot history Show amount of free -m (remaining) RAM (-m displays in MB) Watch changeable data watch -n.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 Show name and version head -n1 /etc/issue of distribution Show all partitions cat /proc/partitions registered on the system Show RAM total seen by grep MemTotal /proc/meminfo the system grep "model name" /proc/cpuinfo Show CPU(s) info lspci -tv Show PCI info lsusb -tv Show USB info List mounted filesystems mount | column -t on the system (and align output) Show state of cells in grep -F capacity: /proc/acpi/battery/BAT0/info laptop battery Display SMBIOS/DMI # dmidecode -q | less information How long has this disk # smartctl -A /dev/sda | grep Power_On_Hours (system) been powered on in total

# 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 . Command grep . /proc/sys/net/ipv4/* set | grep $USER tr '\0' '\n' < /proc/$$/environ echo $PATH | tr : '\n' kill -0 $$ && echo process exists and can accept signals find /etc -readable | xargs less -K -p'*ntp' -j $((${LINES:-25}/2)) Low impact admin apt-get install "package" -o Acquire::http::Dl-Limit=42 \ # -o Acquire::Queue-mode=access echo 'wget url' | at 01:00 # apache2ctl configtest && apache2ctl graceful nice openssl speed sha1

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, python, bc, gnuplot, ... Virtual terminals with detach capability, ... Powerful file manager that can browse rpm, tar, ftp, ssh, ... Interactive/scriptable graphing Web browser open a file or url with the registered desktop application Description List the contents of flag files Search current environment Display the startup environment for any process Display the $PATH one per line Check for the existence of a process (pid) Search paths and data with full context. Use n to iterate Rate limit apt-get to 42KB/s Download url at 1AM to current dir Restart apache if config is OK Run a low priority command (openssl benchmark)

renice 19 -p $$; ionice -c3 -p $$ Interactive monitoring htop -d 5 iotop # watch -d -n30 "nice ps_mem.py | tail -n $((${LINES:-12}-2))" # iftop # mtr www.pixelbeat.org Useful utilities pv < /dev/zero > /dev/null wkhtml2pdf http://.../linux_commands.html linux_commands.pdf timeout 1 sleep 3 Networking python -m SimpleHTTPServer openssl s_client -connect www.google.com:443 </dev/null 2>&0 | openssl x509 -dates -noout

Make shell (script) low priority. Use for non interactive tasks Better top (scrollable, tree view, lsof/strace integration, ...) What's doing I/O What's using RAM What's using the network. See also iptraf ping and traceroute combined Progress Viewer for data copying from files and pipes Make a pdf of a web page run a command with bounded time. See also timeout Serve current directory tree at http://$HOSTNAME:800 0/ Display the date range for a site's certs Display the server headers for a web site What's using port 80 Display a list of apache virtual hosts Edit a remote file directly in vim Import a gpg key from the web Add 20ms latency to loopback device (for testing) Remove latency added above

curl -I www.pixelbeat.org # lsof -i tcp:80 # httpd -S vim scp://user@remote//path/to/file curl -s http://www.pixelbeat.org/pixelbeat.asc | gpg --import tc qdisc add dev lo root handle 1:0 netem delay 20msec tc qdisc del dev lo root

Notification echo "DISPLAY=$DISPLAY xmessage cooker" | at "NOW +30min" Popup reminder

Display a gnome popup notification echo "mail -s 'go home' P@draigBrady.com < /dev/null" | at 17:30 Email reminder uuencode file name | mail -s subject P@draigBrady.com Send a file via email Send/Generate HTML ansi2html.sh | mail -a "Content-Type: text/html" P@draigBrady.com email Better default settings (useful in your .bashrc) Display file additions # tail -s.1 -f /var/log/messages more responsively Display as many lines as seq 100 | tail -n $((${LINES:-12}-2)) possible without scrolling Capture full network # tcpdump -s0 packets Useful functions/aliases (useful in your .bashrc) Change to a new md () { mkdir -p "$1" && cd "$1"; } directory Display the meaning of strerror() { python -c "import os; print os.strerror($1)"; } an errno Plot stdin. (e.g: seq 1000 | sed 's/.*/s(&)/' | bc plot() { { echo 'plot "-"' "$@"; cat; } | gnuplot -persist; } -l | plot) Handy hexdump. (usage e.g.: hd alias hd='od -Ax -tx1z -v' /proc/self/cmdline | less) Canonicalize path. (usage alias realpath='readlink -f' e.g.: realpath ~/../$USER) Multimedia Take a (remote) DISPLAY=:0.0 import -window root orig.png screenshot Shrink to width, convert -filter catrom -resize '600x>' orig.png 600px_wide.png computer generated images or screenshots Extract audio from flash mplayer -ao pcm -vo null -vc dummy /tmp/Flash* video to audiodump.wav Display info about ffmpeg -i filename.avi multimedia file Capture video of an X ffmpeg -f x11grab -s xga -r 25 -i :0 -sameq demo.mpg display DVD Convert video to the correct encoding and for i in $(seq 9); do ffmpeg -i $i.avi -target pal-dvd $i.mpg; done aspect for DVD dvdauthor -odvd -t -v "pal,4:3,720xfull" *.mpg;dvdauthor -odvd -T Build DVD file system. notify-send "subject" "message"

growisofs -dvd-compat -Z /dev/dvd -dvd-video dvd Unicode python -c "import unicodedata as u; print u.name(unichr(0x2028))" uconv -f utf8 -t utf8 -x nfc printf '\300\200' | iconv -futf8 -tutf8 >/dev/null printf 'TF8\n' | LANG=C grep --color=always '[^ -~]\+' fc-match -s "sans:lang=zh" Development

Use 16:9 for widescreen input Burn DVD file system to disc Lookup a unicode character Normalize combining characters Validate UTF-8 Highlight non printable ASCII chars in UTF-8 List font match order for language and style

Show autodetected gcc gcc -march=native -E -v -</dev/null 2>&1|sed -n 's/.*-mar/-mar/p' tuning params. See also gcccpuopt for i in $(seq 4); do { [ $i = 1 ] && wget http://url.ie/6lko -qO-|| Compile and execute C ./a.out; } | tee /dev/tty | gcc -xc - 2>/dev/null; done code from stdin Show all predefined cpp -dM /dev/null macros Show all glibc feature echo "#include <features.h>" | cpp -dN | grep "#define __USE_" macros Debug showing source code context in separate gdb -tui windows Extended Attributes (Note you may need to (re)mount with "acl" or "user_xattr" options) getfacl . Show ACLs for file Allow a specific user to setfacl -m u:nobody:r . read file Delete a specific user's setfacl -x u:nobody . rights to file Set umask for a for a setfacl --default -m group:users:rw- dir/ specific dir Show capabilities for a getcap file program Allow gtk program raw setcap cap_net_raw+ep your_gtk_prog access to network Show SELinux context stat -c%C . for file Set SELinux context for chcon ... file file (see also restorecon) getfattr -m- -d . Show all extended

setfattr -n "user.foo" -v "bar" . BASH specific echo 123 | tee >(tr 1 a) | tr 1 b

attributes (includes selinux,acls,...) Set arbitrary user attributes Split data to 2 commands (using process substitution) Compare a local and remote file (using process substitution) Restrict a command to certain processors Process files in parallel over available processors Sort separate data files over 2 processors

meld local_file <(ssh host cat remote_file) Multicore taskset -c 0 nproc find -type f -print0 | xargs -r0 -P$(nproc) -n10 md5sum sort -m <(sort data1) <(sort data2) >data.sorted

Potrebbero piacerti anche