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.

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.

Universal configuration monitoring and system of record for IT.

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:



May 19, 2015 - A Look At The New Commandlinefu
I've put together a short writeup on what kind of newness you can expect from the next iteration of clfu. Check it out here.
March 2, 2015 - New Management
I'm Jon, I'll be maintaining and improving clfu. Thanks to David for building such a great resource!

Top Tags



Psst. Open beta.

Wow, didn't really expect you to read this far down. The latest iteration of the site is in open beta. It's a gentle open beta-- not in prime-time just yet. It's being hosted over at UpGuard (link) and you are more than welcome to give it a shot. Couple things:

  • » The open beta is running a copy of the database that will not carry over to the final version. Don't post anything you don't mind losing.
  • » If you wish to use your user account, you will probably need to reset your password.
Your feedback is appreciated via the form on the beta page. Thanks! -Jon & CLFU Team

fast access to any of your favorite directory.

Terminal - fast access to any of your favorite directory.
alias pi='`cat ~/.pi | grep ' ; alias addpi='echo "cd `pwd`" >> ~/.pi'
2009-02-05 15:46:59
User: senthil
Functions: alias grep
fast access to any of your favorite directory.



[email protected]:~/workspace/SVN/haystak-repos/trunk/internal/src$ addpi


Now that directory is in the list of fast access directories.

You can switch to it anytime like this:


[email protected]:~$ pi internal`

[email protected]:~/workspace/SVN/haystak-repos/trunk/internal/src$ --------------------------------------------------------------------------------------------

Please note the backquote ( the symbol that shares its key with ~ in the keyboard )

pi will switch you to that directory.

To see the list of all fast access directories you have to say "cat ~/.pi"


There are 2 alternatives - vote for the best!

Terminal - Alternatives

Know a better way?

If you can do better, submit your command here.

What others think

What happens if it finds more than one matching directory?

Comment by picardo 409 weeks and 2 days ago

picardo, the oldest definition gets priority in bash. But usually you will think of some word in your path which is unique enough. So such collisions are rare. But good point.

Comment by senthil 409 weeks and 2 days ago

Are we missing the addpi command?

Comment by pkkid 409 weeks and 1 day ago

crap, nevermind.. its two commands.

Comment by pkkid 409 weeks and 1 day ago

I have to admit--I'm baffled. I see that the grep finds the target directory, but how do we change directory to it? That is, what's the mechanism?

Comment by mkc 409 weeks and 1 day ago

mkc, when you include anything between backquotes ( `like this` ) bash executes it right away. Try saying echo date and echo `date`. This is the hack I am using above to make it change to the directory instead of just printing it out.

Comment by senthil 409 weeks ago

looks like pi should be a function rather than an alias, which will remove the need for the backtick.

pi () { `grep $1 ~/.pi` }

(of course, you have to expand that to three lines -- up to the opening brace on the first, the command on the second, and the close brace on the third).

Comment by mulad 407 weeks and 2 days ago

I think you could accomplish the same thing, in Bash at least, with the $CDPATH environmental variable. Then you'd be able to use the built in cd and completions. You would just have to write a function to add directories to $CDPATH.

Comment by eightmillion 371 weeks and 1 day ago

In my .bashrc I have:

shopt -s cdable_vars

export apps="/home/karol/test/apps"

Now I just

cd apps

to go there.

Comment by karol 319 weeks and 6 days ago

Your point of view

You must be signed in to comment.