2 votos

¿Puedo ejecutar un comando de Terminal en una nueva pestaña?

Se me acaba de ocurrir que sería increíblemente útil si pudiera escribir un comando en una pestaña de Terminal, y luego ejecutarlo en una nueva pestaña de fondo o de primer plano. Por ejemplo, esto sería increíble cuando se editan archivos con nano . Podría cd a un lugar y luego rápidamente nano sys_201406271933.log , nano 415ab40ae9b7cc4e66d6769cb2c08106e8293b48.key dos nuevas pestañas de fondo. La alternativa es abrir manualmente dos pestañas y pasar de una a otra, utilizando el ratón para copiar y pegar los largos e inmemoriales nombres de los archivos.

He pasado unos 30 minutos investigando si esto es posible y no he encontrado ninguna respuesta satisfactoria.

4voto

shsteimer Puntos 8749

iTermino 2 es un potente sustituto de Terminal.app y tiene soporte para AppleScript. Puedes usar AppleScript para decirle que ejecute comandos en una nueva pestaña o ventana.

Por ejemplo, hagamos una pequeña acción de AppleScript que se pueda llamar. Introduzca lo siguiente en el Editor de AppleScript:

on run argv
    set AppleScript's text item delimiters to {" "}
    tell application "iTerm"
        make new terminal
        tell the current terminal
            activate current session
            launch session "Default Session"
            tell the last session
                write text argv as string
            end tell
        end tell
    end tell
end run

y luego guardarlo como un script en ~/Documents/Scripts/run-in-new-iterm-tab.scpt . Ahora podemos llamarlo desde la línea de comandos así:

/Users/ian
> osascript ~/Documents/Scripts/run-in-new-iterm-tab.scpt ls ~/Documents/Scripts

/Users/ian
>

y me aparece una nueva pestaña en mi sesión de iTerm con:

Last login: Thu Aug 28 22:17:17 on ttys003
ls /Users/ian/Documents/Scripts

/Users/ian
> ls /Users/ian/Documents/Scripts
edit                         keep_drives_alive.sh         run-in-new-iterm-tab.scpt    touch-in-order.pl
find-missing-itunes-files.pl keep_drives_alive.sh~        start-utorrent.scpt          touch-in-order.pl~

/Users/ian
>

Lo cual no está tan mal. Hay algunas mejoras que puedes hacer al AppleScript como mantener el directorio de trabajo actual cuando llamas al comando. Pero eso es lo que te lleva al terreno de juego.

Si utiliza esta pista en esta pregunta puedes convertir todo en un script envuelto en bash que es aún más fácil de ejecutar:

#!/usr/bin/env osascript

on run argv
    set AppleScript's text item delimiters to {" "}
    tell application "iTerm"
        make new terminal
        tell the current terminal
            activate current session
            launch session "Default Session"
            tell the last session
                write text argv as string
            end tell
        end tell
    end tell
end run

Guárdalo en un lugar de tu PATH y hacerla ejecutable y entonces sólo hay que ejecutarla:

run-in-new-iterm-tab ls ~/Documents/Scripts

para que funcione.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X