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.
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.
script
commandeIl 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
|& tee ~/outputfile.txt
après chaque commnd
.script
La commande a l'avantage (ou l'inconvénient) de pouvoir être rechargée. ~/.bashrc
quand il commence.script
La commande affiche l'invite de commande ( $PS1
) suivi de la ou des commandes que vous avez saisies.script
commande enregistre tous les détails en couleur.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.
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 ?
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.
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 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
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.
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).
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é.
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.