Mechanismus znaku BELL ' \ a '?

Čtu knihu o programování prostředí a učím se, že následující příkazy jsou ekvivalentní, což pípá na mém Macu, ale na Ubuntu nevydává žádný zvuk:

$ echo $"\a" $ echo -e "\a" $ 

v obou případech však terminál vyzve k zadání prázdného řádku. Moje otázky jsou:

  1. Co je $"\a" zde? Rozšíření parametrů, nahrazení příkazů nebo něco jiného?
  2. Proč echo vytiskne prázdný řádek, jako kdyby parametr nebyl definován, jako například v případě

$ echo $NONSENSE který vyzve k vyplnění prázdného řádku? Díky!

Odpovědět

don „t vydat jakýkoli zvuk v Ubuntu:

možná proto, že váš konkrétní emulátor terminálu je nakonfigurován tak, aby vyhněte se zvukům, nebo proto, že modul jádra pcspkr je uvolněn atd. … Můžete použít jiný emulátor terminálu (např. starý xterm) které by měly pípat.

Co je $"\a" zde?

Přečtěte si kapitolu o rozšiřování prostředí příručky Bash. Nazývá se Citace ANSI-C (jak komentoval South Parker ).

Proč echo tiskne prázdný řádek

příkaz echo (přečíst více echo (1) …) je často integrovaný bash shell tak (bez -n) vytiskne své rozšířené argumenty (zde znak zvonu) následovaný novým řádkem. Váš emulátor terminálu však nezvoní na zvukový zvon (a znak zvonku se nezobrazí , protože se jedná o kontrolní znak )

BTW, Apple se říká, že nemá rád licenci GPLv3 +, takže můžete upgradovat bash do nedávné verze (např. 4.4 v srpnu 2017) ve vašem počítači Apple.

Můžete si přečíst demystifikovanou verzi pro historický přístup k terminálovým emulátorům na Unixu. Viz také pty (7) .

Komentáře

  • To ' je intenzivně informativní, obrovské díky! 🙂
  • $'...' není ' t s názvem " odstranění nabídky ", ale bash příručky nedává mu ' jméno. Tuto formu citace podporuje alespoň ksh93 shell, ale ne pdksh. Věřím, že je to ' rozšíření syntaxe POSIX.
  • Kusalananda Myslím, že máte pravdu, syntaxe se nazývá citace ASCI-C: gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
  • @SouthParker Ah, to ' je jeho název. Děkujeme, že jste mi pomohli zapamatovat si.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *