您可以使用gzip压缩您在终端中输入的文字吗?
如果是,那怎么样?
如果不是,那么这一行意味着什么?:
当您未指定任何要压缩的文件或指定时 - 作为文件名,gzip从标准输入读取,压缩读取的内容,并将结果写入标准输出。
我在很多网页上都看过它,包括这个:http://www.mkssoftware.com/docs/man1/gzip.1.asp
此外,当我在终端中键入gzip -f
时,光标会转到换行符并开始接受输入,但我只需按Ctrl + C就可以了,但没有任何反应。
答案 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
命令正常完成。但是你通常不想这样做;它会将压缩输出写入终端,其中可能包含可能弄乱终端设置的控制字符。