No hay un estándar generalizado. Hay algo de consistencia, p. en los programas GNU, pero debe consultar la documentación de cada programa.
Citando a Wikipedia, énfasis mío:
En los sistemas similares a Unix, el guión ASCII menos se usa comúnmente para especificar opciones. El carácter suele ir seguido de una o más letras . Un argumento que es un solo guión-menos por sí mismo sin ninguna letra generalmente especifica que un programa debe manejar datos provenientes de la entrada estándar o enviar datos a la salida estándar. En algunos programas se usan dos caracteres de guión y menos (--) para especificar "opciones largas" donde se usan nombres de opciones más descriptivos . Esta es una característica común del software GNU.
Por lo general, los guiones indican un argumento predefinido. Creo que se usa para diferenciarlos de, p. nombres de archivo u otras etiquetas que podría usar como argumentos. Sin embargo, ese no es siempre el caso (ver más abajo).
A menudo encontrará el mismo argumento disponible tanto como opción corta como larga, como p. en ls.
Algunos programas usan un solo guión para las opciones de un carácter y dos guiones para las opciones de varios caracteres, pero no todos (GNU find
me viene a la mente). Algunos programas tienen guiones opcionales o los omiten por completo (tar
o BSD ps
vienen a la mente).
A veces opciones largas (--foo
) requieren argumentos, mientras que las opciones cortas (-f
) no (o al menos implica un argumento predeterminado específico).
Opciones cortas (por ejemplo, cut -d ' '
) puede tener argumentos, mientras que las opciones largas (por ejemplo, ls --all
) no necesariamente los tienen.
Para establecer un comportamiento particular de un programa, a veces necesita usar una opción corta, para otras necesita usar una opción larga y para algunas tiene una opción.
En una nota relacionada, algunos programas no pueden manejar espacios en blanco entre una opción y su argumento, mientras que otros no pueden.
Como escribí al principio, simplemente no hay un comportamiento o estándar común. A menudo, puede rastrear un comportamiento similar a la misma biblioteca utilizada para el análisis de argumentos, pero probablemente no quiera leer las fuentes para averiguarlo.
Realmente no puedes inferir la sintaxis de argumentos de un programa a partir de otro.
Si también considera Windows, empeora aún más:mientras que las llamadas de línea de comandos de Windows tradicionalmente usan /f
(al menos la mayor parte del tiempo, caracteres individuales) para opciones, con :
como separador entre las opciones y su valor (ver, por ejemplo, aquí); Las utilidades multiplataforma están muy extendidas (como las que menciona) y traen la sintaxis de guiones más común para los argumentos, con todas las inconsistencias mencionadas anteriormente.
Solo haz ls --help
y mira las opciones; debería ser obvio para ti.
No tiene nada que ver con los parámetros en absoluto. Muchas opciones tienen una forma corta y una forma larga, y muchas tienen una y no la otra.
Y también, con respecto a los parámetros, es simplemente que en la forma larga cuando toman un parámetro, parece que siempre es con un igual. Pero, obviamente, los cortos pueden tomar parámetros de la misma manera; simplemente no usan un igual.
Aquí hay un extracto de ls --help
(man ls
da información equivalente). Observe cómo algunos tienen una forma larga sin una forma corta (--author
, --block-size
), algunos tienen una forma corta sin una forma larga (-c
, -f
, -g
), y algunos tienen tanto una forma larga como una forma corta (-A
/--almost-all
, -b
/--escape
).
-a, --all do not ignore entries starting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author of each file
-b, --escape print octal escapes for nongraphic characters
--block-size=SIZE use SIZE-byte blocks
-B, --ignore-backups do not list implied entries ending with ~
-c with -lt: sort by, and show, ctime (time of last
modification of file status information)
with -l: show ctime and sort by name
otherwise: sort by ctime
-C list entries by columns
--color[=WHEN] control whether color is used to distinguish file
types. WHEN may be `never', `always', or `auto'
Esta es una convención proveniente de *nix. El guión doble precede a las opciones cuando se escriben en su totalidad , , mientras que un guión simple precede a las opciones cuando se escriben en forma abreviada . Por ejemplo ls --all --l
, se puede acortar a ls -al
. Como se ve, no todas las opciones tienen sus equivalentes de una sola letra, aunque las más usadas suelen tenerlos.
Si la opción toma un argumento realmente no hace una diferencia:puede tomarlos o no tomarlos, independientemente de la forma en que ingrese la opción.
Cuando se escriben para un uso único, en realidad no importa, pero cuando se escriben comandos, por ejemplo, en archivos .alias, se acostumbra usar el formato completo. Puramente por la facilidad de lectura para la siguiente persona.