有没有压缩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
,,,,...bzip2
xz
cat testfile|gzip
会将压缩stdin
流输出到stdout
.
cat file.gz|gzip -d
将解压缩压缩流 atstdin
并将解压缩结果输出到stdout
这同样适用于bzip2
和xz
以及许多其他压缩实用程序,尽管选项可能有所不同。检查相应的man
页面