Descompacte e desarquive o arquivo .tar.gz usando cat, tar e gzip em uma linha de comando [closed]

0

Como posso descompactar e desarquivar um arquivo .tar.gz usando cat, tar e gzip em uma linha de comando? Isso é possível?

    
por Matej Gomboc 12.01.2017 / 18:14

1 resposta

7

Não há necessidade de cat ou gzip :

$ tar xvzf archive.tar.gz

A cadeia de opções informa tar para extrair ( x ) no modo detalhado ( v ) o arquivo compactado ( z ) após o f flag.

Usando todos os cat , tar e gzip (que é bobagem, não faça isso ):

$ cat archive.tar.gz | gzip -d -c | tar xvf -

ou

$ gzip -d -c archive.tar.gz | cat | tar xvf -

Quando for dado - como o nome do arquivo, tar lerá o arquivo da entrada padrão.

Os dois últimos exemplos sofrem com o que é comumente chamado de "Uso inútil de cat ", já que a única coisa que o cat faz é embaralhar os dados na próxima parte do pipeline.

Uma versão ligeiramente melhor, sem o cat :

$ gzip -c -d archive.tar.gz | tar xvf -

Isso pode realmente ser uma coisa útil para saber como fazer em um sistema no qual tar não sabe como lidar com arquivos compactados.

A string de opção arcaica que usei para tar acima, sem o traço ( - ) na frente dela, vem de um tempo antes que o traço fosse comumente usado para especificar opções de linha de comando. Outros utilitários que não usam a sintaxe de opção regular incluem dd e mt , mas enquanto a maioria das implementações de tar today compreende as opções de traço mais recentes, dd normalmente não. O comando mt (que controla operações de fita magnética) adquiriu algumas opções de traço (especialmente no Linux), mas a única parte não opcional da linha de comando ainda é o comando que você gostaria de executar na unidade, como como rewind ou eof .

    
por 12.01.2017 / 18:18

Tags