Je lis un livre sur la programmation shell et japprends que les commandes suivantes sont équivalentes, qui émettent un bip sur mon Mac mais ne font aucun son sur Ubuntu:
$ echo $"\a" $ echo -e "\a" $
cependant dans les deux cas, le terminal affiche une ligne vide. Mes questions sont:
- Que « s
$"\a"
ici? Extension de paramètres, substitution de commandes 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 une ligne vide? Merci!
Réponse
don « t faire un son sur Ubuntu:
peut-être parce que votre émulateur de terminal particulier est configuré pour éviter les sons, ou parce que le module du noyau pcspkr
est déchargé, etc … Vous pourriez utiliser un autre émulateur de terminal (par exemple lancien xterm
) qui devrait émettre un bip.
Que « s
$"\a"
ici?
Lisez le chapitre sur lexpansion du shell du manuel Bash. Il sappelle Citations ANSI-C (comme commenté par South Parker ).
Pourquoi echo imprime une ligne vide
la commande echo
(en savoir plus echo (1) …) est souvent un shell bash intégré donc (sans -n
) il imprime ses arguments développés (ici le caractère de cloche) suivis dune nouvelle ligne. Mais votre émulateur de terminal ne sonne pas la cloche audible (et le caractère de cloche nest pas affiché, car il sagit dun caractère de contrôle )
BTW, la rumeur dit quApple naime pas la licence GPLv3 +, vous pourriez donc mettre à jour votre bash
à une version récente (par exemple 4.4 en août 2017) sur votre ordinateur Apple.
Vous pourriez lire le tty démystifié pour une approche historique aux émulateurs de terminaux sous Unix. Voir aussi pty (7) .
$'...'
isn ' t appelé " suppression des citations ", mais le manuelbash
ne ' t lui donner un nom. Cette forme de guillemet est également prise en charge par au moins leksh93
shell mais pas parpdksh
. Je crois que ' est une extension de la syntaxe POSIX.