¿Qué significa "-" como argumento para un comando?

9

Encontré este enlace sobre cómo abrir tgz en un solo paso .

gzip -dc target.tar.gz | tar xf -

¿Qué significa el '-'?

ripper234
fuente
1
Además, la mayoría de las versiones de tar ahora admiten gzip y bzip de forma nativa. Para un archivo tar gzip-ed tar xfz target.tar.gzy para bziptar xfj target.tar.bz2
cuenta eliminada el

Respuestas:

18

Es una convención común usar -en un argumento de nombre de archivo para significar stdino stdout; tarsigue la misma convención. Desde la página del manual:

   -f, --file [HOSTNAME:]F
          use archive file or device F (default "-", meaning stdin/stdout)
Michael Mrozek
fuente
1
Esto es solo una convención; debe leer la página de manual del comando en particular para ver qué -significa para él. Stdin / stdout es, con mucho, el significado más común, pero hay otros. Por ejemplo, para algunas versiones envsignifica "comenzar con un entorno vacío".
cjm
0

Otra convención es usar '-' para indicar el final de las banderas y el comienzo de los nombres de los archivos. Ese comportamiento está integrado en el getopt (3) en RedHat 4, al menos. No puedo encontrar una página de manual de Red Hat que use '-' para indicar el final de los argumentos, todos parecen usar '-' para hacer eso. La página de manual de awk tiene '-' en ese contexto, por lo que quizás solo los viejos comandos de "herencia" de Unix o Solaris usan '-' como argumento - separador de nombres de archivo.

Bruce Ediger
fuente
3
--señala el final de las opciones, por lo que todo lo que viene después es un operando. -no es una opción, por lo tanto, y todo lo que viene después es un operando. Este es un comportamiento estándar . Para muchos comandos, como tar, el operando -significa entrada o salida estándar . En muchos shells, set - -aes equivalente a set -- -a, y en algunos viejos shells Bourne set - -aera la única forma aceptada, pero esta es una excepción con el setincorporado.
Gilles 'SO- deja de ser malvado'
Los programas de Solaris siguen principalmente la convención estándar POSIX de --separar opciones de argumentos.
alanc