Я хочу дізнатися поточну погоду в конкретному місті чи моєму місці з терміналу. Чи є в командному рядку додаток погоди?
Я хочу дізнатися поточну погоду в конкретному місті чи моєму місці з терміналу. Чи є в командному рядку додаток погоди?
Відповіді:
Просто введіть у термінал наступне:
curl wttr.in
І отримає ваше місцезнаходження /etc/timezone
. Інакше curl wttr.in/your_location
. Наприклад, для Тегерану:
curl wttr.in/tehran
Що дає вам:
Ви також можете порівняти два міста:
diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )
Вихідний код розробника доступний на Github .
devs
нас
Шукайте своє місто за адресою http://www.accuweather.com та замініть URL-адресу в наступному сценарії на URL-адресу для вашого міста:
#!/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
Вибірка зразка:
Berlin, Germany: Foggy, 1°
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"});
. Використовуючи свій код, awk
роздільником поля є "" (пробіл). Це $12
(температура) 12-й стовпчик?
awk
сепаратор '
. У api використовується 2 числа, перший - postleitzahl
або поштовий індекс. Другим, здається, є кодовий номер api
У мене є ще один спосіб.
Відкрийте .bashrc
файл і вставте цей код внизу
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"';}
Потім збережіть і закрийте .bashrc
файл.
тепер введіть, bash
щоб оновити файл.
потім введіть
weather <location name>
наприклад
august@august-OEM:~$ weather guntur
December 14, 2013: Clear. High 31&deg;C (87&deg;F). Winds 0 kph North
December 15, 2013: Clear. High 29&deg;C (84&deg;F). Winds 10 kph NNW
December 16, 2013: Clear. High 31&deg;C (87&deg;F). Winds 10 kph North
December 17, 2013: Clear. High 29&deg;C (84&deg;F). Winds 7 kph ENE
December 18, 2013: Scattered Clouds. High 29&deg;C (84&deg;F). Winds 3 kph ENE
December 19, 2013: Scattered Clouds. High 29&deg;C (84&deg;F). Winds 3 kph ENE
YOUZIPORLOCATION
з $1
і передати 20001
(Вашингтон, округ Колумбія ZipCode), я отримую рядки , які виглядають як неформатований Today: Mostly sunny and breezy. Highs in the upper 30s. Northwest winds 20 to 25 mph with gusts up to 45 mph.
Коли я використовую "washington.dc"
, я отримую вихід таблиці May 4, 2015: Clear. High 32&deg;C (89&deg;F). Winds 43 kph East
. Будь-яка ідея, чому різниця?
Ось чудова напів графічна утиліта командного рядка, написана на Go:
https://github.com/schachmat/wego/
Вам потрібно буде встановити Go і налаштувати деякі матеріали API, але інструкції є. Ось зразок малюнка:
curl wttr.in
достатньо
curl wttr.in/Helsinki?m
Спробуйте використовувати
telnet rainmaker.wunderground.com
Спочатку вам потрібно встановити пакунок погоди-утиліти, для цього просто натисніть Ctrl+ Alt+ Tна клавіатурі, щоб відкрити термінал. Коли він відкриється, запустіть команди (и) нижче:
sudo apt-get install weather-util
Вам знадобиться ваш місцевий погодний код .
Після установки можна запустити weather -i <code>
. Код, який ви отримуєте за посиланням вище. Для переліку доступних опцій можна запустити weather
інформацію про погоду
Last updated Dec 11, 2013 - 07:00 AM EST / 2013.12.11 1200 UTC Temperature: 86 F (30 C)
. чи немає способу дізнатися поточну погоду.
weather YOURLOCATIONNAME
він шукає ваше місцезнаходження і надає, можливо, декілька результатів. З них ви можете прочитати ідентифікатор станції, який ви можете використовувати як аргумент, щоб отримати інформацію про погоду з
weather LAX
(яка повинна показувати погоду в міжнародному аеропорту Лос-Анджелеса) відображається помилка 404 для weather.noaa.gov/pub/data/observation/metar/decoded/KNKX.TXT
http://weather.noaa.gov/pub/data
на http://tgftp.nws.noaa.gov/data
. ОНОВЛЕННЯ: Схоже, вони вже виправили версію 2.1, яку ви можете отримати на сайті проекту .
ansiweather
AnsiWeather - це сценарій Shell для відображення поточних погодних умов у вашому терміналі з підтримкою кольорів ANSI та символів Unicode. Дані про погоду надходять із вільного API погоди OpenpointMap.
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 ☔
також програма, яка попередньо встановлена з ubuntu під назвою inxi, дасть вам всі типи статистики на вашому комп’ютері, і вона робить вихід погоди.
команда: inxi --help
команда: inxi -w
Conditions: 82 F (28 C) - Clear Time: May 13, 10:52 AM CDT
команда: 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
sudo apt install inxi
inxi
доступно, але вам потрібно спочатку включити всесвітнє сховище.
Можна порівняти міста, використовуючи:
diff -Naur <(curl -s http://wttr.in/london ) <(curl -s http://wttr.in/new-york )
як показано у відповіді на голосування. wttr.in
також робить чудовий "плескіт" екран щоразу, коли ви відкриваєте термінал. Зробіть це, додавши його у свій ~/.bashrc
файл. Я зробив це, щоб включити інформацію про погоду, дату, час та розподіл, як це детально описано у цій відповіді: Як я можу отримати цей сплеск екрану терміналу?
На жаль, я потрапив в Ubuntu в Windows 10 WSL для оновлень весни 2018 року, коли я захопив це зображення. Обіцяйте, що незабаром завантажуся в Ubuntu в Linux.
Для ще коротших показників погоди http://weather.tuxnet24.de надає дані про погоду від Yahoo! у текстовому та xml форматі.
Потім файли з XML можуть бути отримані за допомогою аналізатора XML, як xmllint, тобто.
Я написав q & d погодний скрипт, який отримує поточну температуру та опис погоди, а потім зберігає символ unicode, що відповідає опису, і видає його як
☂ 6 ° C
Я регулярно оновлююсь через cronjob, а потім використовую вихід у своєму статусі лотка.
Отримайте свій ідентифікатор у yahoocom / новини / погода. Змініть місце розташування до потрібного місця та шукайте ідентифікатор у URL-адресі (тобто, якщо URL-адреса yahoocom / новини / погода / Німеччина / північ-Рейн-Вестфалія / bielefeld-20066057, ідентифікатор - 20066057).
XML містить додаткові поля, тобто дані прогнозу, вітер тощо. - Ви також можете їх розібрати, якщо хочете.
На жаль, деякі символи погоди не представлені в Ubuntufont ... не соромтеся коригувати.
Ось мій сценарій (замініть 20066057 своїм посвідченням, якщо ви не живете в Білефельді) - залежить від bash, curl та xmllint.
#!/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 (°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";
#!/usr/bin/env bash
фіксований для мене, Ubuntu 18.04
У мене є ще один спосіб.
Відкрийте файл .bashrc і вставте цей код внизу
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; }
Збережіть і закрийте .bashrc
файл та запустіть наступну команду для оновлення bash:
. .bashrc
потім введіть W
верхній регістр
.bashrc
файлу. Ви можете запустити: source .bashrc
або замість цього запустити:. .bashrc
Хоча рішення curweather curl досить добре, мені потрібно було щось більш інформаційне, тому я створив простий скрипт bash, який тягне інформацію на наступні 4 години з веб-сайту weather.com. Як і в попередньому прикладі, ви повинні змінити посилання на своє місцезнаходження.
Example output:
$ ./getWeather.sh
Temperature for 1 AM : 65°F and outside should be: Partly - Cloudy FEELS LIKE: 65°
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;
Повний сценарій розміщений за адресою: https://sites.google.com/site/wozoopalinux/home/wzbash001/get-weather-information-from-command-line-for-next-4-hrs
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.]
Ось як його використовувати:
$ 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.
Історія позаду цього від розробника.