Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : octobre 2009
    Messages : 482
    Points : 741
    Points
    741

    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

  2. #2
    Membre Expert
    Homme Profil pro Alexis
    Responsable d'Exploitation
    Inscrit en
    février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexis
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : février 2003
    Messages : 926
    Points : 1 729
    Points
    1 729

    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 :
    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 chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : octobre 2009
    Messages : 482
    Points : 741
    Points
    741

    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 Expert
    Homme Profil pro Alexis
    Responsable d'Exploitation
    Inscrit en
    février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexis
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : février 2003
    Messages : 926
    Points : 1 729
    Points
    1 729

    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 chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : octobre 2009
    Messages : 482
    Points : 741
    Points
    741

    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 :
    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 Expert
    Homme Profil pro Alexis
    Responsable d'Exploitation
    Inscrit en
    février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexis
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : février 2003
    Messages : 926
    Points : 1 729
    Points
    1 729

    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
    Responsable Modération

    Avatar de ok.Idriss
    Homme Profil pro Idriss Neumann
    Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Inscrit en
    février 2009
    Messages
    5 047
    Détails du profil
    Informations personnelles :
    Nom : Homme Idriss Neumann
    Âge : 24
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 5 047
    Points : 17 468
    Points
    17 468

    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
    mes cours sur DVP | initiation aux bases de données relationnelles | FAQ Linux | FAQ tests
    la programmation Shell | bonnes pratiques Bash | exercices shells scripts & Bash corrigés
    Merci aussi de lire les règles du club

    "Forgiveness does not change the past, but it does enlarge the future." (Paul Boese)
    Traduction approximative : le pardon ne change pas le passé mais élargit l'horizon de l'avenir.

  8. #8
    Expert Confirmé Sénior
    Profil pro
    Inscrit en
    janvier 2011
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : janvier 2011
    Messages : 1 717
    Points : 5 444
    Points
    5 444

    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 :
    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
    Responsable Modération

    Avatar de ok.Idriss
    Homme Profil pro Idriss Neumann
    Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Inscrit en
    février 2009
    Messages
    5 047
    Détails du profil
    Informations personnelles :
    Nom : Homme Idriss Neumann
    Âge : 24
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 5 047
    Points : 17 468
    Points
    17 468

    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
    mes cours sur DVP | initiation aux bases de données relationnelles | FAQ Linux | FAQ tests
    la programmation Shell | bonnes pratiques Bash | exercices shells scripts & Bash corrigés
    Merci aussi de lire les règles du club

    "Forgiveness does not change the past, but it does enlarge the future." (Paul Boese)
    Traduction approximative : le pardon ne change pas le passé mais élargit l'horizon de l'avenir.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •