EDITAR: Se ha señalado que este estilo es un GNU-ismo, y que los Unix no basados en GNU tienden a usar una sintaxis de un solo guión (en particular, las variantes OS X y BSD).
A pesar de su estado de GNU-ismo, muchos programas de estilo Unix recientemente escritos usan este estilo:
--long-option
para nombres largos de opciones,
-s
para opciones cortas (un caracter),
-abc
para múltiples opciones cortas sin argumentos (un carácter por opción).
- Opciones con argumentos:
--long arg
o --long=arg
para opciones largas,
-s arg
, -sarg
u (opcionalmente) -s=arg
para opciones cortas. Esto se puede combinar con otras opciones cortas, siempre que solo la última tenga un argumento.
- La misma opción "semántica" puede tener varios alias, más comúnmente uno corto (más rápido de escribir) y uno largo (más fácil de recordar).
Cualquiera que haya usado un shell de Linux por un período de tiempo debería estar familiarizado con este estilo 1 , por lo que tiene el principio de la menor sorpresa. Permitir la agrupación de múltiples opciones cortas sin ser ambiguo con las opciones largas también es bueno.
1 Por ejemplo, algunos de los programas que utilizan este estilo (en mi máquina Linux): ls
, grep
, man
, sed
, bash
, etc ( EDIT: estos son aparentemente GNU-ismos embargo, las máquinas BSD y OS X no utilizan este estilo)
Hay varias bibliotecas que pueden encargarse de analizar esto por usted (la más conocida es la implementación de getopt de GNU ), solo necesita que especifique qué opciones largas y cortas existen, si toman un argumento y qué hacer cuando un se encuentra la opción (Y, por supuesto, qué hacer para los argumentos posicionales, es decir, aquellos que no comienzan -
y no son argumentos para las opciones anteriores)
find
es un programa muy antiguo (o quizás más probable: una versión reescrita de un programa muy antiguo) que no se puede cambiar fácilmente para usar una nueva sintaxis de línea de comando. Se romperían demasiados scripts y se quejarían demasiados usuarios acostumbrados a la sintaxis anterior. javac
probablemente fue influenciado por gcc
y amigos, que también siguen una sintaxis antigua por razones históricas.