Como você pode espelhar o stdout de um terminal para outro?

5

Não tenho certeza se estou formulando a pergunta corretamente, mas digamos que tenho dois terminais virtuais abertos e, se digitei ls em um deles, obteria o conteúdo do diretório em ambos deles (o segundo não precisa ser gravável, ele só precisa exibir o stdout do primeiro). Como eu iria conseguir isso?

    
por chrisdotcode 06.04.2012 / 22:31

3 respostas

9

Como geekosaur mencionou screen fará o que você precisa (e muito muito mais).

Primeiro, crie uma sessão de tela com nome para sua conveniência no seu primeiro terminal:

$ screen -S foo

Em segundo lugar, anexe à sessão de tela no segundo terminal:

$ screen -x foo
    
por 07.04.2012 / 00:40
5

Você pode usar script para fazer isso.

Por exemplo, se você quiser copiar toda a sua saída para /dev/tty1 você executaria

script -f /dev/tty1

A partir daí, tudo o que você digitar e toda a saída do comando será duplicada em /dev/tty1 .
script lança outro shell, então quando terminar, você pode digitar exit para finalizar script .

O -f é para torná-lo em tempo real. Do contrário, /dev/tty1 só verá a saída quando uma linha completa for exibida (quando um caractere de nova linha for gravado no tty).

    
por 07.04.2012 / 07:34
2

Depende exatamente do que você está procurando. Uma solução fácil é script(1) ; O GNU screen no modo multiattach é uma solução mais sofisticada.

    
por 06.04.2012 / 22:34