Comment utiliser la commande Echo sous Linux
- Dave McKay
@TheGurkha
- 29 octobre 2019, 8h00 EDT
Le echo
est parfaite pour écrire du texte formaté dans la fenêtre du terminal. Et il n’est pas nécessaire que ce soit du texte statique. Il peut inclure des variables shell, des noms de fichiers et des répertoires. Vous pouvez également rediriger l’écho 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 adorait 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 faire des reproches à sa femme, Hera, si elle le suivait. Hera est venue chercher Zeus, et Echo a fait tout ce qu’elle pouvait pour garder Hera en conversation. Finalement, Hera perdit son sang-froid et maudit la pauvre Echo pour qu’elle ne répète que les derniers mots que quelqu’un d’autre avait dit. Ce que Hera a fait à Zeus quand elle l’a rattrapé est une supposition de n’importe qui.
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 serions pas en mesure d’obtenir une sortie visible à partir de scripts shell, par exemple.
Sans être chargé avec une multitude de cloches et de sifflets, il y a de fortes chances que echo
ait des capacités que vous ne connaissiez pas ou que vous aviez oubliées.
echo? echo!
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
Le type
nous indique si la commande que nous lui passons comme argument est un shell intégré, un exécutable binaire, un alias ou une fonction. Il nous rapporte que echo
est un shell intégré.
Dès qu’il a trouvé une réponse, type
cesse de rechercher d’autres correspondances. Il ne nous dit donc pas s’il existe d’autres commandes portant le même nom dans le système. Mais il nous dit lequel il trouve en premier. Et c’est celle qui sera utilisée par défaut lorsque nous émettrons cette commande.
La commande whereis
recherche l’exécutable binaire, le code source et la page de manuel pour la commande que nous lui transmettons comme paramètre de ligne de commande. Il ne recherche pas les composants internes du shell car ils n’ont pas d’exécutable binaire distinct. 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 vers 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 valeur par défaut version 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 voulez qu’il affiche:
echo My name is Dave.
Le texte est répété pour nous. Mais en expérimentant, 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 s’assied là, attendant. Ctrl + C vous ramènera à l’invite de commande. Que s’est-il passé là-bas?
Le guillemet simple ou l’apostrophe dans le mot « Je suis » confus echo
. Il a interprété ce guillemet simple comme le début d’une section entre guillemets de texte. Comme il n’a pas détecté de guillemet simple de fermeture, echo
attendait d’autres entrées. Il s’attendait à ce que d’autres entrées incluent le guillemet simple manquant qu’il attendait.
Pour inclure un guillemet simple dans une chaîne, la solution la plus simple est d’envelopper la chaîne entière entre guillemets doubles:
echo "My name is Dave and I"m a geek."
Enveloppant votre texte les guillemets doubles sont un bon conseil général. Dans les scripts, il délimite proprement les paramètres que vous passez à echo
. Cela facilite grandement la lecture et le débogage des scripts.
Que faire 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 met le mot « geek » entre guillemets doubles pour nous. Nous verrons bientôt plus de ces caractères échappés par une barre oblique inverse.
Utilisation de 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 contenant des valeurs insérées pour nous par le shell. Nous peut définir une variable simple avec cette commande:
my_name="Dave"
Une variable appelée my_name
a été créée. Elle a été 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 mettre un signe dollar $
devant le nom de la variable pour faire savoir à echo
qu’il s’agit d’une variable.
Il y a une mise en garde. Si vous avez entouré votre chaîne de guillemets simples, echo
traitera tout à la lettre. Pour afficher la valeur de la variable et non le nom de la variable, utilisez des guillemets doubles.
echo "My name is $my_name"
echo "My name is $my_name"
À juste titre, cela vaut la peine d’être répété:
- L’utilisation de guillemets simples entraîne l’écriture littérale du texte dans la fenêtre du terminal.
- L’utilisation de guillemets doubles entraîne la variable en cours d’interprétation – également appelée expansion de variable – et la valeur est écrite dans la fenêtre du terminal.
CONNEXION: Comment travailler avec des variables dans Bash
Utilisation des commandes avec echo
Nous pouvons utiliser une commande avec echo
et incorporer sa sortie dans la chaîne qui est écrite dans la fenêtre du terminal. Nous devons utiliser le signe dollar $
comme si la commande était une variable, et mettre 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 quelque chose qui ne va pas dans la syntaxe de votre commande, vous l’identifiez et le 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 J’ai déjà prouvé la syntaxe de la commande.
Alors, essayez ceci dans la fenêtre du terminal:
date +%D
Et, satisfaits que nous obtenant ce que nous attendons de la commande date, nous l’intégrerons dans une commande echo
:
echo "Today"s date is: $(date +%D)"
Notez que la commande est entre parenthèses et que le signe dollar $
est juste avant la première parenthèse.
Formatage du texte avec écho
L’option -e
(activer les échappements contre les barres obliques inverses) nous permet d’utiliser des caractères d’échappement avec des barres obliques inverses pour changer la disposition du texte. Voici les caractères échappés par une 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 une tabulation est insérée là où nous avons utilisé les caractères \t
.
echo -e "Here\vare\vvertical\vtabs"
Comme les \n
caractères de nouvelle ligne, une tabulation verticale \v
déplace le texte vers la ligne ci-dessous. Mais, contrairement aux caractères de nouvelle ligne \n
, l’onglet vertical \v
ne commence pas la nouvelle ligne à la colonne zéro. Il utilise la colonne courante.
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 écrasé par le » 4 ”.
Le caractère de retour chariot \r
fait revenir echo
au début de la ligne courante et écrivez tout autre texte de la colonne zéro.
echo -e "123\r456"
Les caractères « 123 » sont remplacés par les caractères « 456 ».
Le \a
le caractère d’alerte produira un « bip » audible. Il utilise le son d’alerte par défaut pour votre thème actuel.
echo -e "Make a bleep\a"
Le -n
(pas de nouvelle ligne) n’est pas une séquence d’échappement avec une barre oblique inverse, mais elle affecte l’aspect cosmétique de la mise en page du texte, nous en discuterons donc ici. Elle empêche echo
d’ajouter une nouvelle ligne à la fin du texte. L’invite de commande apparaît juste après le texte qui est écrit dans la fenêtre du terminal.
echo -n "no final newline"
Utilisation d’echo avec des fichiers et des répertoires
Vous pouvez utiliser echo
comme tri de la version pauvre de ls
. Vos options sont rares lorsque vous utilisez echo
comme ceci. Si vous avez besoin de toute sorte de fidélité ou de contrôle précis, il vaut mieux 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 fichiers « .desktop » dans le répertoire actuel:
echo *.desktop
Ouais. Cela ne joue pas avec les atouts de echo
. Utilisez ls
.
Ecriture 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 le >>
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 le texte est inséré dans ça. 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 souhaitons peut-être 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 que l’espace entre les paramètres soit interprété comme la fin de la liste de paramètres. Ils s’assurent que les paramètres sont correctement transmis à date
.
echo "Logfile started: $(date +"%D %T")" > logfile.txt
cat logfile.txt
Notre fichier journal est créé pour nous et cat
nous montre que l’horodatage et l’horodatage y ont été ajoutés.
CONNEXION : 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, nous devrons l’inventer.
Les manigances de Zeus ont fait du bien, après tout.
Dave McKay a utilisé des ordinateurs pour la première fois lorsque le ruban de papier perforé était en vogue, et depuis, il programme. Après plus de 30 ans dans l’industrie informatique, il est aujourd’hui journaliste technologique à plein temps. Au cours de sa carrière, il a travaillé en tant que programmeur indépendant, responsable d’une équipe internationale de développement logiciel, chef de projet de services informatiques et, plus récemment, en tant que délégué à la protection des données. Dave est un évangéliste Linux et un défenseur de l’open source.Lire la biographie complète «