使用这个 lz4 命令:
$ apt search ^lz4$
Sorting... Done
Full Text Search... Done
lz4/focal,now 1.9.2-2 amd64 [installed,automatic]
Fast LZ compression algorithm library - tool
$ lz4 --version
*** LZ4 command line interface 64-bits v1.9.2, by Yann Collet ***
此命令通常会创建一个filename.lz4
文件(就像 gzip 一样):
$ lz4 -9 -k filename
但是,此命令不会,而是在我不告诉它时写入 stdout:
$ t=$(lz4 -9 -k filename)
Warning : using stdout as default output. Do not rely on this behavior: use explicit `-c` instead !
bash: warning: command substitution: ignored null byte in input
为什么要这样做?这是一个错误,还是某个地方记录了一个原因?
该行为似乎是一项功能 - 而不是错误。除了源代码之外,我在任何地方都找不到它的文档:
在 Linux 上,
IS_CONSOLE
用于isatty
确定文件描述符是否连接到终端。正如评论中所建议的,在
-m
没有 tty 的情况下,您可以使用该选项强制生成输出文件: