Č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:
- Co je
$"\a"zde? Rozšíření parametrů, nahrazení příkazů nebo něco jiného? - Proč
echovytiskne 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) .
$'...'není ' t s názvem " odstranění nabídky ", alebashpříručky nedává mu ' jméno. Tuto formu citace podporuje alespoňksh93shell, ale nepdksh. Věřím, že je to ' rozšíření syntaxe POSIX.