4Sep

Comment enregistrer la sortie d'une commande dans un fichier dans Bash( alias le terminal Linux et macOS)

Lorsque vous exécutez une commande à l'invite bash, elle imprime normalement la sortie de cette commande directement sur le terminal afin que vous puissiez la lire immédiatement. Mais bash vous permet également de "rediriger" la sortie de n'importe quelle commande, l'enregistrant dans un fichier texte pour que vous puissiez revoir la sortie plus tard.

Cela fonctionne dans bash sur n'importe quel système d'exploitation, de Linux et macOS à l'environnement bash basé sur Ubuntu de Windows 10.

Option 1: rediriger la sortie vers un fichier uniquement

Pour utiliser la redirection bash, vous exécutez une commande, spécifiez le & gt;ou & gt; & gt;opérateur, puis fournissez le chemin d'un fichier vers lequel vous souhaitez rediriger la sortie.

  • & gt;redirige la sortie d'une commande vers un fichier, en remplaçant le contenu existant du fichier.
  • & gt; & gt;redirige la sortie d'une commande vers un fichier, en ajoutant la sortie au contenu existant du fichier.

Techniquement, cela redirige "stdout" - la sortie standard, qui est l'écran d'un fichier.

Voici un exemple simple. La commande ls répertorie les fichiers et les dossiers dans le répertoire en cours. Alors. Lorsque vous exécutez la commande suivante, ls listera les fichiers et dossiers dans le répertoire courant. Mais il ne les imprime pas à l'écran, il les enregistre dans le fichier que vous spécifiez.

ls & gt;/path/to/ fichier

Vous n'avez pas besoin de spécifier le chemin d'accès à un fichier existant. Indiquez un chemin valide et bash créera un fichier à cet emplacement.

Si vous affichez le contenu du fichier, vous verrez la sortie de la commande ls. Par exemple, la commande cat imprime le contenu d'un fichier sur le terminal:

cat /path/to/ fichier

Rappelez-vous, le & gt;L'opérateur remplace le contenu existant du fichier par la sortie de la commande. Si vous souhaitez enregistrer la sortie de plusieurs commandes dans un seul fichier, utilisez le & gt; & gt;opérateur à la place. Par exemple, la commande suivante ajoutera les informations système au fichier que vous spécifiez:

uname -a & gt; & gt;/path/to/ fichier

Si le fichier n'existe pas, bash créera le fichier. Sinon, bash laissera seul le contenu existant du fichier et ajoutera la sortie à la fin du fichier.

Lorsque vous affichez le contenu du fichier, vous verrez les résultats de votre deuxième commande ont été ajoutés à la fin du fichier:

Vous pouvez répéter ce processus autant de fois que vous le souhaitez pour conserver l'ajout de sortie à la fin du fichier.fichier.

Option deux: imprimer la sortie normalement et le rediriger vers un fichier

Vous pourriez ne pas aimer rediriger la sortie avec le & gt;ou & gt; & gt;opérateurs, car vous ne verrez pas la sortie de la commande dans le terminal. C'est à ça que sert la commande tee. La commande tee imprime l'entrée reçue à l'écran et l'enregistre dans un fichier en même temps.

Pour acheminer la sortie d'une commande à té, l'imprimer sur votre écran et l'enregistrer dans un fichier, utilisez la syntaxe suivante: Commande

|tee /path/to/

Ceci remplacera n'importe quoi dans le dossier avec la sortie de la commande, juste comme le & gt;opérateur.

Pour rediriger la sortie d'une commande vers la commande tee, en l'imprimant sur votre écran et en l'enregistrant dans un fichier, mais en l'ajoutant à la fin du fichier: Commande

|tee -a fichier /path/to/

Cela ajoutera la sortie à la fin du fichier, tout comme le & gt; & gt;opérateur.

Le shell bash inclut des opérateurs avancés supplémentaires qui exécutent des fonctions similaires. Ils seront particulièrement utiles si vous écrivez des scripts bash. Consultez le chapitre Redirection d'E / S du Guide avancé de script Bash pour plus d'informations.