L'une des tâches les plus courantes lors de l'écriture de scripts Bash ou du travail sur la ligne de commande Linux est la lecture et l'écriture de fichiers.
Cet article explique comment écrire du texte dans un fichier dans Bash, en utilisant les opérateurs de redirection et tee
commander.
Écrire dans un fichier à l'aide d'opérateurs de redirection #
Dans Bash, la redirection de sortie vous permet de capturer la sortie d'une commande et de l'écrire dans un fichier.
Le format général pour la redirection et l'écriture de la sortie dans un fichier est le suivant :
sortie > nom de fichier sortie >> nom de fichier
- le
>
l'opérateur de redirection écrit la sortie dans un fichier donné. Si le fichier existe, il est tronqué à une longueur nulle. Sinon, le fichier est créé. Soyez très prudent lorsque vous utilisez cet opérateur car vous pouvez écraser un fichier important. - le
>>
l'opérateur de redirection ajoute la sortie à un fichier donné. Le fichier est créé s'il n'existe pas.
Vous devez avoir des autorisations d'écriture sur le fichier. Sinon, vous recevrez une erreur d'autorisation refusée.
Voici un exemple simple montrant comment la redirection de la sortie du écho
commande dans un fichier :
echo "ceci est une ligne" > fichier.SMS
Pour éviter d'écraser les fichiers existants, activez l'option "noclobber" avec le ensemble
intégré :
set -o noclobber
echo "ceci est une ligne" > fichier.SMS
bash : fichier.txt : impossible d'écraser le fichier existant
le >|
L'opérateur vous permet de remplacer l'option Bash "noclobber":
set -o noclobber
echo "c'est une ligne" >| déposer.SMS
le >>
l'opérateur ajoute la sortie à la fin du fichier, plutôt que d'écraser le fichier :
echo "ceci est une ligne" >> fichier.SMS
Utilisez le imprimer
commande pour créer une sortie complexe :
printf "Bonjour, je suis %s.\n" $USER > fichier.SMS
Si vous souhaitez écrire plusieurs lignes dans un fichier, utilisez la redirection du document Here (Heredoc).
Par exemple, vous pouvez transmettre le contenu au chat
commande et écrivez-la dans un fichier :
chat << EOF > déposer.txt Le répertoire de travail actuel est : $PWD Vous êtes connecté en tant que $(whoami) EOF
Pour ajouter les lignes, modifiez >
avec >>
avant le nom du fichier :
chat << EOF >> fichier.txt Le répertoire de travail actuel est : $PWD Vous êtes connecté en tant que $(whoami) EOF
Vous pouvez écrire la sortie de n'importe quelle commande dans un fichier :
date +"Année : %A, Mois : %m, Jour : %d" > fichier.SMS
La sortie du Date
la commande sera écrite dans le fichier.
Écrire dans un fichier à l'aide du tee
Commande #
le tee
la commande lit à partir de l'entrée standard et écrit à la fois dans la sortie standard et dans un ou plusieurs fichiers simultanément.
echo "c'est une ligne" | fichier tee.SMS
le tee
le comportement par défaut de la commande est d'écraser le fichier spécifié, comme le >
opérateur. Pour ajouter la sortie au fichier, appelez la commande avec le -une
(--ajouter
) option :
echo "c'est une ligne" | tee -un fichier.SMS
Si vous ne voulez pas le tee
pour écrire sur la sortie standard, vous pouvez la rediriger vers /dev/null
:
echo "c'est une ligne" | fichier tee.txt >/dev/null
Pour écrire le texte dans plusieurs fichiers, spécifiez les fichiers comme arguments du tee
commander:
echo "c'est une ligne" | fichier tee_1.txt fichier_2.txt fichier_3.SMS
Un autre avantage de la tee
commande est que vous pouvez l'utiliser en conjonction avec sudo
et écrire dans des fichiers appartenant à d'autres utilisateurs. Pour ajouter du texte à un fichier pour lequel vous n'avez pas d'autorisations d'écriture, ajoutez sudo
avant que tee
:
echo "c'est une ligne" | fichier sudo tee.SMS
le écho
la sortie de la commande est transmise en entrée au tee
, qui élève les autorisations sudo et écrit le texte dans le fichier.
Conclusion #
Sous Linux, pour écrire du texte dans un fichier, utilisez le >
et >>
opérateurs de redirection ou les tee
commander.
Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.