Comment utiliser la commande Echo sous Linux
Le est parfaite pour écrire du texte formaté dans la fenêtre du terminal. Et il ne doit pas nécessairement s’agir de texte statique. Il peut inclure des variables shell, des noms de fichiers et des répertoires. Vous pouvez également rediriger echo pour créer des fichiers texte et des fichiers journaux. Suivez ce guide simple pour savoir comment.
Echo Répète Ce Que Vous Lui Dites De Répéter
Zeus aimait quitter le Mont Olympe pour se marier avec de belles nymphes. Lors d’un voyage, il a dit à une nymphe des montagnes appelée Echo de waylay sa femme, Héra, si elle le suivait. Héra est venue chercher Zeus, et Echo a fait tout ce qu’elle pouvait pour garder Héra en conversation. Finalement, Héra perdit son sang-froid et maudit le pauvre Echo pour qu’elle ne répète que les derniers mots que quelqu’un d’autre avait prononcés. Ce qu’Héra a fait à Zeus quand elle l’a rattrapé est une supposition de personne.
Et c’est à peu près le lot de echo
dans la vie. Il répète ce qu’on lui a dit de répéter. C’est une fonction simple, mais vitale. Sans echo
, nous ne pourrions pas obtenir la sortie visible des scripts shell, par exemple.
Bien qu’il ne soit pas chargé d’une multitude de cloches et de sifflets, il y a de fortes chances que echo
possède des capacités que vous ne connaissiez pas ou que vous aviez oubliées.
écho ? écho!
La plupart des systèmes Linux fournissent deux versions de echo
. Le shell Bash a son propre echo
intégré, et il existe également une version exécutable binaire de echo
.
Nous pouvons voir les deux versions différentes en utilisant les commandes suivantes :
type echo
whereis echo
La commande type
nous indique si la commande que nous lui transmettons comme argument est un shell intégré, un exécutable binaire, un alias ou une fonction. Il nous signale que echo
est un shell intégré.
Dès qu’il a trouvé une réponse, type
cesse de chercher d’autres correspondances. Il ne nous dit donc pas s’il y a d’autres commandes avec le même nom présentes dans le système. Mais il nous dit lequel il trouve en premier. Et c’est celui qui sera utilisé par défaut lorsque nous émettrons cette commande.
La commande whereis
recherche l’exécutable binaire, le code source et la page de manuel de la commande que nous lui transmettons en tant que paramètre de ligne de commande. Il ne recherche pas les builtins shell car ils n’ont pas d’exécutable binaire séparé. Ils font partie intégrante de l’exécutable Bash.
La commande whereis
signale que echo
est un exécutable binaire situé dans le répertoire /bin
.
Pour utiliser cette version de echo
vous devez l’appeler explicitement en fournissant le chemin d’accès à l’exécutable sur la ligne de commande :
/bin/echo --version
Le shell intégré ne sait pas ce que le --version
l’argument de ligne de commande est, il le répète simplement dans la fenêtre du terminal:
echo --version
Les exemples présentés ici utilisent tous la version par défaut de echo
, dans le shell Bash.
Ecrire du texte sur le Terminal
Pour écrire une simple chaîne de texte dans la fenêtre du terminal, tapez echo
et la chaîne que vous souhaitez qu’elle affiche :
echo My name is Dave.
Le texte est répété pour nous. Mais au fur et à mesure que vous expérimentez, vous découvrirez bientôt que les choses peuvent devenir un peu plus compliquées. Regardez cet exemple:
echo My name is Dave and I'm a geek.
La fenêtre du terminal affiche un signe >
et reste là, attendant. Ctrl + C vous ramènera à l’invite de commande. Que s’est-il passé là-bas ?
La citation ou l’apostrophe unique dans le mot « Je suis » confuse echo
. Il a interprété cette citation unique comme le début d’une section de texte citée. Comme il n’a pas détecté de guillemet unique de fermeture, echo
attendait plus d’entrée. Il s’attendait à ce que d’autres entrées incluent le guillemet unique manquant qu’il attendait.
Pour inclure un seul guillemet dans une chaîne, la solution la plus simple consiste à envelopper la chaîne entière dans des guillemets doubles:
echo "My name is Dave and I'm a geek."
Envelopper votre texte dans des guillemets doubles est un bon conseil général. Dans les scripts, il délimite proprement les paramètres que vous passez à echo
. Cela rend la lecture — et le débogage — des scripts beaucoup plus faciles.
Que se passe-t-il si vous souhaitez inclure un caractère guillemet double dans votre chaîne de texte? C’est facile, il suffit de mettre une barre oblique inverse \
devant le guillemet double (sans espace entre eux).
echo "My name is Dave and I'm a \"geek.\""
Ceci enveloppe le mot « geek” entre guillemets pour nous. Nous verrons plus de ces caractères échappés à la barre oblique inverse sous peu.
En utilisant des variables Avec echo
Jusqu’à présent, nous avons écrit du texte prédéfini dans la fenêtre du terminal. Nous pouvons utiliser des variables avec echo
pour produire une sortie plus dynamique et avec des valeurs insérées pour nous par le shell. Nous pouvons définir une variable simple avec cette commande :
my_name="Dave"
Une variable appelée my_name
a été créée. On lui a attribué la valeur du texte « Dave.”Nous pouvons utiliser le nom de la variable dans les chaînes que nous passons à echo
, et la valeur de la variable sera écrite dans la fenêtre du terminal. Vous devez placer un signe dollar $
devant le nom de la variable pour que echo
sache qu’il s’agit d’une variable.
Il y a une mise en garde. Si vous avez enveloppé votre chaîne avec des guillemets simples, echo
traitera tout littéralement. Pour afficher la valeur de la variable, et non son nom, utilisez des guillemets doubles.
echo 'My name is $my_name'
echo "My name is $my_name"
Cela vaut la peine de répéter:
- L’utilisation de guillemets simples entraîne l’écriture littérale du texte dans la fenêtre du terminal.
- En utilisant des guillemets doubles, la variable est interprétée — également appelée extension de variable – et la valeur est écrite dans la fenêtre du terminal.
CONNEXE: Comment travailler avec des variables dans Bash
En utilisant des commandes Avec echo
Nous pouvons utiliser une commande avec echo
et incorporer sa sortie dans la chaîne écrite dans la fenêtre du terminal. Nous devons utiliser le signe dollar $
comme si la commande était une variable, et envelopper toute la commande entre parenthèses.
Nous allons utiliser la commande date. Une astuce consiste à utiliser la commande seule avant de commencer à l’utiliser avec echo
. De cette façon, s’il y a un problème avec la syntaxe de votre commande, vous l’identifiez et la corrigez avant de l’inclure dans la commande echo
. Ensuite, si la commande echo
ne fait pas ce que vous attendez, vous saurez que le problème doit être lié à la syntaxe echo
car vous avez déjà prouvé la syntaxe de la commande.
Alors, essayez ceci dans la fenêtre du terminal:
date +%D
Et, satisfaits que nous obtenions ce que nous attendons de la commande date, nous l’intégrerons dans une commande echo
:
echo "Today's date is: $(date +%D)"
Remarque la commande est à l’intérieur des parenthèses et le signe dollar $
est immédiatement avant la première parenthèse.
Formatage du texte Avec echo
L’option -e
(activer les échappements de barre oblique inverse) nous permet d’utiliser des caractères échappés de barre oblique inverse pour modifier la disposition du texte. Ce sont les caractères échappés de la barre oblique inverse que nous pouvons utiliser:
Utilisons certains d’entre eux et voyons ce qu’ils font.
echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"
Le texte est divisé en une nouvelle ligne où nous avons utilisé les caractères \n
et un onglet est inséré où nous avons utilisé les caractères \t
.
echo -e "Here\vare\vvertical\vtabs"
Comme les nouveaux caractères de ligne \n
, un onglet vertical \v
déplace le texte sur la ligne ci-dessous. Mais, contrairement aux nouveaux caractères de ligne \n
, l’onglet vertical \v
ne démarre pas la nouvelle ligne à la colonne zéro. Il utilise la colonne actuelle.
Les caractères de retour arrière \b
font reculer le curseur d’un caractère. S’il y a plus de texte à écrire sur le terminal, ce texte écrasera le caractère précédent.
echo -e "123\b4"
Le ”3″ est sur-écrit par le ”4″.
Le caractère de retour chariot \r
amène echo
à revenir au début de la ligne courante et à écrire tout texte supplémentaire à partir de la colonne zéro.
echo -e "123\r456"
Les caractères « 123” sont remplacés par les caractères « 456”.
Le caractère d’alerte \a
produira un bip sonore. »Il utilise le son d’alerte par défaut pour votre thème actuel.
echo -e "Make a bleep\a"
L’option -n
(pas de saut de ligne) n’est pas une séquence échappée par une barre oblique inverse, mais elle affecte la beauté de la mise en page du texte, nous en discuterons donc ici. Il empêche echo
d’ajouter une nouvelle ligne à la fin du texte. L’invite de commande apparaît directement après le texte écrit dans la fenêtre du terminal.
echo -n "no final newline"
En utilisant echo Avec des fichiers et des répertoires
Vous pouvez utiliser echo
comme une sorte de version pauvre de ls
. Vos options sont rares lorsque vous utilisez echo
comme ceci. Si vous avez besoin de tout type de fidélité ou de contrôle fin, vous feriez mieux d’utiliser ls
et sa légion d’options.
Cette commande répertorie tous les fichiers et répertoires du répertoire courant:
echo *
Cette commande répertorie tous les fichiers et répertoires du répertoire courant dont le nom commence par « D » :
echo D*
Cette commande répertorie tous les « .desktop » fichiers dans le répertoire courant:
echo *.desktop
Ouais. Cela ne joue pas sur les forces de echo
. Utilisez ls
.
Écriture dans des fichiers avec echo
Nous pouvons rediriger la sortie de echo
et créer des fichiers texte ou écrire dans des fichiers texte existants.
Si nous utilisons l’opérateur de redirection >
, le fichier est créé s’il n’existe pas. Si le fichier existe, la sortie de echo
est ajoutée au début du fichier, écrasant tout contenu précédent.
Si nous utilisons l’opérateur de redirection >>
, le fichier est créé s’il n’existe pas. La sortie de echo
est ajoutée à la fin du fichier et n’écrase aucun contenu existant du fichier.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
Un nouveau fichier est créé par la première commande et du texte y est inséré. La deuxième commande ajoute une ligne de texte au bas du fichier. La commande cat
affiche le contenu du fichier dans la fenêtre du terminal.
Et bien sûr, nous pouvons inclure des variables pour ajouter des informations utiles à notre fichier. Si le fichier est un fichier journal, nous pourrions vouloir y ajouter un horodatage. Nous pouvons le faire avec la commande suivante.
Notez les guillemets simples autour des paramètres de la commande date
. Ils empêchent l’espace entre les paramètres d’être interprété comme la fin de la liste des paramètres. Ils s’assurent que les paramètres sont transmis correctement à date
.
echo "Logfile started: $(date +'%D %T')" > logfile.txt
cat logfile.txt
Notre fichier journal est créé pour nous et cat
nous montre que la date et l’horodatage les deux y ont été ajoutés.
LIÉS : Que sont stdin, stdout et stderr sous Linux ?
C’est le répertoire d’echo
Une commande simple, mais indispensable. S’il n’existait pas, il faudrait l’inventer.
Les manigances de Zeus ont fait du bien, après tout.