tar
node_modulesサブディレクトリを除いて、Bashスクリプトからプロジェクトディレクトリを別の場所にコピーする方法を理解したいと思います。役に立つコメントを投稿しました。ここ、私のユースケースに合わせて、次のように書き直しました。
tar -cf - --exclude="node_modules" "${source}" | tar -xf - -C "${target}"
しかし、私はこれについていくつかの事実がわかるまで、このコマンドを実行することを消極的にします。私の質問は次のとおりです -
--exclude
前に別々のハイフンと前に別々のハイフンを使用する目的は何ですか-C
?- .tarファイルは実際にファイルシステムのどこかに作成されましたか?では、名前はどこにありますか?
答え1
-
多くのユーティリティは、状況に応じて引数を標準入力/出力として定義し、GNUの場合、tar
入力/出力用のデフォルトファイルがstdioであるため、これは必要ありません。したがって、アーカイブは実際にはパイプである標準出力に書き込まれtar -cf - --exclude="node_modules" "${source}"
、tar
もう一方の端はtar -xf - -C "${target}"
抽出された標準入力として次のコマンドに提供されます。- パイプラインでは、標準出力はファイルにリダイレクトされないため、
tar
実際にはアーカイブは生成されません。