Réponses:
Dans ce cas, cela signifie «entrée standard». Il est utilisé par certains logiciels (par exemple tar
) lorsqu'un argument de fichier est requis et que vous devez utiliser stdin à la place. Ce n'est pas une construction shell et cela dépend du programme que vous utilisez. Consultez la page de manuel en cas de doute!
Dans ce cas, l'entrée standard est l'argument de l' -f
option. Dans les cas où il -
n'est pas pris en charge, vous pouvez vous en tirer en utilisant quelque chose comme tar xvf /proc/self/fd/0
ou tar xvf /dev/stdin
(ce dernier est largement pris en charge dans diverses unités).
Ne comptez pas sur cela pour dire «entrée standard» universellement. Comme il n’est pas interprété par le shell, chaque programme est libre de le gérer à sa guise. Dans certains cas, il s’agit d’une sortie standard ou de quelque chose de complètement différent: su
cela signifie «lancez un shell de connexion». Dans d'autres cas, ce n'est pas du tout interprété. La mémoire musculaire m'a fait créer pas mal de fichiers nommés, -
car une version d'un programme auquel j'étais habitué ne comprenait pas le tiret.
STDOUT
, selon le contexte.
/dev/stdin
ou /dev/stdout
peut être utilisé si vous voulez vraiment un flux d’entrée / sortie. Notez que c’est un flux, les programmes qui veulent chercher dans un fichier peuvent ne pas fonctionner correctement, comme ce serait le cas avec -
(par exemple, ffmpeg)
bash
, le trait d'union est interprété par le shell. Reportez-vous au document Advanced Bash-Scripting Guide - Chapitre 3. Caractères spéciaux , puis recherchez le texte [tiret] ou "redirection de / vers stdin ou stdout". En utilisant, bash
vous pouvez utiliser le trait d'union dans la plupart des endroits qui attendent un nom de fichier. C'est un complément évident à <| > IMHO
cat
gère -
(consultez la page de manuel). Une version de shell pouvant inclure cat
ou non, mais ce n'est pas strictement le shell entier. De plus, si le shell était manipulé -
, vous pourriez dire écho -
et cela passerait à autre chose. Au lieu de cela, il fait juste écho à un tiret (pas /dev/stdin
ou /proc/self/fd/0
). Et echo test > -
crée simplement un fichier appelé -
, de sorte qu'il ne l'utilise clairement pas non plus. Oh, et la page que vous avez listée ne dit pas qu'elle est gérée par le shell , elle dit que vous pouvez l'utiliser avec, cat
et que les diff
deux comprennent les tirets de manière explicite.
Dans ce cas, il -
est plutôt inutile, si vous utilisez Linux:
GNU tar (la version sous Linux) accepte ses entrées à partir de l'entrée standard par défaut. Si vous ne souhaitez pas ce comportement et souhaitez passer le nom du fichier en tant qu'argument de ligne de commande, vous devez spécifier l'indicateur f
:
tar xf filename
Donc, c'est pareil que
tar x < filename
Ou, si l'entrée est gzippée comme dans votre exemple:
gzip -dc filename | tar x
Indiquer le f
drapeau ici n'a aucun sens , mais comme il a été spécifié, le nom de fichier doit être indiqué de manière -
à indiquer que nous voulons lire à partir de l'entrée standard (voir autre réponse). Donc, pour répéter, c'est redondant et légèrement étrange.
De plus, la ligne ci-dessus peut être simplifiée car il est possible de dire à GNU tar de transmettre l’entrée par gzip
elle-même en spécifiant le z
drapeau:
tar xfz filename
- Pas besoin d'appeler gzip
explicitement.
tar
a l' z
option.
tar
défaut le premier lecteur de bande, pour des raisons historiques.
/dev/sa0
sous FreeBSD 9.0, /dev/rst0
NetBSD 6.0 et OpenBSD 5.1). La valeur par défaut d’AIX 7.1 est /dev/rmt0
. La valeur par défaut de MINIX3 est /dev/sa0
. (Dans chaque cas, j’ai vérifié la dernière version du système d’exploitation, il ne s’agit pas d’anciens ordinateurs centraux.) Solaris est configurable par le biais d’un fichier /etc
qui, par défaut, est un lecteur de bande. Les commandes tar GNU, Schilling, OSX et BusyBox sont définies par défaut sur stdin / stdout.
tar
pour utiliser par défaut le deuxième lecteur de bande, pour des raisons évidentes. :)
-
pas besoin d'être à la fin de la commande. Par exemple:ls -l | diff - /old_ls_output.txt
.