Ferramenta para comprimir / descompactar STDIN

2

Existe uma ferramenta que comprime STDIN e gera saída para STDOUT? Essa ferramenta (ou sua contraparte) deve ser capaz de descomprimir também. Algo simples é bom, mas deve ser sem perdas.

    
por vikarjramun 17.09.2016 / 21:24

3 respostas

5

gzip

A maioria dos utilitários suporta a saída para STDOUT. Tomemos por exemplo gzip :

$ echo "asdgasdfasdfasdfasdfasdfasdf" | gzip | xxd
00000000: 1f8b 0800 219b dd57 0003 4b2c 4e49 4f2c  ....!..W..K,NIO,
00000010: 4e49 c386 b900 45ce f97c 1d00 0000       NI....E..|....

Eu usei xxd porque alguns caracteres não imprimíveis existem. Execute-o em gunzip para descompactar

xz

xz funciona de forma bastante semelhante:

$ echo "asdfasdfasdf" | xz | xxd
00000000: fd37 7a58 5a00 0004 e6d6 b446 0200 2101  .7zXZ......F..!.
00000010: 1600 0000 742f e5a3 e000 0c00 0b5d 0030  ....t/.......].0
00000020: 9cc8 abf9 a8be f900 0000 0000 9525 d79a  .............%..
00000030: 089a c592 0001 270d f37b f284 1fb6 f37d  ......'..{.....}
00000040: 0100 0000 0004 595a                      ......YZ

e para descompactar:

$ echo "asdfasdfasdf" | xz | xz -d
asdfasdfasdf
    
por 17.09.2016 / 21:36
1

gzip faz isso. Citando a página de manual :

Gzip reduces the size of the named files using Lempel-Ziv coding (LZ77). Whenever possible, each file is replaced by one with the extension .gz, while keeping the same ownership modes, access and modification times. (The default extension is -gz for VMS, z for MSDOS, OS/2 FAT, Windows NT FAT and Atari.) If no files are specified, or if a file name is "-", the standard input is compressed to the standard output. Gzip will only attempt to compress regular files. In particular, it will ignore symbolic links.

Existem, claro, outros. É comum que sistemas Unix / Unix-like filtrem a entrada padrão para a saída. O termo "filtro" abrange muitas possibilidades; compressão e descompressão são apenas algumas delas.

    
por 17.09.2016 / 21:36
1

Sim, existem muitos, por ex. gzip , bzip2 , xz , ...

cat testfile|gzip

produziria o fluxo stdin compactado para stdout .

cat file.gz|gzip -d 

iria descompactar o fluxo comprimido em stdin e produzir o resultado da descompressão para stdout

O mesmo se aplica a bzip2 e xz e muitos outros utilitários de compactação, embora as opções possam variar. Verifique as páginas man apropriadas

    
por 17.09.2016 / 21:36