GNU/Linux >> Tutoriels Linux >  >> Linux

Bash :Écrire dans un fichier

L'une des tâches les plus courantes lors de l'écriture de scripts Bash ou de l'utilisation de 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 commande.

Écrire dans un fichier à l'aide des opérateurs de redirection #

Dans Bash, la redirection de la sortie vous permet de capturer la sortie d'une commande et de l'écrire dans un fichier.

Le format général de redirection et d'écriture de la sortie dans un fichier est le suivant :

output > filename 
output >> filename 
  • Le > L'opérateur de redirection écrit la sortie dans un fichier donné. Si le fichier existe, il est tronqué à zéro. Sinon, le fichier est créé. Soyez très prudent lorsque vous utilisez cet opérateur car vous risquez d'é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 rediriger la sortie du echo commande vers un fichier :

echo "this is a line" > file.txt

Pour éviter d'écraser les fichiers existants, activez l'option "noclobber" avec le set intégré :

set -o noclobberecho "this is a line" > file.txt
bash: file.txt: cannot overwrite existing file

Le >| vous permet de remplacer l'option "noclobber" de Bash :

set -o noclobberecho "this is a line" >| file.txt

Le >> l'opérateur ajoute la sortie à la fin du fichier, plutôt que d'écraser le fichier :

echo "this is a line" >> file.txt

Utilisez le printf commande pour créer une sortie complexe :

printf "Hello, I'm %s.\n" $USER > file.txt

Si vous souhaitez écrire plusieurs lignes dans un fichier, utilisez la redirection Here document(Heredoc).

Par exemple, vous pouvez passer le contenu au cat commande et écrivez-la dans un fichier :

cat << EOF > file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF

Pour ajouter les lignes, modifiez > avec >> avant le nom du fichier :

cat << EOF >> file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF

Vous pouvez écrire la sortie de n'importe quelle commande dans un fichier :

date +"Year: %Y, Month: %m, Day: %d" > file.txt

La sortie de la date commande sera écrite dans le fichier.

Écrire dans un fichier en utilisant le tee Commande #

Le tee La commande lit à partir de l'entrée standard et écrit à la fois sur la sortie standard et sur un ou plusieurs fichiers simultanément.

echo "this is a line" | tee file.txt

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 -a (--append ) :

echo "this is a line" | tee -a file.txt

Si vous ne voulez pas le tee pour écrire sur la sortie standard, vous pouvez la rediriger vers /dev/null :

echo "this is a line" | tee file.txt >/dev/null

Pour écrire le texte dans plusieurs fichiers, spécifiez les fichiers comme arguments du tee commande :

echo "this is a line" | tee file_1.txt file_2.txt file_3.txt

Un autre avantage du 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 sur lequel vous n'avez pas d'autorisation d'écriture, ajoutez sudo avant tee :

echo "this is a line" | sudo tee file.txt

L'echo 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 >> les opérateurs de redirection ou le tee commande.


Linux
  1. La fête ?

  2. Effectuer des opérations d'écriture atomique dans un fichier dans Bash ?

  3. Écrire dans le fichier .txt ?

  4. Rediriger toutes les sorties vers un fichier à l'aide de Bash sous Linux ?

  5. Comment rediriger un fichier téléchargé vers la sortie standard dans bash ?

Bash :ajouter au fichier

Remplacement de chaîne dans Bash

35 exemples de scripts bash

Script bash :comment écrire des données dans des fichiers texte

Script bash (III)

Tutoriel Unix Sed :comment écrire dans un fichier à l'aide de Sed