Ich führe eine Reihe von Befehlen in der Befehlszeile aus, die ungefähr zwanzig Minuten dauern. Ich möchte eine Art Benachrichtigung auf meinem Mac sehen, wenn diese beendet sind, damit ich das Terminal nicht überwachen muss, wenn es beendet ist. Gibt es eine Möglichkeit, dies zu tun?
$ svn update . && ant clean build start && *notify_me_somehow*
Bearbeiten :
Ich könnte es gebrauchen, xclock
aber das scheint ein Hack zu sein. Idealerweise könnte ich die Benachrichtigung überallhin senden, z. B. auf meinem Handy, Bildschirm usw.
grownlnotify
.Antworten:
(svn update . && ant clean build start && say done) || say error
quelle
&&
um mehrere Befehle zu verketten und sie mit einem Kollektiv||
oder einer Anweisung zum Auslösen eines Fehlers zusammenzufassen. +1 in der Tatalias -g sd='; say done'
. Das heißt, ich muss nur einensd
Befehl hinzufügen und werde benachrichtigt.(echo alik && echo Orly && say done) || say error
say -v Zarvox
dem Echo gemacht , das alle in der Nähe zum Springen bringt, dies ist eine etwas weniger alarmierende Benachrichtigung.In Mac OS 10.8 können Sie sich selbst Notification Center-Nachrichten senden (ähnlich wie Growl, jedoch in Mac OS integriert).
Lesen Sie " Eine Benachrichtigung über die Befehlszeile in OS X an das Notification Center senden ", um zu erfahren, wie Sie einen Ruby-Gem installieren, mit dem Sie Benachrichtigungen über die Befehlszeile senden können. Fügen Sie Ihrem .bash_profile einen Alias hinzu, um den allgemeinen Anwendungsfall zu vereinfachen, bei dem nur darauf geachtet wird, dass etwas im Terminal ausgeführt wird:
Dann können Sie einfach tun:
Sobald die lang laufende Aufgabe abgeschlossen ist, wird ein nettes modales Popup angezeigt, das so lange angezeigt wird, bis Sie darauf klicken:
quelle
brew install terminal-notifier
. Dann kannst du einfach schreibenmyCommand && terminal-notifier -message 'finished'
. Getestet unter OS X Yosemite (10.10.1).myCommand; terminal-notifier -message 'finished'
sonst wird die Benachrichtigung nicht angezeigt, wenn diesmyCommand
fehlschlägt.say
Befehl hinzufügen , z. B.my command ; terminal-notifier -message 'finished' ; say finished
Verwende Growl .
.dmg
Suchen Sie in der Datei nach den Extras. Es gibt eine Growlnotify-Binärdatei. Installieren Sie es, so etwas wie in/usr/local/bin
. Dann können Sie diesen Befehl verwendenSo zeigen Sie ein Popup an:
quelle
Ab Mac OS X Lion 10.7 verfügt das Terminal über einige neue Statusanzeigen, um bei Problemen wie diesen zu helfen:
In Registerkarten:
Aktivität: Eine Aktivitätsanzeige (Fortschrittsanzeige) wird angezeigt, wenn kürzlich eine Ausgabe auf dem Terminal erfolgt ist. Auf diese Weise können Sie feststellen, ob der Computer gerade beschäftigt ist oder einen langen Prozess abgeschlossen hat. (Oder Sie können damit natürlich auch feststellen, wann nach einer Weile stiller Arbeit mit der Ausgabe begonnen wurde.)
Ungelesen: Ein Auslassungszeichen "…" weist auf neuen, ungelesenen Text in den Hintergrundregistern hin. Wenn Sie die Registerkarte auswählen, wird die Anzeige gelöscht.
Warnung: Eine "Glocke" wird angezeigt, um anzuzeigen, wann eine BEL in Hintergrundregisterkarten oder Hintergrundfenster geschrieben wurde. Darüber hinaus zeigt das Terminal ein rotes Symbol auf dem Anwendungssymbol an, das die Anzahl der "ungelesenen" Warnungen / Glocken in allen Terminals angibt. Befindet sich das Terminal selbst im Hintergrund, wird beim Spielen einer Klingel auch das Dock-Symbol angezeigt.
Im minimierten Fenster Dock-Symbole:
Aktivität: Die Aktivität wird angezeigt, indem der Name des Vordergrundprozesses angezeigt wird.
Ungelesen: Ungelesener Text wird durch Auslassungspunkte gekennzeichnet.
Minimierte Terminalfenster zeigen Live-Inhalte in ihren Dock-Symbolen. Dies kann verwendet werden, um festzustellen, ob Aktivität vorliegt, oder um sogar zu bestimmen, was das Terminal tut, wenn die gesuchte Ausgabe identifizierbar ist (z. B. ist eine "obere" Anzeige selbst bei kleinen Größen ziemlich einfach zu erkennen). Dies ist besonders nützlich, wenn die Dock-Vergrößerung aktiviert ist oder Sie Platz für ein großes Dock haben.
Außerdem könnten Sie im Terminal etwas anzeigen, um Ihre Aufmerksamkeit auf sich zu ziehen (was auch in minimierten Fenstern sichtbar wäre). Zum Beispiel:
Zeigen Sie ein großes Sternchen an:
banner \*
Invertieren Sie die Anzeige:
printf '\e[?5h'
Malen Sie das Display rot:
tput setab 1; tput clear
Setzen Sie sich in eine Schleife und blinken Sie den Bildschirm:
while true; do printf '\e[?5h'; sleep 1; printf '\e[?5l'; sleep 1; done
Es gibt auch Escape-Codes zum Bearbeiten von Fenstern (Verschieben, Einstellen der Größe, Zoomen, Minimieren usw.). Sie können das Terminalfenster vergrößern, zum Beispiel:
Weitere Informationen finden Sie unter "Fensterbearbeitung" unter http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .
Ein anderer Ansatz ist die Verwendung von AppleScript, um eine Warnung in einem separaten Fenster anzuzeigen:
quelle
Ich weiß, dass ich zu spät bei der Frage bin, aber ich denke, dass ein kleines Stück fehlt, das hilfreich sein könnte. Ich habe festgestellt, dass es nicht gerade praktisch ist, Ihr Terminal mit Ihnen zu sprechen, obwohl es ordentlich ist. Was besser ist, ist etwas subtileres wie dieses:
Wie Chris betonte, hat Lion kleine Benachrichtigungsabzeichen hinzugefügt, wenn ein BEL geworfen wird. Sie können es selbst mit dem Befehl werfen:
Wenn Sie also im Hintergrund arbeiten und eine Benachrichtigung erhalten möchten, können Sie Folgendes versuchen:
Dadurch wird der Ping-Befehl als Hintergrundaufgabe ausgeführt (das Aufhängen und Ausführen dieses Befehls), und es wird eine einfache Warnung ausgegeben, wenn der Vorgang abgeschlossen ist. In der Vergangenheit wurde BEL verwendet, um diesen [schrecklichen] Hardware-Piepton zu erzeugen. Lion hat diesen jedoch geschmackvoll durch den Soundeffekt "Ungültiger Befehl", ein Benachrichtigungsabzeichen und das Terminal-Symbol ersetzt, das zweimal im Dock abprallt.
quelle
printf '\a'
wäre gleichbedeutend mittput bel
. Beachten Sie, dass das Terminal das Dock-Symbol nicht anzeigt, wenn die Registerkarte, die die Warnung ausgelöst hat, gerade aktiv ist.Sie können auch den Befehl build in say zur Benachrichtigung verwenden, z. B .: say "ant: build: done". Siehe: Mann sagt im Terminal.
quelle
Ich präsentiere in dieser Antwort zwei Dinge:
afplay
, Audiodateien zur Benachrichtigung abzuspielen .Ich habe dieses Skript
~/bin/donebeep
:Dies spielt einen anderen Sound ab, abhängig davon, ob das Argument 0 ist. Dann habe ich einen Alias:
(Dass sie den gleichen Namen haben, ist irrelevant und wahrscheinlich eine schlechte Idee.)
Um es zu verwenden in Ihrem Beispiel
svn update . && ant clean build start; donebeep
. Beachten Sie, dass ich;
eher als verwende&&
, damit es mich sowohl über Fehler als auch über Erfolg benachrichtigen kann.Bevor ich davon erfuhr
afplay
,say
sprach ich stattdessen Nachrichten. Die Rolle vondonebeep
wurde von diesem Skript gespielt:Dieses Skript spricht den Exit-Code direkt, anstatt zwei verschiedene Nachrichten zu haben. Außerdem wird der Name des aktuellen Verzeichnisses angegeben (um zu verdeutlichen, welche Aufgabe erledigt ist) und es kann zusätzlicher Text angegeben werden, indem Parameter an den Alias übergeben werden (aus diesem Grund enthält der Alias
"$@"
). Beachten Sie das Ende,&
damit Sie nicht warten müssen, bis die Rede beendet ist, bevor Sie eine Eingabeaufforderung erhalten.Die Manpage für
afplay
ist unvollständig;afplay -h
listet alle Optionen auf:quelle
Ich erstelle ein einfaches Tool, das genau das tut. https://github.com/vikfroberg/brb
Installation
Node.js muss installiert sein: http://nodejs.org
Anleitung
quelle
Ich habe
ntfy
genau zu diesem Zweck geschrieben. Es ist plattformübergreifend und kann automatisch Benachrichtigungen senden, wenn lange laufende Befehle beendet sind.Wenn Sie Pythons haben
pip
(die meisten Linux-Distributionen und MacOS haben es), installieren Sie es wie folgt und aktivieren Sie automatische Benachrichtigungen:Überprüfen Sie es auf http://ntfy.rtfd.io
Darüber hinaus kann es auch:
quelle
iTerm2 hat einen eingebauten Mechanismus, um Benachrichtigungen zu erhalten, aber Sie müssen die Shell-Integration installieren .
Wenn Sie einen Befehl mit langer Laufzeit starten, wählen Sie:
Bearbeiten> Marken und Anmerkungen> Warnungen> Bei nächster Marke warnen (
⌥Option
+⌘Command
+A
)Wenn die Eingabeaufforderung zurückkehrt, können Sie wählen zwischen:
quelle
Ubuntu liefert den folgenden Alias in ~ / .bashrc aus:
Mit diesem können Sie dann Folgendes tun:
Vielleicht gibt es ein Äquivalent zu
notify-send
in Mac OSX? Ich habe in Mac und Ubuntu ähnliche Popup-Fenster gesehen.quelle
notify-send
auf Mac OS XMein Problem mit Sounds und modalen Fenstern ist, dass ich nicht sagen kann, woher sie kommen. Derzeit arbeite ich mit einer Reihe von Leerzeichen und manchmal mehr als 20 Terminalfenstern.
Meine Lösung ist auf Unix-Seite portierbar und sollte mit allen funktionieren, die ansi-Escape-Sequenzen unterstützen. Diese Lösung funktioniert mit Snow Leopard und möglicherweise auch mit älteren Terminalversionen.
Einzelne Zeile in .bash_profile
Aufschlüsselung:
Wenn Sie Rot nicht mögen, Google ASCII-Escape-Codes Hintergrundfarbe. Beachten Sie, dass dies nicht den gesamten Bildschirm rot ändert, sondern nur die Ausgabe nach Beendigung des Befehls.
quelle
Ich habe ein Skript , dieses Problem zu lösen , das ist hier . Sie benötigen dafür keine zusätzliche Software. Installation:
brew install akashaggarwal7/tools/tsay
Verwendung:
sleep 5; tsay
Fühlen Sie sich frei, einen Beitrag zu leisten!
quelle
Hier ist meine Bash-Funktion (platziere sie einfach irgendwo in deinem
~/.bashrc
oder~/.zshrc
:Um es zu benutzen:
watch echo 'hi there'
Sie können den Benachrichtigungston auch wie hier dokumentiert anpassen: https://apple.stackexchange.com/a/115373/9622
quelle
Ich mache so etwas die ganze Zeit. Meine Kommandozeile könnte so aussehen
Wenn die Befehle
bin/setup
undbundle install
erfolgreich ausgeführt wurden, wird die System- / Diktatstimme "Alles erledigt" anzeigen. Wenn einer der ersten beiden Fehler ausfällt, wird die&&
Kette nicht befolgt, und alles, was ich hören werde, ist "Fertig".quelle
Mit dem eingebauten
osascript
Befehl können Sie ein Apple-Skript ausführen, das eine Benachrichtigung anzeigt, zSie können es mit einem einfachen Semikolon, z
quelle