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 30/12/2016, à 12:20

alex2423

Capturer la sortie erreur+standard et la sortie erreur ds 1 autre fic

Bonjour,

J'aimerai pouvoir récupérer les sorties :
- d'erreur dans un fichier
- d'erreur et standard dans un autre fichier

Donc pour le moment, j'ai fais un script tout bête avec
- une commande ok (ls toto) ou toto existe belle et bien
- une commande ko pour ghghgh n'existe pas


[root@T02 ~]# ll toto
---x--x--x 1 root root 12 29 d▒c.  16:55 toto
[root@T02 ~]# cat test.sh
ls toto
ls ghghg

Pour récupérer la sortie d'erreur, on fait cela

[root@T02 ~]# sh test.sh 2> retour
toto
[root@T02 ~]# cat retour
ls: impossible d'acc▒der ▒ ghghg: Aucun fichier ou dossier de ce type

Le script :
- renvoie bien la sortie standard vers le prompt la commande OK (ls toto)
- renvoie bien l'erreur dans le fichier retour


Pour récupérer la sortie d'erreur et standard dans un même fichier

[root@T02 ~]# sh test.sh > retour 2>&1
[root@T02 ~]# cat retour
toto
ls: impossible d'acc▒der ▒ ghghg: Aucun fichier ou dossier de ce type

Le script :
- ne renvoie rien vers le prompt
- renvoie bien la commande OK et KO dans retour (sortie d'erreur + standard)

https://openclassrooms.com/courses/repr … edirection

Par contre, j'aimerai bien faire l'association des 2.

J'ai tenté cela

[root@T02 ~]# sh test.sh > retour 2>&1 2> retourOk
[root@T02 ~]# cat retour
toto
[root@T02 ~]# cat retourOk
ls: impossible d'acc▒der ▒ ghghg: Aucun fichier ou dossier de ce type

Mais cela ne fonction pas. Dans retour, j'aurai bien aimé avec la sortie standard et la sortie d'erreur. Or je n'ai que la sortie standard.

J'ai l'impression que l'on ne peux pas dupliquer la sortie d'erreur

Il y a la commande tee qui permet d'écrire dans un fichier la sortie standard et de renvoyer la sortie stanard à la commande suivante ..
Cela aurait la commande idéal, mais je ne vois pas d'option dans Tee pour que cela capture uniquement les erreurs, ou les erreurs + la sortie standard. Avec Tee, nous sommes obligé de se contenté de la sortie standard. C'est bien dommage.

https://fr.wikipedia.org/wiki/Tee_%28Unix%29

Dernière modification par alex2423 (Le 30/12/2016, à 12:37)

Hors ligne

#2 Le 01/01/2017, à 13:19

credenhill

Re : Capturer la sortie erreur+standard et la sortie erreur ds 1 autre fic

hello
stdout+stderr dans un fichier log
stderr dans un fichier err

$ ls
a
$ ls a b
ls: cannot access b: No such file or directory
a
$ ls a b > >(cat >> log) 2> >(tee -a err >> log)
$ cat log
a
ls: cannot access b: No such file or directory
$ cat err
ls: cannot access b: No such file or directory

Dernière modification par credenhill (Le 01/01/2017, à 13:21)

Hors ligne