Partage
  • Partager sur Facebook
  • Partager sur Twitter

Rediriger stdout/stderr ET afficher dans le shell

Sujet résolu
    10 avril 2013 à 11:25:58

    Bonjour,

    J'aimerais savoir s'il est possible de rediriger stdout/stderr vers un ficher ET en même temps de l'afficher dans le shell. Je ne veux pas faire de cat en post appli mais affiché en temps réel.

    Je n'ai rien trouvé sur internet la dessus.

    Merci

    -
    Edité par FloOows 10 avril 2013 à 13:25:08

    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2013 à 15:49:44

      Je ne vois pas d'autres manières que d'écrire une petite méthode qui le fasse. Par exemple avec deux échos; l'un vers stdout et l'autre vers ton fichier …
      • Partager sur Facebook
      • Partager sur Twitter
        10 avril 2013 à 16:24:31

        Bonjour,

        A moins d'avoir mal compris ton besoin, ceci devrait t'aider :

        ta_commande 2>&1 | tee log.txt

        N'hésite pas si tu as besoin d'une précision ;)

        Bonne journée

        • Partager sur Facebook
        • Partager sur Twitter
          11 avril 2013 à 14:59:37

          C'est exactement ce qu'il me fallait, merci
          • Partager sur Facebook
          • Partager sur Twitter
            2 décembre 2016 à 10:50:53

            Merci, réponse très utile. Par contre juste une petite remarque : il n'est alors plus possible de déterminer si "ta_commande" est en erreur, puisqu'en faisant ce pipe :

            ta_commande 2>&1 | tee -a log.txt

            le statut de "ta_commande" n'est plus accessible dans la variable $? : cette dernière ($?) contient maintenant le retour de la commande "tee", qui est invariablement un 0.

            C'était juste pour apporter cette précision.

            • Partager sur Facebook
            • Partager sur Twitter
              2 décembre 2016 à 11:44:11

              bash supporte une variable de type tableau PIPESTATUS qui reflète les états de sortie de chaque partie d'un pipe :
              $ cat nonExist | tee
              cat: nonExist: Aucun fichier ou dossier de ce type
              $ echo ${PIPESTATUS[@]}
              1 0
              • Partager sur Facebook
              • Partager sur Twitter

              Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                16 mars 2017 à 22:15:05

                Merci pour cette info, je ne connaissais pas cette variable (PIPESTATUS), c'est très intéressant.
                • Partager sur Facebook
                • Partager sur Twitter

                Rediriger stdout/stderr ET afficher dans le shell

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown