11 votos

¿Cómo puedo escribir una secuencia de comandos para abrir terminales múltiples pestañas y ejecutar código en ellos?

Quiero ser capaz de abrir la aplicación terminal y hacerlo automáticamente ejecuta una secuencia de comandos que se abre varias pestañas y ejecutar un conjunto arbitrario de comandos en cada uno. Por ejemplo me gustaría una pestaña para abrir, cambiar los directorios, y ejecutar un servidor rails; tiene otro abierto, cambie los directorios, y la cola de un archivo de registro, etc..

Hay una manera de hacerlo con un script de shell o applescript?

He encontrado esta pregunta pero parece que se bloquea si quiero abrir pestañas con comandos que no termine (como ejecutar el servidor rails).

6voto

Jean Delinez Puntos 824

Esto es un poco chapucero, pero usted puede lograr esto en AppleScript. Si no hay un número predeterminado de fichas que desee y ajuste preestablecido de comandos que desea ejecutar, esto no es difícil.

tell application "Terminal"
    -- Activate it.
    activate

    -- Get a window that's not busy.
    -- If there are no open windows, open one.
    if count of windows is greater than 0 then
        repeat with currentWindow in windows
            if currentWindow is not busy then
                set targetWindow to currentWindow
            end if
        end repeat
    else
        do script ""
        set targetWindow to window 1
    end if

    -- Do command 1.
    set firstCommand to "cd ~/Desktop; clear"
    do script firstCommand in targetWindow

    -- Open a new tab.
    tell application "System Events" to tell process "Terminal" to keystroke "t" using command down

    -- Do command 2.
    set secondCommand to "cd /Applications; clear"
    do script secondCommand in targetWindow

    -- And so on...
end tell

Por supuesto, reemplace firstCommand con el comando que queremos que funcione, y así sucesivamente. Por la razón que sea, el Terminal no tiene realmente una manera accesible para crear nuevas pestañas a través de AppleScript, por lo que la larga, hacky línea en el medio sólo le dice a la Terminal de tipo T para abrir una nueva pestaña y, a continuación, los nuevos comandos se ejecutan en él.

Puede ejecutar AppleScript como es, o utilizar en Automator para crear un nuevo servicio, el cual se puede ejecutar desde cualquier lugar usando un atajo de teclado si lo deseas.

1voto

Christopher Scott Puntos 665

Ya que es tan trivial para abrir una nueva pestaña, me gustaría sugerir hacer la ejecución de sus órdenes tan trivial como sea posible, y hacerlo a la vieja usanza.

Usted llama a cabo dos acciones específicas, así que vamos a trabajar con esas personas. Tenga en cuenta que voy a estar haciendo un montón de suposiciones basándose en lo que sé de los Rieles, pero no necesariamente específicos de su proyecto.

Para cortar una larga historia corta, alias de un comando para hacer lo que te quiero demasiado, o crear un simple script de shell para hacer lo que quieres.

Crear un shell script llamado myapp.start, con el siguiente contenido:

#!/bin/bash

cd Development/rails/myapp
# Do any common environment initializations here, such as RAILS_ENV=development
script/server

Es probable que usted también tiene que hacer un archivo denominado .bash_profile en su directorio de inicio, o modificar uno ya existente, y añadir una línea como;

export PATH="$HOME/bin:${PATH}"

A continuación, cree un directorio bin en la carpeta de inicio y mover el myapp.inicio de secuencia de comandos en ella. Asegúrese también de que el propietario bit de ejecución en un mínimo (chmod 700 myapp.start).

A continuación, abra el Terminal.la aplicación, escriba myapp.start, y usted tiene los rieles en ejecución. Alternativamente, tipo myuna , a continuación, presione Tab, y dejar de autocompletar llenar el resto, pulse retorno. Boom, el servidor que ejecuta.

Por extensión, puede que ya sepa cómo hacer un archivo de registro de la cola, pero voy a continuar de todos modos. Crear otro archivo en ~/bin llamado myapp.taillog, con el siguiente contenido:

#!/bin/bash

tail -F ~/Development/rails/myapp/logs/development.log

De nuevo, colóquelo en la carpeta bin, chmod 700 ~/bin/myapp.taillog, luego después de iniciar, a continuación, servidor rails, golpeó rápidamente t, tipo myapp.taillog, y usted tiene un archivo de registro que se está imprimiendo.

