Solo estoy jugando en mi terminal (terminal Gnome). Me preguntaba si hay una manera de enviar la salida de un terminal a otro sin tener que hacer un nuevo archivo o tubería.
por ejemplo: en el primer terminal ejecuto lsy quiero que su salida se muestre en el segundo terminal (con o sin usar ningún comando en el segundo)
command-line
Edward Torvalds
fuente
fuente

lsy quiero que su salida se muestre en la segunda terminal (con o sin usar ningún comando en la segunda)Respuestas:
Si ambos terminales pertenecen al mismo usuario, puede enviar su salida al dispositivo virtual que se utiliza como tty del terminal en particular.
Entonces puede usar la salida de
w, que incluye la información de TTY, y escribir directamente en ese dispositivo.(Si el dispositivo mencionado por
wera pts / 7)Otra opción es usar el número de un proceso que está conectado a ese dispositivo. Envíe su salida a
/proc/<process number>/fd/1.Suponiendo que el número de proceso que encontró que se ejecuta en ese terminal es 5555.
Tenga en cuenta que esta escritura directa solo se permite si el usuario que intenta escribir es el mismo usuario que posee el otro terminal .
fuente
/dev/pts/7o similar con elwcomando, pero la segunda forma funciona para mí/proc/XXX/fd/1es generalmente un enlace suave al dispositivo base. Intente usarls -l /proc/XXXX/fd/1y vea a qué apunta. ¿Tiene alguna relación con lo que apareció en elwcomando?wcomando con/proc/XXX/fd/0Estoy relacionando elwcomando con/dev/pts/7/proc/XXX/fd/1se supone que es un enlace suave a cualquier dispositivo quewmuestre el comando. ¿Cuál es el resultado dels -lesto?tty(solo actual) owho(todos).Puedes usar el
writecomando.Como comentó @MelBurslan, si el permiso de escritura está desactivado, primero ejecute:
Desde
man mesgUso de escritura:
Por ejemplo, enviar
lssalida a otro terminal.fuente
wcomando esedward tty2 19:53 6:05 2:48 23.12s firefoxy si escribols | write edward tty2no obtengo más que un pitidoedwarddlugar deedward?you have turned write permission offmesg ycomando en la terminal de destino, antes de ejecutar el comandoEncontré un método similar.
En la primera terminal :
En la segunda terminal :
Ahora obtienes la salida en la primera terminal
fuente
tail -fen lugar decatpodría ser útilUse el
ttycomando en cada terminal para identificarlos:Suponiendo estos TTY, para redirigir el stdout del primero al segundo, ejecute esto en el primer terminal:
Para restaurar el comportamiento predeterminado stdout de pts / 0:
Vea este video para una demostración.
fuente
puedes escribir en el terminal TTY; por ejemplo:
en la terminal 1:
en la terminal 2:
La salida se mostrará en ambos 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}fuente
exec &> >(tee >(cat >&/dev/ttys000))no existe, por lo que es imposible escribir.ttyserá algo así/dev/pts/0exec &> >(tee >(cat >&/dev/pts/1)). No funciona la combinación de teclas de control (ctrl + c). Tengo que matar la terminal para salirPuedes usar
walltambién:fuente
wall(abreviatura de "escribir todo"), ya que escribe en cada sesión tty iniciada, incluida la que está enviando. En cambio, el usowritepermite que se declare un tty específico.