Die folgende Antwort [nach dem Trennzeichen] setzt voraus, dass Sie den zweiten Befehl innerhalb von [innerhalb] des Terminals ausführen möchten. Andernfalls müssen Sie nur die Befehle auf Ihrem cronjob tauschen (weil zur Zeit, wie Sie es haben, nur die echo
nachTerminal
Exits ausgeführt wird), wie zum Beispiel:
0 23 * * * echo 'Hello, world!' && open -a Terminal
Nun, vorausgesetzt, Sie wollen
ich nicht bewusst bin, dass Terminal
Anwendung (von /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
) akzeptiert [dh interpretiert] alle Befehlszeilenargumente noch wird es lesen alles: den Befehl innerhalb die neu hervorgebracht Terminal laufen von [einer Standardausgabe umgeleitet zu] Standardeingabe.
Was Sie tun mit open -a Terminal && echo 'Hello, world!'
grundsätzlich den Aufruf der Terminal
Anwendung und [wenn sie erfolgreich] Druck 'Hello, world!'
auf der gleichen Schale, die den vorherigen Befehl genannt (die Terminal
). Dies ist analog zum Ausführen von zwei separaten Befehlen in derselben Shell, aber nur zum Ausführen des letzten, wenn der erste erfolgreich ist.
Wenn Sie einen bestimmten Befehl wollen (sagen wir echo 'Hello, world!'
) jedes Mal bash
(derzeit die Standard-osx-Shell) geladen wird für den aktuellen Benutzer ausgeführt werden (wie in, jedes Mal wenn der Benutzer öffnet ein Terminal
), können Sie hinzufügen, dass Befehl an ~/.bash_profile
. Zum Beispiel:
echo "echo 'Hello, world!'" >> ~/.bash_profile
Nun, wenn öffnen Sie ein Terminal
, der Befehl `echo‚Hallo Welt!‘“ Ausgeführt wird
Da die neueste Version von Mac OS X enthält keine ~/.bash_profile
standardmäßig für. jeder Benutzer, können Sie dieses Angebot nutzen und Ihre crontab ändern:
0 23 * * * echo "echo 'Hello, world!' > ~/.bash_profile" && open -a Terminal
grundsätzlich die Inhalte für jedes Mal, dieser crontab Eintrag ausgeführt von ~/.bash_profile
ersetzt Dies wird und öffnet die Terminal
.
Der Nachteil auf diese Weise ist, dass was auch immer Sie in ~/.bash_profile
setzen, für jede geöffnete Terminal
ausgeführt wird, unabhängig davon, dass der von der Crontab ist, oder jeder andere der Benutzer zu jeder beliebigen Zeit öffnen kann.
Um dies zu lösen, können Sie auch die ~/.bash_profile
Datei aus sie zu entfernen, durch eine Hinter rm -f ~/.bash_profile
Befehl nach dem echo 'Hello, world!'
Abdrucken:
0 23 * * * echo "echo 'Hello, world!'; rm -f ~/.bash_profile" > ~/.bash_profile" && open -a Terminal
Dies führt dazu, dass, wenn Terminal
öffnet und ruft bash
, alle ~/.bash_profile
Befehle werden ausgeführt, einschließlich der nachfolgenden rm -f ~/.bash_profile
, so dass der nächste Aufruf an Terminal
wird nicht erneut Ihren Befehl auslösen, da die ~/.bash_profile
nicht mehr existiert.
Nebenbei bemerkt: Wenn aus irgendeinem Grund haben Sie bereits eine ~/.bash_profile
Datei, statt den gesamten Inhalt sie zu ersetzen und es nach dem Entfernen können Sie ein Backup der ursprünglichen, hängen Sie Ihre Befehle [einschließlich der, die zur Wiederherstellung Originaldatei] und öffnen Sie das Terminal. Aber ich denke, das ist nicht dein Fall (jedenfalls, wenn es ist, kann ich diese Antwort mit den Details erweitern).
Danke für die gründliche Antwort! –