你能用gzip压缩你输入终端的文字吗?

时间:2012-10-06 05:23:51

标签: ubuntu gzip

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

如果是,那怎么样?

如果不是,那么这一行意味着什么?:

  

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

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

此外,当我在终端中键入gzip -f时,光标会转到换行符并开始接受输入,但我只需按Ctrl + C就可以了,但没有任何反应。

1 个答案:

答案 0 :(得分:2)

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

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