¿Debo ordenar alfabéticamente las banderas en un comando como buena práctica?


Respuestas:


15

Realmente no importa * a menos que un comando mencione explícitamente. No he encontrado ninguna referencia que ofrezca algo así como una guía sobre cómo poner las opciones una tras otra. Entonces, por razones de legibilidad, las opciones se pueden ordenar alfabéticamente.

* Hay un cavaet muy muy importante que es si alguna opción necesita un nombre de archivo o cualquier otra entrada justo después de que necesite colocarlo en consecuencia.

Por ejemplo, la -fopción de greptoma un archivo como entrada para tomar el patrón a buscar desde el archivo de entrada. Debe dar el comando como, por ejemplo:

grep -cf input.txt file.txt 

Si lo usas como:

grep -fc input.txt file.txt 

fallará ya que se usará ccomo nombre de archivo.


12

Las convenciones POSIX definen en las Directrices 11 y 12 de las Directrices de sintaxis de utilidades que el orden " no debería importar " a menos que no esté documentado para la propia utilidad.

El Manual de referencia de la biblioteca GNU C también respeta las convenciones POSIX en 25.1.1 Convenciones de sintaxis de argumento de programa .

Pero tenga en cuenta que hay varias utilidades que dan en algunas situaciones órdenes estrictas sobre cómo realizar los parámetros (por ejemplo, encontrar). Desde la página de manual de búsqueda :

La -nameprueba viene antes de la -typeprueba para evitar tener que llamar stat(2)a cada archivo.

A veces, la utilidad se queja sobre el pedido.


3
Estrictamente hablando, findsolo tiene algunas opciones, POSIX solo define las dos opciones -Hy -L. El GNU finden Ubuntu tiene algunas opciones más, pero -typey -nameetc. se consideran operadores , no opciones . Y para los operadores, el orden suele ser importante.
geirha

5

Con ls difícilmente puedes equivocarte al ordenar las opciones.

Pero tenga en cuenta que otros comandos pueden tener diferentes respuestas a las opciones según el orden.

Un ejemplo es el comando find. Obtendrá diferentes resultados, por ejemplo, entre:

  find . -ls -mtime -1 

Y

  find . -mtime -1 -ls

3

Si lo que quieres practicar es alfabetizar cadenas cortas, tal vez. Encuentro dos estrategias útiles: hacer palabras (reduce los errores tipográficos) y hacer oraciones (mejora la comprensión).

Para ls, por ejemplo, suelo usarlo ls -halFporque, incluso con las extrañas mayúsculas, soy mejor escribiendo halF que algo como Falh que no es una palabra.

Para tar, por otro lado, tar czvf filenameescribo y digo (en mi cabeza) "tar Create and Zip, Verbosely For filename" porque así es como aprendí lo que significaban las diferentes letras.


Recuerdo e2fsck -fvcckt porque explica la situación en la que me puedo encontrar si devuelve demasiados errores. ;)
Joe

2

Al igual que otros han respondido, no importa (a menos que se documente lo contrario o los argumentos de opción tomen más argumentos).

Pero es preferible ordenar las opciones alfabéticamente es discutible.

Personalmente, encuentro que los mnemónicos proporcionan más valor que el estricto orden alfabético. Es más fácil recordar un conjunto de opciones cuando forman una palabra memorable, por ejemplo, considere:

netstat -tan
# alphabetic is good (by chance) in this case
netstat -ant

vs:

netstat -atn
netstat -nta

Por lo tanto, si se encuentra repitiendo una cierta combinación de opciones para un comando, puede intentar reorganizar las letras en un orden que sea más fácil de recordar.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.