tarコマンドのマニュアルで例を実行すると、--strip-comComponentsオプションにエラーが発生しました。

tarコマンドのマニュアルで例を実行すると、--strip-comComponentsオプションにエラーが発生しました。

tarコマンドマニュアルの読み込み中にオプションエラーが発生しました--strip-components。マニュアルの例は、3つのファイルがあるディレクトリを含むtarファイルがあることです。 tar コマンドを使用してリストすると、次のようになります。

$tar -tf music.tar
practice/
practice/blues
practice/folk
practice/jazz

マニュアルによると--strip-componentsオプション

特定の数の主要ディレクトリコンポーネントを削除できます。

そして

tar --extract --file=music.tar --strip-components=1 folk

ファイルをfolk現在の作業ディレクトリに抽出します。

ただし、Ubuntuでこのコマンドを実行すると、次のエラーが発生します。

tar: folk: Not found in archive
tar: Exiting with failure status due to previous errors

私のタールバージョンは1.34です。さらに、以下のコマンドを実行するとfolkファイルが正常に抽出されました。

tar --extract --file=music.tar --strip-components=1 practice/folk

マニュアルとオプションについて私が誤解していることはありますか--strip-components?それともマニュアルに何か問題があるのでしょうか?

ベストアンサー1

その特定の例は間違っています。それでも、アーカイブ内のファイルのフルパスを指定する必要があります。それ以外の場合、tarファイルが提供されます。たとえば、次のようになります。

$ tar -tf foo.tar
a/
a/folk
b/folk
b/blues

tarどのファイルを参照しているかわかりませんtar --extract --file=foo.tar --strip-components=1 folk

この部分を録音してください--strip-components6.7 ファイル名とメンバー名の変更)正しい例があります。

たとえば、/usr「階層全体」を「tar」アーカイブにアーカイブしたとしますusr.tar。他のファイルのうち、このアーカイブにはusr/include/stdlib.h現在の作業ディレクトリに抽出したいものが含まれています。これを行うには、次のように入力します。

$ tar -xf usr.tar --strip=2 usr/include/stdlib.h

' 'オプションはtarにファイル名から--strip=2前の2つの部分( ' usr/'と ' ')を削除するように指示します。include/

上記の呼び出しに ' --verbose'(' ')オプションを追加すると、詳細リストにまだ完全なファイル名が含まれていて、削除された2つのコンポーネントがまだ存在することがわかります。-v

おすすめ記事