Jeg leser en bok om skallprogrammering og lærer at følgende kommandoer er likeverdige, som piper på min Mac, men som ikke gir noen lyd på Ubuntu:
$ echo $"\a" $ echo -e "\a" $
men i begge tilfeller ber terminalen om en tom linje. Mine spørsmål er:
- Hva «s
$"\a"
her? Parameterutvidelse, kommandosubstitusjon eller noe annet? - Hvorfor
echo
skriver ut en tom linje som om parameteren er udefinert, som for eksempel i tilfelle
$ echo $NONSENSE
hvilken ber tom linje? Takk!
Svar
don «t lage lyd på Ubuntu:
kanskje fordi din spesifikke terminalemulator er konfigurert til unngå lyder, eller fordi pcspkr
kjernemodulen er lastet av osv … Du kan bruke en annen terminalemulator (f.eks. den gamle xterm
) som skal pippe.
Hva «s
$"\a"
her?
Les kapittelet om skallutvidelse i Bash-manualen. Det kalles ANSI-C sitering (som kommentert av South Parker ).
Hvorfor ekko skriver ut tom linje
echo
-kommandoen (les mer ekko (1) …) er ofte en bash shell innebygd så (uten noen -n
) den skriver ut de utvidede argumentene (her bjellekarakteren) etterfulgt av en ny linje. Men terminalemulatoren din ringer ikke hørbar bjelle (og bjelletegnet vises ikke siden det er et kontrolltegn )
BTW, det ryktes at Apple misliker GPLv3 + -lisensen, så du kan oppgradere bash
til en nylig versjon (f.eks. 4.4 i august 2017) på Apple-datamaskinen din.
Du kan lese tty avmystifisert for en historisk tilnærming til terminalemulatorer på Unix. Se også pty (7) .
$'...'
er ikke ' t heter " fjerning av sitat ", menbash
manual gir det ikke '. Denne sitatformen støttes også av minstksh93
skall, men ikke avpdksh
. Jeg tror det ' er en utvidelse av POSIX-syntaksen.