GNU/Linux >> Linux の 問題 >  >> Linux

cp -r と cp -R (コピーコマンド) の違い

-R の間 -r は posix で明確に定義されています 移植できません!

Linux では、cp の GNU および BusyBox 実装で 、 -r-R 同等です。

一方、cp の POSIX マニュアル ページで読めるように、 、 -r 動作は実装定義です .

    * If  neither  the  -R  nor  -r  options were specified, cp shall take
      actions based on the type and contents of the file referenced by the
      symbolic link, and not by the symbolic link itself.

    * If the -R option was specified:

       * If  none  of  the  options  -H,  -L, nor -P were specified, it is
         unspecified which of -H, -L, or -P will be used as a default.

       * If the -H option was specified, cp shall take  actions based on
         the type and contents of the file referenced by any symbolic link
         specified as a source_file operand.

       * If the -L option was specified, cp shall take  actions based  on
         the type and contents of the file referenced by any symbolic link
         specified as a source_file operand or any symbolic links encoun-
         tered during traversal of a file hierarchy.

       * If  the  -P option was specified, cp shall copy any symbolic link
         specified as a source_file operand and any symbolic links encoun-
         tered  during traversal of a file hierarchy, and shall not follow
         any symbolic links.

    * If the -r option was  specified,  the  behavior  is implementation-
      defined.

小文字 -r 4.1BSD で導入された古いオプションで、ディレクトリ以外のすべてをファイルとして単純にコピーします。つまり、デバイスまたは FIFO に遭遇した場合、それを開き、内容を読み取り、内容を含むファイルを宛先に作成します。

大文字 -R 標準化されたオプションでした (4.4BSD で BSD に導入されましたが、以前のバージョンでは -r と同義でした) ) デバイス、FIFO、またはその他の特殊ファイルに遭遇すると、宛先で同等の特殊ファイルを作成します。

多くの実装は今でもこの区別を維持していますが、一部 (Linux に典型的な GNU バージョンを含む) は -R しか提供していません。 セマンティクス、-r を使用 同義語として。


違いは、一方は小文字の「R」を使用し、もう一方は大文字の「R」を使用することです。それ以上、違いはありません。 --recursive を使用しても同じです 長いオプションです。


Linux
  1. [[$ a ==Z*]]と[$a==Z *]の違いは?

  2. $HOME と '~' (チルダ) の違いは?

  3. 「man ls」と「ls --help」の違いは?

  1. 配管とコマンド拡張の違いは?

  2. DockerfileのCOPYとADDの違いは何ですか?

  3. Linuxのlocateコマンドとfindコマンドの違いは何ですか

  1. cgroup と名前空間の違い

  2. sudo crontab -e と crontab -e だけの Linux の違い

  3. bashの&>と>&の違いは何ですか?