Que signifie «-» comme argument d'une commande?

9

J'ai trouvé ce lien sur la façon d' ouvrir tgz en une seule étape .

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

Que signifie le «-»?

ripper234
la source
1
De plus, la plupart des versions de tar prennent désormais en charge nativement gzip et bzip. Pour un fichier tar gzip-ed tar xfz target.tar.gzet pour bziptar xfj target.tar.bz2
Compte supprimé

Réponses:

18

C'est une convention courante à utiliser -dans un argument de nom de fichier pour signifier stdinou stdout; tarsuit la même convention. Depuis la page de manuel:

   -f, --file [HOSTNAME:]F
          use archive file or device F (default "-", meaning stdin/stdout)
Michael Mrozek
la source
1
Ce n'est qu'une convention; vous devez lire la page de manuel de la commande particulière pour voir ce que cela -signifie. Stdin / stdout est de loin le sens le plus courant, mais il en existe d'autres. Par exemple, pour certaines versions, envcela signifie "commencer avec un environnement vide".
cjm
0

Une autre convention consiste à utiliser «-» pour indiquer la fin des drapeaux et le début des noms de fichiers. Ce comportement est intégré à getopt (3) sur RedHat 4, au moins. Je ne trouve pas de page de manuel Red Hat qui utilise «-» pour indiquer la fin des arguments, ils semblent tous utiliser «-» pour le faire. La page de manuel awk a '-' dans ce contexte, donc peut-être que seules les anciennes commandes "héritage" Unix ou Solaris utilisent '-' comme argument - séparateur de noms de fichiers.

Bruce Ediger
la source
3
--signale la fin des options, donc tout ce qui vient après est un opérande. -n'est pas une option, donc elle et tout ce qui vient après est un opérande. Il s'agit d' un comportement standard . Pour beaucoup de commandes, telles que tar, l'opérande des -moyens d' entrée ou la sortie standard . Sur de nombreux obus, set - -aest équivalent à set -- -a, et sur certains anciens obus Bourne set - -aétait la seule forme acceptée, mais c'est une exception avec le setintégré.
Gilles 'SO- arrête d'être méchant'
Les programmes Solaris suivent principalement la convention standard POSIX de --séparer les options des arguments.
alanc