‹ BackHN Continuity

Thread

cp: -r or -R?

127 points · 110 comments · zdw

  1. drhagen · · focus · HN ↗
    It always seemed like the recursive flag of cp was an implementation detail leaking into the UI. Like, I get that copying a file requires creating more than one inode, but...so? Eventually, graphical OSes agree with me—copy/paste works the same on folders as it does on files.
    1. dotancohen · · focus · HN ↗
      Thirteen years ago I asked the same question:

      <a href="https:&#x2F;&#x2F;unix.stackexchange.com&#x2F;questions&#x2F;82485&#x2F;when-wouldnt-one-want-cp-to-be-recursive" rel="nofollow">https:&#x2F;&#x2F;unix.stackexchange.com&#x2F;questions&#x2F;82485&#x2F;when-wouldnt-...

      It seems that recursive by default would have been much more intuitive.

      1. JdeBP · · focus · HN ↗
        It&#x27;s rather sad that none of the answers were that the cp command simply did not gain a recursive option until the 1980s, well into the 1980s if you were on one side of the Unix wars.

        Yes, seriously. When you read about the supposed evils of cat -v from the Unix nostalgia people, remember that it was the same people who gave cat its -v option who also gave cp its -r option, in 4.2BSD.

        It took over half a decade to percolate out of the BSD world, too. AT&amp;T Unix System 5 did not have an -r option to cp. Here&#x27;s Brandon S. Allbery explaining in 1987 how one copies directories on AT&amp;T Unix System 5 Releases 2&#x2F;3 by combining find and cpio -p:

        * <a href="https:&#x2F;&#x2F;groups.google.com&#x2F;g&#x2F;comp.unix.questions&#x2F;c&#x2F;XiumTgkcYRE&#x2F;m&#x2F;kJwkU5SlOasJ" rel="nofollow">https:&#x2F;&#x2F;groups.google.com&#x2F;g&#x2F;comp.unix.questions&#x2F;c&#x2F;XiumTgkcYR...

        Originally we read directories as raw byte streams and liked it, you know. (-:

        1. ButlerianJihad · · focus · HN ↗
          You know, when I came into Unix in the 1990s we still didn&#x27;t care about recursive copy, because all admins learned the standard idiom to copy over a hierarchy:

            tar cf - . | ( cd &#x2F;new&#x2F;path; tar xpf - )
          
          or thereabouts, because at the time, `tar` was more than capable of doing all the filesystem tricks that `cp` was clumsy with, and we understood this idiom well. You could also `dump` an entire block device.

          I believe that my motivation was that the Unix wars were still raging hotly; as a sysadmin I needed portable skills and I wasn&#x27;t tied or certified to one vendor&#x27;s Unix, and therefore I sought out idioms that worked on SunOS, HP&#x2F;UX, AIX, BSD, you name it. &quot;cp -r&quot; didn&#x27;t enjoy that stable support at the time.

          1. JdeBP · · focus · HN ↗
            I don&#x27;t care all that much even today. (-:

            I use pax -r -w most of the time.

Open on Hacker News to reply ↗

Unofficial Hacker News client; not affiliated with Y Combinator.