Cómo enviar resultados de una terminal a otra sin crear ninguna tubería o archivo nuevo

Cómo enviar resultados de una terminal a otra sin crear ninguna tubería o archivo nuevo

Simplemente estoy jugando con mi terminal (terminal Gnome). Me preguntaba si hay alguna manera de enviar la salida de un terminal a otro sin tener que crear un nuevo archivo o canalización.

por ejemplo: en la primera terminal ejecuto lsy quiero que su salida se muestre en la segunda terminal (con o sin usar ningún comando en la segunda)

Respuesta1

Si ambos terminales pertenecen al mismo usuario, puede enviar su salida al dispositivo virtual que se utiliza como tty del terminal en particular.

Por lo tanto, puede utilizar la salida de w, que incluye la información TTY, y escribir directamente en ese dispositivo.

ls > /dev/pts/7

(Si el dispositivo mencionado por wera pts/7)

Otra opción es utilizar el número de un proceso que esté conectado a ese dispositivo. Envíe su salida a /proc/<process number>/fd/1.

ls > /proc/5555/fd/1

Suponiendo que el número de proceso que encontró y que se ejecuta en esa terminal es 5555.

Tenga en cuenta que esta escritura directa sólo se permite siel usuario que intenta escribir es el mismo usuario propietario del otro terminal.

Respuesta2

Puedes usar writeel comando.

Como comentó @MelBurslan, si el permiso de escritura está desactivado, primero ejecute:

 $ mesg y

Deman mesg

OPCIONES

y Permitir acceso de escritura a su terminal.

Uso de escritura:

$ write username tty

por ejemplo, enviar lssalida a otro terminal.

$ w
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
user     :0       :0               08:15   ?xdm?   7:37   0.25s init --user
user     pts/0    :0               08:19    1.00s  0.09s  0.01s w
user     pts/12   :0               08:50   54.00s  0.03s  0.03s bash

$ ls | write username pts/12

Respuesta3

Encontré un método similar.

En la primera terminal:

 $ tty
 /dev/pts/0
 $ <no need to run any command here, just see the output>

En la segunda terminal:

$ ls > /dev/pts/0

Ahora obtienes la salida en el primer terminal.

Respuesta4

puedes escribir al TTY del terminal; Por ejemplo:

en la terminal 1:

$ tty 
ttys000

en la terminal 2:

$ tty
ttys029

$ exec &> >(tee >(cat >&/dev/ttys000))
ls 

La salida se mostrará en ambas terminales en tiempo real incluso mientras escribe.

Funciona en Linux y macOS. La ruta TTY de macOS es /dev/{number}mientras que en Linux es/dev/pts/{number}

información relacionada