Je lis un livre sur la programmation shell et j'apprends que les commandes suivantes sont équivalentes, qui émettent un bip sur mon Mac mais n'émettent aucun son sur Ubuntu :
$ echo $'\a'
$ echo -e "\a"
$
cependant, dans les deux cas, le terminal affiche une ligne vide. Mes questions sont :
- Qu'est-ce que
$'\a'
ici? Extension de paramètre, substitution de commande ou autre chose ? - Pourquoi
echo
imprime une ligne vide comme si le paramètre n'était pas défini, comme par exemple, dans le cas de
$ echo $NONSENSE
qui invite ligne vide? Merci !
Réponse acceptée :
ne faites aucun son sur Ubuntu :
peut-être parce que votre émulateur de terminal particulier est configuré pour éviter les sons, ou parce que le pcspkr
le module du noyau est déchargé, etc… Vous pouvez utiliser un autre émulateur de terminal (par exemple, l'ancien xterm
) qui devrait émettre un bip.
Qu'est-ce que
$'\a'
ici ?
Lisez le chapitre sur l'expansion du shell du manuel de Bash. C'est ce qu'on appelle la citation ANSI-C (comme commenté par South Parker).
Pourquoi echo affiche une ligne vide
l'echo
command (en savoir plus echo(1)…) est souvent un shell bash intégré donc (sans aucun -n
) il imprime ses arguments développés (ici le caractère cloche) suivis d'une nouvelle ligne. Mais votre émulateur de terminal ne sonne pas la cloche audible (et le caractère de la cloche n'est pas affiché, puisqu'il s'agit d'un caractère de contrôle)
BTW, la rumeur dit qu'Apple n'aime pas la licence GPLv3 +, vous pouvez donc mettre à niveau votre bash
vers une version récente (par exemple 4.4 en août 2017) sur votre ordinateur Apple.
Vous pouvez lire le tty démystifié pour une approche historique des émulateurs de terminaux sous Unix. Voir aussi pty(7).