2012-10-06 75 views
0

你可以使用gzip來壓縮你輸入到終端的文本嗎?你可以使用gzip來壓縮你輸入到終端的文本嗎?

如果是,那麼如何?

如果沒有,那麼這是什麼意思行?:

當你沒有指定要壓縮或指定任何文件 - 作爲文件名,gzip的從標準輸入讀取,壓縮所讀,並將結果寫入標準輸出。

我讀過許多Web頁面,包括這一個:http://www.mkssoftware.com/docs/man1/gzip.1.asp

此外,當我在終端上鍵入gzip -f,光標變爲換行,並開始接受輸入,但我只是按Ctrl +出來,然後沒有任何反應。

回答

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命令正常完成。但你通常不想這樣做;它會將壓縮輸出寫入您的終端,終端可能包含可能會弄亂終端設置的控制字符。

+0

感謝您的回答,以及編輯。抱歉格式不佳,我睡眠不足:/ –

相關問題