Come scrivo uno script che apre una finestra di iTerm2 ed esegue un comando?

4

Che cosa sto facendo

Sto usando iTerm2 Build 3.0.15 e sto scrivendo uno script che apre una nuova finestra e stampa "Hello World" sullo schermo. In realtà, sono interessato a eseguire qualsiasi comando, ma utilizzando echo "hello world" come punto di partenza.

Quello che ho provato

Ho letto su iTerm2 documentazione per lo scripting. Volevo saperne di più, quindi ho trascinato l'icona iTerm2 sull'icona Script Editor per visualizzare il dizionario a mia disposizione e ho trovato il seguente comando:

Dallaletturadeldizionarioedelladocumentazionehoscrittoilseguentescript:

tellapplication"iTerm"
  create window with default profile command "echo hello world"
end tell

Quando eseguo il mio script dal terminale, si apre una nuova finestra e sullo schermo appare "Hello World"; tuttavia, ho ricevuto il seguente errore di pipe interrotto:

Quando seleziono Ok la finestra è chiusa e mi rimane il seguente messaggio:

$ osascript iterm.applescript
window id 6415

Le domande

  • Che cosa significano questi errori di id 6415 di pipe e window spezzati?
  • Come scrivo uno script che apre una finestra di iTerm2 ed esegue un comando?
posta mbigras 15.06.2017 - 19:12
fonte

2 risposte

3

Prova questo:

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

Il comando write , quando non si usa without newline , esegue il comando write text a causa dell'aggiunta predefinita newline dopo il "testo da inviare". Quindi la finestra rimane aperta dopo che il comando è completo, pronto per l'uso aggiuntivo.

Dal dizionario AppleScript di iTerm:

writev : Send text as though it was typed.

      write specifier : The session to send to
            [contents of file file] : Filename to send the contents of
            [text text] : Text to send
            [newline boolean] : If newline should be added to end of text (default: yes)

    
risposta data 11.01.2018 - 18:45
fonte
0

Sostituisci command "echo hello world" con

command "bash -c \"echo hello world && read\""

L'uso di read fa in modo che bash attenda che l'utente finisca la linea (cioè premendo invio) prima di uscire. Premendo Invio entro 3 secondi verrà comunque visualizzato l'avviso, poiché questa è una funzione iTerm che è possibile disabilitare selezionando la casella sull'avviso e controllando più precisamente in Preferenze → Avanzate → Avvisa sulle sessioni di breve durata.

    
risposta data 15.06.2017 - 23:00
fonte

Leggi altre domande sui tag