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 abash
kézikönyvet nem ad nevet neki '. Az idézet ezen formáját legalább aksh93
shell, de nem apdksh
által. Úgy gondolom, hogy ' ez a POSIX szintaxis kiterjesztése.