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.