GNU/Linux >> Znalost Linux >  >> Linux

Mechanismus Bellového znaku „\a“?

Čtu knihu o programování shellu a učím se, že následující příkazy jsou ekvivalentní, které na mém Macu pípají, ale na Ubuntu nevydávají žádný zvuk:

$ echo $'\a'

$ echo -e "\a"

$

v obou případech však terminál vyzve prázdný řádek. Moje otázky jsou:

  1. Co je $'\a' tady? Rozšíření parametrů, substituce příkazů nebo něco jiného?
  2. Proč echo vypíše prázdný řádek, jako by parametr nebyl definován, jako například v případě

$ echo $NONSENSE který vyzve prázdný řádek? Díky!

Přijatá odpověď:

nevydávejte na Ubuntu žádný zvuk:

možná proto, že váš konkrétní emulátor terminálu je nakonfigurován tak, aby se vyhnul zvukům, nebo proto, že pcspkr modul jádra je uvolněn atd... Můžete použít jiný emulátor terminálu (např. starý xterm ), který by měl pípnout.

Co je $'\a' tady?

Přečtěte si kapitolu o rozšíření shellu v příručce Bash. Říká se tomu citace ANSI-C (jak komentoval South Parker).

Proč echo tiskne prázdný řádek

echo příkaz (více informací echo(1)…) je často vestavěný shell bash, takže (bez -n ) vypíše své rozšířené argumenty (zde znak zvonku) následované novým řádkem. Ale váš emulátor terminálu nezvoní slyšitelný zvonek (a znak zvonku není zobrazeno, protože se jedná o řídicí znak)

BTW, říká se, že Apple nemá rád licenci GPLv3+, takže byste mohli upgradovat svůj bash na nejnovější verzi (např. 4.4 v srpnu 2017) na vašem počítači Apple.

Můžete si přečíst tty demystifikované pro historický přístup k emulátorům terminálu na Unixu. Viz také pty(7).


Linux
  1. Bashscript funguje z terminálu, ale ne z Crontabu?

  2. Je možné získat postavu na terminálovém kurzoru pomocí únikových kódů Ansi?

  3. Jak vytvořit animaci rotace pomocí skriptu Shell?

  1. odesílání pošty z linuxového terminálu v jednom řádku

  2. echo znak nového řádku nefunguje v bash

  3. V terminálu nelze zadat žádný speciální znak nebo přehlásku

  1. Vydejte se na dobrodružství ve svém linuxovém terminálu

  2. Může Bash zapisovat do svého vlastního vstupního streamu?

  3. ip příkaz v terminálu Mac OS X