A menudo sucede que quiero aplicar una operación de forma recursiva. Algunos comandos, como grep, usan una r minúscula para indicar la recursividad. Por ejemplo
grep -r foo .
Otros comandos parecen preferir una R mayúscula:
chmod -R 755 .
Constantemente los estoy entendiendo mal y olvidando cuál es cuál. ¿Hay alguna lógica detrás de la selección de casos para estos argumentos?

--recursive, no es probable que hagan lo incorrecto.-rsignifica desarmar el bit de lectura para todos los nivelesRespuestas:
La mayoría de los comandos de POSIX que tienen opción de directorio recorrido recursivo (
ls,chmod,chgrp,chmod,cp,rm) tienen-Rpor ello.rmtambién tiene-rporque eso es lo que era inicialmente, mucho antes de POSIX.Ahora, el comportamiento varía cuando se encuentran enlaces simbólicos al caminar por el árbol. POSIX trató de hacer las cosas consistentes agregando las opciones
-L/-H/Ppara dar al usuario la oportunidad de decidir qué hacer con los enlaces simbólicos, dejando el valor predeterminado cuando ninguno se proporciona sin especificar.POSIX
grepno tiene-ro-R.GNU
grepinicialmente no tenía ninguno.-rfue agregado en 1998. Eso estaba siguiendo enlaces simbólicos.-Rfue agregado como sinónimo en 2001 por coherencia con las otras utilidades. Eso seguía siguiendo los enlaces simbólicos.En 2012 (grep 2.12),
-rfue cambiado por lo que ya no sigue los enlaces simbólicos, posiblemente porque-L,-Hya se utiliza para otra cosa.Los BSD
grepse basaron en GNU grep durante mucho tiempo. Algunos de ellos han reescrito los suyos y han mantenido más o menos compatibilidad con GNUgrep. Apple OS / X abordó el problema del enlace simbólico de manera diferente.-ry-Rson iguales y no siguen enlaces simbólicos. Sin-Sembargo, hay una opción que actúa como la opciónchmod/cp/ para seguir enlaces simbólicos.find-Lfuente
rmtenía una opción recursiva antes que las demás. Fue-r. Luegocpganó una coincidencia-r. Entonceslsquería tener una opción recursiva, perols -rya significaba "clasificación inversa", así que tenía que serlo-R. Allí la tensión entre-Ry-rcomenzó.-Rera el único que podía agregarse constantemente a todas las utilidades relevantes, perorm -rya era el uso tradicional bien conocido. Entonces apareció GNU y dijo "¡la consistencia y la tradición son para los cuadrados, hombre!"Ninguno en absoluto. Simplemente depende de lo que elijan los desarrolladores. A menudo es porque ambas
-ry-Rson opciones válidas. En los programas que citó, por ejemplo:versiones recientes de GNU
grep:chmodno tiene-ropción, por lo que, presumiblemente, los desarrolladores prefieren-R. Sin embargo, por supuesto,-res una cadena de permisos válida (como lo señaló @Arkadiusz Drabczykso), por lo que realmente no se puede usar allí.fuente
grepversion GNU grep 2.12,-ry-Rson lo mismo. Con chmod,-Rse define por POSIX.grep (GNU grep) 2.15y recuerdo haber visto esto en versiones anteriores. ¿Estás seguro de que no es el caso en el tuyo? Proporcionan esencialmente los mismos resultados en la mayoría de los casos, solo se comportan de manera diferente con los enlaces. En cuanto achmod, que bien puede ser definido por POSIX, pero que todavía es, presumiblemente, debido a que los originaleschmoddesarrolladores optaronRpor encimar.-rya que esa es una cadena de permisos válida.Principalmente, se reduce a una preferencia personal del desarrollador. A veces, sin embargo, se elige una opción en mayúscula si se toma una opción en minúscula preferida para otra cosa que los desarrolladores creen que es más importante que, por ejemplo, operar de forma recursiva. En caso de chmod
-res un modo válido. Por ejemplo:fuente
Siempre que sea posible, use las versiones GNU de estas utilidades y luego puede usar los nombres más largos para las opciones.
No.
O no mucho. Las utilidades de Unix se desarrollaron poco a poco y las opciones de comando reflejan las elecciones individuales de sus desarrolladores principales o únicos. Solo hay 26 letras de opción en minúsculas ASCII disponibles, que es el conjunto preferido (los comandos generalmente están en minúsculas para facilitar la escritura), y este conjunto limitado conduce a conflictos mnemónicos. Los conflictos generan inconsistencias a medida que las nuevas versiones de comandos / utilidades adquieren nuevas características .
fuente
Hace 20 años, cuando aprendí UNIX, mi mentor me dijo así: "Será mejor que escriba la opción recursiva en mayúscula R siempre. Debido a que algunos comandos tienen un significado diferente en la opción minúscula r, pero R mayúscula funciona principalmente como opción recursiva en todas partes. Y le dará la buena costumbre de ser cauteloso con [rm * -Rf] al presionar la tecla Mayús al presionar R. "
fuente