canaliza stdout-to-file com wc

2

Estou trabalhando em uma tarefa de laboratório para uma turma, que exemplifica users | wc -w como exibindo o número de usuários atualmente conectados. O instrutor solicitou que gravássemos a saída de users em um arquivo ( users > file ) , enquanto ainda exibe a contagem. Meu pensamento inicial foi alterar o exemplo original para simplesmente ler users > file | wc -w , mas recebo o erro:

ambiguous output redirect

O laboratório Unix da nossa faculdade nos faz funcionar, por padrão em tcsh , e eu sei que os comandos podem diferir entre os shells. Existe um comando que pode conseguir isso que estou esquecendo completamente?

    
por Brad B 23.09.2015 / 19:11

2 respostas

2

Use tee :

users | tee file | wc -w

Fornece como saída o número de usuários e grava um arquivo com os usuários como conteúdo.

O caso na sua pergunta :

command >file | command2

Isso não funciona. Com >file , você redireciona a saída de command para o arquivo file e, da mesma forma, a saída é gravada em um canal anônimo, onde o comando command2 é lido na outra extremidade. Este é um redirecionamento ambíguo.

O comando tee aceita um argumento file as, em que tee escreve tudo o que recebe de sua entrada padrão. tee também grava tudo, desde a entrada padrão até a saída padrão, onde você pode redirecionar para outros comandos ou arquivos.

    
por 23.09.2015 / 19:14
1

Existe um comando para realizar isso; é chamado tee :

users | tee file | wc -w

PS. Comandos (externos) não diferem entre os shells; a sintaxe de redirecionamento de entrada e saída varia.

    
por 23.09.2015 / 19:14