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

Касательно копирования директории - все более чем очевидно для человека, который открывал букварь хоть немного.
Директория - это файл со списком файлов, входящих в эту директорию. Очевидно, что просто скопировав этот файл командой cp, ты скопируешь только список (содержимое не скопируется). Это вообще лишено смысла, поэтому так делать запретили.
Чтобы скопировать содержимое директории, утилита cp должна пройти во всем файлам из списка, рекурсивно (потому что среди них тоже могут быть директории) и скопировать каждый.
Очевидно, что действие “скопировать один файл” и действие “скопировать кучу файлов по списку из вот этого файла-директории” это две большие разницы.
Именно поэтому там нужен ключ.
А если ты хочешь имея опыт мышеклика в винде интуитивно понять командную строку, не читая букварей, то это обречено на провал.
Тогда ты, конечно, покажешь нам, как прочитать содержимое директории, используя системный вызов read?
К чему такой странный вопрос? Тоже хочешь букварь почитать?
Есть regular files и есть special files. Директория - это special file. Очевидно, что, именно поэтому, она не читается при помощи read. Хотя, в старых добрых настоящих юниксах, на старых файловых системах вроде читалась.
Это никак не отменяет того факта что директория это файл.
А почему это всякие разные special files, ну, например, /dev/null, /dev/fb*, /dev/input/event* и т.д, читаются при помощи read?
Читать нельзя, писать нельзя, очень полезный файл. А что такое файл, кстати?
Потому что они разные.
Как это?? Ты не можешь зайти в директорию? Не можешь файлы создавать в директориях? Что у тебя за ОС такая интересная?
Ну да, не могу использовать read/write, чтобы читать/изменять каталог.