Comment enregistrer la sortie du terminal dans un fichier sous Linux

Le terminal est le cœur d’un système Linux. Chaque programme qui s’exécute sous Linux fonctionne sous une ligne de commande du terminal. Cela inclut des programmes massifs, tels que des navigateurs web et même des programmes simples comme des éditeurs de texte. Ainsi, être capable d’utiliser correctement le terminal est une étape importante si vous souhaitez comprendre comment fonctionne le système d’exploitation.
Cela dit, tout en travaillant sur le terminal Linux, vous pouvez vouloir enregistrer la sortie du terminal d’une commande dans un fichier. Ce fichier peut être utilisé comme information pour une autre opération ou simplement pour enregistrer l’activité du terminal. Cet article enseigne cinq façons d’enregistrer la sortie du terminal dans un fichier.
Table des matières
- Utiliser des terminaux spécifiques
- Redirection de sortie
- Tee
- Script
- Capture de terminal framebuffer
- Questions fréquentes
Lisez aussi : Comment utiliser la commande dd sous Linux
1. Utiliser des terminaux spécifiques
La première façon de gérer cela est d’utiliser un terminal qui prend en charge l’enregistrement de la sortie dans un fichier. Par exemple, le terminal Konsole qui vient avec une installation standard de KDE inclut une option pour écrire la sortie dans un fichier.
Pour ce faire, appuyez sur le bouton “Fichier” dans la barre de menu et cliquez sur “Enregistrer la sortie sous … “

Cela ouvrira une fenêtre de dialogue où vous pourrez enregistrer la sortie du terminal. De là, vous pouvez choisir où vous souhaitez enregistrer le fichier.
Vous pouvez également enregistrer la sortie d’une commande dans le terminal GNOME. Il suffit de faire un clic droit sur le terminal et d’appuyer sur “Copier la sortie en tant que HTML.” Cela chargera alors le texte du terminal dans votre presse-papiers. De là, vous pouvez le coller dans n’importe quel éditeur de texte.

Lisez aussi : Comment utiliser la commande rm sous Linux
2. Redirection de sortie
Une autre façon de gérer cela est d’utiliser les opérateurs intégrés du shell UNIX. Ce sont des fonctions par défaut dans Linux et peuvent rediriger la sortie texte d’un programme vers un fichier. Il y a trois opérateurs qui peuvent le faire :
- L’opérateur
>créera ou remplacera le contenu d’un fichier avec la sortie de votre programme. Cela est utile si vous souhaitez déverser et visualiser le résultat actuel de votre programme dans le même fichier. - L’opérateur
>>créera également un fichier avec la sortie de votre programme. Cependant, cet opérateur n’ajoutera que la sortie au lieu de la remplacer. Cela est utile si vous souhaitez déverser le résultat de votre programme en continu dans un seul fichier. - Enfin, l’opérateur
2>est un type spécial d’opérateur qui imprimera les erreurs qui seront rapportées. Cela est très utile lors du débogage, car cela montre le problème que le programme a rencontré avant de planter.

Sachant cela, la façon dont vous utilisez ces opérateurs est en les ajoutant à la fin de votre programme. Considérez l’exemple suivant :
echo"maketecheasier"> hello.txtJ’ai demandé au programme echo de sortir le mot “maketecheasier,” puis j’ai ajouté l’opérateur > ainsi qu’un nom de fichier. Cela a dit au shell UNIX d’écrire la sortie dans le fichier “hello.txt” au lieu de l’imprimer à l’écran.

