GNU/Linux >> Znalost Linux >  >> Linux

Rozdíl mezi cp -r a cp -R (příkaz kopírování)

Zatímco -R je posix dobře definovaný, -r není přenosný!

Na Linuxu v implementacích GNU a BusyBox cp , -r a -R jsou ekvivalentní.

Na druhé straně, jak si můžete přečíst v manuálové stránce POSIX cp , -r chování je definováno implementací .

    * 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 malými písmeny byla starší možnost, představená v 4.1BSD, která by jednoduše zkopírovala všechny neadresáře jako soubory. To znamená, že pokud narazí na zařízení nebo FIFO, otevře je, přečte obsah a v cíli vytvoří soubor s obsahem.

Velká písmena -R byla standardizovaná volba (zavedená do BSD v 4.4BSD, ačkoli dřívější verze ji měly jako synonymum pro -r ), který by při setkání se zařízením, FIFO nebo jiným speciálním souborem vytvořil v cíli ekvivalentní speciální soubor.

Mnoho implementací stále udržuje tento rozdíl, ale některé (včetně verze GNU typické pro Linux) poskytují pouze -R sémantika s -r jako synonymum.


Rozdíl je v tom, že jeden používá malé „R“ a druhý používá velké „R“. Kromě toho žádný rozdíl. Totéž, pokud použijete --recursive dlouhá možnost.


Linux
  1. Rozdíl mezi [[ $a ==Z* ]] a [ $a ==Z* ]?

  2. Rozdíl mezi [0-9], [[:digit:]] a D?

  3. Rozdíl mezi potrubím a rozšířením příkazů?

  1. Rozdíl mezi Snat a Masquerade?

  2. Jaký je rozdíl mezi COPY a ADD v Dockerfiles?

  3. rozdíl mezi cgroups a jmennými prostory

  1. Rozdíl mezi ‚A‘ na příkazovém řádku (bash)??

  2. linux rozdíl mezi sudo crontab -e a jen crontab -e

  3. Rozdíl mezi 'man ls' a 'ls --help'?