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:
grep -lL "foo" $(grep -l bar *cl*.log)
Uses xargs to call the second grep with the first grep's results as arguments
This one-liner will output installed packages sorted by size in Kilobytes.
recursively search dir for a a particular file type, search each file for a particular text.
Show the top file size in human readable form
Show the top 10 file size
Maybe simpler, but again, don't know how it will work with space in filename.
If you want to pull all of the files from a tree that has mixed files and directories containing files, this will link them all into a single directory. Beware of filesystem files-per-directory limits.
delete multiple files from git index that have already been deleted from disk. this is pretty terrible, I'm looking for a better way.
Robust means of moving all files up by a directory. Will handle dot files, filenames containing spaces, and filenames with almost any printable characters. Will not handle filenames containing a single-quote (but if you are moving those, it's time to go yell at whoever created them in the first place).
Output made so that it will match initial suggestion for this task. Personally, I think that output of du -h is more readable.
Im' not interested in images, but that's how I would do it.
Useful for ripping wallpaper from 4chan.org/wg
Download google video with wget. Or, if you wish, pass video URL to ie mplayer to view as stream.
1. VURL: replace with url. I.e. http://video.google.com/videoplay?docid=12312312312312313#
2. OUPUT_FILE : optionally change to a more suited name. This is the downloaded file. I.e. foo.flv
# Improvements greatly appreciated. (close to my first linux command after ls -A :) )
Breakedown pipe by pipe:
1. wget: html from google, pass to stdout
2. grep: get the video url until thumbnailUrl (not needed)
3. grep: Strip off everything before http://
4. sed: urldecode
5. echo: hex escapes
6. sed: stipr of tailing before thumbnailUrl
7. wget: download. Here one could use i.e. mplayer or other...
Takes IP from web logs and pipes to iptables, use grep to white list IPs.. use if a particular file is getting requested by many different addresses.
Sure, its already down pipe and you bandwidth may suffer but that isnt the concern. This one liner saved me from all the traffic hitting the server a second time, reconfigure your system so your system will work like blog-post-1.php or the similar so legitimate users can continue working while the botnet kills itself.
I used this to mass install a lot of perl stuff. Threw it together because I was feeling *especially* lazy. The 'perl' and the 'module' can be replaced with whatever you like.
In this way it doesn't have problems with filenames with spaces.
displays current time in "binary clock" format
(loosely) inspired by: http://www.thinkgeek.com/homeoffice/lights/59e0/
.... - 1st hour digit: 0
*..* - 2nd hour digit: 9 (8+1)
.*.. - 1st minutes digit: 4
*..* - 2nd minutes digit: 9 (8+1)
PROMPT_COMMAND='echo "10 i 2 o $(date +"%H%M"|cut -b 1,2,3,4 --output-delimiter=" ") f"|dc|tac|xargs printf "%04d\n"|tr "01" ".*"'
unset PROMPT_COMMAND to disable.