助け合いフォーラム

LPIC

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

正解

tar ftvz test.tar.gz

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

解説

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

tarコマンドの書式と主なオプションは以下のとおりです。

tar [オプション] [ファイルまたはディレクトリ名]


なお、tarコマンドではオプションの「-」は省略できます。オプションは順不同でも動作しますが、慣習的にはc, x, tのような動作オプションを先頭に指定します。

上表より、必要なオプションは「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コマンドはアーカイブの作成およびアーカイブの圧縮、展開を行うコマンドです。

tarコマンドの書式と主なオプションは以下のとおりです。

tar [オプション] [ファイルまたはディレクトリ名]


なお、tarコマンドではオプションの「-」は省略できます。オプションは順不同でも動作しますが、慣習的にはc, x, tのような動作オプションを先頭に指定します。

例1)「aa」「bb」「cc」の3ファイルを1つにまとめて「hoge.tar」というアーカイブにする場合

$ tar cf hoge.tar aa bb cc

例2)「hoge.tar」というアーカイブに含まれるファイルを表示する場合

$ tar -tf hoge.tar
aa
bb
cc

例3)「hoge.tar」というアーカイブを展開する場合

$ tar -xf hoge.tar

例4)「dir」ディレクトリを、bzip2形式で圧縮した「dir.tar.bz2」というアーカイブにする場合

$ tar cfj dir.tar.bz2 dir

例5)gzip形式で圧縮したアーカイブ「dir.tar.gz」(もしくは「dir.tgz」)を展開する場合

$ tar fxz dir.tar.gz
$ tar fxz dir.tgz

gzip形式で圧縮したアーカイブの拡張子は「tar.gz」のほか、略して「tgz」とする場合もあります。
上に戻る

gzipの-dオプションを使ってしまうと、ファイルを展開してしまうのでは?

投稿日 2023/04/07

「gzipの-dオプション(圧縮ファイルを展開する)・・・」と解説にありますが、そもそも問題文の条件に「展開せずに」となっているのに、展開するオプションを使うのはありなのでしょうか?

2023/04/08 12:57

カレントディレクトリに展開せずに ですね。
展開しないと内容を参照することはできませんが、標準出力に展開すればカレントディレクトリには展開されずに済みます。

こちら LinuC でのお話でしたが参考になるかと思います。
https://mondai.ping-t.com/g/posts/647


コメント

j jeronimmo521

2023/04/11 03:21

ご回答ありがとうございます。 お礼が遅れました。 そういうふうに読むのですね。学びになりました。

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

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