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

14

Sé que estos dos comandos hacen lo mismo:

ls -la
ls -al

pero me pregunto si hay alguna preferencia entre ellos. ¿Es una mejor práctica ordenarlos de cierta manera?

Tim
fuente
11
También necesitas esta camiseta: redbubble.com/people/digerati/works/… :)
Sergey
@Sergey ¡Impresionante camisa!
Terrance

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.

heemayl
fuente
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.

caos
fuente
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
usuario55570
fuente
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.

Vynce
fuente
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.

arielf
fuente