Dos órdenes, dos adicionales keystokes (apertura de las fichas), tal vez eso es suficiente?

Hay dos muy evidentes mejoras aquí. Uno es escribir una función de shell capaz de "descubrir" los nombres de los carriles de aplicaciones, así que usted no tiene que escribir una secuencia de comandos de shell para cada uno, la escritura de un sub-comando diseñado para iniciar webbrick/su servidor rails de elección, y los comandos de tail-F ing algunos de los archivos de registro de forma rutinaria.

La segunda mejora es que es probable que usted podría escribir un AppleScript que hace el necesario terminal de la interacción, y la adecuada ejecución de comandos en el interior de cada uno. Pero, francamente, me chupo en AppleScript y trabajo en código bash y perl código de todo el día, así que estoy ofreciendo asesoramiento pertinente a mi conjunto de habilidades :).

1voto

Oskar Puntos 1242

A pesar de que podría estar vinculada a la terminal de Apple basado en el texto de su pregunta, iTerm es superior a la de por defecto del emulador de terminal para secuencias de comandos y la gestión de múltiples ventanas.

El concepto de marcadores permite una fácil gestión de un conjunto de ventanas. Secuencias de comandos de iTerm usando AppleScript/Automater es más simple, más potente y mejor documentado en el sitio web del desarrollador. (frente a la terminal)

Échele un vistazo si usted encuentra que las secuencias de comandos de terminal normal a no satisfacer sus necesidades. Yo también recomiendo que busque en la personalización de su shell de unix para crear alias para los comandos usados con frecuencia. Los vas a usar en scripts tareas iniciales para el nuevo windows, pero también cada vez que usted está en una shell y la necesidad de cambiar las tareas en lugar de tener que abrir una nueva ventana.

1voto

David Metcalfe Puntos 1093

Los Scripts son lindo y todo, pero también se puede simplemente utilizar Automator para grabar un 'Reloj Me Do", donde se abre el Terminal, y tirar un par de Comando+N en de tu preferencia # de windows. Et voila.

1voto

roo Puntos 3294

Hay una gran respuesta a semejante pregunta en StackOverflow, pero probablemente pertenece aquí ahora, así que voy a copiar/pasta de aquí.


Esto es absolutamente posible, pero tomará algo de trabajo de su parte. La primera cosa que usted necesita es configurar cada ventana/pestaña que desee en la Configuración.

Tengo 4 pestañas que me abra automáticamente cada vez que abra el Terminal. DB Shell, Editor, Servery Shell. Estos son todos dentro de la Sasquatch (no preguntar) proyecto, por lo que la nomenclatura. Cada uno de estos, entonces debe tener un único comando asociado con ellos.

En este caso, estoy ejecutando vim. Si le sucede que tiene un directorio específico que te gustaría para empezar, usted puede usar algo como vim ~/projects/main/. Realmente lo que usted quiere que vaya allí está el comando de la shell ejecutará cuando se abre. Ahora hay que abrir todas las ventanas/pestañas:

  1. Cerca de todo.
  2. Abrir una nueva ventana para cada uno de sus perfiles.
    • Ir a la Shell menú => New Tab/New Window => Seleccione el perfil que ha creado anteriormente.
    • Repita el procedimiento para cada ventana o pestaña que desee.
  3. Una vez que usted tiene todas las ventanas y/o fichas de abrir, guardar como una Ventana de Grupo.
    • Ir a la Window menú => Save Window As Group....
    • Dar a la Ventana de su Grupo un nombre (esto es útil más adelante).
    • Si desea que este grupo para abrir cada vez que se abra el Terminal, marque la casilla en la parte inferior de esta pantalla, y luego presione guardar.
  4. Cierre de todas las Windows/Pestañas (tiempo de probarlo!).
  5. Abra la nueva Ventana de Grupo.
    • Ir a la Window menú => Open Window Group => Seleccione el grupo al que usted acaba de hacer.

Este pop-up de todas las ventanas a las que acaban de tener, en la misma posición. Cada uno de los comandos de configurar en Settings debe ser puesto en marcha en sus respectivas pestañas.

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