Olvasok egy könyvet a shell programozásáról, és megtanulom, hogy a következő parancsok egyenértékűek, amelyek sípolnak a Mac gépemen, de nem adnak ki hangot az Ubuntuban:
$ echo $"\a" $ echo -e "\a" $
azonban mindkét esetben a terminál üres sort kér. A kérdéseim a következők:
- Mi a “s
$"\a"? Paraméter-bővítés, parancs-helyettesítés vagy valami más? - Miért
echoüres sort nyomtat, mintha a paraméter nincs meghatározva, például a
$ echo $NONSENSE melyik kéri az üres sort? Köszönet!
Válasz
ne “t” bármilyen hangot kiadni az Ubuntun:
talán azért, mert az adott terminálemulátor kerülje a hangokat, vagy azért, mert a pcspkr kernelmodul ki van töltve, stb … Használhat másik terminálemulátort (pl. a régi amelynek sípolnia kell.
Milyen “s
$"\a"itt?
Olvassa el a Bash kézikönyv fejezetét a héjbővítésről . A neve ANSI-C idézet (ahogy South Parker megjegyezte).
Miért nyomtatja ki az echo az üres sort?
a echo parancs (további információ echo (1) …) gyakran bash shell beépített , így (minden div id = “ae4dad6ee9″>
) kinyomtatja kibővített argumentumait (itt a harang karakter), majd új sort. De a terminálemulátorod nem szólal meg a hallható csengőn (és a csengő karakter nem jelenik meg, mivel vezérlő karakter )
BTW, az Apple a hírek szerint nem szereti a GPLv3 + licencet, ezért frissítheti bash az Apple számítógéped legújabb verziójára (pl. 4.4 augusztus 2017-ben).
A demystified tty történeti megközelítésként olvashatja el a Unix terminál emulátoraihoz. Lásd még: pty (7) .
$'...'isn ' t hívta a " idézeteltávolítást ", de abashkézikönyvet nem ad nevet neki '. Az idézet ezen formáját legalább aksh93shell, de nem apdksháltal. Úgy gondolom, hogy ' ez a POSIX szintaxis kiterjesztése.