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.

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





Execute a command without saving it in the history

Terminal - Execute a command without saving it in the history
2009-03-17 16:25:29
User: eaZy
Execute a command without saving it in the history

Prepending one or more spaces to your command won't be saved in history.

Useful for pr0n or passwords on the commandline.

Tested on BASH.


There is 1 alternative - vote for the best!

Terminal - Alternatives
cat | bash
2010-08-18 13:47:46
User: glaudiston
Functions: cat

Sometimes you don't want to leave history, because of passwords use or somethink like.

I think it help.

read -e -s -p "Password: " password
2010-08-18 17:53:27
User: freiheit
Functions: read
wget --user=username --password="$password" http://example.org/

Instead of hiding commands entirely from history, I prefer to use "read" to put the password into a variable, and then use that variable in the commands instead of the password. Without the "-e" and "-s" it should work in any bourne-type shell, but the -s is what makes sure the password doesn't get echoed to the screen at all. (-e makes editing work a bit better)

export HISTCONTROL=ignorespace
2013-07-25 08:31:10
User: gorynka
Functions: export
<space>secret_command;export HISTCONTROL=

This will make "secret_command" not appear in "history" list.

HISTFILE= ; your_secret_command
2012-01-26 21:08:57
User: titan2x

Yes, by correctly setting the HIST* variables you can make certain commands not saved in history. But that's complicated and easy to make a mistake. If you set HISTFILE= to blank, nothing in your current shell session will be saved in history. Although this is not a precise answer to the subject, but it's very simple.

<space> secret -p password
2011-09-16 12:41:16
User: pcholt

Put a space in front of your command on the command line and it will not be logged as part of your command line history.

Know a better way?

If you can do better, submit your command here.

What others think

depends on the variable HISTCONTROL

(must be ignoreboth to work)

Comment by albanichou 349 weeks and 1 day ago

You use the command line for pr0n?! lolz

Comment by zombiedeity 349 weeks and 1 day ago

hmmm... 45(1 pr0n?

Comment by IMissDos 349 weeks and 1 day ago

From man bash:


A colon-separated list of values controlling how commands are saved on the history list. If the list of values includes ignorespace, lines which begin with a space character are not saved in the history list. A value of ignoredups causes lines matching the previous history entry to not be saved. A value of ignoreboth is shorthand for ignorespace and ignoredups.

A value of erasedups causes all previous lines matching the current line to be removed from the history list before that line is saved. Any value not in the above list is ignored. If HISTCONTROL is unset, or does not include a valid value, all lines read by the shell parser are saved on the history list, subject to the value of HISTIGNORE. The second and subsequent lines of a multi-line compound command are not tested, and are added to the history regardless of the value of HISTCONTROL.

Comment by Malkavian 349 weeks and 1 day ago

I wouldn't rely on this 'feature' ;) -- see other comments about HISTCONTROL in addition to reading the manual for bash!

Comment by alexandersafir 349 weeks and 1 day ago

In zsh you can do "fc -p" to switch to a new history (and make $HISTFILE empty) and "fc -P" to switch back to the last one.

Comment by cran 349 weeks ago

you have to put:

export HISTIGNORE="[ \t]*"

in ~/.bashrc for this to work. if you don't have .bashrc in in ~/ just make your own

Comment by genofunk 348 weeks and 6 days ago

this looks like a bug in bash...if you don't alter HISTCONTROL of course.

Comment by wwoollff 347 weeks ago

Use kill to exit the shell instead of exit or logout:

kill -9 $$
Comment by vutcovici 346 weeks and 5 days ago

ironically export HISTIGNORE="[ \t]*" or

echo export HISTIGNORE="[ \t]*" >> .bashrc

will appear in the history :)

You should do

<space> history -d N

Where N is the postion export HISTIGNORE="[ \t]*"

Comment by funyotros 316 weeks and 1 day ago

an easier way to do this in zsh is to add "setopt HIST_IGNORE_SPACE" to your .zshrc

it'll then behave like this command should, but keep the space'd command in history till you enter another one

(from man zshoptions)

Comment by awh 184 weeks ago

export HISTCONTROL=ignorespace worked for me. Testet on Centos 5

Comment by wahallah 155 weeks and 2 days ago

IBM AIX's ksh supports it too, but as with CentOS, you have to export HISTCONTROL=ignorespace.

Comment by RAKK 113 weeks and 6 days ago

Your point of view

You must be signed in to comment.