Terminalden hava durumu


65

Belirli bir şehrin güncel hava durumunu veya bulunduğum yeri terminalden bulmak istiyorum . Herhangi bir komut satırı hava uygulaması var mı?

Yanıtlar:


134

Bir terminale aşağıdakileri girmeniz yeterlidir:

curl wttr.in

Ve konumunuzu alacaksınız /etc/timezone. Aksi takdirde curl wttr.in/your_location. Örneğin, Tahran için:

curl wttr.in/tehran

Bu size verir:

Örnek çıktı

İki şehri de karşılaştırabilirsiniz:

diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )

Geliştiricinin kaynak kodu Github'da mevcuttur .


2
Çok daha iyi!
Zachary Dahan

2
github.com/schachmat/wego için kötü değil devsaramızda
Timo

beğen, ama bu sefer bir hata attı: Maalesef şu anda hava durumu hizmetine sorgular tükeniyor. En kısa zamanda yeni sorgular alacağız.
Doyousketch2

17

Şehrinizi http://www.accuweather.com adresinde arayın ve aşağıdaki komut dosyasındaki URL’yi şehrinizin URL’si ile değiştirin:

#!/bin/sh

URL='http://www.accuweather.com/en/de/berlin/10178/weather-forecast/178087'

wget -q -O- "$URL" | awk -F\' '/acm_RecentLocationsCarousel\.push/{print $2": "$16", "$12"°" }'| head -1

Örnek çıktı:

Berlin, Germany: Foggy, 1°

Ama nasıl olsa onu Celcius olarak değiştiririm
dat tutbrus

Kaynak html'de görüyorum acm_RecentLocationsCarousel.push({name:"Berlin, Germany", daypart:'day', href:'/en/de/berlin/10178/weather-forecast/178087', icon:'i-6-l', bg:'c', temp:'0', realfeel:'-6', text:"Mostly cloudy"});. Kodunuzu kullanarak awkalan ayırıcı '' (boşluk) olur. Mı $12(sıcaklık) 12 sütun?
Timo

Benim hatam, awkayırıcı '. Api 2 sayı kullanır, ilki postleitzahlveya posta kodu. İkinci bir api kod numarası gibi görünüyor
Timo

1
Artık çalışmıyor, Accuweather API değişti mi?
Timo

14

Bir yol daha var.

.bashrcDosyanızı açın ve sonra bu kodu en altına yapıştırın

weather(){ curl -s "http://api.wunderground.com/auto/wui/geo/ForecastXML/index.xml?query=${@:-<YOURZIPORLOCATION>}"|perl -ne '/<title>([^<]+)/&&printf "%s: ",$1;/<fcttext>([^<]+)/&&print $1,"\n"';}

Ardından .bashrcdosyanızı kaydedin ve kapatın .

Şimdi bashdosyayı güncellemek için yazın.

sonra yazın

weather <location name>

Örneğin

august@august-OEM:~$ weather guntur
December 14, 2013: Clear. High 31&amp;deg;C (87&amp;deg;F). Winds 0 kph North
December 15, 2013: Clear. High 29&amp;deg;C (84&amp;deg;F). Winds 10 kph NNW
December 16, 2013: Clear. High 31&amp;deg;C (87&amp;deg;F). Winds 10 kph North
December 17, 2013: Clear. High 29&amp;deg;C (84&amp;deg;F). Winds 7 kph ENE
December 18, 2013: Scattered Clouds. High 29&amp;deg;C (84&amp;deg;F). Winds 3 kph ENE
December 19, 2013: Scattered Clouds. High 29&amp;deg;C (84&amp;deg;F). Winds 3 kph ENE

1
Hava durumu ile güzel. Benden +1.
souravc

Bu artık işe yaramıyor, gösterdiği son tarihler Mayıs 2015'ten (en az Cape Town, Güney Afrika için). Xml çıktısının daha yakından incelenmesi, txt_forecast üst öğesinin Mayıs 2015'ten bu yana güncellenmediğini ve simpleforecast öğesinin en son verilere sahip olduğunu gösteriyor.
Zahir J,

Cevabımı güncelleyeceğim
rɑːdʒɑ

Hava <konum adı> 'nın çalışmasını istiyorsanız, YOUZIPORLOCATION ürününü 1 $ ile değiştirin
Ed Neville

Ben değiştirdiğinizde YOUZIPORLOCATIONile $1ve geçiş 20001(Washington, DC posta kodu), ben gibi biçimlendirilmemiş bakmak çizgiler olsun Today: Mostly sunny and breezy. Highs in the upper 30s. Northwest winds 20 to 25 mph with gusts up to 45 mph.ben kullandığınızda "washington.dc", ben masa çıkışını almak May 4, 2015: Clear. High 32&amp;deg;C (89&amp;deg;F). Winds 43 kph East. Farkın neden olduğu hakkında bir fikrin var mı?
blalterman

