Re: sortie standard et d'erreur

Page principale

Répondre à ce message
Auteur: Yves Martin
Date:  
À: guilde
Sujet: Re: sortie standard et d'erreur
Selon Christophe LYON <christophe.lyon@???>:

> > j'aimerais utiliser grep sur cette sortie et là je coince avec |
> > puis-je changer par un moyen du shell la sortie sur laquelle travaille "|"
> > j'aimerais éviter de sortir 2> dans un fichier ou recompiler wget.
> >
> > dans une redirection je sais différentier les flux par ">" ou "2>"
> > mais il n'existe pas un "2|" !
>
> il faut utiliser 2>&1 |
> ce qui donne:
> wget -S 2>&1 | grep toto
>
> Je te conseille de bien relire le man sh a ce sujet, c'est pas
> forcement evident de bien comprendre ou placer le 2>&1 :-)


On peut faire beaucoup plus simple (ie crade) avec les super-fonctions de
manipulation de descripteurs de fichiers de Bash !

# Redirecting only stderr to a pipe.
exec 3>&1                              # Save current "value" of stdout.
ls -l 2>&1 >&3 3>&- | grep bad 3>&-    # Close fd 3 for 'grep' (but not 'ls').
#              ^^^^   ^^^^
exec 3>&-                              # Now close it for the remainder of the
script.
# Thanks, S.C.


Sans oublier l'ouverture de fd directement sur le réseau avec
exec 3<>/dev/tcp/machine/port Ultime ! ;)
Chez Debian, ils disent: pas bien, utiliser netcat ! Moi, je dis: Cooool !
Juste pour dire de faire attention si cela ne marche pas sur Debian, il faut
lire le README des packagers - au cas où.

 Source (bhein oui, je ne l'ai pas inventé...):
    http://tldp.org/LDP/abs/html/io-redirection.html


A+
--
Yves Martin