IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Resumé des redirections [FAQ]


Sujet :

Contribuez

  1. #1
    Membre éclairé
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Points : 773
    Points
    773
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd 3>&1 1>&2 2>&3 3>&-
    5) Capturer les sorties STDOUT et STDERR d'une commande dans des fichiers distincts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_script.sh 2>&1 | tee sorties.log

  2. #2
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
     
    exec 2> >(sed 's/^/Err : /' >&2)
    S'il y a d'autre méthodes, je suis preneur

  3. #3
    Membre éclairé
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Points : 773
    Points
    773
    Par défaut
    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.

  4. #4
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    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 !

  5. #5
    Membre éclairé
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Points : 773
    Points
    773
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    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 !

  7. #7
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonjour.

    Une Q/R "Quelles sont les différentes redirections possibles pour les sorties standard et d'erreur ?" a été rajoutée en prenant en compte vos différentes suggestions.

    J'ai pris également en compte la suggestion de Alek-C : personnellement je pense qu'elle a autant sa place que celle qui utilise "tee" par exemple. Et c'est toujours utile...

    à vous.

    Idriss

  8. #8
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Je profite de la remontée de ce thread pour rebondir sur l'astuce Comment récupérer les 10 derniers caractères d'une chaine ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ${toto:$((${#toto}-10))}
    C'est un peu lourd comme méthode non ?

    Un simple suffit amplement
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  9. #9
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Hello.

    Merci de ta remarque, j'ai ajouté ta version en laissant l'autre quand même (plus de solutions, plus de richesses).



    Idriss

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Option resume des enumerate de enumitem
    Par elodouwen dans le forum Mise en forme
    Réponses: 6
    Dernier message: 10/12/2012, 08h22
  2. Garder la variable POST malgrés des redirections
    Par sarah65536 dans le forum Langage
    Réponses: 6
    Dernier message: 07/04/2009, 15h48
  3. faire des redirections comment ?
    Par damien77 dans le forum JSF
    Réponses: 7
    Dernier message: 08/08/2008, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo