(Specyficzne dla OSX)
Ja, podobnie jak wielu innych oprócz siebie, często zaczynam proces w powłoce, który zajmuje minutę lub dwie (na przykład duże svn commit). W tym czasie często Alt-Tab i odświeżam reddit / slashdot / wikipedia / cokolwiek. Byłoby wspaniale mieć coś skonfigurowanego, który będzie wysyłał powiadomienie o warczeniu po zakończeniu procesu powłoki.
W moim idealnym świecie wyglądałoby to tak: „Jeśli proces właśnie zakończył się z zakładki otwartej w Terminalu, opublikuj powiadomienie o warczeniu”.
Czy ktoś jeszcze skonfigurował coś takiego?
growlnotify
ustawienia powiadomień aplikacji,Growl.prefPane
aby zawierały dźwięk powiadomienia dźwiękowego. Nie można go jednak zmienić w zależności od wykonywanego polecenia, tak jaksay
byłoby. Ale to o wiele mniej przerażające.Odpowiedzi:
Aby to zrobić, możesz zainstalować growlnotify .
$ ./some_program && growlnotify Title -m Message
Oczywiście musisz pomyśleć o tym przed wykonaniem polecenia. Alternatywą (choć nie wiem, jak to osiągnąć) byłoby powiadomienie Growl dla każdego pojedynczego polecenia, co byłoby niesamowicie denerwujące.
Aby uprościć korzystanie z growlnotify w twoim przypadku użycia, edytuj
~/bash_profile
i dodaj:teraz możesz po prostu
long your_command
(podobnie jaksudo
).Ctrl-A
ustawia kursor na początku wiersza, jeśli (podobnie jak ja) zawsze najpierw wpisujesz rzeczywiste polecenie, a następnie musisz dodać prefiks.Moje bash-fu jest niestety niewystarczające, aby móc dodać polecenie do
growlnotify
wiadomościwedług komentarza @ mankoff do tej odpowiedzi:
Możesz po prostu pisać, gdy polecenie jest uruchomione, a następnie zostanie wykonane. Utworzyłem dla siebie następującą funkcję:
Użyj jako
gn svn
.źródło
Potrzebny jest
growlnotify
program CLI do wyzwalania powiadomień warczących. Możesz użyć go jako:Ma jeszcze kilka pokręteł, z którymi możesz grać, użyj,
growlnotify -h
aby uzyskać więcej informacjiźródło
&&
i||
mieć różne komunikaty między sukcesem a porażką stanach, ale jeśli ktoś jest zainteresowany tylko w wiadomościach pokazano po wykonaniu polecenia, a następnie;;
jest niezawodny. =)Zmodyfikowanie odpowiedzi Daniela Becka, jeśli zrobisz tę drobną zmianę, czyni ją bardzo przyjemną.
Następnie po uruchomieniu polecenia „long svn up” zobaczysz komunikat „svn up complete”.
Bardzo dobrze, jeśli uruchamiasz jednocześnie wiele czasochłonnych skryptów powłoki.
źródło
Teraz, gdy OSX 10.8 i nowsze wersje mają natywne powiadomienia, w ten sposób osiągam ten sam cel poprzez terminal-notifier :
$ brew install terminal-notifier
Dodaj to do
~/.bash_profile
:Upewnij się, że zaopatrzyłeś się w swój profil
. ~/.bash_profile
(nie jest to konieczne w przyszłych sesjach terminalowych), ponieważ Twój profil jest pozyskiwany automatycznie podczas tworzenia sesji.Przetestuj za pomocą ulubionego polecenia, a następnie wywołania funkcji.
Argumenty skierowane do terminal-notifier mogą znieść pewne usprawnienia, ale szybka próba przechwycenia poprzedniego polecenia w celu przejścia do funkcji nie powiodła się, a to zapewnia mi całą funkcjonalność, której potrzebuję. Mianowicie dodanie,
;gn
aby otrzymać powiadomienie na końcu każdego długotrwałego procesu.źródło
Użyj growlnotify .
źródło
Jest to sposób na automatyczne wywołanie go w przypadku procesów „długo działających”: http://hints.macworld.com/article.php?story=20071009124425468
Wchodzi w proces
$PROMPT_COMMAND
i powiadamia o zakończeniu procesów trwających dłużej niż 10 sekund. Może być konieczne dostosowanie go do własnego środowiska i przepływu pracy (na przykład ignorowanie zakończenialess
lub wywołania edytora), ale wydaje się, że działa całkiem dobrze po wyjęciu z pudełka.źródło
Pogrzebałem jeszcze trochę i znalazłem prostą metodę na to. Jest trochę bardziej manualny, niż bym chciał, ale proszę bardzo.
&& growlnotify -m "Message"
> do długiego procesu.To działa teraz dla mnie, ale mógłbym zrobić lepiej, uważa.
źródło
Rozwiązanie OSX 10.9+ bez oprogramowania innych firm:
W OSX 10.9 i nowszych można użyć polecenia AppleScript,
display notification
aby wyświetlić warczenie z terminala w następujący sposób:Jeśli nie chcesz wpisywać tego wszystkiego za każdym razem, możesz użyć
alias
:Przykład:
źródło