Terminal.app-Äquivalent von `xterm -e 'cmd'`

Mit xterm(und gnome-terminal, terminator, etc) können Sie den folgenden Befehl ausführen:

$ xterm -e 'vim somefile.txt'

xterm öffnet das angegebene Programm (in diesem Fall Vim) und führt es aus. Wenn das Programm beendet wird, schließt sich auch das Terminalfenster. Wenn Sie den obigen Befehl ausführen und Vim beenden würden, würde das Terminal ebenfalls verschwinden.

Gibt es eine Möglichkeit, diese (oder ähnliche) Funktionalität über Terminal.app (unter OSX) zu erhalten? Die Lösung kann wirklich in AppleScript, Bash oder irgendetwas anderem liegen, solange es über Befehle erreichbar ist, die ich in einem Bash-Skript ausführen könnte.

Das bringt mich dazu, das Terminal von der Befehlszeile aus zu starten, was hilft, aber ich muss es trotzdem dazu bringen, ein Programm auszuführen und das Fenster zu schließen, wenn dieses Programm beendet wird.

Antworten (2)

Mit AppleScript können Sie Folgendes tun:

auf lauf argv
    set command to item 1 of argv – Sie können dies so anpassen, dass es konstant ist
    Sagen Sie der Anwendung "Terminal"
        aktivieren Sie
        Skript ausführen (Befehl & "; exit")
    Ende erzählen
Endlauf

Dadurch wird Terminal geöffnet und angewiesen, einen Befehl auszuführen (Ihre Standardeinstellungen müssen das Fenster schließen, wenn die Shell beendet wird). Um dies auszuführen, verwenden Sie einfachosascript filename.scpt "$command_to_run"

Sie könnten den openBefehl ( /usr/bin/open) verwenden.

Sagen Sie zum Beispiel, dass ich die Datei test.txt mit Textmate öffnen und die Shell danach schließen möchte. Ich könnte den folgenden Befehl verwenden:

open -W -a Textmate test.txt && exit
  • Die -WOption bewirkt, dass es wartet, bis Textmate geschlossen wird.
  • Mit der -AOption können Sie die Anwendung angeben

Der zweite Teil der Befehlszeile ( exit) bewirkt nicht, dass die Terminal- Anwendung beendet wird, kann aber das Terminal- Fenster schließen , wenn Sie die Standardeinstellungen ändern. Klicken Sie in den Terminal-Einstellungen auf die Registerkarte Shell und ändern Sie die Einstellung Beim Beenden der Shell auf Fenster schließen

Terminaleinstellungen

Wenn Sie die Terminal-Anwendung wirklich beenden möchten, können Sie sie exitdurch einen Aufruf eines Bash-Skripts ersetzen. Zum Beispiel:

#!/bin/sh

echo | osascript <<EOF
tell application "Terminal"
  quit
end tell
EOF

(Quelle angepasst von Mac OS X Hints )

Dies führt immer noch dazu, dass Terminal ein Popup anzeigt, in dem Sie gefragt werden, ob Sie die Anwendung schließen möchten.

Terminal-Popup