1198 votes

Comment sauvegarder la sortie du terminal dans un fichier ?

Comment enregistrer la sortie d'une commande dans un fichier ?

Existe-t-il un moyen de le faire sans utiliser de logiciel ? J'aimerais savoir comment.

15voto

WinEunuuchs2Unix Points 91128

El script commande

Il y a deux questions différentes ici. La première est dans le titre :

Comment sauvegarder la sortie du terminal dans un fichier ?

La deuxième question concerne le corps :

Comment enregistrer la sortie d'une commande dans un fichier ?

Toutes les réponses postées ici répondent à la deuxième question, mais aucune ne répond à la première, qui a une excellente réponse dans Unix et Linux :

Cette réponse utilise une commande peu connue appelée script qui enregistre toutes les sorties de votre Shell dans un fichier texte jusqu'à ce que vous tapiez exit . La sortie de la commande apparaît toujours sur votre écran mais apparaît également dans le fichier texte .

Le processus est simple. Utilisez :

$ script ~/outputfile.txt
Script started, file is /home/rick/outputfile.txt
$ command1
$ command2
$ command3
$ exit
exit
Script done, file is /home/rick/outputfile.txt

Regardez ensuite la sortie enregistrée des commandes 1, 2 et 3 avec :

cat ~/outputfile.txt

Ceci est similaire à réponse précédente de :

command |& tee ~/outputfile.txt
  • Mais vous n'avez pas besoin d'utiliser |& tee ~/outputfile.txt après chaque commnd .
  • El script La commande a l'avantage (ou l'inconvénient) de pouvoir être rechargée. ~/.bashrc quand il commence.
  • El script La commande affiche l'invite de commande ( $PS1 ) suivi de la ou des commandes que vous avez saisies.
  • El script commande enregistre tous les détails en couleur.

Envoyer la sortie vers le presse-papiers

Souvent, nous voulons que la sortie soit placée dans le presse-papiers pour pouvoir la coller plus tard. À partir de cette réponse que vous pouvez utiliser :

cat ~/.bashrc | xclip -selection clipboard

Vous pouvez maintenant utiliser Ctrl + V dans presque toutes les applications pour coller la sortie du terminal dans votre document. Pour coller la sortie du terminal dans le presse-papiers dans votre terminal, utilisez Ctrl + Shift + V à la place.

12voto

amized Points 501

some_command | tee command.log y some_command > command.log ont le problème qu'ils ne sauvegardent pas la sortie de la commande dans le fichier command.log en temps réel.

Pour éviter ce problème et sauvegarder la sortie de la commande en temps réel, vous pouvez ajouter unbuffer qui est livré avec le expect paquet.


Ejemplo:

sudo apt-get install expect
unbuffer some_command | tee command.log
unbuffer some_command > command.log

En supposant que log.py contient :

import time
print('testing')
time.sleep(100) # sleeping for 100 seconds

vous pouvez exécuter unbuffer python log.py | tee command.log o unbuffer python log.py > command.log

Plus d'informations : Comment puis-je enregistrer la sortie d'une commande dans un fichier en temps réel ?

11voto

Victor Lin Points 3276

Pour cron etc, vous voulez éviter les extensions Bash. L'équivalent POSIX sh Les opérateurs de redirection sont

Bash          POSIX
------------  --------------
foo &> bar    foo >bar 2>&1
foo &>> bar   foo >>bar 2>&1
foo |& bar    foo 2>&1 | bar

Vous remarquerez que la facilité POSIX est en quelque sorte plus simple et plus directe. Le site &> La syntaxe a été empruntée à csh ce qui devrait déjà vous convaincre que c'est une mauvaise idée.

2voto

Thomas Kaliakos Points 1712

Si vous voulez sortir dans le fichier pendant l'exécution de la commande :

script -c ./path/to/executable.bash -f log.txt

1voto

pbhj Points 2878

Utiliser les fonctions de l'émulateur de terminal

Une option qui n'a pas encore été mentionnée, et qui permet également de sauvegarder les couleurs, consiste à utiliser un programme de console - tel que Konsole (l'émulateur de terminal par défaut de KDE/Plasma) - pour sauvegarder la sortie.

Konsole

Konsole has: 
File > Save output as... 

le raccourci est Ctrl + Shift + S ; il permet à la sortie d'être sauvegardé en tant que fichier texte, ou en tant que HTML incluant des couleurs ! Je ne suis pas sûr de savoir exactement combien cela va économiser, mais dans mon test, il n'a inclus que ~1000, l'ensemble du scrollback du terminal, (vous pouvez augmenter le buffer en créant un nouveau profil, Profil > Nouveau..., et ensuite changer les paramètres de Scrolling pour capturer plus ; Konsole version 4:21.08.1).

gnome-terminal

gnome-terminal dispose également de la fonction "copier la sortie en tant que HTML", qui permet de coller le HTML dans un document ; elle préserve les couleurs mais ne copie que le contenu de la sortie actuellement affichée à l'écran.

Généralement

Vous pouvez, bien sûr, effectuer une sélection directe par glisser-déposer (en maintenant le bouton gauche de la souris enfoncé tout en faisant glisser), puis copier ( ctrl + c , Édition > Copier, ou cliquer avec le bouton droit de la souris et choisir Copier).

d'autres ?

N'hésitez pas à modifier cette réponse pour inclure d'autres applications de terminal populaires. Ma préférée, Yakuake La plupart des terminaux populaires que j'ai examinés, y compris terminal.app et Hyper, ne semblent pas disposer de cette fonctionnalité.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X