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

Place the argument of the most recent command on the shell

Terminal - Place the argument of the most recent command on the shell
'ALT+.' or '<ESC> .'
2009-03-20 11:36:04
User: atoponce
Place the argument of the most recent command on the shell

When typing out long arguments, such as:

cp file.txt /var/www/wp-content/uploads/2009/03/

You can put that argument on your command line by holding down the ALT key and pressing the period '.' or by pressing <ESC> then the period '.'. For example:

cd 'ALT+.'

would put '/var/www/wp-content/uploads/2009/03/ as my argument. Keeping pressing 'ALT+.' to cycle through arguments of your commands starting from most recent to oldest. This can save a ton of typing.


There are 2 alternatives - vote for the best!

Terminal - Alternatives
<ESC> .
<ALT> .
<ALT>+<.> or <ALT>+<NUM>+<.> or <ALT>+<NUM>,<ALT>+<.>
2011-03-01 17:41:08
User: aikikode

After executing a command with multiple arguments like

cp ./temp/test.sh ~/prog/ifdown.sh

you can paste any argument of the previous command to the console, like

ls -l ALT+1+.

is equivalent to

ls -l ./temp/test.sh

ALT+0+. stands for command itself ('ls' in this case)

Simple ALT+. cycles through last arguments of previous commands.

<Esc> _
2011-03-07 10:06:46
User: homburg

This works if your terminal is in Vi mode


Know a better way?

If you can do better, submit your command here.

What others think

hmm, remarkably similar to:


Comment by mpb 402 weeks and 4 days ago

Doesn't seem to work for me, they both just re-input what I just typed -- from the same line.

Comment by ozymandias 402 weeks and 4 days ago

@mpb Except that I don't require the use of the shift modifier. Further, comments don't get as high attention as a newly submitted command.

@ozymandias If your previous command didn't have an argument, then it will just place the previous command on the line.

Comment by atoponce 402 weeks and 4 days ago

atoponce -- that's what I tested...

Comment by ozymandias 401 weeks and 4 days ago

Only 'ESC+.' works for me.

Comment by bwoodacre 397 weeks ago

Make sure you're holding Alt while pressing period. If you press . again it will go back in history too. If only Esc . works for you, you need to set your terminal to send meta as escape.

Comment by rkulla 347 weeks ago

Only Escape + . works for me in Terminal on a Mac.

Comment by erikhansen 343 weeks and 5 days ago

In Vi mode:

<Esc> _

Or to choose arg and _ to activate:

<Alt>+<num>, _
Comment by homburg 300 weeks and 2 days ago

You can also use the numeric prefix to adjust the argument from the previous command which will be used.

In bash, the numeric prefix is Esc (\e below) followed by any number of digits, and the modifier counts parameters from the start, with \e0\e. giving you the command itself, \e2\e. the second parameter.

In zsh, the numeric prefix is extended by \e single-digit, so to pass in 12 it's \e1\e2. For \e. zsh counts backwards with 1 being the *last* parameter, so that \e. and \e1\e. are equivalent. This makes sense, since the numeric prefix is conceptually a repetition count. Except that zsh then makes \e0\. get the command position, same as bash.

Still both useful. Add in on zsh:

zle -N copy-earlier-word bindkey '^[,' copy-earlier-word

and you have \e, to copy the previous word from the *current* command-line, and numeric prefices upon that, and the ability to mess around with long paths gets much easier.

Comment by syscomet 237 weeks and 3 days ago

You can also use $_ in BASH. Good for scripts. :)

Comment by somaddict 211 weeks and 5 days ago

works on my machine, running Gnome 2 on Debian.

Comment by sandcurves 207 weeks and 3 days ago

Ok, pressing . gives me older and older commands, but what if I go too far, ans would like to cycle forward?

Comment by unixmonkey63146 174 weeks and 6 days ago

Can anyone help with the Vi-mode version

<Esc> _

doesn't seem to work for me.

Comment by crashandburn4 142 weeks and 5 days ago

the ALT "." command has become one of the biggest time savers I've ever used w/the added benifit of a little less risk than using some other similar options. This, and `sudo !!` have saved me lots of time. But "." is the cats meow.

Comment by substdio 140 weeks and 2 days ago

Your point of view

You must be signed in to comment.