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, -czf
especifica tres banderas de un solo carácter: c
, z
, y f
.
Ahora considere otro ejemplo:
tar --exclude
En este caso, --exclude
especifica 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 tar
lo interpreta como exclude
lugar de una combinación de e
, x
, c
, l
, u
, d
, y e
.
cdrecord
mencionó 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 -lisa
que ls --lisa
. Los primeros son los l
, i
, s
, y a
los 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, dd
y 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.