Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

echo "Bonjour" | tee -a fichier

-a permet d'ajouter le retour à un fichier déjà existant.

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