Ich verwende iTerm2 Build 3.0.15 und schreibe ein Skript, das ein neues Fenster öffnet und "Hallo Welt" auf dem Bildschirm druckt. Wirklich, ich bin daran interessiert, jeden Befehl auszuführen, aber echo "hello world"
als Ausgangspunkt zu verwenden.
Ich habe die iTerm2- Dokumentation zum Skripting gelesen . Ich wollte mehr erfahren, also zog ich das iTerm2
Symbol auf das Script Editor
Symbol, um das für mich verfügbare Wörterbuch anzuzeigen, und fand den folgenden Befehl:
Aus dem Lesen des Wörterbuchs und der Dokumentation habe ich das folgende Skript geschrieben:
tell application "iTerm"
create window with default profile command "echo hello world"
end tell
Als ich mein Skript vom Terminal aus ausführte, öffnete sich ein neues Fenster und "Hallo Welt" war auf dem Bildschirm; Ich habe jedoch den folgenden Rohrbruchfehler erhalten:
Wenn ich das Fenster geschlossen wähle Ok
, erhalte ich die folgende Meldung:
$ osascript iterm.applescript
window id 6415
Versuche dies:
tell application "iTerm2"
set newWindow to (create window with default profile)
tell current session of newWindow
write text "echo it works!"
end tell
end tell
Der write
Befehl führt den Befehl , wenn er nicht verwendet wird without newline
, aufgrund des standardmäßig hinzugefügten Zeilenumbruchs nach dem "zu sendenden Text" aus. Somit bleibt das Fenster geöffnet, nachdem der Befehl abgeschlossen ist, bereit für weitere Verwendung.write text
Aus dem iTerm AppleScript-Wörterbuch:
write v : Text so senden, als wäre er getippt.
Write specifier : Die zu sendende Session an
[ Inhalt der Datei file] : Dateiname an den der Inhalt von
[ text text] gesendet werden soll : Zu sendender Text
[ newline boolean] : Wenn eine neue Zeile am Ende des Textes hinzugefügt werden soll (Standard: ja)
osascript -e
, aber seit kurzem gibt es den Fehler -2741
: Syntaxfehler, "," erwartet, aber Klassenname gefunden. (Übersetzte Fehlermeldung aus dem Deutschen, englischer Wortlaut kann leicht abweichen).Ersetzen command "echo hello world"
durch
command "bash -c \"echo hello world && read\""
Die Verwendung von read
lässt bash darauf warten, dass der Benutzer die Zeile beendet (dh durch Drücken der Eingabetaste), bevor es beendet wird. Wenn Sie innerhalb von 3 Sekunden die Eingabetaste drücken, wird immer noch die Warnung angezeigt, da dies eine iTerm-Funktion ist, die Sie deaktivieren können, indem Sie das Kontrollkästchen für die Warnung aktivieren, und genauer unter Einstellungen → Erweitert → Vor kurzlebigen Sitzungen warnen.
on alfred_script(q)
tell application "iTerm2"
set newWindow to (create window with default profile)
tell current session of newWindow
write text q
end tell
end tell
end alfred_script
jeremyjjbrown