#1 Le 14/04/2011, à 21:28
- Pylades
[résolu] Bash et les redirections de flux
Bonjour, je suis relativement peu expérimenté avec bash et noyé sous ses multiples formes syntaxiques.
Actuellement, je me pose une question à propos de la redirections des flux.
cat <(echo plop)
est il un strict équivalent à
echo plop | cat
?
Aussi, pourquoi n'a-t-on pas le droit d'écrire
<(echo plop) cat
car nous sommes bien dans le cadre d'une redirection de flux, non ?
Et enfin, quelle est la différence avec
cat < <(echo plop)
?
Et là, pour le coup, on peut bien écrire
< <(echo plop) cat
Merci d'avance pour vos réponses.
Dernière modification par Pylade (Le 15/04/2011, à 21:02)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#2 Le 15/04/2011, à 08:55
- Karl_le_rouge
Re : [résolu] Bash et les redirections de flux
Non, sémantiquement ce n'est pas équivalent, le premier connecte l'entrée standard de la commande gauche à la sortie standard de la commande droite, le second la sortie standard de la commande gauche à l'entrée standard de la commande droite.
Quant aux cas mentionnés par la suite, tu négliges le fait que le shell a également une entrée et une sortie standard.
Hors ligne
#3 Le 15/04/2011, à 20:56
- nesthib
Re : [résolu] Bash et les redirections de flux
en fait la commande suivante (substitution de processus) correspond à un descripteur de fichier (named pipe) :
<(…)
ainsi quand tu fais :
cat <(echo plop)
la commande « <(echo plop) » renvoie un descripteur de fichier dont la sortie standard correspond à la sortie des process entre parenthèses
d'ailleurs si tu fais un :
ls -l <(echo plop)
tu verras le descripteur de fichier qui est utilisé (et qui est en fait un lien vers ton pipe)
pour conclure, la commande :
… < <(…)
va créer un descripteur de fichier provisoire pointant vers ton pipe (« <(…) ») et renvoyer sa sortie standard vers ta commande.
Ta question revient donc à demander la différence entre
cat un_fichier
et
cat <un_fichier
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#4 Le 15/04/2011, à 21:02
- Pylades
Re : [résolu] Bash et les redirections de flux
OK, merci ; c'est plus clair (même complétement limpide).
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne