压缩/解压 STDIN 的工具

压缩/解压 STDIN 的工具

有没有压缩STDIN并输出到STDOUT的工具?该工具(或其对应工具)也应该能够解压缩。简单的东西很好,但必须是无损的。

答案1

压缩包

大多数实用程序支持输出到 STDOUT。举个例子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..|....

我已经使用了xxd一些无法打印的字符。运行它gunzip来解压

xz

xz 的工作方式非常相似:

$ 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

并用于解压缩:

$ echo "asdfasdfasdf" | xz | xz -d
asdfasdfasdf

答案2

gzip做这个。引用自手册页

Gzip 使用 Lempel-Ziv 编码 (LZ77) 减小指定文件的大小。只要有可能,每个文件都会被替换为具有扩展名的文件.gz,同时保持相同的所有权模式、访问和修改时间。 (默认扩展名是-gz对于 VMS,z 对于 MSDOS、OS/2 FAT、Windows NT FAT 和 Atari。) 如果未指定文件,或者文件名为“-”,则标准输入被压缩到标准输出。 Gzip 只会尝试压缩常规文件。特别是,它将忽略符号链接。

当然还有其他的。对于 Unix/类 Unix 系统来说,这是很常见的筛选标准输入到输出。 “过滤器”一词涵盖了很多可能性;压缩和解压缩只是其中的一小部分。

答案3

是的,有很多,例如gzip,,,,...bzip2xz

cat testfile|gzip

会将压缩stdin流输出到stdout.

cat file.gz|gzip -d 

将解压缩压缩流 atstdin并将解压缩结果输出到stdout

这同样适用于bzip2xz以及许多其他压缩实用程序,尽管选项可能有所不同。检查相应的man页面

相关内容