Č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č
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) .
$'...'
není ' t s názvem " odstranění nabídky ", alebash
příručky nedává mu ' jméno. Tuto formu citace podporuje alespoňksh93
shell, ale nepdksh
. Věřím, že je to ' rozšíření syntaxe POSIX.