ajuda a entender o diff entre: sort file.txt VS file.txt | ordenar

1

estou aprendendo Ubuntu (pela primeira vez) e estou lendo através do livro do servidor Ubuntu

capítulo 14 diz

filename.txt | sort vai me dar uma saída com o conteúdo do arquivo, mas classificado No entanto, não menciona se eu posso digitar:

filename.txt | sort > sortedfilename.txt para criar um novo arquivo desta vez com conteúdo classificado, posso?

afirma que eu poderia digitar

sort < filename.txt

e novamente, obtenha uma saída ordenada do conteúdo dos arquivos continua a mencionar que eu posso digitar sort < filename.txt > sortedfilename.txt

e crie um arquivo com conteúdo classificado

estas são duas maneiras diferentes de fazer exatamente a mesma coisa?

obrigado!

    
por Giladiald 09.12.2013 / 15:24

1 resposta

2

Há um erro de digitação no seu código de exemplo que eu acabei de abordar primeiro. filename | ... não fará nada além de soltar um erro e depois confundir a coisa do outro lado do pipe ... a menos que esse nome de arquivo também seja um executável global e então não esteja fazendo o que você queria.

Você precisaria de cat filename | ... .

Apenas para turvar as águas, sort também pode usar um nome de arquivo como argumento. Você poderia (e deveria, se este é o seu caso de uso real) apenas executar sort filename > sortedfilename .

De qualquer forma, voltemos a redirecionamentos ...

O redirecionamento de entrada ( < ) lê um arquivo e canaliza para stdin . Para responder à sua pergunta, é diretamente equivalente a cat filename | .

O comando sort procura por stdin em vez de um argumento de nome de arquivo e faz a classificação e direciona para stdout . O redirecionamento de saída ( > ) pode ser usado para enviar isso para um arquivo em vez da tela.

Se você realmente quiser surpreender, leia o capítulo sobre o redirecionamento de E / S do TLDP a>. É provavelmente um pouco mais cru do que o seu livro, mas é um material sólido e testado. Na verdade (tendo acabado de lê-lo novamente), sua explicação é bem decente.

A posição da entrada é muito mais fluida do que as tubulações. O seguinte é válido:

< filename sort > sortedfilename
    
por Oli 09.12.2013 / 15:38