はい、できますが、一般的ではありません。
たとえば、これは完全に合法です (「Hello, world.
」、次にEnter、次にと入力しました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
コマンドが正常に終了します。しかし、一般的にはそうしたくないでしょう。圧縮された出力を端末に書き込みます。これには、端末の設定を台無しにする可能性のある制御文字が含まれる場合があります。