Различие между CP-r и CP-R (копируют команду),

Я, оказывается, думаю, что "энергия является модальным" комментарием выше, является неправильным. Vim имеет команды. Можно сделать "11aNow, время для всех хороших мужчин.." и закончите с 11 идентичными новыми строками текста в Вашем файле. Это - команда, не режим. Но существует на самом деле очень простое различие в командах Vim по сравнению с командами Emacs. Я не совсем уверен, что могу описать это, но Eric Fischer включил редактирование строки Emacs-стиля в драйвер 10 TTY + несколько лет назад и опубликовал статью об этом:

http://www.usenix.org/event/usenix99/full_papers/fischer/fischer.pdf

Он нашел, что редактирование строки стиля Emacs существенно отличалось, чем vi-стиль.

Таким образом, Emacs имеет преимущество, что много других вещей (удар, gnuplot, zsh, ksh некоторые другие я не могу думать первое, что пришло на ум) все заканчивают тем, что реализовали редактирование строки Emacs-стиля.

Я должен отметить, что лично использую Vim все время. Я - только очень случайный пользователь Emacs.

63
27.02.2017, 22:58
5 ответов

В то время как -R posix четко определенный, -r не является портативным!

На Linux, в GNU и реализациях BusyBox cp, -r и -R эквивалентны.

С другой стороны, поскольку можно читать в странице руководства POSIX cp, -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.
76
27.01.2020, 19:32
  • 1
    Одно из различий было бы то, что в OSX, например, -r скопирует реальные файлы, на которые указывают символьные ссылки в то время как -R скопирует символьную ссылку, которая является тем, что она предназначается большинство времен. –  nacho4d 15.04.2013, 07:35

Различие - то, что каждый использует нижний регистр "R", и другой использует капитал "R". Кроме того, никакое различие. То же самое, если Вы используете --recursive долгая опция.

18
27.01.2020, 19:32
  • 1
    Из страницы справочника:-R,-r, - рекурсивный - копируют каталоги рекурсивно –  Dave Jennings 14.08.2011, 11:29
  • 2
    @DaveJennings: Просто, потому что они эквивалентны на одной платформе, не означает, что они находятся на всех. На некоторых реализациях cp на самом деле существует различие. См. ответ Random832. @Ignacio необходимо включать спецификатор в этот ответ, в котором говорится "если Ваш cp современная реализация GNU" или что-то как этот. –  Caleb 15.08.2011, 15:30
  • 3
    @Caleb: вопрос отмечен "Linux". Чем еще это было бы? –  Ignacio Vazquez-Abrams 15.08.2011, 23:06
  • 4
    R и-r дают другое поведение в некоторых системах, которые я использую (OS X, FreeBSD, BusyBox coreutils; не уверенный, которые в данный момент). Я решил давно, что было благоразумно всегда использовать -R только, и на самом деле некоторые страницы справочника в системах, просто упомянутых также, рекомендуют это. –  dubiousjim 15.11.2012, 16:17

Нижний регистр -r была более старая опция, представленная в 4.1BSD, который просто скопирует все некаталоги как файлы. Таким образом, если бы это встретилось с устройством или FIFO, то это открыло бы его, считать содержание и создать файл в месте назначения с содержанием.

Верхний регистр -R была стандартизированная опция (представленный BSD в 4.4BSD, хотя более ранние версии имели его как синоним к -r) который был бы, при обнаружении с устройством, FIFO, или другим специальным файлом, сделать эквивалентный специальный файл в месте назначения.

Много реализаций действительно все еще поддерживают это различие, но некоторые (включая версию GNU, типичную к Linux) только, обеспечивают -R семантика, с -r как синоним.

18
27.01.2020, 19:32
[1187199] В OS X и старых версиях FreeBSD [1187573]-r[1187574] это как [1187575]-R -L -копирование содержимого[1187576] в coreutils, или оно следует по сим-ссылкам и читает содержимое специальных файлов и FIFO. mkdir a;touch b;ln -s $PWD/b a;cp -r a c[1187578] заменяет сим-ссылку на целевой файл в OS X, [1187579]mkdir a;mkfifo a/b; cp -r a c[1187580] блокируется чтение FIFO, и [1187581]mkdir a;ln -s /dev/zero a;cp -r a b[1187582] начинает заполнять [1187583]b/zero[1187584] нулями. Со страницы руководства [1187585]cp[1187586] в OS X и старых версиях FreeBSD:

Ajaxterm


В новых версиях FreeBSD [1187587]-r[1187588] эквивалентно [1187589]-RL[1187590]:

http://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html[1187592]:-копируйте содержимоеЕсли копировать рекурсивно, скопируйте содержимое любых специальных файлов (например, FIFO и файлов устройств), как если бы они были обычными файлами. Это означает попытку прочитать данные в каждом исходном файле и записать их по назначению. Обычно использование этой опции является ошибкой, так как она обычно оказывает нежелательное воздействие на специальные файлы, такие как FIFO, и те, которые обычно находятся в каталоге [1187897]/dev[1187898]. В большинстве случаев, [1187899]cp -R -копирование содержимого[1187900] будет зависать бесконечно, пытаясь читать из FIFO и специальных файлов, таких как [1187901]/dev/console[1187902], и он заполнит целевой диск, если вы используете его для копирования [1187903]/dev/zero [1187904]. Этот параметр не действует, если не копировать рекурсивно, и не влияет на копирование символических ссылок.

3
27.01.2020, 19:32

одно из различий, которое я обнаружил, что -r не копирует скрытые каталоги, в то время как -R копирует скрытые каталоги.

Я протестировал его каталог .git в целевой директории и пришёл к вышеприведённому выводу. В настоящее время я использую CentOS.

Может, я и ошибаюсь, но это открыто для обсуждения.

-1
27.01.2020, 19:32

Теги

Похожие вопросы