[Bash] rediriger stdout et stderr vers un fichier

rediriger stdout et stderr vers un fichier [Bash] - Linux et OS Alternatifs

Marsh Posté le 10-01-2006 à 18:34:34    

Bonjour je cherche a rediriger en bash stdout et stderr vers un meme fichier sachant qu' Il faut pas que cela écrase ce qui est déjà dans le fichier (on logue tout les messages).  
 
J'arrive à rediriger soit stderr soit stdout :

$ rm blablah 2>>monfichier.trace

et :

$ rm blahblah 1>>monfichier.trace

mais pas les deux à la fois :

$ rm blahblah &>>monfichier.trace

ne fonctionne pas sur ma machine.
 
Est-ce possible aussi de rendre cette redirection active pour toute une partie d'un scipt bash puis de la desactiver ensuite ?
 
Merci
 

Reply

Marsh Posté le 10-01-2006 à 18:34:34   

Reply

Marsh Posté le 10-01-2006 à 19:51:35    

jumar a écrit :

Bonjour je cherche a rediriger en bash stdout et stderr vers un meme fichier sachant qu' Il faut pas que cela écrase ce qui est déjà dans le fichier (on logue tout les messages).

$ rm blablah >> monfichier.trace 2>&1


Citation :

Est-ce possible aussi de rendre cette redirection active pour toute une partie d'un scipt bash puis de la desactiver ensuite ?

Dans un script tu peux faire quelque chose comme ça :

Code :
  1. exec 3>&1     # "sauvegarder" stdout
  2. exec 4>&2     # "sauvegarder" stderr
  3.  
  4. exec 1>>monfichier.trace      #rediriger stdout vers ton fichier
  5. exec 2>>monfichier.trace      #rediriger stderr vers ton fichier
  6. # exécuter tes commandes
  7. rm foo
  8. echo bar
  9. rm baz
  10.  
  11.  
  12. exec 1>&3 # restaurer la "valeur" de stdout
  13. exec 2>&4 # restaurer la "valeur" de stderr
  14.  
  15. exec 3>&- # fermer le FD 3
  16. exec 4>&- # fermer le FD 4

Ou sinon, tu peux tout simplement utiliser des parenthèses :

Code :
  1. (rm foo
  2. echo bar
  3. rm baz ) >> monfichier.trace 2>&1


 
 

Reply

Marsh Posté le 10-01-2006 à 20:17:44    

Merci bcp, c'est parfait!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed