24 votes

Que signifie le trait d'union "-" dans "tar xzf -" ?

Quand j'essaie d'installer dropbox à partir de la ligne de commande, je lis les commandes suivantes

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

que fait - Vous voulez dire ici ? C'est le répertoire précédent ?

42voto

Eliah Kagan Points 111731

Certaines commandes acceptent - à la place d'un nom de fichier, soit :

  • Pour écrire à sortie standard plutôt que vers un fichier nommé. C'est ce que le - transmis à wget après -O fait.
  • Pour lire de entrée standard plutôt qu'à partir d'un fichier nommé. C'est ce que le - transmis à tar après xzf .

La commande que vous avez montrée télécharge un fichier d'archive avec wget et le dépaqueter avec tar . Pour ce faire, la sortie de wget es canalisation ( | ) à l'entrée de tar . C'est pourquoi wget écrit sur la sortie standard au lieu d'un fichier et tar lit depuis l'entrée standard au lieu d'un fichier.

12voto

Marcus Müller Points 221

C'est juste un nom de fichier qu'un grand nombre de programmes Unix interprètent comme "au lieu d'ouvrir réellement un fichier, lire à partir de stdin (ou écrire à stdout )."

Cela signifie qu'il faut lire l'entrée qui est transmise au programme ; dans votre cas, c'est la sortie de wget.

5voto

Tim Points 151

En - argument pour tar spécifie que l'archive doit être lue à partir de stdin au lieu d'un fichier. Depuis le Manuel tar GNU :

Si vous utilisez - comme un nom de l'archive , tar lit l'archive depuis l'entrée standard (lors du listage ou de l'extraction de fichiers)

Les autres commandes ont le même comportement, et il est spécifié par l'option Norme POSIX.1-2017 :

Ligne directrice 13 :

Pour les utilitaires qui utilisent des opérandes pour représenter des fichiers à ouvrir en lecture ou en écriture, l'option ' - L'opérande ' doit être utilisé pour signifier seulement l'entrée standard (ou la sortie standard lorsqu'il est clair, d'après le contexte qu'un fichier de sortie est spécifié) ou un fichier nommé - .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X