0

您可以使用 gzip 压缩您在终端中键入的文本吗?

如果是,那么如何?

如果不是,那么这条线是什么意思?:

当您不指定任何要压缩的文件或指定 - 作为文件名时,gzip 从标准输入读取,压缩读取的内容,并将结果写入标准输出。

我在很多网页上都读过它,包括这个:http ://www.mkssoftware.com/docs/man1/gzip.1.asp

此外,当我gzip -f在终端中输入时,光标会转到换行符并开始接受输入,但我只需要按 Ctrl+C 即可,然后什么也没有发生。

4

1 回答 1

2

是的,你可以,但这并不常见。

例如,这是完全合法的(我输入了 " 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命令正常完成。但是您通常不想这样做;它将压缩输出写入您的终端,其中可能包含可能会弄乱您的终端设置的控制字符。

于 2012-10-06T06:18:37.667 回答