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.


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:



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.




Commands using alias from sorted by
Terminal - Commands using alias - 203 results
alias ..="cd .." ...="cd ../.." ....="cd ../../.."
alias whatismyip="wget -q -O - http://whatismyip.com/automation/n09230945.asp"
2009-10-30 15:42:52
User: gibboris
Functions: alias

The preferred way for scripts (and easier to parse)

alias ..="cd .."; alias ...="cd ../.."; alias ....="cd ../../.."
2009-10-30 01:04:33
User: Tzunamii
Functions: alias
Tags: cd

Change to your taste. Much quicker than having to add 'cd' every time. Add it to your .bashrc or .bash_profile.

alias clear='( for ((i=1;i<$LINES;i++)) ; do echo "" ; done ) ; clear'
2009-10-27 14:38:31
User: Marcio
Functions: alias echo

If you receives a lot of compiling errors, type 'clear', then reedit your code and press "SHIFT+PGUP".

alias nl2space="perl -ne 'push @F, \$_; END { chomp @F; print join(qq{ }, @F) , qq{\n};}' "
2009-10-01 02:22:23
User: relay
Functions: alias

# newline to space; the whack before dollar-underbar is required

alias nl2space="perl -ne 'push @F, \$_; END { chomp @F; print join(qq{ }, @F) , qq{\n};}' "

# newline to comma; the whack before dollar-underbar is required

alias nl2,="perl -ne 'push @F, \$_; END { chomp @F; print join(qq{,}, @F) , qq{\n};}' "

PROMPT> cat /tmp/foo











# 'tr' does not give a newline after it run. Makes a messy commandline.

PROMPT> cat /tmp/foo|tr "\n" ' '

foo-001 foo-002 foo-003 foo-004 foo-005 foo-006 foo-007 foo-008 foo-009 foo-010 $PROMPT> tr "\n" ' ' /tmp/foo

# 'tr' does not take arguements

PROMPT> tr "\n" ' ' /tmp/foo

tr: extra operand `/tmp/foo'

Try `tr --help' for more information.

# 'nl2space' is a filter and takes arguements, adds a newline after it runs.

PROMPT> cat /tmp/foo| nl2space

foo-001 foo-002 foo-003 foo-004 foo-005 foo-006 foo-007 foo-008 foo-009 foo-010

PROMPT> nl2space /tmp/foo

foo-001 foo-002 foo-003 foo-004 foo-005 foo-006 foo-007 foo-008 foo-009 foo-010

alias ':q'='exit'
2009-09-05 17:59:50
User: tobiasboon
Functions: alias
Tags: vim alias exit :q

Put this in your ~/.bashrc file (or the equivalent)

If you use vim a lot, this alias will be immediately obvious. Your brain will thank you.

old='apt-get'; new="su-${old}"; command="sudo ${old}"; alias "${new}=${command}"; $( complete | sed -n "s/${old}$/${new}/p" ); alias ${new}; complete -p ${new}
2009-08-10 00:15:05
User: Josay
Functions: alias sed

In Bash, when defining an alias, one usually loses the completion related to the function used in that alias (that completion is usually defined in /etc/bash_completion using the complete builtin).

It's easy to reuse the work done for that completion in order to have smart completion for our alias.

That's what is done by this command line (that's only an example but it may be very easy to reuse).

Note 1 : You can use given command line in a loop "for old in apt-get apt-cache" if you want to define aliases like that for many commands.

Note 2 : You can put the output of the command directly in your .bashrc file (after the ". /etc/bash_completion") to always have the alias and its completion

alias z='zenity --info --text="You will not believe it, but your command has finished now! :-)" --display :0.0'
2009-08-03 16:38:29
User: bubo
Functions: alias

tired of switching to the console to check if some command has finished yet? if notify-send does not work on your box try this one... e.g. rsync -av -e /usr/bin/lsh $HOME slowconnection.bar:/mnt/backup ; z (now fire up X, do something useful, get notified if this stuff has finished).

alias vi='emacsclient -n'
2009-07-29 06:18:40
User: freestyler
Functions: alias

add (server-start) in .emacs

alias restart='apache2ctl configtest && apache2ctl restart'
2009-07-21 14:13:15
Functions: alias

making lots of configurations to apache and restarting the server only to find it broken just plain sucks.

alias grip="grep -i"
2009-07-21 11:12:15
User: inof
Functions: alias

This is *NOT* about the -i option in grep. I guess everybody already knows that option. This is about the basic rule of life that the simplest things are sometimes the best. ;-)

One day when I used "grep -i" for the umpteenth time, I decided to make this alias, and I've used it ever since, probably more often than plain grep. (In fact I also have aliases egrip and fgrip defined accordingly. I also have wrip="grep -wi" but I don't use this one that often.)

If you vote this down because it's too trivial and simplistic, that's no problem. I understand that. But still this is really one of my most favourite aliases.

alias sucs="sort | uniq -c | sort -n"
2009-07-21 10:55:06
User: inof
Functions: alias

This alias finds identical lines in a file (or pipe) and prints a sorted count of them (the name "sucs" descends from the first letters of the commands). The first example shows the number of logins of users; the one who logged in most often comes last. The second example extracts web client IP addresses from a log file, then pipes the result through the "sucs" alias to find out which clients are performing the most accesses. Or pipe the first column of ps(1) output through "sucs" to see how many processes your users are running.

alias w3m='w3m -cookie'
echo alias grep=\'grep --color=auto\' >> ~/.bashrc ; . ~/.bashrc
2009-07-05 07:44:13
User: 0x2142
Functions: alias echo
Tags: color grep

This will create a permanent alias to colorize the search pattern in your grep output

alias launchpadkey="sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys"
2009-06-17 12:02:27
User: azeey
Functions: alias
Tags: alias apt-key

Makes it easy to add keys to new ppa sources entries in apt sources.list

Now to add the key for the chromium-daily ppa:

launchpadkey 4E5E17B5
alias findstring="find . -type f -print | xargs grep $1"
kill_daemon() { echo "Daemon?"; read dm; kill -15 $(netstat -atulpe | grep $dm | cut -d '/' -f1 | awk '{print $9}') }; alias kd='kill_daemon
2009-05-26 20:39:56
User: P17

Just find out the daemon with $ netstat -atulpe. Then type in his name and he gets the SIGTERM.

alias setvol='aumix -v'
2009-05-21 22:39:40
User: b2e
Functions: alias

If you're addicted to command-line solutions of ordinary actions or if you just want to set your volume from bed via mobile phone SSH, you can set this alias and use it as

setvol 50

for setting volume on 50% gain

Works only with ALSA, tested on Ubuntu 8.10. Give me some info about your experience.

TIP: Try aslo command "mute" to toggle mute/unmute sound. But I don't know if this works on all distros.

alias lso="sudo lsof -i -T -n"
2009-05-14 04:01:05
Functions: alias

list what applications using what ports

alias agi="sudo apt-get install" #package_names
2009-05-14 03:31:47
Functions: alias

these are some aliases you can use in bashrc to shorten the amount of typing needed to use apt-get, also can be used as reference if you can't remember alot of commands or command parameter variations,etc...

Please comment with more apt-get aliases if I missed any, thx

alias sbrc="source ~/.bashrc" && alias nbrc="nano ~/.bashrc"
2009-05-13 02:41:37
Functions: alias

alias for editing .bashrc and sourcing it with a quick command, very useful for quickly adding and modifying alias' and functions in bashrc, create lots of alias from commandlinefu very quickly, use nano vim or any other edit if you want, very useful if you have a barcode scanner and you want to run commands quickly with barcodes

rm_cache() { rm -f $HOME/.mozilla/firefox/<profile>/Cache/* }; alias rmcache='rm_cache'
alias s='ssh -l root'
2009-05-07 15:57:12
User: GouNiNi
Functions: alias

When you have to manage lot of servers, it's boring to type ssh root@myhost for each connection. Now you can type juste "s someting" and you are connected.

You can too add bash_completion script to complet with tab the name of your servers. This will be the next tips from me ;)

alias xdef_load='xrdb -merge ~/.Xdefaults'
2009-05-05 16:34:06
User: P17
Functions: alias

Reads in the ~/.Xdefaults lexicographically sorted with, instead of replacing, the current contents of the specified properties.

alias b='cd -'