
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 ls
e 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 w
for 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 write
o 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 ls
a 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}