Comment ajouter du texte à un fichier sous Linux (sans éditeurs de texte)
Travailler avec des fichiers texte est une tâche courante pour les administrateurs et les utilisateurs de Linux. Alors que des éditeurs de texte comme nano ou vim sont des choix populaires, il se peut parfois que vous ayez besoin de ajouter du contenu à un fichier directement depuis la ligne de commande. Dans de tels cas, vous pouvez tirer parti de la puissance des outils intégrés de Linux comme les commandes echo et tee. Ce guide vous présentera deux méthodes pour ajouter du texte à un fichier sans utiliser d'éditeurs de texte sous Linux avec des exemples pratiques.
Pourquoi et quand avons-nous besoin d'ajouter du texte directement aux fichiers ?
Sur un système Linux minimal fraîchement installé sans connexion Internet, vous devrez peut-être configurer le réseau manuellement avant de pouvoir accéder aux dépôts en ligne ou installer des outils supplémentaires.
En utilisant echo ou tee avec un Here document, vous pouvez ajouter les détails de configuration réseau nécessaires à des fichiers tels que /etc/systemd/network/network-config.network ou /etc/network/interfaces.
Pas seulement configurer l'adresse IP, il existe plusieurs situations où ajouter du texte à un fichier depuis la ligne de commande en utilisant echo, tee ou des outils similaires peut être avantageux voire nécessaire :
- Scripting et automatisation : Lors de l'écriture de scripts ou de l'automatisation de tâches, il est souvent plus pratique et plus efficace de manipuler les fichiers directement depuis la ligne de commande, sans dépendre des éditeurs de texte nécessitant une interaction avec l'utilisateur.
- Administration à distance : Lors de l'administration de systèmes distants, utiliser des outils en ligne de commande pour ajouter du texte aux fichiers peut être plus pratique que d'ouvrir un éditeur de texte, surtout si vous devez effectuer des modifications sur plusieurs serveurs.
- Environnements conteneurisés ou minimaux : Dans les environnements Linux conteneurisés ou minimaux, les éditeurs de texte peuvent ne pas être installés ou disponibles par défaut. Dans de tels cas, les outils en ligne de commande comme
echoetteeoffrent un moyen plus rapide et fiable de manipuler les fichiers. - Configurations Scriptées : Lors du déploiement d'applications ou de services nécessitant des fichiers de configuration, il est courant de générer ou de modifier ces fichiers de manière programmatique, soit lors de l'installation, soit à l'exécution, en utilisant des outils en ligne de commande.
- Intégration du contrôle de version : Si vous travaillez avec des fichiers sous contrôle de version (par exemple, Git), ajouter du contenu depuis la ligne de commande peut être intégré de manière transparente dans votre flux de travail de développement, vous permettant de valider les modifications plus facilement.
- Journalisation et audit : Dans certains cas, vous pourriez avoir besoin d’ajouter des messages de journal ou des pistes d’audit aux fichiers directement depuis des scripts ou des commandes, sans ouvrir et éditer manuellement les fichiers.
L'autre jour, j'ai téléchargé une image Fedora 40 Server QEMU pour les tests. Lors du démarrage de mon système avec l'image Fedora 40 Server QEMU pour la première fois, l'installateur m'a demandé de configurer l'adresse IP manuellement.
Il n'y a pas d'éditeurs de texte disponibles dans l'image minimale du serveur Fedora, j'ai donc dû utiliser les méthodes suivantes pour configurer l'adresse IP dans Fedora.
D'accord, assez parlé. Permettez-moi de vous montrer comment j'ai utilisé les commandes echo et tee pour ajouter directement la configuration réseau dans un fichier situé dans /etc/systemd/network/ en utilisant la ligne de commande.
Ajouter du contenu aux fichiers en utilisant echo et la redirection de sortie
La commande echo est un outil puissant pour afficher du texte dans le terminal, et lorsqu'elle est combinée avec la redirection de sortie, elle peut être utilisée pour ajouter du contenu aux fichiers.
Voici comment vous pouvez utiliser cette méthode :
echo -e "\[Match\]\nName=enp3s0\n\n\[Network\]\nAddress=192.168.1.100/24\nGateway=192.168.1.1\nDNS=8.8.8.8" | sudo tee -a /etc/systemd/network/20-wired.network > /dev/nullDécomposons cette commande :
echo -epermet l'interprétation des séquences d'échappement avec des barres obliques inverses, vous permettant d'inclure des caractères de nouvelle ligne (\n) dans le texte entre guillemets.- Le texte entre guillemets représente le contenu que vous souhaitez ajouter au fichier. Dans cet exemple, il s'agit d'une configuration réseau.
- Le symbole
|(pipe) redirige la sortie deechovers la commandetee. sudo tee -a /etc/systemd/network/20-wired.networkajoute le contenu transmis en pipeline au fichier spécifié (/etc/systemd/network/20-wired.network). La commandesudoest utilisée pour accorder les permissions nécessaires pour écrire dans le fichier.> /dev/nullredirige la sortie standard deteevers le dispositif nul (/dev/null), la supprimant effectivement et gardant votre terminal propre.
Cette méthode est particulièrement utile lorsque vous devez ajouter plusieurs lignes de texte, car vous pouvez toutes les inclure dans la chaîne entre guillemets passée à echo.
La commande ci-dessus ajoutera ce qui suit dans le fichier /etc/systemd/network/20-wired.network. Vous pouvez le vérifier en affichant le contenu du fichier à l'aide de la commande cat :
$ cat /etc/systemd/network/20-wired.network
[Match]
Name=enp3s0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8Ajouter du texte à un fichier en utilisant tee avec un document Here
Une autre approche pour ajouter du texte à un fichier consiste à utiliser la commande tee en combinaison avec un document Here. Cette méthode peut être plus lisible et plus facile à gérer lorsqu'on traite du contenu sur plusieurs lignes.
Voici un exemple :
sudo tee -a /etc/systemd/network/20-wired.network > /dev/null <<EOF
[Match]
Name=enp3s0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
EOFVoici ce que fait chaque partie de la commande :
sudo tee -a /etc/systemd/network/20-wired.networkajoute l'entrée suivante au fichier spécifié, avecsudoaccordant les permissions nécessaires.> /dev/nullredirige la sortie standard deteevers le périphérique nul, gardant votre terminal propre.<<EOFdémarre un here document, ce qui vous permet de saisir plusieurs lignes jusqu'à ce que vous déclariez la fin de l'entrée avec la chaîneEOF.- Le texte saisi est écrit de manière plus naturelle, ce qui le rend plus facile à lire et à modifier par rapport aux caractères de nouvelle ligne échappés utilisés dans la Méthode 1.
Ce ne sont que des exemples. Vous pouvez utiliser ces méthodes dans d'autres situations également.
Les deux méthodes sont efficaces pour les scripts et l'utilisation en ligne de commande, et le choix entre elles dépend souvent de la préférence personnelle ou du cas d'utilisation spécifique.
La méthode echo est plus concise mais peut devenir moins lisible pour un contenu plus long ou plus complexe. L'approche du document ici est généralement plus lisible mais nécessite une étape supplémentaire pour déclarer le début et la fin de l'entrée.
Les deux méthodes vous permettent de ajouter du contenu aux fichiers directement depuis la ligne de commande sous Linux, sans avoir besoin d'un éditeur de texte. En tant qu'administrateur Linux, maîtriser ces compétences en ligne de commande peut améliorer votre flux de travail et augmenter votre productivité.