às vezes / dev / tty pode ser usado para isso ...
ls /bin /usr/bin | sort | uniq | tee /dev/tty | grep out | wc
Eu sei que para capturar o conteúdo de um pipeline em um estágio intermediário de processamento, usamos tee como ls /bin /usr/bin | sort | uniq | tee abc.txt | grep out
, mas e se eu não quiser redirecionar o conteúdo de após uniq para abc.txt mas para a tela (através do stdout, é claro) para que, como resultado final, eu terei na tela, o conteúdo intermediário após uniq, bem como o conteúdo após grep.
Este comando funcionou para mim.
ls /bin /usr/bin | sort | uniq | tee /dev/pts/0 | grep out
Você pode verificar qual é o seu terminal usando o comando tty
e substituir o tee para redirecionar a saída para esse terminal.
Referências
Mais uma opção: usar a substituição de processos:
ls /bin /usr/bin | sort | uniq | tee abc.txt >(grep out)
Ou, de outra forma:
ls /bin /usr/bin | sort | uniq | tee abc.txt >(cat) | grep out
mkfifo myfifo
cat myfifo& ls /bin /usr/bin | sort | uniq | tee myfifo | grep out
mkfifo
cria um arquivo especial FIFO (first in, first out), a.k.a., um pipe nomeado.
Inicie um cat
assíncrono para ler o fifo e, em seguida, execute o pipeline,
tee
do resultado intermediário para o fifo.
Isso produzirá uma mensagem [1]+ Done cat myfifo
no final.
Você pode suprimir isso com esse truque de mágica:
(cat myfifo&); ls /bin /usr/bin | sort | uniq | tee myfifo | grep out
Por um longo prazo, solução robusta, você pode querer criar um fifo permanente
(por exemplo, $HOME/myfifo
) em vez de criar um novo a cada vez.
Mas isso falhará se você estiver executando várias instâncias disso simultaneamente.
Alternativamente,
mktemp
). /tmp
). No caso em que isso está sendo executado a partir de um terminal, você pode
touch abc.txt
then tail -f abc.txt
ls /bin /usr/bin | sort | uniq | tee /dev/fd/2 | grep out | wc
Em um sistema Linux, você pode usar os links /dev/fd/[num]
como pipes nomeados em muitos casos. Isso irá duplicar o stdout para o stderr, que, tipicamente, é o seu terminal screen , mas não precisa ser.
Tags command-line bash tee