14

İşte Go ile yazılmış harika bir yarı grafik komut satırı yardımcı programı:

https://github.com/schachmat/wego/

Git'i kurmanız ve bazı API öğeleri kurmanız gerekecek, ancak talimatlar orada. İşte örnek bir resim:

görüntü tanımını buraya girin


5
Bu şimdi halka açık tutuluyor - IP adresleriyle bölge haritalaması. Deneyin: curl -4 wttr.in
jschrab

2
@ jschrab: Ve aslında -4'e ihtiyacınız yok. curl wttr.inyeter
Igor Chubin

Metrik birimler de kamuya açık olan versiyonlarda mevcuttur, şöyle:curl wttr.in/Helsinki?m
Ville

6

Kullanmayı deneyin

telnet rainmaker.wunderground.com

1
Bu sadece ABD gibi görünüyor?
Vladimir Panteleev

5

Öncelikle, weather-util paketini kurmanız gerekir, bunu yapmak için Terminal'i açmak için sadece klavyenizdeki Ctrl+ Alt+ tuşlarına basın T. Açıldığında, aşağıdaki komutları çalıştırın:

sudo apt-get install weather-util

Yerel hava durumu koduna ihtiyacınız olacak .

Yüklemeden sonra çalıştırabilirsiniz weather -i <code>. Yukarıdaki linkten aldığınız kod. Kullanılabilir seçeneklerin bir listesi için Hava Durumu bilgilerini çalıştırabilirsiniz.weather


1
Last updated Dec 11, 2013 - 07:00 AM EST / 2013.12.11 1200 UTC Temperature: 86 F (30 C)mevcut hava durumunu bilmenin bir yolu olmadığını gösterir .
Avinash Raj,

Bulunduğunuz yere bağlı olarak mevcut bilgi olabilir.
Mitch

1
Bunu yeni denedim ve şimdi kullanmanın daha kolay olduğunu keşfettim: weather YOURLOCATIONNAMEDaha sonra konumunuzu arar ve muhtemelen birden fazla sonuç sunar. Bunlardan hava durumu bilgilerinizi almak için argüman olarak kullanabileceğiniz istasyon tanımlayıcısını okuyabilirsiniz
Nicolas

Bağlı olduğu hizmetin durdurulmuş gibi görünüyor. Sürüm 2.0'ı yeni yükledim ve weather LAX(Los Angeles Uluslararası Havaalanı için hava durumunu göstermelidir) weather.noaa.gov/pub/data/observations/metar/decoded/KNKX.TXT
Keith Thompson

1
Yani, belirli bir veri dosyası taşındı burada için buraya . Yapılan her çağrının değişen veri dosyalarını güncellemek mümkün olmalıdır http://weather.noaa.gov/pub/dataiçin http://tgftp.nws.noaa.gov/data. GÜNCELLEME: Proje sitesinden alabileceğiniz 2.1 sürümünde önceden düzeltmiş gibi görünüyorlar .
Keith Thompson

5

ansiweather

AnsiWeather, ANSI renklerini ve Unicode sembollerini destekleyen terminalinizdeki mevcut hava koşullarını görüntülemek için kullanılan bir Shell betiğidir. Hava durumu verileri OpenWeatherMap ücretsiz hava durumu API'sinden gelir.

sudo apt-get install ansiweather
ansiweather -l London,GB -f 3
London forecast => Sat Jan 13: 7/2 °C ☔ - Sun Jan 14: 4/1 °C ☔ - Mon Jan 15: 9/6 °C ☔

https://github.com/fcambus/ansiweather


2

ayrıca inxi adı verilen ubuntu ile önceden yüklenmiş olarak gelen bir program, bilgisayarınızda her türlü istatistiği verecek ve bir hava durumu çıktısı verecek.

komut: inxi --help

komut: inxi -w

        Conditions: 82 F (28 C) - Clear Time: May 13, 10:52 AM CDT

komut: inxi -wxxx

     Conditions: 82 F (28 C) - Clear Wind: From the SW at 13 MPH Humidity: 60%

       Pressure: 29.99 in (1016 mb) Heat Index: 84 F (29 C)
       Location: city (USA) Altitude: 185 m
       Time: May 13, 10:52 AM CDT (America/Chicago) Observation Time: May 13, 9:54 AM CDT

10.04 itibariyle inxi'nin ubuntu'nun bir parçası olmadığı, ancak kurulabileceği anlaşılıyorsudo apt install inxi
Starbuck

Evet, inxikullanılabilir ancak önce evren deposunu etkinleştirmeniz gerekir.
saatinde orkide

2

Aşağıdakileri kullanarak şehirleri karşılaştırabilirsiniz:

diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )

en çok oylanan cevabında gösterildiği gibi. wttr.inayrıca her terminali açtığınızda harika bir "sıçrama" ekranı yapar. Bunu ~/.bashrcdosyanıza ekleyerek yapın . Bunu, bu cevabın detaylarında belirtildiği gibi Hava Durumu, Tarih, Saat ve Dağıtım bilgilerini dahil etmek için yaptım: Bu terminal açılış ekranını nasıl alabilirim?

Windows 10.png'da Bash Splash

Üzgünüm, bu resmi yakaladığımda Spring 2018 güncellemeleri için Windows 10 WSL'de Ubuntu'daydım. Söz veriyorum yakında Linux'ta Ubuntu'ya geri döneceğim.


2

Daha kısa hava çıkışı için http://weather.tuxnet24.de Yahoo! metin ve xml biçiminde.

XML'den dosyalamalar daha sonra xmllint ie gibi bir XML çözümleyici ile elde edilebilir.

Hava durumu getirme komut dosyası yazdım, hava sıcaklığının geçerli sıcaklığını ve tanımını alır, daha sonra açıklamaya karşılık gelen bir unicode sembolü depolar ve bunun çıktısını alır.

☂ 6 ° C

Düzenli olarak cronjob yoluyla güncelleme yapıyorum ve çıktıları tepsi durumumda kullanıyorum.

Kimliğinizi yahoocom / news / weather adresinden alın. İstediğiniz konumun yerini değiştirin ve URL’de kimlik arayın (ör. URL yahoocom / news / weather / almanya / kuzey-rhine-westachusetts / bielefeld-20066057 ise ID 20066057'dir).

XML daha fazla alan içerir, yani verileri tahmin etme, rüzgâr vb. - isterseniz bunları da ayrıştırabilirsiniz.

Maalesef bazı hava sembolleri Ubuntufont'ta temsil edilmez… ayarlamaktan çekinmeyin.

İşte betiğim (Bielefeld'de yaşamıyorsanız 20066057'yi kimliğinizle değiştirin) - bash, curl ve xmllint'e bağlıdır.

#!/bin/sh
#☁☂☔❄❅❆☃ ☀☁☂⚡⚐☼

# write xml to variable
w_xml=$(curl -Ls "http://weather.tuxnet24.de/?id=20066057&mode=xml");
# get fields from xml via xmllint | xargs for trimming
# weather description
w_txt=$(xmllint --xpath "string(//current_text)" - <<<"$w_xml" | xargs);
# temperature | remove spaces from text (&#176;C prepended by space)
w_tpc=$(xmllint --xpath "string(//current_temp)"  - <<<"$w_xml" | xargs); w_tpc=${w_tpc//[[:blank:]]/};
# further fields not used atm
# w_tph=$(xmllint --xpath "string(//current_temp_high)"  - <<<"$w_xml" | xargs);
# w_tpl=$(xmllint --xpath "string(//current_temp_low)"  - <<<"$w_xml" | xargs);

# set $w_sym according to $w_txt
if   [ "$w_txt" == "Sunny" ]; then w_sym="☼";
elif [ "$w_txt" == "Mostly Sunny" ]; then w_sym="☼";
elif [ "$w_txt" == "Showers" ]; then w_sym="☂";
elif [ "$w_txt" == "Clear" ]; then w_sym="☾";
elif [ "$w_txt" == "Thunderstorms" ]; then w_sym="⚡";
elif [ "$w_txt" == "Scattered Thunderstorms" ]; then w_sym="☔";
elif [ "$w_txt" == "Isolated Thundershovers" ]; then w_sym="☔";
elif [ "$w_txt" == "Cloudy" ]; then w_sym="☁";
elif [ "$w_txt" == "Mostly Cloudy" ]; then w_sym="☁";
elif [ "$w_txt" == "Partly Cloudy" ]; then w_sym="☼☁";
elif [ "$w_txt" == "Breezy" ]; then w_sym="⚐";
# if unknown text, set text instead of symbol
else w_sym=$w_txt; 
fi
# output <symbol><space><temp-in-°C>
echo "$w_sym"" ""$w_tpc";

yönlendirme beklenmeyen hata
Philip Kirkbride

Shebang'ı #!/usr/bin/env bashbenim için tamir etmeye geçme , Ubuntu 18.04
Philip Kirkbride

2

Bir yol daha var.

.Bashrc dosyanızı açın ve sonra bu kodu en altına yapıştırın

test -f ~/.wttr.in || curl -sk wttr.in -o ~/.wttr.in
find ~ -maxdepth 1 -name .wttr.in -cmin +5 -exec curl -sk wttr.in -o ~/.wttr.in \;
head -7 ~/.wttr.in | tail -5
W(){ find ~ -maxdepth 1 -name .wttr.in -cmin +5 -exec curl -sk wttr.in -o ~/.wttr.in \;; head -27 ~/.wttr.in; }

.bashrcDosyanızı kaydedip kapatın ve bash'ı güncellemek için aşağıdaki komutu çalıştırın:

. .bashrc 

daha sonra Wbüyük harf yazın


bash: W: komuta bulunamadı

Düzenleme sonrası .bashrc
relogin

.bashrcDosyanızı "kaynaklandırırsanız" yeniden tanımlamanız gerekmez . source .bashrc. .bashrc
Koşabilirsiniz

0

Accuweather curl çözümü oldukça iyi olmasına rağmen daha fazla bilgi içeren bir şeye ihtiyacım vardı, bu yüzden weather.com sitesinden sonraki 4 saat için bilgi alan basit bash betiği oluşturdum. Önceki örnekte olduğu gibi, konumunuz için bağlantıyı değiştirmeniz gerekir.

Example output:
$ ./getWeather.sh
Temperature for 1 AM : 65&deg;F and outside should be: Partly - Cloudy FEELS LIKE:   65&deg;
Temperature for 2 AM : 65deg;F and outside should be: Partly - Cloudy FEELS LIKE: 65deg;
Temperature for 3 AM : 63deg; and outside should be: Partly - Cloudy FEELS LIKE: 63deg;
Temperature for 4 AM : 62deg; and should be: Mostly - Clear FEELS LIKE: 62deg;

Tam komut dosyası şu adreste bulunur: https://sites.google.com/site/wozoopalinux/home/wzbash001/get-weather-information-from-command-line-for-next-4-hrs


0

Dünyadaki tüm belediye başkanlarının meteogramı

finger city_name@graph.no

$ finger cologne@graph.no

           -= Meteogram for germany/north_rhine-westphalia/cologne =-           
 'C                                                                   Rain
 16                                                                   
 15                           ^^^                                     
 14                  ======^^^   ^^^                                  
 13               ===               ^^^===^^^===                      
 12                                             =========             
 11            ===                                       ====--       
 10      ======                                                ---    
  9=====|                                                         --- 3 mm 
  8     |  |                                                          2 mm 
  7  |  |  |  |  |  |  |  |              |     |  |  |  |  |          1 mm 
   _08_09_10_11_12_13_14_15_16_17_18 19 20 21 22 23 00 01 02 03 04 05 Hour

    SE SE SE SE SE SW SW  W  W  W  W SW  W  W  W  W  W NW NW NW  N  N Wind dir.
     5  5  5  5  4  4  5  6  6  6  5  5  5  4  4  5  5  5  4  3  3  3 Wind(mps)

Legend left axis:   - Sunny   ^ Scattered   = Clouded   =V= Thunder   # Fog
Legend right axis:  | Rain    ! Sleet       * Snow
[Weather forecast from yr.no, delivered by the Norwegian Meteorological Institute and the NRK.]

İşte nasıl kullanılacağı:

$ finger help@graph.no

yr.no is having technical problems, or you specified an unknown location.

Usage:

 * finger <city name>@graph.no (world weather forecast, no spaces)
   Example: finger newyork@graph.no 

 Advanced usage:

 * finger o:<city name>@graph.no (a one-line forecast)
   Example: finger o:newyork@graph.no 

 * finger ^<city name>@graph.no (Imperial units)
   Example: finger ^newyork@graph.no 

 * finger <city name>+5@graph.no (forecast from 5 hrs ahead in time (max:26))
   Example: finger northpole+5@graph.no 

 * finger <city name>~160@graph.no (set screen width)
   Example: finger southpole~160@graph.no 

 * finger <city name>%2@graph.no (forecast for every second hour [Norway])
   Example: finger oslo%2@graph.no 

 * finger <post code>@graph.no (norwegian weather forecast)
   Example: finger 0458@graph.no 

 Other: 

 * finger news@graph.no (latest headlines from NRK)
 * finger time@graph.no (server local time)
 * finger date@graph.no (server local date)
 * finger about@graph.no (contact information)

International names comes from http://fil.nrk.no/yr/viktigestader/verda.txt.

Bunun arkasındaki hikaye geliştiriciden.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.