是的,你可以,但這不是一件常見的事情。
例如,這是完全合法的(我輸入 「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
命令正常完成。但你通常不想這樣做;它會將壓縮輸出寫入您的終端,終端可能包含可能會弄亂終端設置的控制字符。
感謝您的回答,以及編輯。抱歉格式不佳,我睡眠不足:/ –