Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/04/2007, 13h44   #1
Membre du Club
 
Inscription : juin 2006
Messages : 206
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 206
Points : 47
Points : 47
Par défaut redirection sortie script

Bonjour à tous,

J'ai fait un petit script et maintenant, je souhaiterais en même temps afficher la sortie du script et la rediriger dans un répertoire log.txt.

Comment puis je faire :
J'ai regarder sur le net, et j'ai trouvé cela :
Code :
1
2
3
 
action1 | tee -a $LOGFILE
action2 | tee -a $LOGFILE
ou cela
Code :
1
2
3
 
action 1 > $LOGFILE
action 2 >> $LOG_FILE
N y aurait il pas une commande UNIQUE à mettre à la fin de toutes mes lignes de commande pour rediriger la sortie dans un fichier texte?

Merci d'avance
crazykangourou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 13h51   #2
Membre expérimenté
 
Avatar de freemanbubu
 
Inscription : mars 2007
Messages : 577
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 577
Points : 560
Points : 560
pour rediriger la sortie dans un fichier:

ta_commande > sortie.txt

(le chevron simple > créé un nouveau fichier (écrase si deja existant))

ta_2°_commande >> sortie.txt

(le chevron double >> écrit a la suite du fichier sans ecraser l'existant)

voilou
freemanbubu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 14h01   #3
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
Pour compléter, > ou >> redirige la sortie standard dans un fichier (respectivement en créant systématiquement ou en complétant un fichier). Quand tu utilises > ou >>, tu ne "vois" rien de ce qui est redirigé. En revanche, avec tee, tu rediriges dans un fichier comme avec > ou >>, mais tu conserves la sortie standard. Donc avec tee, tu logues dans un fichier et ça continue à s'afficher sur la console. Tu choisis donc une solution en fonction de ce que tu veux faire.

En shell, ce qu'il doit être possible de faire (mais à tester), c'est de définir une variable en haut du script contenant la syntaxe >, >> ou tee qui t'intéresse et de mettre cette variable à la fin de chaque commande à exécuter. Exemple :

Code :
1
2
3
4
...
LOGGER=">> /tmp/monfichier.log"
...
commande param1 param2 $LOGGER
L'intérêt de la variable c'est que tu peux changer la méthode de log sans avoir à modifier toutes les lignes de ton script. Mais je répète, à tester avant d'adopter
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 14h36   #4
Membre du Club
 
Inscription : juin 2006
Messages : 206
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 206
Points : 47
Points : 47
Merci pour vos réponses rapides :
J'ai essayé la solution suivante :

Code :
1
2
3
4
...
LOGGER=">> /tmp/monfichier.log"
...
commande param1 param2 $LOGGER
Malheureusement, ca ne marche pas

Je suis en train de me tourné vers la commande "script"

D'autres suggestions et même solutions?

Merci
crazykangourou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 14h57   #5
Modérateur
 
Avatar de ggnore
 
Inscription : juillet 2004
Messages : 2 246
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juillet 2004
Messages : 2 246
Points : 1 903
Points : 1 903
Salut

Tu peux rediriger autant de lignes de commandes que tu veux avec tee.
Il suffit de définir un bloc avec les accolades.

Code :
1
2
3
4
5
6
{
...
echo "trucmuch";
ls 
...
} | tee monfichierdelog
Il faut savoir qu'il existe plusieurs descripteurs de fichiers.
Si tu ne précises pas que tu veux rediriger le flux des erreurs vers la sortie standard, tu n'auras pas les erreurs dans tes fichiers de logs. Ce qui est pour le moins dommage.
Il faut rajouter à la fin d'une commande pour tout récupérer.
__________________
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
ggnore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 15h01   #6
Membre du Club
 
Inscription : juin 2006
Messages : 206
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 206
Points : 47
Points : 47
ggnore,

Merci !
crazykangourou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h00.


 
 
 
 
Partenaires

Hébergement Web