0

このスクリプトは、パターンを含むファイル (tar アーカイブ内) の名前を一覧表示します。

tar tf myarchive.tar | while read -r FILE
do
    if tar xf test.tar $FILE  -O | grep "pattern" ;then
        echo "found pattern in : $FILE"
    fi
done

私の質問は:

この機能はどこに文書化されていますか。 $FILE はアーカイブ内のファイルの 1 つです。

tar xf test.tar $FILE
4

1 に答える 1

2

これは通常、man ページに記載されています。次のコマンドを実行してみてください。

man tar

残念ながら、Linux には最適なマニュアル ページのセットがありません。この OS の tar マンページのオンライン コピーがあります: http://linux.die.net/man/1/tarはひどいものです。ただし、GNU の世界で広く使用されている「情報」システムにアクセスするためのコマンドであるコマンドにリンクしていますinfo man(Linux ユーザー空間の多くのプログラムは、gcc などの GNU プロジェクトからのものです)。info tar特定のファイルの抽出に関するオンラインのセクションへの正確なリンクがあります: http://www.gnu.org/software/tar/manual/html_node/extracting-files.html#SEC27

BSD (FreeBSD など) や opengroup.org のドキュメントもお勧めします。ユーティリティは詳細が異なる場合がありますが、一般的に同じように動作します。

たとえば、opengroup (XCU は、Single UNIX Specification、バージョン 2、1997 の「コマンドとユーティリティ」を意味します) には、かなり古いが良い人がいます: http://pubs.opengroup.org/onlinepubs/7908799/xcu/tar .html

tar キー [ファイル...]

次のオペランドがサポートされています。

キー -- キー オペランドは、機能文字の直後に 0 個以上の修飾文字が続くもので構成されます。機能文字は次のいずれかです。

x -- 指定されたファイルまたはファイルをアーカイブから抽出します。名前付きファイルが、内容がアーカイブに書き込まれたディレクトリと一致する場合、このディレクトリは (再帰的に) 抽出されます。アーカイブ内の指定されたファイルがシステム上に存在しない場合、ファイルはアーカイブ内のファイルと同じモードで作成されます。適切な特権を持っています。ファイルが存在する場合、上記の場合を除き、それらのモードは変更されません。所有者、グループ、および変更時刻が復元されます (可能な場合)。file オペランドが指定されていない場合、アーカイブの内容全体が抽出されます。アーカイブに同じ名前のファイルが複数ある場合、最後のファイルによって以前のファイルがすべて上書きされることに注意してください。

コマンドを完全に理解するには、オプションtar xf test.tar $FILEについても読む必要があります。f

f -- システム依存のデフォルトではなく、最初のファイル オペランド (b が既に指定されている場合は 2 番目のオペランド) をアーカイブの名前として使用します。

したがって、test.tarコマンドでは、fキーによってアーカイブ名として使用されます。x は$FILE、アーカイブから抽出するファイルまたはディレクトリの名前として 2 番目の引数 ( ) を使用します。

于 2012-10-24T00:54:19.333 に答える