No hay un estándar generalizado. Hay cierta coherencia, por ejemplo, en los programas GNU, pero debe verificar la documentación de cada programa.
Citando Wikipedia , el énfasis es mío:
En sistemas tipo 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 letras, generalmente especifica que un programa debe manejar los datos que provienen de la entrada estándar o enviar datos a la salida estándar. Se usan dos guiones – menos caracteres (-) en algunos programas 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, por ejemplo, nombres de archivos 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 como opción corta y larga, como por ejemplo 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 me find
viene a la mente). Algunos programas tienen guiones opcionales o los omiten por completo ( tar
o BSD me ps
viene a la mente).
A veces, las opciones largas ( --foo
) requieren argumentos, mientras que las opciones cortas ( -f
) no (o al menos implican un argumento predeterminado específico).
Las opciones cortas (por ejemplo cut -d ' '
) pueden tener argumentos, mientras que las opciones largas (por ejemplo ls --all
) no necesariamente las tienen.
Para establecer un comportamiento particular de un programa, a veces necesita usar una opción corta, para otros necesita usar una opción larga, y para algunos 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.
Como escribí al principio, simplemente no hay un comportamiento común o estándar. A menudo, puede rastrear un comportamiento similar a la misma biblioteca utilizada para el análisis de argumentos, pero probablemente no desee leer las fuentes para descubrir esto.
Realmente no se puede inferir la sintaxis de argumento de un programa a partir de la de otro.
Si también considera Windows, empeora aún más: mientras que la línea de comandos de Windows utiliza tradicionalmente /f
(al menos la mayoría de las veces, caracteres individuales) para las opciones, con :
el separador entre las opciones y su valor (ver, por ejemplo, aquí ); Las utilidades multiplataforma están muy extendidas (como las que menciona) y traen consigo la sintaxis de guiones más común para los argumentos, con todas las inconsistencias mencionadas anteriormente.
-i
vs--input
o-n
--dry-run
.