GNU/Linux >> Tutoriels Linux >  >> Linux

La commande Bash Echo expliquée avec des exemples sous Linux

En tant que débutant lorsque vous commencez à travailler avec des scripts Bash, la première commande que vous apprendrez et utiliserez probablement est le echo commande. Vous pouvez penser à la commande bash echo quelque chose de similaire à print commande dans d'autres langages de programmation. L'echo La commande est un bash intégré et son but est d'imprimer la sortie sur stdout (c'est-à-dire Terminal).

Dans cet article, je vais vous montrer ce qu'est la commande bash echo et comment l'utiliser dans vos scripts shell. Avant d'entrer dans le sujet, voyons la différence entre une commande Bash intégrée et une commande externe.

Écho intégré de Bash vs commande d'écho externe

Sous Linux et d'autres systèmes de type Unix, certaines commandes sont fournies à la fois comme commandes intégrées et externes. Par exemple, le /bin/echo est une commande externe qui a le même nom que le echo bash intégré.

Lorsque nous appelons une commande qui existe à la fois en tant que commande intégrée et en tant que commande externe, la commande intégrée est généralement exécutée par défaut. Parce que l'ordre de priorité des noms de commande est alias , puis function , puis builtin , puis commande externe dans les répertoires répertoriés dans $PATH en ordre.

Si vous souhaitez forcer une commande externe disponible à la fois en tant que commande intégrée et externe, utilisez simplement son chemin complet.

Pour le dire clairement, la commande suivante appelle le bash intégré :

$ echo <some-text>

Et les appels suivants external echo commande :

$ /bin/echo <some-text>

Pour savoir si une commande est une commande intégrée ou externe, nous pouvons utiliser type commande :

$ type echo 
echo is a shell builtin

Pour afficher tous les emplacements contenant l'exécutable spécifié, utilisez -a drapeau :

$ type -a echo 
echo is a shell builtin
echo is /usr/bin/echo

Pour plus de détails sur le type utilisation de la commande, reportez-vous au lien suivant :

  • Le didacticiel de commande de type avec des exemples pour les débutants

Tout au long de ce guide, nous discuterons de l'echo intégré bash commande, pas la commande externe.

Afficher l'aide de la commande bash echo

Presque toutes les commandes Linux disponibles ont une page de manuel ou une section d'aide pour comprendre comment utiliser cette commande. Le manuel d'aide de echo La commande est incluse dans la page de manuel de Bash

Pour accéder à la page de manuel de bash commande, exécutez :

$ man bash

Maintenant, tapez /echo et appuyez sur n jusqu'à ce que vous voyiez la section d'aide de echo commande.

Vous pouvez également utiliser la commande à une ligne suivante pour afficher la section d'aide de echo commande :

$ man bash | less --pattern='^ *echo +\['

Structure de la commande echo

L'echo La commande accepte trois arguments optionnels et le texte à imprimer sur stdout.

echo [-neE] [arg ...]

-n → Do not append a new line
-e → enable interpretation of backslash escapes
-E → disable the interpretation of backslash escapes (default)

Ignorons les trois arguments optionnels pour l'instant et voyons comment utiliser echo pour imprimer un texte sur la sortie standard (Terminal).

Vous pouvez soit exécuter le morceau de code suivant directement dans le terminal, soit créer un fichier de script, puis l'exécuter. Je vais le lancer directement dans le Terminal :

$ echo "Hello World"
Hello World

Jetez un oeil à l'exemple ci-dessus. C'est le traditionnel hello world programme que nous exécutons chaque fois que nous apprenons un nouveau langage et l'exécutons comme premier code. L'echo la commande ici accepte "hello world" text comme argument et l'affiche sur le terminal (Stdout).

Comment supprimer le caractère de nouvelle ligne

Le comportement par défaut du bash echo commande est, elle ajoutera automatiquement une nouvelle ligne (\n ). Exécutez le même hello world programmez à nouveau et notez que l'invite du terminal s'affichera dans une nouvelle ligne.

$ echo "Hello world"
Hello world

Maintenant, si vous souhaitez supprimer ce comportement, vous pouvez utiliser le "-n" drapeau qui supprimera la nouvelle ligne et l'invite du terminal sera imprimée sur la même ligne, comme indiqué ci-dessous.

$ echo -n "Hello world"
Hello world

Que se passe-t-il lorsqu'aucun argument n'est passé ?

Lorsqu'aucun argument n'est passé à la commande echo, la commande n'échouera pas mais renverra une nouvelle ligne vide. Lancez votre terminal et exécutez "echo" et vous verrez qu'il imprime simplement une ligne vide et se termine.

$ echo
$ echo $?
0

Vous pouvez remplacer ce comportement en ajoutant le "-n" drapeau qui n'imprimera pas de saut de ligne même si aucun argument n'est passé.

$ echo -n 

