La commande echo ajoute automatiquement une nouvelle ligne à la fin. C'est cool.
Mais que se passe-t-il si vous souhaitez afficher uniquement une nouvelle ligne vide ? Ou si vous voulez afficher quelque chose qui contient une nouvelle ligne ?
La bonne nouvelle est que echo vous permet d'utiliser le caractère de retour à la ligne \n
pour imprimer une nouvelle ligne dans la même ligne de sortie si vous utilisez le -e
choix :
echo -e "Name\nAddress\nPhone Number"
Si vous exécutez la commande ci-dessus, vous obtiendrez ce résultat :
Name
Address
Phone Number
C'est bien, non ? Voyons cela plus en détail.
Afficher une nouvelle ligne avec l'indicateur -e de la commande echo (recommandé)
Une nouvelle ligne est un terme que nous utilisons pour spécifier que la ligne actuelle est terminée et que le texte continuera à partir de la ligne en dessous de la ligne actuelle. Dans la plupart des systèmes de type UNIX, \n
est utilisé pour spécifier une nouvelle ligne. Il est appelé caractère de nouvelle ligne.
La commande echo, par défaut, désactive l'interprétation des échappements antislash. Donc, si vous essayez d'afficher une nouvelle ligne en utilisant la séquence d'échappement '\n', vous remarquerez un problème.
$ echo Hello\nworld
Hellonworld
$ echo 'Hello\nworld'
Hello\nworld
Mettre du texte entre guillemets simples en tant que littéral de chaîne ne fonctionne pas non plus.
Ce n'était pas un résultat attendu. Pour imprimer réellement une nouvelle ligne, vous pouvez utiliser le drapeau '-e' pour indiquer à la commande echo que vous souhaitez activer l'interprétation des échappements antislash.
$ echo -e 'Hello\nworld'
Hello
world
Bien, c'est ce que vous recherchez.
Permettez-moi d'autres façons d'afficher le caractère de nouvelle ligne.
écho à une variable contenant une nouvelle ligne
Vous pouvez stocker une chaîne dans une variable bash, puis la répercuter à l'aide du drapeau '-e'.
$ str="Hello\nworld"
$ echo -e $str
Hello
world
Utiliser le caractère '$' au lieu du drapeau -e
Le symbole du dollar, '$' est appelé le caractère "d'expansion" dans bash. C'est le caractère que j'ai utilisé dans l'exemple précédent pour faire référence à la valeur d'une variable dans le shell.
Si vous regardez attentivement l'extrait ci-dessous, vous vous rendrez compte que le caractère d'expansion, dans ce cas, agit pour contenir une valeur temporaire.
$ echo Hello$'\n'world
Hello
world
Ou, vous pouvez utiliser la chaîne entière comme 'variable temporaire' :
$ echo $'Hello\nworld'
Hello
world
Je préférerais utiliser le -e
drapeau, cependant.
faites écho à votre echo pour imprimer quelque chose avec une nouvelle ligne
Lorsque vous faites écho à un morceau de texte, la commande echo ajoutera automatiquement une nouvelle ligne (et voici comment vous pouvez l'empêcher) à la fin de votre texte.
Cela signifie que vous pouvez enchaîner plusieurs commandes d'écho pour créer une nouvelle ligne.
$ echo Hello; echo world
Hello
world
Utiliser printf pour imprimer une nouvelle ligne dans le shell Bash
printf est un autre outil de ligne de commande qui imprime essentiellement du texte sur le terminal, mais il vous permet également de formater votre texte.
L'utilisation est très simple et similaire à echo mais un peu plus fiable et cohérente.
$ printf 'Hello\nworld\n'
Hello
world
Comme prévu, vous avez une nouvelle ligne sans utiliser de drapeaux.
Conclusion
Personnellement, je préférerais m'en tenir au drapeau -e ou opter pour la commande printf pour afficher les nouvelles lignes en sortie. Je vous recommande de faire de même, mais n'hésitez pas à expérimenter.