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/
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.
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.
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:
make, find and a lot of other programs can take a lot of time. And can do not. Supppose you write a long, complicated command and wonder if it will be done in 3 seconds or 20 minutes. Just add "R" (without quotes) suffix to it and you can do other things: zsh will inform you when you can see the results.
You can replace zenity with other X Window dialogs program.
pushd and popd are your friends, but sometimes they're just incompatible with the way one works...
Two shell functions:
bm bookmarkname - "bookmarks" the current directory, just 'cd $BMbookmarkname' to return to it.
forget bookmarkname - unsets the 'bookmarkname' variable. It isn't mandatory, they cease to exist when the session ends.
Unsetting HISTFILE avoid getting current session history list saved.
If I type 'man something', I want it to find the manpage in the same order as my PATH.
You can add something like this to your .bashrc
# Add my MacPorts, my personal utilities and my company utilities to my PATH.
# Now set the manpath based on the PATH, after man(1) parses man.conf
# - No need to modify man.conf or manually modify MANPATH_MAP
# - Works on Linux, FreeBSD & Darwin, unlike /etc/manpaths.d/
# Must unset MANPATH first. MANPATH is set on some systems automatically (Mac),
# which causes manpath to ignore the values of PATH like /opt/local/bin (MacPorts).
# Also MANPATH may be deprecated. See "SEARCH PATH FOR MANUAL PAGES" in man(1)
# manpath acts differently on Solaris, FreeBSD, MacOSX & GNU. This works everywhere.
Note that MacOSX, FreeBSD & Linux have fancier ways to do some of this. (e.g. 'man --path' or 'man -q'), but this command is more universal and should work everywhere.
First argument: string to put a box around.
Second argument: character to use for box (default is '=')
Same as command #4962, cleaned up, shortened, and more efficient. Now a ' * ' can be used as the box character, and the variables get unset so they don't mess with anything else you might have.
They marked c++ as a function for this command, but I'm not sure why. Must be a bug.
works on all unices.
Unset TMOUT or set it to 0 in order to prevent shell autologout. TMOUT is the number of seconds after which the present shell will be killed if it has been idle for that long.
this will cause any commands that you have executed in the current shell session to not be written in your bash_history file upon logout
unsets variables used by the one-liner
sets up the IFS bash variable to not be affected by whitespace and disables extra glob expansion
uses read to slurp the results of the find command into an array
selects an element of the array at random to be passed as an argument to mplayer