Hide

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.

Hide

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:

Hide

News

2011-03-12 - Confoo 2011 presentation
Slides are available from the commandlinefu presentation at Confoo 2011: http://presentations.codeinthehole.com/confoo2011/
2011-01-04 - Moderation now required for new commands
To try and put and end to the spamming, new commands require moderation before they will appear on the site.
2010-12-27 - Apologies for not banning the trolls sooner
Have been away from the interwebs over Christmas. Will be more vigilant henceforth.
2010-09-24 - OAuth and pagination problems fixed
Apologies for the delay in getting Twitter's OAuth supported. Annoying pagination gremlin also fixed.
Hide

Tags

Hide

Functions

Geo Weather

Terminal - Geo Weather
curl -s http://www.google.com/ig/api?weather=$(curl -s "http://api.hostip.info/get_html.php?ip=$(curl -s icanhazip.com)" | grep City | sed 's/City: \(.*\)/\1/' | sed 's/ /%20/g' | sed "s/'/%27/g") | sed 's|.*<temp_f data="\([^"]*\)"/>.*|\1\n|'
2010-02-13 21:42:48
User: matthewbauer
Functions: grep sed
-4
Geo Weather

Weather based on your location

Alternatives

There are 2 alternatives - vote for the best!

Terminal - Alternatives
xmlstarlet fo "http://www.google.com/ig/api?weather=$(curl -s api.hostip.info/get_html.php?ip=$(curl -s icanhazip.com)... SEE SAMPLE OUTPUT
2010-02-11 06:32:44
User: o0110o
0

This command will determine an individuals local weather, based on their I.P. address. I had to learn a lot about SED and a little about XMLStarlet in order to achieve this. This command is my original work and there is much room for improvement; I look forward to any constructive feedback.

Know a better way?

If you can do better, submit your command here.

What others think

I really like how much you compressed this hack of my command, but for some reason it does not work for me :(

Comment by o0110o 244 weeks and 2 days ago

Sorry about that, should work now.

Comment by matthewbauer 244 weeks and 2 days ago

I hate to be the bearer of bad news but this command still doesn't work :(

I have made my own version of this, see here:

http://www.commandlinefu.com/commands/view/4851/geo-temp

Comment by o0110o 244 weeks and 1 day ago

That's weird does:

curl -s "http://api.hostip.info/get_html.php?ip=$(curl -s icanhazip.com)" | grep "City:" | sed 's/City: \(.*\)/\1/' | sed 's/ /%20/g'

Work for you?

Comment by matthewbauer 244 weeks and 1 day ago

It returns: ST.%20JOHN'S,%20NL

However, the Google Weather API doesn't accept < ' >; it needs to be encoded as %27 :)

Comment by o0110o 244 weeks and 1 day ago

Nicely Done :)

Comment by o0110o 244 weeks ago

FYI, if you wanted to make your command slimmer you could take advantage of the fact that curl doesn't need "

Here is an example:

curl -s www.google.com/ig/api?weather=$(curl -s api.hostip.info/get_html.php?ip=$(curl -s icanhazip.com) | grep City | sed -e's/C.*: \(.*\)/\1/' -e's/ /%20/g' -e"s/'/%27/g") | sed 's|.*

That is your exact same command, but with 25 fewer characters :)

Comment by o0110o 244 weeks ago

[EDIT] FYI, if you wanted to make your command slimmer you could take advantage of the fact that curl doesn't need [http://] prefixes to interpret a URL.

Here is an example:

curl -s www.google.com/ig/api?weather=$(curl -s api.hostip.info/get_html.php?ip=$(curl -s icanhazip.com) | grep City | sed -e's/C.*: \(.*\)/\1/' -e's/ /%20/g' -e"s/'/%27/g") | sed 's|.*

That is your exact same command, but with 25 fewer characters :)

Comment by o0110o 244 weeks ago

Your point of view

You must be signed in to comment.

Related sites and podcasts