Précédent   Forum du club des développeurs et IT Pro > Systèmes > Linux > Contribuez
Contribuez Vos contributions pour la rubrique Linux : articles, cours, tutoriels, faq, comparatifs, tests, sources, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/02/2011, 23h01   #1
hornetbzz
Membre chevronné
 
Avatar de hornetbzz
 
Homme
Directeur commercial
Inscription : octobre 2009
Messages : 481
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France

Informations professionnelles :
Activité : Directeur commercial

Informations forums :
Inscription : octobre 2009
Messages : 481
Points : 719
Points : 719
Envoyer un message via Skype™ à hornetbzz
Par défaut Resumé des redirections

Dans ma soirée "créativité", ci-jointe une autre proposition de FAQ du genre de question qu'on se pose inéluctablement à un moment ou un autre :

RESUME DE QUELQUES REDIRECTIONS POSSIBLES DES SORTIES : ¶

avec :
STDOUT: la sortie standard d'une commande
STDERR: sortie "erreur" d'une commande

1) Capturer les sorties STDERR et STDOUT d'une commande :
2) Capturer uniquement la sortie STDOUT et éliminer la sortie STDERR d'une commande:
3) Capturer uniquement la sortie STDERR et éliminer la sortie STDOUT
4) Fusionner SDTOUT et STDERR pour capturer STDERR et renvoyer STDOUT vers l'ancien STDERR :
Code :
cmd 3>&1 1>&2 2>&3 3>&-
5) Capturer les sorties STDOUT et STDERR d'une commande dans des fichiers distincts
Code :
mon_prog args 1>mon_prog.stdout 2>mon_prog.stderr
6) Capturer STDOUT et STDERR vers STDOUT et ajouter le résultat de STDOUT dans un fichier sorties.log
Code :
mon_script.sh 2>&1 | tee sorties.log
hornetbzz est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 01/03/2011, 11h59   #2
Alek-C
Membre Expert
 
Homme Alexis
Responsable d'Exploitation
Inscription : février 2003
Messages : 924
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Responsable d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 924
Points : 1 766
Points : 1 766
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
sur les redirections, il y avait eu une question sur ce thread :

Comment rediriger stdout et stderr au même endroit mais en ajoutant un préfix aux erreurs (et en conservant l'ordre) ?

J'avais proposé de commencer par rediriger stderr ainsi (mais ça ne marche que sous bash je pense):
Code :
1
2
3
#!/bin/bash
 
exec 2> >(sed 's/^/Err : /' >&2)
S'il y a d'autre méthodes, je suis preneur
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 01/03/2011, 14h49   #3
hornetbzz
Membre chevronné
 
Avatar de hornetbzz
 
Homme
Directeur commercial
Inscription : octobre 2009
Messages : 481
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France

Informations professionnelles :
Activité : Directeur commercial

Informations forums :
Inscription : octobre 2009
Messages : 481
Points : 719
Points : 719
Envoyer un message via Skype™ à hornetbzz
C'est une bonne suggestion mais à mon avis, ce genre de problématique s'inscrirait dans le cadre d'un tuto sur les redirections, ou dans la FAQ sur sed, car cette technique n'est pas de la redirection "pure" mais une combinaison de deux techniques.
hornetbzz est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/03/2011, 15h35   #4
Alek-C
Membre Expert
 
Homme Alexis
Responsable d'Exploitation
Inscription : février 2003
Messages : 924
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Responsable d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 924
Points : 1 766
Points : 1 766
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Je ne suis pas entièrement d'accord

Cela n'a rien à voir avec sed qui n'est utilisé ici que pour l'exemple. L'intérêt n'est pas le sed mais bien l'utilisation de exec pour rediriger une sortie (stdout, stderr, ...) vers elle-même mais en la faisant passer auparavant par un process quelconque ce qui permet d'éviter une désynchronisation entre les flux !

Après, que cela ait une place dans une faq ou un tuto, là, j'avoue que je n'ai pas d'avis !
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/03/2011, 15h56   #5
hornetbzz
Membre chevronné
 
Avatar de hornetbzz
 
Homme
Directeur commercial
Inscription : octobre 2009
Messages : 481
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France

Informations professionnelles :
Activité : Directeur commercial

Informations forums :
Inscription : octobre 2009
Messages : 481
Points : 719
Points : 719
Envoyer un message via Skype™ à hornetbzz
hum "stdout et stderr au même endroit", es-tu certain ... ?

Ou alors il faudrait être plus précis du genre:

7) Modifier le format de sortie de STDERR -pas testé -
Code :
exec 2> >(sed 's/^/Err : /' >&2)
Mais je reste très dubitatif quant à l'intérêt pour la FAQ : six points, c'est déjà pas mal, voire trop pour une FAQ. C'est pour ça que je me cantonne à la redirection stricte.

D'autant plus qu'en piochant dans les points précédents, tu as déjà la réponse à cette problématique.

Donc c'est redondant puisque ça n'apporte pas de nouveauté quant à la notion de redirection par rapport aux points précédents.
hornetbzz est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/03/2011, 16h10   #6
Alek-C
Membre Expert
 
Homme Alexis
Responsable d'Exploitation
Inscription : février 2003
Messages : 924
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Responsable d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 924
Points : 1 766
Points : 1 766
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
J'ai effectivement été incomplet; naturellement, il faut compléter avec des redirections classiques comme par exemple le point 6 de ta faq. L'intérêt de cette commande est de permettre de rediriger les 2 sorties au même endroit tout en permettant un traitement distinct (par exemple, ajouter un préfixe) et en conservant l'ordre.

edit: correction par rapport aux autres posts suppression de ma remarque qui n'a plus lieu d'être !
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h14.


 
 
 
 
Partenaires

Hébergement Web