Mécanisme du caractère BELL ' \ a '?

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:

  1. Que « s $"\a" ici? Extension de paramètres, substitution de commandes ou autre chose?
  2. 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) .

Commentaires

  • Ce ' est très instructif, merci beaucoup! 🙂
  • $'...' isn ' t appelé " suppression des citations ", mais le manuel bash ne ' t lui donner un nom. Cette forme de guillemet est également prise en charge par au moins le ksh93 shell mais pas par pdksh. Je crois que ' est une extension de la syntaxe POSIX.
  • Kusalananda Je pense que vous avez raison, la syntaxe est appelée ASCI-C en citant: gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
  • @SouthParker Ah, que ' en est le nom. Merci de maider à me souvenir!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *