W wierszu poleceń uruchamiam serię poleceń, których wypełnienie zajmuje około dwudziestu minut. Chciałbym zobaczyć jakieś powiadomienie na moim Macu, gdy są one ukończone, więc nie muszę monitorować terminala, kiedy się skończy. Czy jest na to sposób?
$ svn update . && ant clean build start && *notify_me_somehow*
Edytuj :
Mógłbym użyć, xclock
ale to wygląda na włamanie. Idealnie byłoby wysłać powiadomienie w dowolnym miejscu, na przykład na mój telefon, ekran itp.
grownlnotify
.Odpowiedzi:
(svn update . && ant clean build start && say done) || say error
źródło
&&
do połączenia kilku poleceń i zawarcia ich w zbiorczej||
lub instrukcji, aby zgłosić błąd. +1 w rzeczyalias -g sd='; say done'
. Oznacza to, że muszę tylko dodaćsd
dowolne polecenie i otrzymam powiadomienie.(echo alik && echo Orly && say done) || say error
say -v Zarvox
czemu wszyscy w okolicy skaczą, to nieco mniej alarmujące powiadomienie.W Mac OS 10.8 możesz wysyłać sobie wiadomości z Centrum powiadomień (podobne do Growl, ale wbudowane w Mac OS).
Sprawdź „ Wyślij alert do centrum powiadomień z wiersza poleceń w OS X ”, aby zobaczyć, jak zainstalować klejnot Ruby, który pozwoli ci wysyłać powiadomienia z wiersza polecenia. Aby uprościć typowy przypadek użycia po prostu dbania o fakt, że coś w terminalu jest wykonywane, dodaj alias do swojego .bash_profile:
Następnie możesz po prostu zrobić:
Po zakończeniu długotrwałego zadania otrzymasz ładne modalne okienko, które będzie się wyświetlać, dopóki go nie klikniesz:
źródło
brew install terminal-notifier
. Następnie możesz po prostu pisaćmyCommand && terminal-notifier -message 'finished'
. Testowane na OS X Yosemite (10.10.1).myCommand; terminal-notifier -message 'finished'
przeciwnym razie powiadomienie nie zostanie wyświetlone, jeśli sięmyCommand
nie powiedzie.say
polecenie, np.my command ; terminal-notifier -message 'finished' ; say finished
Użyj Growl .
W
.dmg
pliku poszukaj dodatków, jest plik binarny growlnotify. Zainstaluj, coś w stylu/usr/local/bin
. Następnie możesz użyć tego poleceniaaby wyświetlić wyskakujące okienko:
źródło
Począwszy od Mac OS X Lion 10.7, Terminal ma kilka nowych wskaźników statusu, które pomagają w takich problemach:
W zakładkach:
Aktywność: wskaźnik aktywności (wskaźnik postępu wirowania) jest wyświetlany, gdy ostatnio pojawiło się wyjście na terminalu. Umożliwia to sprawdzenie, czy jest on aktualnie zajęty lub czy zakończył długi proces. (Lub, oczywiście, możesz go użyć, aby określić, kiedy zaczął produkować dane wyjściowe po cichym wykonywaniu pracy przez jakiś czas.)
Nieprzeczytane: wielokropek „…” jest wyświetlany, aby wskazać nowy, nieprzeczytany tekst w zakładkach w tle. Po wybraniu karty wskaźnik jest usuwany.
Alert: wyświetlany jest „dzwonek” wskazujący, kiedy BEL został zapisany w zakładkach lub oknach w tle. Ponadto Terminal wyświetla czerwoną plakietkę na ikonie aplikacji, wskazując liczbę „nieprzeczytanych” alarmów / dzwonków we wszystkich terminalach. Jeśli sam terminal znajduje się w tle, odbija się również ikona Docku podczas odtwarzania dzwonka.
W zminimalizowanym oknie Ikony Docku:
Aktywność: aktywność jest wskazywana przez wyświetlenie nazwy procesu pierwszego planu.
Nieprzeczytane: nieprzeczytany tekst jest oznaczony wielokropkiem.
Zminimalizowane okna terminali wyświetlają zawartość na żywo w ikonach Docku. Można to wykorzystać do sprawdzenia, czy istnieje aktywność, a nawet do określenia, co robi terminal, jeśli poszukiwane dane wyjściowe są możliwe do zidentyfikowania (np. „Górny” wyświetlacz jest dość łatwy do rozpoznania nawet przy małych rozmiarach). Jest to szczególnie przydatne, gdy włączone jest powiększenie Docka lub masz miejsce na duży Dock.
Ponadto możesz wyświetlić coś w terminalu, aby zwrócić twoją uwagę (co byłoby widoczne nawet w zminimalizowanych oknach). Na przykład:
Wyświetl dużą gwiazdkę:
banner \*
Odwróć wyświetlacz:
printf '\e[?5h'
Pomaluj wyświetlacz na czerwono:
tput setab 1; tput clear
Usiądź w pętli, flashując ekran:
while true; do printf '\e[?5h'; sleep 1; printf '\e[?5l'; sleep 1; done
Istnieją również kody ucieczki do manipulowania oknami (przesuwanie, ustawianie rozmiaru, powiększanie, minimalizowanie itp.). Możesz powiększyć okno Terminala, na przykład:
Aby uzyskać szczegółowe informacje, patrz „manipulacja oknem” na stronie http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .
Innym podejściem jest użycie AppleScript do wyświetlenia ostrzeżenia w osobnym oknie:
źródło
Wiem, że spóźniłem się na to pytanie, ale myślę, że brakuje trochę fragmentu, który może być pomocny. Przekonałem się, że chociaż jest fajnie, rozmowa z terminalem z tobą nie jest w pełni funkcjonalna. Lepsze jest coś bardziej subtelnego:
Jak zauważył Chris, Lion dodał małe odznaki powiadomień, gdy rzucany jest BEL. Możesz sam to rzucić za pomocą polecenia:
Jeśli więc pracujesz w tle i chcesz otrzymać powiadomienie po zakończeniu, możesz spróbować czegoś takiego:
Spowoduje to uruchomienie polecenia ping jako zadania w tle (zawieszenie i wykonanie tego) i powiadomienie o zakończeniu po zakończeniu. Historycznie BEL był używany do tego [okropnego] sygnału sprzętowego, jednak Lion gustownie zastąpił go dźwiękowym efektem „nieprawidłowego polecenia”, plakietki powiadomienia i ikony terminala odbijającej się dwukrotnie w stacji dokującej.
źródło
printf '\a'
byłoby równoważne ztput bel
. Zauważ, że Terminal nie odbija ikony Docku, jeśli karta, która spowodowała alarm, jest obecnie aktywna.Przedstawiam w tej odpowiedzi dwie rzeczy:
afplay
, który odtwarza pliki dźwiękowe , do powiadomienia.Mam ten skrypt
~/bin/donebeep
:Odtwarza to inny dźwięk w zależności od tego, czy argumentem jest 0. Następnie mam alias:
(To, że mają taką samą nazwę, jest nieistotne i prawdopodobnie zły pomysł).
Aby użyć go w np
svn update . && ant clean build start; donebeep
. Zauważ, że używam;
raczej niż&&
, aby mógł powiadomić mnie zarówno o niepowodzeniu, jak io sukcesie.Zanim się dowiedziałem
afplay
,say
zamiast tego wypowiadałem wiadomości. Rolędonebeep
grał ten skrypt:Ten skrypt odczytuje kod wyjścia bezpośrednio, zamiast mieć dwie różne wiadomości. Wspomina również nazwę bieżącego katalogu (aby pomóc wyjaśnić, które zadanie jest wykonane), i można podać dodatkowy tekst do powiedzenia, przekazując parametry do aliasu (dlatego alias ma
"$@"
w nim). Zwróć uwagę na końcowe&
, aby nie trzeba było czekać na zakończenie mowy przed wyświetleniem monitu.Strona podręcznika dla
afplay
jest niekompletna;afplay -h
wyświetla wszystkie opcje:źródło
Możesz również użyć komendy build in say do powiadomienia, np .: powiedzieć „ant: build: done”. Zobacz: mężczyzna mówi w terminalu.
źródło
Tworzę proste narzędzie, które właśnie to robi. https://github.com/vikfroberg/brb
Instalacja
Node.js musi być zainstalowany: http://nodejs.org
Instrukcje
źródło
Napisałem
ntfy
właśnie w tym celu. Jest wieloplatformowy i może automatycznie wysyłać powiadomienia po zakończeniu długotrwałych poleceń.Jeśli masz Pythona
pip
(większość dystrybucji Linuksa i MacOS to ma), oto jak go zainstalować i włączyć automatyczne powiadomienia:Sprawdź to na http://ntfy.rtfd.io
Oprócz tego może również:
źródło
iTerm2 ma wbudowany mechanizm do otrzymywania powiadomień, ale musisz zainstalować Shell Integration .
Po uruchomieniu długotrwałego polecenia wybierz:
Edycja> Znaki i adnotacje> Alerty> Alarm przy następnym znaku (
⌥Option
+⌘Command
+A
)Po powrocie wiersza polecenia możesz wybrać:
źródło
Ubuntu dostarcza następujący alias w ~ / .bashrc:
Dzięki temu możesz następnie wykonywać następujące czynności:
Być może istnieje odpowiednik
notify-send
Mac OSX? Widziałem podobne okienko wyskakujące w systemie Mac i Ubuntu.źródło
notify-send
systemu Mac OS X.Mój problem z dźwiękami i oknami modalnymi polega na tym, że nie mogę powiedzieć, skąd one pochodzą. Obecnie pracuję z dużą ilością przestrzeni, a czasem nawet z ponad 20 oknami terminali.
Moje rozwiązanie jest przenośne po stronie unixa i powinno współpracować ze wszystkim, co obsługuje sekwencje specjalne ansi. To rozwiązanie działa z systemem Snow Leopard i prawdopodobnie będzie działać z bardziej starymi wersjami terminalu.
Pojedyncza linia w .bash_profile
Podział tego:
Jeśli nie podoba ci się czerwony, kod tła kodów ucieczki google ascii. Zauważ, że nie zmienia to całego ekranu na czerwony, ale po prostu wszystko, co jest wyświetlane po zakończeniu polecenia.
źródło
Zrobiłem skrypt, aby rozwiązać ten problem, który jest tutaj . Nie potrzebujesz do tego żadnego dodatkowego oprogramowania. Instalacja:
brew install akashaggarwal7/tools/tsay
Zastosowanie:
sleep 5; tsay
Zapraszamy do współpracy!
źródło
Oto moja funkcja bash (po prostu umieść ją w dowolnym miejscu w swoim
~/.bashrc
lub~/.zshrc
:Aby go użyć:
watch echo 'hi there'
Możesz również dostosować dźwięk powiadomienia zgodnie z dokumentacją tutaj: https://apple.stackexchange.com/a/115373/9622
źródło
Robię takie rzeczy przez cały czas. Moja linia poleceń może wyglądać
Jeśli polecenia
bin/setup
ibundle install
zakończą się pomyślnie, usłyszę głos systemu / dyktowania: „Wszystko gotowe”. Jeśli którykolwiek z dwóch pierwszych błędów&&
wystąpi, łańcuch nie będzie przestrzegany, a wszystko, co usłyszę, to „Gotowe”.źródło
Możesz użyć wbudowanego
osascript
polecenia, aby uruchomić skrypt Apple, który wyświetla powiadomienie, npMożesz go połączyć razem prostym średnikiem, np
źródło