Como enviar saída de um terminal para outro sem criar nenhum novo canal ou arquivo

Como enviar saída de um terminal para outro sem criar nenhum novo canal ou arquivo

Estou apenas brincando no meu terminal (terminal Gnome). Eu queria saber se existe uma maneira de enviar a saída de um terminal para outro sem ter que criar um novo arquivo ou canal.

por exemplo: no primeiro terminal eu executo lse quero que sua saída seja exibida no segundo terminal (com ou sem usar nenhum comando no segundo)

Responder1

Se ambos os terminais pertencerem ao mesmo usuário, você poderá enviar sua saída para o dispositivo virtual usado como tty do terminal específico.

Portanto, você pode usar a saída de w, que inclui as informações do TTY, e gravar diretamente nesse dispositivo.

ls > /dev/pts/7

(Se o dispositivo mencionado por wfor pts/7)

Outra opção é usar o número de um processo que está conectado a esse dispositivo. Envie sua saída para /proc/<process number>/fd/1.

ls > /proc/5555/fd/1

Supondo que o número do processo que você encontrou em execução nesse terminal seja 5555.

Observe que esta gravação direta só é permitida seo usuário que tenta escrever é o mesmo usuário que possui o outro terminal.

Responder2

Você pode usar writeo comando.

Como comentou @MelBurslan, se a permissão de gravação estiver desativada, primeiro execute:

 $ mesg y

Deman mesg

OPÇÕES

y Permita acesso de gravação ao seu terminal.

Uso de gravação:

$ write username tty

por exemplo, envie lsa saída para outro 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

Responder3

Eu encontrei um método semelhante.

No primeiro terminal:

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

No segundo terminal:

$ ls > /dev/pts/0

Agora você obtém a saída no primeiro terminal

Responder4

você pode escrever para o TTY do terminal; por exemplo:

no terminal 1:

$ tty 
ttys000

no terminal 2:

$ tty
ttys029

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

A saída será exibida em ambos os terminais em tempo real, mesmo enquanto você digita.

Funciona em Linux e macOS. O caminho macOS TTY é /dev/{number}enquanto no Linux é/dev/pts/{number}

informação relacionada