O gzip aceita stdin?

4

Quando eu canalizar para gzip ele não pode aceitar stdin eu deveria usar xargs para converter stdin para argumento

$ls
1.txt
$ls |xargs gzip && ls 
1.txt.gz

tudo está bem. mas quando eu quero comprimir um arquivo de arquivo cpio

$ls | cpio -ov | gzip > archive.cpio.gz

também está tudo bem e isso ls | cpio -ov | xargs gzip não funciona.porque na segunda situação gzip aceita stdin e não pode aceitar argumento?

    
por Sinoosh 29.09.2016 / 14:49

1 resposta

12

Existe uma diferença entre argumentos da linha de comando e entrada padrão .

gzip aceita nomes de arquivos como argumentos. Ele lerá os dados brutos dos arquivos especificados e os compactará. Se você tiver um comando exibindo uma lista de nomes de arquivos, poderá usar xargs para passar esses nomes de arquivos para gzip como argumentos de linha de comando.

No entanto, se nenhum argumento de arquivo for passado para gzip , o padrão é ler seus dados brutos da entrada padrão e imprimir o resultado compactado na saída padrão. Se você tiver um comando de saída de dados brutos que deseja compactar, poderá canalizá-lo para gzip .

    
por Byte Commander 29.09.2016 / 15:00