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

2

Se me ocurrió 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 al editar archivos con nano . Podría cd a una ubicación 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 voltear entre ellas, usando el mouse para copiar y pegar los nombres de archivo largos y no memorables.

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

    
pregunta Metaphile 29.08.2014 - 02:46

1 respuesta

4

iTerm 2 es un poderoso reemplazo para Terminal.app y tiene soporte para AppleScript. Puede usar AppleScript para indicarle que ejecute comandos en una nueva pestaña o ventana.

Por ejemplo, hagamos una pequeña acción de AppleScript que sea llamable. Ingrese 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 guárdelo como una secuencia de comandos 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 obtengo 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 que no está tan mal. Hay algunas mejoras que puede hacer en el AppleScript, como mantener el directorio de trabajo actual cuando llama al comando. Pero eso te pone en el estadio.

Si usa esta sugerencia en esta pregunta , puede darle la vuelta al conjunto en un script envuelto en bash que es incluso 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

Guarde eso en un punto en su PATH y hágalo ejecutable y luego solo necesita ejecutar:

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

para que funcione.

    
respondido por el Ian C. 29.08.2014 - 07:25

Lea otras preguntas en las etiquetas