web-dev-qa-db-ja.com

1つのコマンドラインでcat、tar、gzipを使用して、.tar.gzファイルを解凍およびアーカイブ解除します。

1つのコマンドラインでcat、tar、gzipを使用して.tar.gzファイルを解凍およびアーカイブ解除するにはどうすればよいですか?これも可能ですか?

1
Matej Gomboc

catまたはgzipは必要ありません:

$ tar xvzf archive.tar.gz

オプション文字列は、tarに、xに続く圧縮(v)アーカイブを冗長モード(z)で抽出(f)するように指示します。国旗。

cattarおよび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に使用した、ダッシュなしの古風なオプション文字列(-)その前にあるのは、コマンドラインオプションを指定するためにダッシュが一般的に使用される前の時間です。通常のオプション構文を使用しない他のユーティリティには、ddmtが含まれますが、今日のtarのほとんどの実装は理解しています新しいダッシュオプション、ddは通常そうではありません。 mtコマンド(磁気テープの操作を制御する)は、いくつかのダッシュオプション(特にLinuxの場合)を取得しましたが、コマンドラインのオプションではない部分は、コマンドラインで実行するコマンドだけです。 rewindeofなどのドライブ。

9
Kusalananda