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.
» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10
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:
This line unbuffers the interactive output of rsync's --progress flag
creating a new line for every update.
This output can now be used within a script to make actions (or possibly piped into a GUI generator for a progress bar)
tr has some predefined sets of characters that are more convenient to use than characters codes
Handles spaces in file names and directories. Optionally change directories as well by pipe to tr from dirname.
Take a file and ,."()?!;: give a list of all the words in order of increasing length.
First of all use tr to map all alphabetic characters to lower case and also strip out any puntuation.
A-Z become a-z
,."()?!;: all become \n (newline)
I've ignored - (hyphen) and ' (apostrophe) because they occur in words.
Next use bash to print the length ${#w} and the word
Finally sort the list numerically (sort -n) and remove any duplicates (sort -u).
Note: sort -nu performs strangely on this list. It outputs one word per length.
just deletes to rogue CR from dos files, and tr is always available.
I find it useless but definitely simpler than #9230
Capitalize first letter of each word in a string.
Expand a URL, aka do a head request, and get the URL. Copy this value to clipboard.
Doesn't use shuf, its much faster with "shuf -n4" instead of sort -R
So I use OSX and don't have the shuf command. This is what I could come up with.
This command assumes /usr/share/dict/words does not surpass 137,817,948 lines and line selection is NOT uniformly random.
The first grep rejects capitalised words since the dict has proper nouns in it that you mightn't want to use. The second grep rejects words with ending in apostrophe s, and the third forces the words to be at least 15 characters long.
4 random words are better than one obfuscated word
Generates a password using symbols, alpha, and digits. No repeating chars.
the speed is about 500MB/s on my machine.
i think it's fast enough to output not too many bytes.
while a C program may output 1GB per sencond on my machine.
if the size is not the power of 512,you may change the bs and count in dd.
easier way to recursively change files to lowercase using rename instead
Will rot 13 whatever parameter follows 'rot13', whether it is a string or a file. Additionally, it will rot 5 each digit in a number
Yep, now you can finally google from the command line!
Here's a readable version "for your pleasure"(c):
google() { # search the web using google from the commandline
# syntax: google google
query=$(echo "$*" | sed "s:%:%25:g;s:&:%26:g;s:+:%2b:g;s:;:%3b:g;s: :+:g")
data=$(wget -qO - "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=$query")
title=$(echo "$data" | tr '}' '\n' | sed "s/.*,\"titleNoFormatting//;s/\":\"//;s/\",.*//;s/\\u0026/'/g;s/\\\//g;s/#39\;//g;s/'amp;/\&/g" | head -1)
url="$(echo "$data" | tr '}' '\n' | sed 's/.*"url":"//;s/".*//' | head -1)"
echo "${title}: ${url} | http://www.google.com/search?q=${query}"
}
Enjoy :)