3. Tee
En plus de la redirection de sortie, vous pouvez également enregistrer la sortie d’une commande de terminal en utilisant un programme appelé tee. C’est un programme GNU qui vous permet de lire et d’écrire à partir de l’entrée standard. Utilisez ce programme avec des tuyaux UNIX pour écrire la sortie d’une commande dans un fichier.
Considérez l’exemple suivant :
echo"maketecheasier"|tee hello.txt
Ici, au lieu d’utiliser la redirection de sortie, j’ai pipé ( |) la sortie vers tee.
Remarque : Un tuyau prend la sortie d’un programme et l’alimente dans l’entrée d’un autre. Cela vous permet de coller plusieurs programmes ensemble, tant qu’ils utilisent tous des entrées et sorties standard.
Lisez aussi : Comment résoudre le problème de saisie dans le terminal sous Linux
4. Script
Une autre façon d’extraire la sortie du terminal est via script, un programme Linux intégré qui enregistre tout ce que vous tapez dans le terminal ainsi que sa sortie.
Vous pouvez utiliser script pour enregistrer le journal de votre session terminal dans un format texte analysable. Cela est très utile si vous souhaitez envoyer un journal d’erreurs en ligne pour obtenir de l’aide d’autres personnes.
Pour l’utiliser, exécutez la commande suivante :
script filename.txt
Cela démarrera un environnement de script où vous pouvez simplement commencer à exécuter des commandes. Une chose importante à noter, cependant, est que script capture tout ce que vous faites dans cette session. Considérez l’exemple suivant :
Script started on 2022-03-2718:02:29+08:00 [TERM="rxvt-unicode-256color"TTY="/dev/pts/2"COLUMNS="77"LINES="22"]
[?2004h[[1;31m balaraw:[1;35m~ [0m]$ ls
[?2004l
[0m[01;34mDesktop[0m [01;34mDownloads[0m [01;34mmail[0m [01;34mNews[0m [01;34mpods[0m [01;34mdocuments[0m [00;32mhello.txt[0m [01;34mMail[0m [01;34mpics[0m [01;34mtmp[0m [01;34mvids[0m
[?2004h[[1;31m balaraw:[1;35m~ [0m]$ exit
[?2004l
exit
Script done on 2022-03-2718:03:19+08:00 [COMMAND_EXIT_CODE="0"]Script inclut toutes les frappes et les caractères de contrôle que vous appuyez. Dans mon cas, cela a inclus toutes les touches “invisibles” que j’ai pressées, y compris les frappes des touches Tab et Retour arrière.
Une fois que vous avez terminé la session, tapez exit. Cela mettra fin au programme Script et écrira tout le journal dans le fichier que vous avez spécifié.

Lisez aussi : Comment utiliser la commande lp sous Linux pour imprimer des fichiers depuis le terminal
5. Capture de terminal framebuffer
Enfin, vous pouvez également obtenir la sortie du terminal en extrayant à partir du framebuffer Linux. Cela est utile si vous travaillez directement sur un télétype et souhaitez capturer la sortie d’un programme.
Pour capturer le périphérique framebuffer, exécutez la commande suivante tout en étant dans le télétype :
cat/dev/fb0 > capture.raw
Une chose importante à noter est que capturer le périphérique framebuffer de cette manière signifie que vous déversez les octets bruts du framebuffer dans un fichier. Pour visualiser ce fichier, vous devez le charger dans un éditeur d’images et ajuster manuellement la couleur et la profondeur de bits. Ce processus est non seulement long, mais il est également facile de se tromper.
Ainsi, une façon de gérer cela est d’utiliser un programme tiers, tel que fbgrab. Cela capturera l’écran actuel du télétype à partir du périphérique framebuffer et le déversera dans un fichier PPM ou PNG.
L’installation de fbgrab est également relativement simple. Dans les distributions basées sur Debian et Ubuntu, vous pouvez utiliser apt :
sudo apt install fbgrabPour Arch Linux, exécutez pacman :
sudo pacman -S fbgrab
Utilisation de fbgrab pour capturer la sortie du terminal
Une fois installé, accédez au télétype en appuyant sur Control + Shift + Alt + F3, puis exécutez soit fbcat soit fbgrab.
Fbcat est un programme plus simple qui capture l’écran framebuffer actuel et l’enregistre dans une image PPM. C’est un format d’image brut de bas niveau que vous pouvez charger dans un éditeur d’images pour le convertir en PNG. Fbcat est principalement utile si vous essayez de capturer un affichage à faible profondeur de bits qui nécessite un format d’image brut pour être capturé correctement.
Pour capturer en utilisant le programme fbcat, exécutez la commande suivante :
fbcat > capture.ppm
Cela capturera l’écran actuellement affiché et déversera le contenu dans un fichier capture.ppm.
Fbgrab, en revanche, est un programme plus complexe conçu pour capturer des affichages à plus haute profondeur de bits. Pour la plupart, vous l’utiliserez pour capturer votre écran de télétype. Il prend en charge l’enregistrement au format PNG par défaut et a l’option de sélectionner un télétype différent à capturer.
Pour capturer en utilisant le programme fbgrab, exécutez la commande suivante :
sudo fbgrab -c3 capture.png
Cela capturera le troisième écran de télétype et l’enregistrera dans un fichier capture.png.
Si vous recherchez plus de guides pour le terminal Linux, consultez celui qui discute de l’envoi d’un e-mail depuis la ligne de commande.
Questions fréquentes
1. Aidez-moi ! Fbgrab ne fonctionne pas ; l’image est juste noire ou vide.
C’est probablement parce que fbgrab utilise un périphérique framebuffer différent pour capturer la sortie du terminal. Vérifiez le périphérique framebuffer actuel que le système utilise en listant le dossier “/dev”.
ls/devDe là, recherchez un périphérique “/dev/fbX”. Normalement, Linux utilise “/dev/fb0” pour son framebuffer. Cependant, si votre système utilise un framebuffer différent, tel que “/dev/fb1”, vous pouvez passer la commande suivante pour dire à fbgrab de tirer de ce framebuffer à la place :
fbgrab -d1 capture.png2. Est-il possible de saisir le contenu d’un fichier que j’ai écrit comme entrée pour un programme ?
Oui ! En plus des trois opérateurs discutés ci-dessus, vous pouvez également utiliser l’opérateur < pour extraire des données d’un fichier. Le shell traitera alors cela comme une entrée pour un programme.
Faire cela de cette manière supprime également le besoin de compter sur d’autres programmes pour imprimer le texte pour vous. Considérez les exemples suivants :
[1]cat test.txt | program
[2] program < test.txt- Le premier exemple appelle le programme cat pour charger le texte, puis charge un opérateur de tuyau avec la sortie de cat et le pipe vers votre programme.
- En revanche, le deuxième exemple appelle immédiatement votre programme, puis choisit l’opérateur
<, qui traite l’argument suivant comme son entrée.
3. Existe-t-il un moyen de forcer script à ne capturer que la sortie d’une commande ?
Oui, il est possible de ne script que pour une seule commande. Cela est très utile lors du dépannage lorsque vous souhaitez simplement capturer la sortie d’un seul programme. Faites cela en exécutant la commande suivante :
script -c"your-command" test.txtL’-c indique au programme script de n’exécuter que le programme : votre-commande. De là, il écrira ensuite sa sortie dans un fichier texte appelé test.txt.
Crédit image : Unsplash