Soy nuevo en el trabajo en el shell y el uso de estos comandos parece arbitrario. ¿Hay alguna razón por la cual una bandera tiene un solo guión y otra podría tener un guión doble?
Soy nuevo en el trabajo en el shell y el uso de estos comandos parece arbitrario. ¿Hay alguna razón por la cual una bandera tiene un solo guión y otra podría tener un guión doble?
Respuestas:
Un solo guión puede ser seguido por múltiples banderas de un solo carácter. Un guión doble prefija una opción única de varios caracteres.
Considere este ejemplo:
tar -czf
En este ejemplo, -czfespecifica tres banderas de un solo carácter: c, z, y f.
Ahora considere otro ejemplo:
tar --exclude
En este caso, --excludeespecifica una opción única de varios caracteres denominada exclude. El guión doble de ambigüedad el argumento de línea de comandos, asegurando que tarlo interpreta como excludelugar de una combinación de e, x, c, l, u, d, y e.
cdrecordmencionó hace años en los comentarios anteriores.
Todo depende del programa. Por lo general, "-" se usa para las opciones "cortas" (una letra, -h), y "-" se usa para las opciones "largas" (er) (--help).
Las opciones cortas generalmente se pueden combinar (por lo que "-h -a" es lo mismo que "-ha")
En 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 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.
Realmente es una convención. Sin embargo, puede ayudar a los analizadores a conocer de manera más eficiente las opciones pasadas al programa. Además, hay utilidades ordenadas que pueden ayudar a analizar estos comandos, como getopt(3)el no estándar getopt_long(3)para ayudar a analizar los argumentos de un programa.
Es bueno, ya que podemos tener múltiples opciones cortas combinadas, como dicen otras respuestas, como tar -xzf myfile.tar.gz.
Si hubiera un argumento "lisa" para ls, probablemente tendría un significado diferente para escribir ls -lisaque ls --lisa. Los primeros son los l, i, s, y alos parámetros, no la palabra.
De hecho, podría escribir ls -l -i -s -a, lo que significa exactamente lo mismo que ls -lisa, pero eso dependería del programa.
También hay programas que no obedecen esta convención. Lo más notable para mi vista, ddy gcc.
opciones cortas con un solo guion frente a opciones largas con un doble guion
las opciones cortas se pueden combinar en un solo argumento;
for example: ls -lrt #instead of ls -l -r -t
Si permitimos opciones largas con un solo guión, causa ambigüedad. Para resolver esto, usamos doble guión para opciones largas.