EDIT: se ha señalado que este estilo es un GNU-ism, y que los Unixes no basados en GNU tienden a usar una sintaxis de un solo guión (en particular, las variantes de OS X y BSD) .
A pesar de su estado GNU-ism, muchos programas de estilo Unix recién escritos usan este estilo:
-
--long-option
para nombres de opción largos,
-
-s
para opciones cortas (un carácter),
-
-abc
para varias 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 only la última tenga un argumento.
- La misma opción "semántica" puede tener varios alias, generalmente uno corto (más rápido de escribir) y uno largo (más fácil de recordar).
Cualquier persona que haya usado un shell de Linux durante un período de tiempo debe estar familiarizado con este estilo 1 , por lo que tiene el principio de menos sorpresas. También es bueno permitir la agrupación de múltiples opciones cortas sin ser ambiguo con opciones largas.
1 Por ejemplo, algunos de los programas que usan este estilo (en mi máquina Linux): ls
, grep
, man
, sed
, bash
, etc. ( EDIT: estos son aparentemente GNU-ismos, aunque las máquinas BSD y OS X no usan este estilo)
Hay varias bibliotecas que pueden encargarse de analizar esto por usted (las más conocidas son Implementación de GNU de getopt ), solo necesita que especifique qué opciones largas y cortas existen, ya sea que tomen un argumento, y qué hacer cuando se encuentra una opción. (Y, por supuesto, qué hacer para los argumentos posicionales, es decir, los que no comienzan con -
y no son argumentos de 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 comandos. Demasiados scripts se romperían, y muchos usuarios acostumbrados a la sintaxis anterior se quejarían. javac
probablemente fue influenciado por gcc
y amigos, que también siguen una sintaxis antigua por razones históricas.