GNU/Linux >> Tutoriels Linux >  >> Linux

Comment imprimer la sortie de la commande Linux dans un fichier ?

Utilisez le > opérateur :

rsync -v > log.txt

écrira la sortie de la commande rsync dans un fichier nommé log.txt .


Vous pouvez appeler votre script et rediriger la "sortie standard" (AKA STDOUT) vers un fichier journal. Utilisez '>>' pour ajouter au fichier journal ou '>' pour écraser le fichier journal. Le fichier sera créé (si les permissions sur son répertoire le permettent) s'il n'existe pas déjà. Si le fichier existe déjà, assurez-vous qu'il est accessible en écriture par vous (ou quiconque exécute votre script).

Si vous ajoutez toujours au fichier journal plutôt que d'écrire par-dessus, il est recommandé de vous assurer dès le début que quelque chose va "faire pivoter" votre fichier journal, c'est-à-dire le déplacer vers un autre nom et supprimer les anciens fichiers journaux. Si le fichier journal est unique à votre script, vous pouvez faire en sorte que votre script s'occupe de la rotation du fichier journal.

Habituellement, la méthode préférée consiste à appeler votre script avec STDOUT redirigé, mais il peut arriver que vous souhaitiez effectuer la redirection dans le script lui-même pour une ou plusieurs commandes. Vous pouvez ajouter ">> fichier journal" après toute instruction dans un script shell pour ajouter STDOUT de cette commande au fichier journal. Vous pouvez changer cela en "2>&1>> fichier journal" pour ajouter à la fois "l'erreur standard" (AKA STDERR) et STDOUT vers le fichier journal. Vous ne voulez généralement pas que STDERR aille également dans le fichier journal, car STDERR est généralement utilisé pour notifier tout/quiconque exécute le script d'un problème. Mais il y a des moments et des situations où vous le souhaitez. Si vous le souhaitez, vous pouvez regrouper des commandes dans votre script à l'intérieur de { et } et rediriger STDOUT de l'ensemble du groupe à la fois en plaçant la redirection après cette accolade fermante.


En plus de ce qui précède, si vous êtes curieux de voir la sortie imprimée à l'écran ET dans un fichier pour l'archivage/grepping/etc, vous voudrez peut-être "tee " la sortie. C'est une excellente commande et porte le nom du tuyau en T trouvé dans la plomberie du monde réel, et fonctionne bien pour les "sous-consoles" comme mysql, etc.

La commande est tee ... voici un exemple copié d'un utilisateur nommé "toydi":

Pour afficher et enregistrer la sortie d'une commande en même temps :ls -l | tee -a file.log Dans cet exemple, il affichera la sortie de la liste des répertoires et enregistrera également la sortie dans file.log. L'option -asignale à la commande d'ajouter plutôt que d'écraser le fichier.

Consultez également l'image sur wikipedia pour une belle visualisation du fonctionnement du tee. Je créerais un lien vers celui-ci, mais je n'ai pas assez de "points de réputation" pour publier plus d'un lien, et j'ai pensé que "toydi" méritait le crédit du lien :)


Linux
  1. Comment affecter la sortie d'une commande Linux à une variable

  2. Comment enregistrer la sortie de la commande dans un fichier sous Linux

  3. Comment vider un fichier journal sous Linux

  4. Comment ajouter la sortie à un fichier ?

  5. Comment capturer la sortie d'une commande top dans un fichier sous Linux ?

Comment utiliser une commande de fichier sous Linux

Comment ouvrir un fichier sous Linux

Comment imprimer des lignes dupliquées dans un fichier texte sous Linux

Comment mélanger les lignes dans un fichier sous Linux

Comment utiliser la commande lsof sous Linux

Comment utiliser la commande shred Linux