Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde 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). smile


“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