違いは何ですか?
cp -R /a/* /b
そして
cp -R /a/. /b
最初のアイデアは、/ aフォルダのすべての内容を/ bフォルダにコピーすることです。
答え1
唯一の違いは最初のコマンドです。
cp -R /a/. /b
2番目のコマンドは、/a
で隠されたファイルとディレクトリをコピーします。/b
cp -R /a/* /b
しません。
2番目のコマンドが隠しファイルをコピーしない理由は、(シェルオプションが設定されていない場合、または使用されているシェルで同等のオプションが設定されていない場合)の非表示の*
すべての名前が拡張されるためです。/a
dotglob
bash
-r
代わりに、元の質問に使用された2番目のコマンドは次のとおりです-R
。
以前のバージョンとの互換性のために、このフラグは-r
いくつかの実装cp
(cp
例:GNU)で維持されます。これは command の非標準フラグであり、cp
それを含む実装では次のようになります。似たような到着する-R
。
GNUとAIXでは、cp
と-r
は-R
同じです。いくつかの歴史的実装では、cp
FIFOやソケットなどの特別なファイルを異なる方法で処理しました。 Solarisの実装は、FIFO(再生成、読み取り)cp -r/-R
に対してのみ異なります。無料のBSDには実装がありません。-R
-r
-r
cp
答え2
cp -R
元のファイル形式を繰り返しコピーしてコピーします。これはPOSIX規格で言及されている唯一の再帰方法です。
cp -r
再帰コピーの記録オプションです。すべてのファイルを開き、内容を読み、読み取った内容を使用して一般ファイルを作成します。これは歴史的なUNIX再帰オプションです。最新の実装では使用できない場合があります。
バラよりhttp://pubs.opengroup.org/onlinepubs/9699919799/utilities/cp.htmlPOSIX のマニュアルページ。