Bonjour,

je souhaite faire un fichier de log d'une suite de commande.
Mon but est que stdout et stderr soit afficher à l'écran ET qu'il soit redirigé vers un fichier.
Donc une :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
cmd 2>&1 | tee -a monfichier
mais je voudrais ajouter dans le fichier "ERREUR : " devant les lignes affichées sur stdout

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
#!/bin/sh
 
function truc() {
    rm ooooooooooo
    echo "action sans erreur"
    rm dfoofsidfioi
}
 
 
FIFO=/tmp/tempfifo
FICHIER_LOG=truc.txt
 
mkfifo $FIFO
 
rm $FICHIER_LOG
 
(sed 's/^\(.\)/ERREUR : \1/' < $FIFO | tee -a $FICHIER_LOG) &
 
truc 2>$FIFO | tee -a $FICHIER_LOG
 
rm -f $FIFO
le problème c'est que j'ai en sortie :
action sans erreur
ERREUR : rm: ne peut enlever `ooooooooooo': Aucun fichier ou répertoire de ce type
ERREUR : rm: ne peut enlever `dfoofsidfioi': Aucun fichier ou répertoire de ce type
Le problème c'est que les lignes ne sont pas dans l'ordre.

Le but est donc de faire un méthode générique pour pouvoir lancer une suite de commande qui se trouve déjà dans plusieurs script sans à repasser sur chaque commande pour ajouter une option.

Merci