Почему у некоторых рекурсивный флаг -r в одних и ниже в других?

8

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

cp -r foo/ bar/

chmod -R 777 foobar/

Есть причина для этого?

Ли Кварелла
источник

Ответы:

8

cp на самом деле принимает оба.

От cp --help:

  -R, -r, --recursive          copy directories recursively

Для согласованности большинство команд оболочки используют -Rв качестве рекурсивного флага, вероятно, потому что они имитируют поведение ls.

От ls --help:

  -r, --reverse              reverse order while sorting
  -R, --recursive            list subdirectories recursively
Деннис
источник
1
Кроме того, chmod -rуже используется для обозначения чего-то другого, кроме рекурсивного!
Дарт Андроид
3

Я не уверен, что есть какая-то конкретная причина несоответствия, кроме того, что программисты могут использовать любые флаги, которые они хотят.

Я не думаю, что есть какая-то форма стандарта для этого, поэтому трудно ожидать, что все последуют этому примеру.

Дарио Руссо
источник
7
Причина, скорее всего, будет исторической. В более широком мире Unix, который восходит к 70-м годам, рекурсивные переключатели не всегда были там, и некоторые команды уже использовали -r в качестве переключателя. Поскольку команды часто используются в сценариях, существует огромная инерция, связанная с обратной совместимостью, поэтому эти вещи в основном никогда не меняются - вы можете добавлять опции в программу, но горе разработчику, который пытается изменить давно установленную функциональность.
Стефани