Lorsque vous exécutez une commande dans une fenêtre de terminal, la sortie de la commande est normalement imprimée sur le terminal ou sur l'écran afin que vous puissiez le lire immédiatement. Vous pouvez également imprimer la sortie d'une commande dans un fichier si vous souhaitez l'enregistrer.
L'enregistrement de la sortie d'une commande dans un fichier est utile si vous essayez de diagnostiquer un problème. Pour obtenir de l'aide du support technique, vous devrez peut-être exécuter certaines commandes sur votre ordinateur et envoyer les résultats à l'équipe de support. C'est facile en utilisant la redirection de sortie sur la ligne de commande.
Aujourd'hui, nous verrons comment envoyer la sortie d'une commande à un fichier texte dans le shell bash sur Windows, Mac et Linux.
Remarque: Nous allons utiliser le terminal Mac Ces 6 commandes de terminal géniales vont booster votre MacBook Ces 6 commandes de terminal géniales vont booster votre MacBook Vous pouvez seulement entasser autant dans l'interface utilisateur graphique avant qu'il ne devienne encombré, donc il ne devrait pas être grand surprise que vous pouvez faire des choses vraiment cool en utilisant le terminal Mac. Lisez plus dans notre exemple, mais cela fonctionne de la même manière dans le shell bash sur Linux 40+ Commandes de terminal Linux les plus utilisées 40+ Commandes de terminal Linux les plus utilisées Que vous soyez simplement débutant ou simplement curieux du terminal Linux, voici les commandes les plus courantes qui vous mèneront à travers tout votre temps sur Linux. En savoir plus et dans le nouveau shell bash de Windows 10 Un guide rapide pour Linux Bash Shell dans Windows 10 Un guide rapide pour Linux Bash Shell dans Windows 10 Vous pouvez maintenant exécuter Linux sous Windows. En savoir plus sur Bash sous Windows, de comment et pourquoi vous devriez l'installer, à des fonctionnalités cachées que vous ne connaissiez probablement pas. Lire la suite .
Rediriger la sortie vers un fichier uniquement
Il existe deux opérateurs pour rediriger la sortie d'une commande vers un fichier à la place de l'écran.
Le symbole > crée un nouveau fichier s'il n'est pas présent, ou écrase le fichier s'il existe déjà. Le >> crée également un nouveau fichier s'il n'est pas présent, mais il ajoute le texte à la fin du fichier s'il existe déjà, plutôt que d'écraser le fichier.
Note to self: lorsque vous redirigez une sortie de script shell vers un fichier, elle ne sera pas affichée sur la console :-) #StupidMe
- Xavier Mertens? (@xme) 5 août 2017
Pour rediriger la sortie d'une commande vers un fichier, tapez la commande, spécifiez l'opérateur > ou >>, puis indiquez le chemin d'accès au fichier vers lequel vous souhaitez rediriger la sortie. Par exemple, la commande ls répertorie les fichiers et les dossiers dans le répertoire en cours. Lorsque vous exécutez la commande suivante, la liste des fichiers et des dossiers sera écrite dans le fichier ls_output.txt dans le dossier TerminalOutput .
Remplacez / path / to / file par le chemin complet du fichier que vous voulez utiliser.
ls>/path/to/file
C'est la commande pour notre exemple.
ls>/Users/lorikaufman/TerminalOutput/ls_output.txt
Pour afficher le contenu du fichier dans la fenêtre Terminal, utilisez la commande cat comme indiqué dans la commande suivante. À nouveau, remplacez / path / to / file par le chemin d'accès complet au fichier que vous voulez voir.
cat /path/to/file
L'opérateur > remplace le contenu d'un fichier existant chaque fois que vous l'utilisez pour rediriger la sortie. Si vous souhaitez enregistrer la sortie de plusieurs commandes dans un seul fichier, utilisez plutôt l'opérateur >> . Cela ajoute la sortie d'une commande à la fin du fichier spécifié, si elle existe déjà. Si le fichier n'existe pas, il en crée un nouveau.
Par exemple, nous ajouterons les informations système à la fin du fichier que nous avons créé ci-dessus. Ainsi, dans la ligne suivante, uname -a est la commande, suivie de l'opérateur >> redirection. Ensuite, le chemin complet vers le fichier auquel nous voulons ajouter la sortie de la commande uname .
Le paramètre -a de la commande uname imprime toutes les informations système disponibles.
uname -a>>/Users/lorikaufman/TerminalOutput/ls_output.txt
Pour afficher le fichier avec les informations ajoutées dans la fenêtre Terminal, entrez la commande suivante, avec le chemin d'accès complet à votre fichier.
cat /Users/lorikaufman/TerminalOutput/ls_output.txt
Répétez ce processus autant de fois que vous avez besoin de continuer à ajouter la sortie de la commande à la fin du fichier.
Voici un autre exemple d'envoi de la sortie de la commande ls sous forme d'arborescence de répertoires, avec des sous-répertoires listés récursivement (le paramètre R ) et un fichier par ligne (le paramètre 1 ).
ls -1R>/Users/lorikaufman/TerminalOutput/dir_tree.txt
Ensuite, nous utilisons la commande cat, comme mentionné précédemment pour voir le contenu du fichier dans la fenêtre Terminal.
cat /Users/lorikaufman/TerminalOutput/dir_tree.txt
Imprimer la sortie à l'écran et le rediriger vers un fichier
Les opérateurs > et >> n'affichent pas la sortie d'une commande sur l'écran. La sortie est uniquement envoyée à un fichier.
Si vous voulez envoyer la sortie dans un fichier et la voir à l'écran, utilisez la commande tee à la place des opérateurs > et >> .
Alerte nerd! Aujourd'hui, j'ai découvert la commande 'tee`, qui redirige vers un fichier et vers un standard. Unix continue de ravir. pic.twitter.com/aClIT8AdJB
- Zeke Sikelianos (@zeke) 29 août 2017
Pour utiliser la commande tee, vous devez diriger la sortie de la commande que vous exécutez, comme ls, vers la commande tee, en utilisant l'opérateur de tuyau, une barre verticale ( | ). Par exemple, la commande suivante prend la sortie de la commande ls et l'envoie dans la commande tee . La commande tee envoie ensuite cette sortie à l'écran et à un fichier que vous spécifiez en utilisant le chemin d'accès complet au fichier.
ls | tee /Users/lorikaufman/TerminalOutput/ls_output.txt
La commande ci-dessus remplace tout le contenu du fichier ou en crée un nouveau s'il n'existe pas, tout comme l'opérateur > . Nous avons utilisé la commande cat suivante pour afficher le contenu de notre fichier dans la fenêtre Terminal.
cat /Users/lorikaufman/TerminalOutput/ls_output.txt
Pour utiliser la commande tee pour imprimer la sortie à l'écran et l'ajouter à la fin d'un fichier, entrez la commande suivante. Ici, nous ajoutons des informations système complètes à la fin du fichier en utilisant la commande uname -a, comme nous l'avons fait avec l'opérateur >>, mais en envoyant la sortie à l'écran.
uname -a | tee -a /Users/lorikaufman/TerminalOutput/ls_output.txt
La commande suivante est la version tee de l'impression d'une arborescence de répertoires récursivement à un fichier et à l'écran, un fichier sur chaque ligne, comme nous l'avons fait avec l'opérateur > .
ls -1R | tee /Users/lorikaufman/TerminalOutput/dir_tree.txt
Ensuite, nous utilisons à nouveau la commande cat pour voir le contenu du fichier.
cat /Users/lorikaufman/TerminalOutput/dir_tree.txt
Mais attendez, il y a plus
Il existe de nombreux autres moyens de rediriger la sortie, y compris les erreurs, vers un fichier. Vous pouvez consulter les différents opérateurs et commandes utilisés pour rediriger la sortie dans le chapitre Redirection d'E / S du Guide de script Advanced Bash. Vous pouvez également en apprendre plus sur l'utilisation de la ligne de commande Un guide rapide pour démarrer avec la ligne de commande Linux Un guide rapide pour démarrer avec la ligne de commande Linux Vous pouvez faire beaucoup de choses étonnantes avec des commandes sous Linux et ce n'est vraiment pas difficile à apprendre . Lire la suite .
J'ai appris une bonne leçon aujourd'hui. Ne redirigez pas la sortie de journal d'une boucle de 10 millions d'itérations vers un fichier txt. Résultat: 5 tb fichier txt.
- Lloyd (@ lcarswell1) 21 mai 2017
À quoi utilisez-vous la redirection de sortie? Quelle méthode utilisez-vous? Avez-vous appris d'autres façons de rediriger la production? Partagez vos pensées et expériences avec nous dans les commentaires ci-dessous.