Hide

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again.

Delete that bloated snippets file you've been using and share your personal repository with the world. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.


If you have a new feature suggestion or find a bug, please get in touch via http://commandlinefu.uservoice.com/

Get involved!

You can sign-in using OpenID credentials, or register a traditional username and password.

First-time OpenID users will be automatically assigned a username which can be changed after signing in.

Hide

Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for:

Hide

News

2011-03-12 - Confoo 2011 presentation
Slides are available from the commandlinefu presentation at Confoo 2011: http://presentations.codeinthehole.com/confoo2011/
2011-01-04 - Moderation now required for new commands
To try and put and end to the spamming, new commands require moderation before they will appear on the site.
2010-12-27 - Apologies for not banning the trolls sooner
Have been away from the interwebs over Christmas. Will be more vigilant henceforth.
2010-09-24 - OAuth and pagination problems fixed
Apologies for the delay in getting Twitter's OAuth supported. Annoying pagination gremlin also fixed.
Hide

Tags

Hide

Functions

All commands from sorted by
Terminal - All commands - 11,930 results
gzip -cd file.gz | ssh user@host 'dd of=~/file'
2010-09-20 11:44:19
User: twfcc
Functions: gzip ssh
-3

It is an easy method unzip a file and copy it to remote machine. No unziped file on local hard drive

wmic -U DOMAIN/user --password='password' //IP_HOST "select Caption,CSDVersion,CSName from Win32_OperatingSystem" | grep Windows
2010-09-20 14:23:37
User: dr_gogeta86
Functions: grep
Tags: windows wmic wmi
-3
wmi

Get windows version with servicepack and hostname

. (in NORMAL MODE)
2013-01-08 18:32:57
User: Zulu
Tags: vim
-3

Paste what you previously wrote in INSERT MODE, for example:

1. Write 'foo' in INSERT MODE

2. Return to NORMAL MODE

3. Press "." and it will paste 'foo'

wget http://cmyip.com -O - -o /dev/null | awk '/\<title/ {print $4}'
awk '{ printf "%.2f", $2/1024/1024 ; exit}' /proc/meminfo
ls |while read line ; do mpg321 -w "$line.wav" "$line" ; done
cobbler check
2009-04-27 10:28:29
User: w00binda
-3

A script that checks if your environment is correctly configured for using cobbler.

for z in */*.pdf; do gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$z new" -c .setpdfwrite -f "$z" mv "$z new" "$z"; done
echo "Hello world" | base64
2009-04-27 15:00:08
User: P17
Functions: echo
Tags: encoding
-3

Also works with files:

cat file

Hello world

base64 file

SGVsbG8gd29ybGQK

To decrypt use the -d option:

echo SGVsbG8gd29ybGQK | base64 -d

Hello world

ipconfig /flushdns
for i in *ext; do mv $i ${i%.ext}; done
2011-11-13 03:58:08
User: paulochf
Functions: mv
-3

For those files in current folder that would be shown in `ls *ext`, for some extension ext, move/rename that file removing the .ext suffix from the file name.

It uses Bash's parameter substitution, as seen in

http://tldp.org/LDP/abs/html/parameter-substitution.html#PCTPATREF

(for analog use in prefix, see http://tldp.org/LDP/abs/html/parameter-substitution.html#PSOREX2 )

for i in $(find . -iname '*.html'); do sed '/String/d' $i > $i-tmp; mv $i-tmp $i; done
2010-09-21 14:35:18
User: cadu
Functions: find mv sed
Tags: sed find
-3

Search in all html files and remove the lines that 'String' is found.

pgrep rouge-process | xargs sudo kill -9
2010-05-09 22:30:05
User: mheadd
Functions: kill sudo xargs
Tags: xargs pgrep
-3

Find and kill multiple instances of a process with one simple command.

while true; do /bin/true; done
2009-02-18 22:08:18
User: deepc0re
-3

Loads your CPU, run a instance for each CPU/CORE.

ls -shF --color
2009-09-03 05:45:33
User: Viperlin
Functions: ls
-3

use manpages, they give you "ultimate commands"

"ls -SshF --color" list by filesize (biggest at the top)

"ls -SshFr --color" list by filesize in reverse order (biggest at the bottom)

lynx --dump icanhazip.com
alias o='xdg-open "$@" 2>/dev/null'
2011-12-26 08:52:22
User: Bonster
Functions: alias
-3

use xdg-open without looking at error messages

examples msg:

(nautilus:3955): Gtk-WARNING **: Theme parsing error: Notebook.css:21:15: Junk at end of value

xcopy D:\*.* /s/e/f E:\
2009-09-20 12:36:52
User: eth0
-3

Replace D drive with mounted ISO virtual drive and Replace E with your USB drive letter.

rm strangedirs -rf
2009-06-30 15:10:31
User: ioggstream
Functions: rm
Tags: rm safe
-3

avoid rm to be recursive until you complete the command: put the -rf at the end!

less file.lst | head -n 50000 > output.txt
2011-09-05 05:26:04
User: Richie086
Functions: head less
-3

Useful for situations where you have word lists or dictionaries that range from hundreds of megabytes to several gigabytes in size. Replace file.lst with your wordlist, replace 50000 with however many lines you want the resulting list to be in total. The result will be redirected to output.txt in the current working directory. It may be helpful to run wc -l file.lst to find out how many lines the word list is first, then divide that in half to figure out what value to put for the head -n part of the command.

find `pwd` -type f \( -iname thumb.php -or -iname timthumb.php \) -exec grep -HP 'define ?\(.VERSION' {} \;
2011-12-27 11:33:54
User: djkee
Functions: find grep
-3

Good for finding outdated timthumb.php scripts which need to be updated, anything over 2.0 should be secure, below that timthimb is vulnerable and can be used to compromise your website.

ifconfig | grep "inet addr" | cut -d":" -f2 | cut -d" " -f1
lspci
svn revert .
play $audio_file
2009-03-17 11:30:02
User: mpb
-3

"play" is part of "SoX"

SoX - Sound eXchange, the Swiss Army knife of audio manipulation.

For details, see: man sox