助け合いフォーラム

LinuC

LinuC Lv1-101(Ver10.0)
問題ID : 14645
問題を開く
gzip形式で圧縮したアーカイブファイル「test.tar.gz」の内容をカレントディレクトリに展開せずに表示したい。適切なコマンドは次のうちどれか。(2つ選択)

正解

tar ftvz test.tar.gz

gzip -cd test.tar.gz | tar ftv -

解説

tarコマンドは複数のファイルをまとめて1つのファイル(アーカイブ)にする、またはアーカイブを展開する際に使用するコマンドです。アーカイブを展開することなくアーカイブの内容を確認することもできます。

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 -
これらのコマンドはアーカイブからファイルを展開するので誤りです。
上に戻る

展開しないというのは・・・

投稿日 2023/02/01

Q gzip形式で圧縮したアーカイブファイル「test.tar.gz」の内容をカレントディレクトリに展開せずに表示したい。適切なコマンドは次のうちどれか。(2つ選択)

A gzip -cd test.tar.gz | tar ftv -

とのことですが、"展開せずに”と問われているのにgzipコマンドのオプションに展開の役割を果たす-dを指定するのはなぜなのでしょうか?

2023/02/02 17:35

圧縮されたままだと中身が見えないからですね。パイプでtarに渡しているので、"カレントディレクトリに展開せず"に済みます。
実際やってみましたが、「Archive is compressed. Use -z option」(アーカイブは圧縮されてるんだから-zを使え)って言われました。

# touch aa bb cc
# tar cfz test.tar.gz aa bb cc
# ls
aa  bb  cc  test.tar.gz
# gzip -cd test.tar.gz | tar ftv -
-rw-r--r-- root/root         3 2023-02-02 08:25 aa
-rw-r--r-- root/root         3 2023-02-02 08:25 bb
-rw-r--r-- root/root         3 2023-02-02 08:25 cc
# gzip -c test.tar.gz | tar ftv -
tar: Archive is compressed. Use -z option
tar: Error is not recoverable: exiting now


コメント

k kunitir

2023/02/03 19:33

わかりやすい説明、ありがとうございます!よく理解できました!

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?