Où cela sera-t-il utile ? Vous pourriez vous demander. Lorsque vous voulez des lignes vides entre vos sorties, vous pouvez utiliser echo sans arguments.

Travailler avec des variables et des commandes

L'echo La commande interprétera les variables définies par l'utilisateur ou shell qui sont passées en argument et affichera la valeur. Jetez un œil aux exemples ci-dessous.

Tout d'abord, la variable d'environnement "SHELL" est passé à echo commande et il imprime la valeur de la variable.

# Environmental Variable:

$ echo " I am currently using ${SHELL}"
I am currently using /bin/bash

Deuxièmement, la variable définie par l'utilisateur "NAME" est passé à echo commande et la valeur est imprimée sur le terminal.

# User Defined Variable:

$ NAME="PoP_OS"
$ echo "I am using ${NAME}"
I am using PoP_OS

Vous pouvez également exécuter des commandes à l'intérieur des arguments. Jetez un oeil à l'exemple ci-dessous où le "uname -r" commande est passée en argument et la commande est interprétée et la sortie est imprimée.

$ echo "KERNEL_VERSION=$(uname -r)"
KERNEL_VERSION=5.11.0-7620-generic

Impact de l'utilisation de guillemets simples et doubles

Dans tous les exemples précédents, vous avez peut-être remarqué que j'ai utilisé des guillemets autour des arguments. Que se passe-t-il lorsque l'argument n'est pas entouré de guillemets ? La commande Echo n'échouera pas et vous obtiendrez le même résultat.

Jetez un oeil à l'exemple suivant. J'exécute la même commande que celle que j'ai utilisée dans la section précédente mais sans les guillemets et elle imprime la sortie sans aucune erreur.

$ echo I am using ${NAME}
I am using Pop_OS

Comme bonne pratique, mettez toujours les arguments entre guillemets.

Si l'argument est le texte brut, vous pouvez utiliser des guillemets simples ou doubles. Mais si vous souhaitez exécuter une commande ou développer une variable dans l'argument, vous devez utiliser des guillemets doubles et non des guillemets simples.

Le guillemet simple empêchera toute commande d'être exécutée ou variable d'être développée. Il traitera simplement l'intégralité de l'argument comme du texte brut.

Regardez l'exemple ci-dessous. Lorsque je mets l'argument entre guillemets simples, la variable "NAME" n'est pas interprété et traité comme du texte.

# SINGLE QUOTES

$ echo 'I am using ${NAME}'
I am using ${NAME}

# DOUBLE QUOTES

$ echo "I am using Linux ${NAME}"
I am using Linux PoP_OS

Redirection et canalisation de sortie

Comme indiqué précédemment, le echo La commande imprime la sortie sur la sortie standard (terminal) par défaut. Lorsque vous écrivez des scripts shell, vous pouvez vous retrouver dans une situation pour stocker la sortie du echo commande dans un fichier. Vous pouvez le faire en utilisant la redirection bash opérateur.

$ echo "Welcome to OSTechNix" > /tmp/op.log
$ cat /tmp/op.log
Welcome to OSTechNix

Suggestion de lecture :

  • La redirection bash expliquée avec des exemples
  • Tutoriel Bash Heredoc pour les débutants

Vous pouvez également envoyer la sortie du echo commande au pipe pour un traitement ultérieur.

$ echo "I am using ${NAME}"
I am using PoP_OS
$ echo "I am using ${NAME}" | grep -i -o POP
PoP

Chaîne multiligne

Votre argument peut parfois apparaître sur plus d'une ligne. Vous pouvez entourer l'argument multiligne de guillemets doubles pour imprimer la sortie en tenant compte des nouvelles lignes, tabulations et espaces.

$ echo "This is Line 1
This is Line 2
This is Line 3"

Dans certains cas, bien que votre argument soit transmis sous la forme d'une chaîne multiligne, vous souhaiterez peut-être l'imprimer sur une seule ligne. Dans ce cas, utilisez le "\" symbole à la fin de chaque ligne, de sorte que la ligne suivante sera dans la continuité de la ligne précédente.

$ echo "I am running \
the echo command \
again"

Exemple de résultat :

I am running the echo command again

Ce n'est pas exclusivement spécifique au bash echo commande. Vous pouvez utiliser cette approche pour générer des commandes très volumineuses sur plusieurs lignes pour une meilleure lisibilité.

La barre oblique inverse échappe à l'interprétation

L'echo La commande accepte de nombreux caractères d'échappement comme arguments. Pour que ces caractères spéciaux soient reconnus par la commande echo, le "-e" le drapeau doit être passé. Vous pouvez obtenir la liste des caractères spéciaux pris en charge à partir du echo la page de manuel de la commande.

Vous n'utiliserez pas tous les caractères spéciaux dans votre vie de tous les jours. Vous utiliserez principalement des caractères de retour à la ligne, des tabulations et des caractères d'échappement antislash.

Caractère de nouvelle ligne - \n

