Mechanizm znaku BELL ' \ a '?

Czytam książkę na temat programowania powłoki i dowiaduję się, że następujące polecenia są równoważne, które brzmią na moim Macu, ale nie wydają żadnego dźwięku w systemie Ubuntu:

$ echo $"\a" $ echo -e "\a" $ 

jednak w obu przypadkach terminal wyświetla pustą linię. Moje pytania to:

  1. Co „s $"\a" tutaj? Rozwijanie parametrów, podstawianie poleceń czy coś innego?
  2. Dlaczego echo wyświetla pustą linię, tak jakby parametr był niezdefiniowany, jak na przykład w przypadku

$ echo $NONSENSE co powoduje wyświetlenie pustej linii? Dzięki!

Odpowiedz

nie „t zrobić jakikolwiek dźwięk w Ubuntu:

być może dlatego, że twój konkretny emulator terminala jest skonfigurowany do unikaj dźwięków lub ponieważ moduł jądra pcspkr jest wyładowany, itd. … Możesz użyć innego emulatora terminala (np. starego xterm) co powinno być sygnalizowane.

Co tutaj jest $"\a"?

Przeczytaj rozdział poświęcony rozszerzaniu powłoki w podręczniku Bash. Nazywa się on cytowanie ANSI-C (komentarz South Parker ).

Dlaczego echo drukuje pustą linię

polecenie echo (czytaj więcej echo (1) …) jest często wbudowaną powłoką bash , więc (bez -n) wypisuje swoje rozwinięte argumenty (tutaj znak dzwonka), po których następuje nowa linia. Jednak emulator terminala nie emituje dźwięku dzwonka (a znak dzwonka nie jest wyświetlany, ponieważ jest to znak kontrolny )

Przy okazji, Apple podobno nie lubi licencji GPLv3 +, więc możesz zaktualizować bash do najnowszej wersji (np. 4.4 z sierpnia 2017 r.) na komputerze Apple.

Możesz przeczytać tty zdemistyfikowany , aby zapoznać się z historycznym podejściem do emulatorów terminali w systemie Unix. Zobacz także pty (7) .

Komentarze

  • To ' jest bardzo pouczające, wielkie dzięki! 🙂
  • $'...' nie jest ' t nazywa " usuwanie cytatów ", ale bash instrukcja nie ' nie nadaje mu nazwy. Ta forma cytowania jest również obsługiwana przynajmniej przez ksh93, ale nie przez pdksh. Uważam, że ' jest rozszerzeniem składni POSIX.
  • Kusalananda Myślę, że masz rację, składnia nazywa się cytowaniem ASCI-C: gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
  • @SouthParker Ah, że ' s jego nazwę. Dzięki za pomoc w zapamiętaniu!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *