
1つのコマンドラインでcat、tar、およびgzipを使用して.tar.gzファイルを解凍してアーカイブを解放するにはどうすればよいですか?可能ですか?
答え1
必要ないcat
かgzip
:
$ tar xvzf archive.tar.gz
tar
圧縮()フラグの後に詳細モード()でアーカイブを抽出()することを示すオプション文字列。x
v
z
f
すべてを使うcat
、tar
そして gzip
(これは愚かです。これをしないでください。):
$ cat archive.tar.gz | gzip -d -c | tar xvf -
または
$ gzip -d -c archive.tar.gz | cat | tar xvf -
-
ファイル名で指定すると、tar
アーカイブは標準入力から読み取られます。
最後の2つの例は、パイプラインの次の部分にデータを混在させることだけを残しているcat
ため、通常「無駄な使用」と呼ばれる問題が発生します。cat
以下のない少し良いバージョンcat
:
$ gzip -c -d archive.tar.gz | tar xvf -
実際にtar
圧縮されたアーカイブを処理する方法がわからないシステムでこれを行う方法を知っておくと便利です。
上記で使用した古代オプション文字列(tar
前にダッシュ()がない)は、ダッシュがコマンドラインオプションを指定するために通常使用される前のものです。-
一般的なオプション構文を使用しない他のユーティリティにはありますdd
が、今日のほとんどの実装はmt
tar
明らか最新のダッシュオプションはdd
通常そうではありません。コマンドmt
(テープジョブ制御)にはいくつかのダッシュオプション(特にLinuxでは)がありますが、コマンドラインで選択されていない唯一の部分は、まだドライブで実行したいコマンド(またはrewind
)ですeof
。