Une nouvelle ligne sera ajoutée lorsque vous passerez \n à l'echo commande. Vous pouvez également passer plusieurs \n qui ajouteront plus de lignes en conséquence.

$ echo -e "This is the first line\nThis is the second Line\nThis is the third line"

Exemple de résultat :

This is the first line
This is the second Line
This is the third line

Onglet horizontal - \t

Quand \t est utilisé, il ajoutera des espaces de tabulation. Vous pouvez également combiner plusieurs caractères d'échappement comme je l'ai fait ci-dessous.

$ echo -e "Enter the U_NAME\t:\n"
Enter the U_NAME    :

Onglet vertical - \v

Pour créer des onglets verticalement, utilisez \v .

$ echo -e "Enter the username\vEnter the password"
Enter the username
                  Enter the password

Supprimer la sortie - \c

Quand \c est utilisé, tout ce qui vient après \c sera supprimé.

$ echo -e "I am using \cCosmic Desktop"
I am using

Retour chariot - \r

Quand \r est utilisé, le curseur est réinitialisé au premier caractère et à ce qui vient après \r est imprimé en remplaçant les caractères existants.

$ echo -e "I use Arch, \rBtw"
Btwse Arch, 

Désactiver l'interprétation des échappements par antislash

Le comportement par défaut de echo La commande est-elle traitera les caractères spéciaux comme du texte brut à moins que -e le drapeau est passé. Le même comportement peut être obtenu en utilisant le -E drapeau.

Je vais vous montrer un exemple.

Laissez-moi lancer echo commande sans aucun drapeau :

$ echo "Welcome to OSTechNix \nblog"
Welcome to OSTechNix \nblog

Ensuite, j'exécute la même commande avec -E Drapeau :

$ echo -E "Welcome to OSTechNix \nblog"
Welcome to OSTechNix \nblog

Comme vous pouvez le voir, le résultat est similaire lorsque j'ai exécuté le echo commande avec -E drapeau et sans aucun drapeau. Dans les deux cas, echo la commande traite le /n caractère spécial sous forme de chaîne simple.

Maintenant, laissez-moi exécuter à nouveau la même commande, mais cette fois avec -e drapeau.

$ echo -e "Welcome to OSTechNix \nblog"
Welcome to OSTechNix
blog

Avez-vous repéré la différence ? La commande echo n'a pas traité /n caractère sous forme de texte brut et il affiche tout ce qui vient après le /n caractère spécial dans la nouvelle ligne.

Par conséquent, si vous souhaitez utiliser des caractères spéciaux tels que \n , \t , \v etc., vous devez utiliser -e drapeau. Sinon echo traitera tout comme une chaîne simple.

Permettez-moi de vous montrer un autre exemple.

$ echo -e "Hello world\nHello World\nHello World"
Hello world
Hello World
Hello World

Comme vous le voyez dans la sortie ci-dessus, echo la commande affiche "Hello World" chaîne trois fois, une par une (c'est-à-dire dans une nouvelle ligne).

Que faire si vous souhaitez échapper uniquement à un caractère spécial spécifique ? C'est là que double barre oblique inverse (\\ ) vient à la rescousse.

Par exemple, je veux échapper au troisième /n caractère spécial dans la commande précédente.

Pour ce faire, je vais préfixer le troisième caractère spécial avec une double barre oblique inverse (\\ ) comme ci-dessous :

$ echo -e "Hello world\nHello World\\\nHello World"
Hello world
Hello World\nHello World

Maintenant, echo la commande traite le troisième \n caractère spécial sous forme de chaîne simple.

Par conséquent, lorsque vous avez beaucoup de caractères spéciaux et que vous souhaitez échapper uniquement un caractère spécial spécifique, vous devez ajouter la double barre oblique inverse (\\ ) devant ce caractère spécial.

Conclusion

Dans cet article, nous avons vu ce que echo commande est et différentes façons de l'utiliser. C'est une commande très simple et il n'y aura pas de script shell sans utiliser echo sauf si vous décidez d'utiliser printf qui est l'alternative pour echo commande en bash.

Lire connexe :

  • Scripts bash – Variables expliquées à l'aide d'exemples
  • Scripts bash – Fonctions expliquées à l'aide d'exemples
  • Scripts bash – Explication de la boucle For avec des exemples
  • Scripts bash :boucle While et Until expliquée à l'aide d'exemples

Linux
  1. Commande Linux wc avec exemples

  2. Commande d'arrêt Linux expliquée avec des exemples

  3. Commande Linux Traceroute, expliquée avec des exemples

  4. Commande JQ sous Linux avec exemples

  5. echo Exemples de commandes sous Linux

Commande Linux plus expliquée avec des exemples

La commande Linux wget expliquée avec des exemples

Commande Tr sous Linux expliquée avec des exemples

w Commande expliquée avec des exemples sous Linux

Explication de la commande Linux tee (avec exemples)

La commande Linux csplit expliquée (avec des exemples)