Estoy usando iTerm2 Build 3.0.15 y escribiendo un script que abre una nueva ventana e imprime "hola mundo" en la pantalla. La verdad es que me interesa que sea para ejecutar cualquier comando pero utilizando echo "hello world"
como punto de partida.
Leí la documentación de iTerm2 para secuencias de comandos. Quería aprender más, así que arrastré el iTerm2
ícono sobre el Script Editor
ícono para ver el diccionario disponible para mí y encontré el siguiente comando:
Al leer el diccionario y la documentación, escribí el siguiente script:
tell application "iTerm"
create window with default profile command "echo hello world"
end tell
Cuando ejecuté mi script desde la terminal, se abrió una nueva ventana y "hola mundo" estaba en la pantalla; sin embargo, obtuve el siguiente error de tubería rota:
Cuando selecciono Ok
la ventana cerrada y me quedo con el siguiente mensaje:
$ osascript iterm.applescript
window id 6415
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 write
comando , cuando no se usa without newline
, ejecuta el write text
comando debido a la nueva línea agregada por defecto después del "texto para enviar". Por lo tanto, la ventana permanece abierta después de que se completa el comando , lista para uso adicional.
Del diccionario iTerm AppleScript:
escribir v : Enviar texto como si estuviera escrito.
especificador de escritura : la sesión para enviar a
[ contenido del archivo archivo] : nombre de archivo para enviar el contenido de
[ texto texto]: texto para enviar
[ nueva línea booleana]: si se debe agregar una nueva línea al final del texto (predeterminado: sí)
osascript -e
, pero recientemente comenzó a darme un error -2741
: error de sintaxis, "," esperado, pero se encontró el nombre de clase. (Mensaje de error traducido del alemán, la redacción en inglés puede ser ligeramente diferente).Reemplazar 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 Intro) antes de salir. Presionar Intro dentro de los 3 segundos aún generará la advertencia, ya que esta es una característica de iTerm que puede deshabilitar marcando la casilla en la alerta y controlarla con mayor precisión en Preferencias → Avanzado → Advertir sobre sesiones de corta duración.
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