tee e redirecionamento de saída [duplicado]

3
ls -l *.txt | wc -l | tee count.txt
ls -l *.txt | wc -l > tee count.txt

Estou aprendendo comandos básicos do Unix. Eu pensei que esses dois comandos mencionados fariam a mesma coisa, mas eles não fazem. Apenas o primeiro comando grava em count.txt. Por que o redirecionamento de saída usado no segundo comando não está fazendo nada?

    
por Mint.K 20.01.2017 / 09:24

1 resposta

5
ls -l *.txt | wc -l | tee count.txt

No primeiro exemplo:

O comando ls lista todos os arquivos no diretório atual que possuem a extensão de nome de arquivo .txt , um arquivo por linha; essa saída é canalizada para wc , que conta as linhas e gera o número; essa saída é canalizada para tee , que grava a saída no terminal e grava as mesmas informações no arquivo count.txt . Se count.txt já existir, ele será sobrescrito.

No seu segundo exemplo:

ls -l *.txt | wc -l > tee count.txt

Neste exemplo, tee será tratado como nome do arquivo em vez de um comando e a saída de wc -l será redirecionada para o arquivo recém-criado tee e conterá a saída de wc -l e string count.txt .

Se você quiser o mesmo comportamento que no primeiro exemplo, a maneira correta de fazer isso seria:

 ls -l *.txt | wc -l > count.txt

> em si é suficiente para redirecionar a saída para count.txt file

    
por Rahul 20.01.2017 / 09:37