Escribir comando en una terminal, ver resultado en otra


35

Quiero ejecutar un comando foo en una terminal y pasar el resultado a otra terminal. Es posible hacer esto ?


44
Observe también tmux y screen , los cuales le permiten hacerse cargo, duplicar o simplemente ejecutar comandos en otras sesiones.
Kevin

Respuestas:


46

Sí lo es. Una imagen que vale más que mil palabras:

terminal de radu

Entonces, debe redirigir la salida de su comando utilizando el >operador a /dev/pts/#. Puedes encontrar #usando whoo wcomando. Si quiere redirigir y los errores, use:

<command> >& /dev/pts/#

Gracias. pero si la otra terminal no existe. ¿Qué deberíamos hacer? ¿O mejor decir pasarlo a uno más nuevo?
Mohammad Reza Rezwani

55
Probablemente necesitará un script para hacer eso: el script tomará como argumento su comando, luego deberá abrir uno nuevo gnome-terminaly detectar el tty (usando el ttycomando) del nuevo terminal y finalmente enviarle la salida.
Radu Rădeanu

8

Algo así para tu $HOME/.bashrc:

ng() { gnome-terminal -x sh -c "$*; bash"; }

Esto ejecutará un comando y muestra el resultado en una nueva ventana de terminal.

Ejemplos:

ng ls -l
ng echo foo

Editar: para considerar los alias del $HOME/.bashrcuso de este en su lugar:

ng() { gnome-terminal -x bash -ic "$*; bash"; }

entonces la salida de lsdebe ser coloreada (gracias a Radu Rădeanu por esta pista ).


Esto ejecutará el comando directamente en la nueva terminal.
Radu Rădeanu

Sí, pero ¿cuál es la ventaja de ejecutarlo primero en la antigua terminal?
TuKsn

Ninguna ventaja ..., pero de hecho esta respuesta a este comentario .
Radu Rădeanu

44
Entenderás si vas a correr type lsy luego ng type ls:)
Radu Rădeanu

1
si escribe una función en una línea en bashrc, tal vez necesite un punto y coma para finalizarla, o se encontrará con un error de "final inesperado del archivo". Entonces ng() { gnome-terminal -x sh -c "$*; bash" ;}debería ser mejor. Y si está utilizando xfce (xfce4-terminal como emulador predeterminado): ng() { xfce4-terminal -x sh -c "$*; bash" ;}o simplemente puede ejecutarlo con cualquier emulador predeterminadong() { x-terminal-emulator -x sh -c "$*; bash";}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.