Я cp руками уж лет 20 не дёргал, поэтому все “нюансы” из головы давно вылетели, но тут пришлось и я с удивлением обнаружил, что это чудо не копирует директории, пока его специально не попросить об этом.

Интересно, какая была для этого причина? Почему для копирования директорий я должен использовать дополнительные параметры?

  • UsruserOP
    link
    fedilink
    arrow-up
    0
    ·
    4 years ago

    Ты 20 лет на необитаемом острове что ль жил?

    Не, я жил в современном человеческом обществе, а не в хранилище музея компов и тостеров. Нахрена сейчас кому может понадобиться копировать что-то с помощью cp? Мне пронадобилось раз в 20 лет из-за небольшого ЧП. А обычно у меня всё нормально работает.

    • JamesHolden
      link
      fedilink
      arrow-up
      0
      ·
      4 years ago

      Нахрена сейчас кому может понадобиться копировать что-то с помощью cp?

      Офигеть. Тогда тебя ждет еще более удивительное открытие. Есть такая вещь - скрипты!

      И прикинь, они иногда тоже копируют! Как де они это делают? Наверное, запускают total commander и эмулируют щелчки по нему мышью, не иначе.

      • UsruserOP
        link
        fedilink
        arrow-up
        0
        ·
        4 years ago

        На скрипты мне насрать: там может твориться любая дичь. Всем пофиг. Написал и забыл.

        Я говорю по вызов cp пользователем.

        • JamesHolden
          link
          fedilink
          arrow-up
          0
          ·
          4 years ago

          То есть у пользователя должен быть свой какой-то отдельный cp? И вызываешь вручную ты его через какой-то другой баш, не тот, который исполняет скрипты?

          Вот это чудеса…

          Ну почитай основы юникс систем для начала.

          • UsruserOP
            link
            fedilink
            arrow-up
            0
            ·
            4 years ago

            То есть у пользователя должен быть свой какой-то отдельный cp?

            Ок, начнём сначала. Зачем нужен отдельный -r параметр?

            • JamesHolden
              link
              fedilink
              arrow-up
              0
              ·
              4 years ago

              Зачем нужен отдельный -r параметр?

              Читай выше.

        • JamesHolden
          link
          fedilink
          arrow-up
          0
          ·
          4 years ago

          Касательно копирования директории - все более чем очевидно для человека, который открывал букварь хоть немного.

          Директория - это файл со списком файлов, входящих в эту директорию. Очевидно, что просто скопировав этот файл командой cp, ты скопируешь только список (содержимое не скопируется). Это вообще лишено смысла, поэтому так делать запретили.

          Чтобы скопировать содержимое директории, утилита cp должна пройти во всем файлам из списка, рекурсивно (потому что среди них тоже могут быть директории) и скопировать каждый.

          Очевидно, что действие “скопировать один файл” и действие “скопировать кучу файлов по списку из вот этого файла-директории” это две большие разницы.

          Именно поэтому там нужен ключ.

          А если ты хочешь имея опыт мышеклика в винде интуитивно понять командную строку, не читая букварей, то это обречено на провал.

          • moonmadness
            link
            fedilink
            arrow-up
            0
            ·
            4 years ago

            Директория - это файл со списком файлов

            Тогда ты, конечно, покажешь нам, как прочитать содержимое директории, используя системный вызов read?

            • JamesHolden
              link
              fedilink
              arrow-up
              0
              ·
              4 years ago

              К чему такой странный вопрос? Тоже хочешь букварь почитать?

              Есть regular files и есть special files. Директория - это special file. Очевидно, что, именно поэтому, она не читается при помощи read. Хотя, в старых добрых настоящих юниксах, на старых файловых системах вроде читалась.

              Это никак не отменяет того факта что директория это файл.

              • moonmadness
                link
                fedilink
                arrow-up
                0
                ·
                4 years ago

                Директория - это special file. Очевидно, что, именно поэтому, она не читается при помощи read.

                А почему это всякие разные special files, ну, например, /dev/null, /dev/fb*, /dev/input/event* и т.д, читаются при помощи read?

                Это никак не отменяет того факта что директория это файл.

                Читать нельзя, писать нельзя, очень полезный файл. А что такое файл, кстати?

                • JamesHolden
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  4 years ago

                  А почему это всякие разные

                  Потому что они разные.

                  Читать нельзя, писать нельзя

                  Как это?? Ты не можешь зайти в директорию? Не можешь файлы создавать в директориях? Что у тебя за ОС такая интересная?

                  • moonmadness
                    link
                    fedilink
                    arrow-up
                    0
                    ·
                    4 years ago

                    Ты не можешь зайти в директорию? Не можешь файлы создавать в директориях?

                    Ну да, не могу использовать read/write, чтобы читать/изменять каталог.