Lorsque nous exécutons une commande dans un shell bash, celui-ci imprime généralement le résultat de cette commande sur le terminal afin que nous puissions le lire immédiatement. Mais bash fournit également une option pour « rediriger » la sortie de n'importe quelle commande bash vers un fichier journal. Il peut enregistrer la sortie dans un fichier texte afin que nous puissions la consulter plus tard chaque fois que cela est nécessaire.
Méthode 1 : écrire la sortie dans un fichier uniquement
Pour écrire la sortie des commandes Bash dans un fichier, nous pouvons utiliser le signe crochet à angle droit (>) ou le signe double angle droit (>>) :
Panneau de support à angle droit (>)
Il est utilisé pour écrire la sortie de la commande bash dans un fichier disque. S'il n'existe aucun fichier portant le nom spécifié, il crée un nouveau fichier portant le même nom. Si le fichier existe avec le nom spécifié, le contenu du fichier sera écrasé.
Panneau double angle droit (>>)
Il est utilisé pour écrire la sortie des commandes bash dans un fichier, en ajoutant la sortie au contenu existant du fichier. Si le fichier n'est pas présent, il en crée un nouveau avec le nom spécifié.
Techniquement, ces deux opérateurs redirigent « stdout (la sortie standard) » vers un fichier.
De manière simple, lorsque nous écrivons le fichier pour la première fois et que nous ne voulons pas que des données précédentes soient présentes dans le fichier, nous devons utiliser le signe crochet droit (>). Il écrasera le contenu s'il est déjà présent dans le fichier. Et dans le script suivant, nous pouvons utiliser le double signe à angle droit (>>) pour ajouter les données à un fichier.
Exemple
La commande 'ls' permet d'imprimer tous les fichiers et dossiers présents dans le répertoire courant. Mais lorsque nous exécutons la commande 'ls' avec un crochet à angle droit (>), la liste des fichiers et des dossiers n'est pas imprimée à l'écran. Il enregistrera la sortie dans le fichier que nous spécifions avec, c'est-à-dire comme indiqué ci-dessous :
Script bash
#!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Checking the content of the file gedit output_file.txt
Sortir
Comme indiqué ici, la sortie de la commande 'ls' est redirigée vers un fichier. Pour imprimer le contenu d'un fichier sur le terminal, nous pouvons utiliser la commande 'cat' sous la forme suivante :
Script bash
#!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Printing the content of the file cat $output
Sortir
Si nous souhaitons rediriger la sortie de plusieurs commandes vers un seul fichier sans supprimer les données disponibles, nous pouvons alors utiliser l'opérateur >>. Supposons que nous souhaitions ajouter les informations système au fichier spécifié, nous pouvons le faire de la manière suivante :
Script bash
#!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Appending the system information uname -a >> $output #Checking the content of the file gedit output_file.txt
Sortir
Ici, le résultat de la deuxième commande est ajouté à la fin du fichier.
stlc
Nous pouvons répéter ce processus plusieurs fois pour continuer à ajouter la sortie à la fin du fichier.
Méthode 2 : imprimer la sortie normalement et l'écrire dans un fichier
Certaines personnes n'aimeront peut-être pas écrire le résultat dans un fichier à l'aide des opérateurs > ou >>, car il n'y aura pas de résultat de la commande dans le terminal. C'est pourquoi la commande 'tee' est utilisée. La commande 'tee' est utilisée pour imprimer l'entrée qu'elle reçoit à l'écran. Il peut enregistrer la sortie dans un fichier en même temps.
Script bash
#!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls | tee $output
Sortir
Cela remplacera le contenu du fichier, tout comme l'opérateur > mais imprimera également la sortie à l'écran.
Si nous voulons écrire la sortie dans un fichier sans supprimer le contenu du fichier à l'aide de la commande tee, nous pouvons utiliser le formulaire suivant qui imprimera également la sortie sur le terminal :
Script bash
#!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt echo '<<>>' | tee -a $output #Write data to a file ls | tee $output echo | tee -a $output #Append System Information to the file echo '<<>>' | tee -a $output uname | tee -a $output
Sortir
Cela ajoutera non seulement la sortie à la fin du fichier, mais imprimera également la sortie à l'écran.