元のファイルを保持するようにgzipにどのように通知できますか?

元のファイルを保持するようにgzipにどのように通知できますか?

gzipコマンドラインツールを使用してテキストファイルを圧縮したいです。維持する元のファイル。デフォルトでは、次のコマンドが実行されます。

gzip file.txt

その結果、ファイルが変更され、名前が変更されますfile.txt.gz。この新しい圧縮ファイルを次の場所に配置したいと思います。次へ追加既存のfile.txt。これでこれを行うには、次のコマンドを使用しています。

gzip -c file.txt > file.txt.gz

それはうまくいきますが、なぜそれほど一般的な作業のためのより簡単な解決策がないのだろうか。たぶん私はこれを行うオプションを逃したのでしょうか?

ベストアンサー1

GNU gzip1.6以降、FreeBSD、およびその派生製品、または最新バージョンのNetBSDについては、以下を参照してください。ドンクリスティの答え

どのバージョンでも、次のようにシェルリダイレクトを使用できます。

gzip < file.txt > file.txt.gz

引数が指定されていない場合は、標準入力が読み取らgzipれ圧縮され、圧縮されたバージョンが標準出力に書き込まれます。追加ボーナスとして、シェルリダイレクトを使用するときに"--help"名前またはファイルを心配する必要はありません"-"(後者はまだ問題ですgzip -c --)。

もう1つの利点gzip -c file.txt > file.txt.gzは、開けない場合は空のコマンドを作成せず(または既存のコマンドを上書きせずに)、file.txtコマンドが失敗してまったく実行されないことです。file.txt.gzfile.txt.gzgzip

これと比較して1つの重要な違いgzip -kfile.txt、メタデータ(所有権、権限、変更時間、圧縮されていないファイル名)ですfile.txt.gz

また、すでに存在する場合は、シェル(POSIXシェルなど)でオプションを設定しfile.txt.gzない限り、自動的に上書きされます。noclobberset -o noclobber

おすすめ記事