¿Cómo escribo un script que abre una ventana de iTerm2 y ejecuta un comando?

4

Lo que estoy haciendo

Estoy usando iTerm2 Build 3.0.15 y escribo un script que abre una nueva ventana e imprime "hola mundo" en la pantalla. Realmente, estoy interesado en ejecutar cualquier comando pero usar echo "hello world" como punto de partida.

Lo que he probado

Leí la iTerm2 documentación para las secuencias de comandos. Quería aprender más, así que arrastré el ícono iTerm2 en el ícono Script Editor para ver el diccionario disponible y encontré el siguiente comando:

Despuésdeleereldiccionarioyladocumentación,escribíelsiguientescript:

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

Cuando ejecuté mi script desde el terminal, se abrió una nueva ventana y "hola mundo" estaba en la pantalla; Sin embargo, tengo el siguiente error de tubería rota:

Cuando selecciono Ok , la ventana se cerró y me queda el siguiente mensaje:

$ osascript iterm.applescript
window id 6415

Las preguntas

  • ¿Qué significan estos errores de id 6415 de tubería y ventana rotos?
  • ¿Cómo escribo un script que abre una ventana de iTerm2 y ejecuta un comando?
pregunta mbigras 15.06.2017 - 19:12

2 respuestas

3

Prueba esto:

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 comando write , cuando no está usando without newline , ejecuta el comando write text debido a que se agregó nueva línea después de el "texto a enviar". Por lo tanto, la ventana permanece abierta después de que se complete el comando , listo para un uso adicional.

Desde el Diccionario AppleScript de iTerm:

  

escribir v : envíe el texto como si estuviera escrito.

     

escriba especificador: la sesión que se enviará a
  [ contenido del archivo archivo]: Nombre de archivo para enviar el contenido de
  [ texto texto]: texto para enviar
  [ nueva línea booleano]: si se debe agregar una nueva línea al final del texto (predeterminado: sí)

    
respondido por el steamer25 11.01.2018 - 18:45
0

Reemplaza command "echo hello world" con

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

El uso de read hace que bash espere a que el usuario finalice la línea (es decir, presionando enter) antes de salir. Si presiona Intro dentro de los 3 segundos, seguirá apareciendo la advertencia, ya que esta es una función de iTerm que puede deshabilitar al marcar la casilla en la alerta y controlar de manera más precisa en Preferencias → Avanzado → Avisar sobre sesiones de corta duración.

    
respondido por el grg 15.06.2017 - 23:00

Lea otras preguntas en las etiquetas