0

gzip を使用して、端末に入力するテキストを圧縮することはできますか?

はいの場合、どのように?

いいえの場合、この行はどういう意味ですか?:

圧縮するファイルを指定しないか、ファイル名として - を指定すると、gzip は標準入力から読み取り、読み取った内容を圧縮し、結果を標準出力に書き出します。

私はこれを含む多くの Web ページでそれを読みました: http://www.mkssoftware.com/docs/man1/gzip.1.asp

また、gzip -f端末に入力すると、カーソルが改行に移動して入力の受け入れを開始しますが、Ctrl + Cで入力するだけで何も起こりません。

4

1 に答える 1

2

はい、できますが、一般的ではありません。

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

于 2012-10-06T06:18:37.667 に答える