Get the weather forecast for the next 24 to 48 for your location.

weather(){ curl -s "${@:-<YOURZIPORLOCATION>}"|perl -ne '/<title>([^<]+)/&&printf "%s: ",$1;/<fcttext>([^<]+)/&&print $1,"\n"';}
This shell function grabs the weather forecast for the next 24 to 48 hours from Replace <YOURZIPORLOCATION> with your zip code or your "city, state" or "city, country", then calling the function without any arguments returns the weather for that location. Calling the function with a zip code or place name as an argument returns the weather for that location instead of your default. To add a bit of color formatting to the output, use the following instead: weather(){ curl -s "${@:-<YOURZIPORLOCATION>}"|perl -ne '/<title>([^<]+)/&&printf "\x1B[0;34m%s\x1B[0m: ",$1;/<fcttext>([^<]+)/&&print $1,"\n"';} Requires: perl, curl
Sample Output
$ weather london, uk
Tonight: Partly cloudy. Lows around 14. Northwest winds 10 to 15 mph in the evening...decreasing to 5 to 10 mph after midnight.
Wednesday: Mostly sunny. Highs in the mid 30s. Northwest winds 5 to 10 mph in the morning...decreasing to 5 mph in the afternoon.

$ weather 48104
Tonight: Cloudy. Snow through 7 PM...then snow heavy at times. Accumulations 5 to 7 inches. Lows 19 to 23. East winds 10 to 20 mph...turning to northeast. Chance of snow 100 percent.
Wednesday: Cloudy and windy. Light snow with areas of blowing and drifting snow through 10 am...then scattered light snow showers along with areas of blowing and drifting snow. Additional accumulations around an inch. Highs 24 to 28. North winds 20 to 30 mph...diminishing to 15 to 25 mph. Chance of snow 100 percent.

$ weather
Tonight: Blustery. Mostly cloudy. Scattered snow showers in the evening...then chance of flurries after midnight. Blowing and drifting snow through the night. Low around 14. Northwest wind 15 to 20 mph with gusts to around 30 mph.
Wednesday: Blustery. Mostly cloudy early in the morning then becoming partly cloudy. High in the upper 20s. Northwest wind 10 to 20 mph with gusts to around 30 mph.

2010-02-10 01:23:39

2 Alternatives + Submit Alt

What Others Think

doesn't work: leftyfb@niagara:~$ cat weather weather(){ curl -s " leftyfb@niagara:~$ perl weather syntax error at weather line 1, near "){" Execution of weather aborted due to compilation errors. leftyfb@niagara:~$ ./weather leftyfb@niagara:~$ weather(){ curl -s " bash: syntax error near unexpected token `('
leftyfb · 646 weeks ago
leftyfb, it's not a script. You need to enter it at as a function at your shell, or add it to a file that gets sourced by your shell such as ~/.bashrc. Try pasting it at the bottom of your ~/.bashrc file and then source your bashrc with the command "source ~/.bashrc". After that you should be able to just type weather at your prompt to call it. Just make sure that you change <YOURZIPORLOCATION> to your location, like "89110" or "eugene, or".
eightmillion · 646 weeks ago
A decent one line weather app after a long time. Thanks.
billbose · 645 weeks and 6 days ago
still not working:
leftyfb · 645 weeks and 6 days ago
leftyfb, what version of bash are you using? I've tested this on recent versions of ash, bash, dash, ksh, and zsh and didn't have any problems on any of them.
eightmillion · 645 weeks and 6 days ago
Doe not work.
chinmaya · 645 weeks and 1 day ago
works on snow leopard on mac: bradleym-contegix:~ bradleymccrorey$ weather(){ curl -s " Tonight: Cloudy with a 40 percent chance of rain and snow. Low in the lower 30s. Southeast wind around 10 mph. Saturday: Cloudy. High in the mid 40s. South wind around 10 mph in the morning becoming light in the afternoon. TOTALLY pimp. That's going in my .bash_profile
4fthawaiian · 644 weeks and 4 days ago
Very cool - thank you. How can I get rid of the &? October 5, 2013: Overcast. High 10&deg;C (50&deg;F). Winds 14 kph SSW October 6, 2013: Chance of Rain. High 12&deg;C (53&deg;F). Winds 14 kph SSW
GrouchyGaijin · 455 weeks and 4 days ago

What do you think?

Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?

You must be signed in to comment.

What's this? is the place to record those command-line gems that you return to again and again. 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.

Share Your Commands

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.


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: