Pourquoi le -r drapeau récursif est-il capital dans certains et inférieur dans d'autres?

8

Certaines commandes utilisent des minuscules rpour leur indicateur récursif tandis que d'autres utilisent une majuscule R.

cp -r foo/ bar/

chmod -R 777 foobar/

Y a-t-il une raison à cela?

Lee Quarella
la source

Réponses:

8

cp accepte en fait les deux.

De cp --help:

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

Par souci de cohérence, la plupart des commandes shell utilisent -Rcomme indicateur récursif , probablement parce qu'elles imitent le comportement de ls.

De ls --help:

  -r, --reverse              reverse order while sorting
  -R, --recursive            list subdirectories recursively
Dennis
la source
1
Aussi, chmod -rest déjà utilisé pour signifier autre chose que récursif!
Dark Android
3

Je ne suis pas sûr qu'il y ait une raison spécifique à l'incohérence autre que le fait que les programmeurs peuvent choisir d'utiliser les indicateurs qu'ils souhaitent.

Je ne pense pas qu'il existe une quelconque forme de norme pour cela, il est donc difficile de s'attendre à ce que tout le monde emboîte le pas.

Dario Russo
la source
7
La raison serait probablement historique. Dans le plus grand monde Unix qui remonte aux années 70, les commutateurs récursifs n'étaient pas toujours là, et certaines commandes avaient déjà utilisé -r comme commutateur. Parce que les commandes sont souvent utilisées dans les scripts, il y a une énorme inertie associée à la compatibilité descendante, donc ces choses ne changent jamais fondamentalement - vous pouvez ajouter des options à un programme, mais malheur au développeur qui essaie de changer une fonctionnalité établie de longue date.
Stephanie