#1 Le 04/12/2021, à 14:19
- guigui_86
[Résolu] Sauvegarder les résultats d'une commande dans un fichier
Bonjour à tous,
J'exécute régulièrement grive (pour synchroniser un dossier local sur le drive Google) en ligne de commande dans un terminal.
Chaque exécution m'affiche plein de choses dans le terminal, et je souhaiterais sauvegarder tous ces affichages dans un fichier de mon choix.
Pouvez-vous m'aider ?
Dernière modification par guigui_86 (Le 04/12/2021, à 18:47)
Hors ligne
#2 Le 04/12/2021, à 14:55
- abelthorne
Re : [Résolu] Sauvegarder les résultats d'une commande dans un fichier
Si c'est une commande que tu exécutes manuellement, tu peux le faire comme suit :
grive 1>truc
Le 1 est un code qui correspond à la sortie standard (ta fenêtre de terminal). Avec cette commande, la sortie sera redirigée (via >) dans un fichier nommé "truc" se trouvant dans le même dossier. Libre à toi d'ajouter un chemin précis éventuel.
Il existe aussi le 2 qui correspond à la sortie d'erreurs. En lançant la commande suivante :
grive 2>truc
ça renverra uniquement les erreurs dans le fichier "truc", en affichant le reste dans le terminal.
Note que la redirection simple (>) écrasera le contenu du fichier. Si tu veux l'ajouter (pour garder une trace de toutes tes utilisations de Grive, par exemple), il faut utiliser la redirection double (>>).
Hors ligne
#3 Le 04/12/2021, à 15:50
- guigui_86
Re : [Résolu] Sauvegarder les résultats d'une commande dans un fichier
Merci, ça correspond à ce que je veux.
Cependant, on dirait que ça ne fonctionne pas avec grive. Ça crée le fichier s'il n'existe pas, mais le fichier reste vide. De plus, l'affichage continue à se faire dans le terminal dans lequel j'ai lancé grive.
En testant avec un simple ls, ça fonctionne correctement : pas d'affichage dans le terminal, et sorties enregistrées dans le fichier.
Peut-être un mode de fonctionnement bizarre de grive que je pourrais contourner ?
Hors ligne
#4 Le 04/12/2021, à 16:30
- Tawal
Re : [Résolu] Sauvegarder les résultats d'une commande dans un fichier
Hello,
Tu peux aussi rediriger la sortie standard ET la sortie erreur dans un même fichier :
grive 2>&1 > fichier
En fait, on redirige d'abord les erreurs vers la sortie standard, puis on redirige la sortie standard vers le fichier.
On peut aussi rediriger vers 2 fichiers distincts :
grive 1> fichier_standard 2>fichier_erreur
Le fait que ça n'a pas fonctionné, vient peut-être que tes retours se font sur l'une ou l'autre des sorties.
En gros, ce que tu vois dans ton terminal rassemble ces 2 sorties (erreur et standard).
Si tu as entré :
grive 1>fichier
et que tu as encore une sortie dans ton terminal, alors, ce que tu vois dans ton terminal est la sortie erreur de grive.
Si "fichier" est vide, alors aucune sortie standard n'a été faite.
Vice-versa, si tu as entré :
grive 2>fichier
etc ....
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#5 Le 04/12/2021, à 17:00
- Hizoka
Re : [Résolu] Sauvegarder les résultats d'une commande dans un fichier
Salut,
j'ajoute la commande tee qui te permet de voir le retour sur le terminal et dans un fichier.
C'est toujours bon à connaitre
echo "Bonjour" | tee -a fichier
-a permet d'ajouter le retour à un fichier déjà existant.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 04/12/2021, à 17:11
- Tawal
Re : [Résolu] Sauvegarder les résultats d'une commande dans un fichier
+1
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#7 Le 04/12/2021, à 18:38
- kamaris
Re : [Résolu] Sauvegarder les résultats d'une commande dans un fichier
En bash, il existe aussi un raccourci pour rediriger sortie standard et sortie d'erreur dans un même fichier :
grive &> fichier
Ça permet de ne pas se mélanger les pinceaux avec l'ordre des redirections (attention à ne pas mettre d'espace entre le & et le > cependant).
Hors ligne
#8 Le 04/12/2021, à 18:47
- guigui_86
Re : [Résolu] Sauvegarder les résultats d'une commande dans un fichier
Il se trouve que grive effectue toutes ses sorties vers la sortie erreur, donc numéro 2. Je me suis même permis une petite coquetterie de rajouter la date au début du fichier :
echo "Dernière sauvegarde le $(date)" 1>/home/Save_Grive; grive /home/dossier 2>>/home/Save_Grive
Dernière modification par guigui_86 (Le 04/12/2021, à 18:48)
Hors ligne