助け合いフォーラム
正解
tar ftvz test.tar.gz
gzip -cd test.tar.gz | tar ftv -
解説
tarコマンドの書式と主なオプションは以下のとおりです。
tar [オプション] [ファイルまたはディレクトリ名]
なお、tarコマンドではオプションの「-」は省略できます。
上表より、必要なオプションは「t」、「f」、「z」です。また、「v」オプションを使用することで詳細情報を表示できます。
例)tar ftvz test.tar.gz
もしくは、gzipの-dオプション(圧縮ファイルを展開する)と、–cオプション(標準出力へ書き出す)で解凍後のファイル名をtarコマンドにパイプ(|)で渡しても同じ事が可能です。
例)gzip -cd test.tar.gz | tar ftv -
*上記tarコマンドの最後のハイフンは、標準入力からファイル名を受け取る事を意味し、この場合は必須です。
したがって正解は
・tar ftvz test.tar.gz
・gzip -cd test.tar.gz | tar ftv -
です。
以下は実行例です。
アーカイブの内容を表示していますが、実際はカレントディレクトリに展開されていません。
その他の選択肢は以下のとおりです。
・gzip -cd test.tar.gz | tar ftv
エラーになるので誤りです。上記tarコマンドの最後には、標準入力からファイル名を受け取る事を意味するハイフンが必要になります。
・tar fxvz test.tar.gz
・gzip -cd test.tar.gz | tar fxv -
これらのコマンドはアーカイブからファイルを展開するので誤りです。
tar zについて
問題内容:gzip形式で圧縮したアーカイブファイル「test.tar.gz」の内容をカレントディレクトリに展開せずに表示したい。
解答:tar ftvz test.tar.gz、 gzip -cd test.tar.gz | tar ftv -
上記の問題と解答なのですが、tarコマンドのオプションでzが指定されているのはなぜなのでしょうか?
解説を読むとzオプションは「gzipを通して展開/圧縮」とあるので、問題文の「展開せずに」という指定に反してアーカイブファイルを展開している
ように思います。
それとも、この「gzipを通して展開/圧縮」は”gzip形式で圧縮されているアーカイブファイル”を"圧縮されていないアーカイブファイル"に展開するということなのでしょうか?
またgzipの解答で指定されている-dについても同様の認識で合っていますでしょうか?
よろしくお願いいたします。
<前提>
test.tar.gz
⇒tarでアーカイブされ、gz形式で圧縮されているファイル
標準出力
⇒メモリ上での動作イメージ
tar
オプション
c
アーカイブにしファイル出力(tar化)
x
アーカイブを解除しファイル出力(tar解除)
t
アーカイブの内容表示(tarの中身を表示)
z
gzに圧縮/解凍(前のオプションにより自動的に圧縮解凍選択)
アーカイブ ⇒ ファイルを1つにまとめたもの(容量の変化はほぼない)
圧縮 ⇒ ファイル容量を減らす
gzipオプション
オプションなし 圧縮出力
-d 解凍出力
-c+d 標準出力
|(パイプ) は標準出力を再処理させるもの
gzipで、tarは、解凍できないので|を使用して受け渡している。
標準出力でtest.tarにして再処理させている、(tar ftv test.tar)
<問題の解答について>
○問題文に
[カレントディレクトリに展開せずに]とあるので
カレントディレクトリ=現在の作業フォルダに実ファイルが出力されない方法を
選ぶ必要があります。従い、標準出力で結果を出すコマンドであれば回答となります。
大きくは間違っていないはず。
参考になれば幸いです。
コメント
この投稿に対して返信しませんか?
k kmsr19
2023/02/25 17:44
加えてtar xとtar zの違いについても教えていただけると幸いです。 (現時点では tar xは圧縮されていないアーカイブファイルをファイルの状態に展開する と認識しています。)