您可以使用 gzip 压缩您在终端中键入的文本吗?
如果是,那么如何?
如果不是,那么这条线是什么意思?:
当您不指定任何要压缩的文件或指定 - 作为文件名时,gzip 从标准输入读取,压缩读取的内容,并将结果写入标准输出。
我在很多网页上都读过它,包括这个:http ://www.mkssoftware.com/docs/man1/gzip.1.asp
此外,当我gzip -f在终端中输入时,光标会转到换行符并开始接受输入,但我只需要按 Ctrl+C 即可,然后什么也没有发生。
您可以使用 gzip 压缩您在终端中键入的文本吗?
如果是,那么如何?
如果不是,那么这条线是什么意思?:
当您不指定任何要压缩的文件或指定 - 作为文件名时,gzip 从标准输入读取,压缩读取的内容,并将结果写入标准输出。
我在很多网页上都读过它,包括这个:http ://www.mkssoftware.com/docs/man1/gzip.1.asp
此外,当我gzip -f在终端中输入时,光标会转到换行符并开始接受输入,但我只需要按 Ctrl+C 即可,然后什么也没有发生。
是的,你可以,但这并不常见。
例如,这是完全合法的(我输入了 " Hello, world.", then Enter, then Ctrl-D)。
$ gzip > input.gz
Hello, world.
$ ls -l input.gz
-rw-r--r-- 1 kst kst 34 Oct 5 23:18 input.gz
$ gzip -d < input.gz
Hello, world.
(压缩文件实际上比输入大;这对于非常小的输入很常见。)
但请记住,标准输入不一定来自键盘。例如,该du命令打印磁盘使用情况的摘要,如果在大目录上运行它会生成大量输出。如果您想直接以压缩形式保存输出,您可以键入:
du -a / | gzip > du-a.out.gz
命令的标准输入gzip来自命令的输出du -a /;其标准输出被写入新文件du-a.out.gz。
该tar命令是另一个常见示例:
tar cf - some_dir | gzip > some_dir.tar.gz
(但许多版本tar都可以选择执行此操作,而无需显式调用gzip命令)。
至于你问题的最后一部分:
此外,当我在终端中键入 gzip -f 时,光标会转到换行符并开始接受输入,但我只需 Ctrl+C 将其退出,然后什么也没有发生。
键入会Ctrl-C杀死gzip进程,并且可能不允许它完成写入输出。您需要键入Ctrl-D以触发文件结束条件;这让gzip -f命令正常完成。但是您通常不想这样做;它将压缩输出写入您的终端,其中可能包含可能会弄乱您的终端设置的控制字符。