24 votes

Comment écrire un script qui ouvre une fenêtre iTerm2 et exécute une commande ?

Ce que je fais

J'utilise iTerm2 Build 3.0.15 et j'écris un script qui ouvre une nouvelle fenêtre et imprime "hello world" à l'écran. Vraiment, je suis intéressé par le fait de pouvoir exécuter n'importe quelle commande mais en utilisant echo "hello world" comme point de départ.

Ce que j'ai essayé

Je me suis renseigné sur l'iTerm2 documentation pour le scripting. J'ai voulu en savoir plus, alors j'ai fait glisser les iTerm2 sur l'icône Script Editor pour afficher le dictionnaire à ma disposition et j'ai trouvé la commande suivante :

enter image description here

En lisant le dictionnaire et la documentation, j'ai écrit le script suivant :

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

Lorsque j'exécute mon script à partir du terminal, une nouvelle fenêtre s'ouvre et "hello world" s'affiche à l'écran ; cependant, j'obtiens l'erreur suivante "broken pipe" : enter image description here

Lorsque je sélectionne Ok la fenêtre s'est fermée et je me retrouve avec le message suivant :

$ osascript iterm.applescript
window id 6415

Les questions

  • Que signifient ces erreurs de tuyaux cassés et de fenêtres id 6415 ?
  • Comment écrire un script qui ouvre une fenêtre iTerm2 et exécute une commande ?

30voto

Matt Mower Points 1154

Essayez ça :

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

El write commande en cas de non-utilisation without newline , exécute le write text commande à cause de l'ajout par défaut nouvelle ligne après le "texte à envoyer". Ainsi, la fenêtre reste ouverte après le commande complète, prête pour une utilisation supplémentaire.


Extrait du dictionnaire AppleScript d'iTerm :

écrire v : Envoyez le texte comme s'il avait été tapé.

       écrire specifier : La session à envoyer
            [ contenu du fichier file] : Nom de fichier pour envoyer le contenu de
            [ texte texte] : Texte à envoyer
            [ nouvelle ligne booléen] : Si la nouvelle ligne doit être ajoutée à la fin du texte (par défaut : oui)

0voto

grg Points 181593

Remplacer command "echo hello world" avec

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

L'utilisation de read fait en sorte que bash attende que l'utilisateur termine la ligne (c'est-à-dire en appuyant sur entrée) avant de sortir. Le fait d'appuyer sur la touche Entrée dans les 3 secondes produira quand même l'avertissement, car il s'agit d'une fonctionnalité d'iTerm que vous pouvez désactiver en cochant la case de l'alerte, et contrôler plus précisément dans Préférences avancées Avertir des sessions de courte durée.

-2voto

swsmile Points 1
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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X