Ich lese ein Buch über Shell-Programmierung und lerne, dass die folgenden Befehle gleichwertig sind. Diese piepen auf meinem Mac, machen aber unter Ubuntu keinen Ton:
$ echo $"\a" $ echo -e "\a" $ In beiden Fällen fordert das Terminal jedoch eine Leerzeile auf. Meine Fragen sind:
-  Was ist hier $"\a"? Parametererweiterung, Befehlssubstitution oder etwas anderes?
-  Warum echodruckt eine leere Zeile, als ob der Parameter undefiniert wäre, wie zum Beispiel im Fall von
 $ echo $NONSENSE was fordert zur Eingabe einer leeren Zeile auf? Danke! 
Antwort
don „t Machen Sie unter Ubuntu einen Ton:
 Vielleicht, weil Ihr bestimmter  Terminalemulator  für konfiguriert ist Vermeiden Sie Sounds oder weil das Kernelmodul pcspkr entladen ist usw. Sie könnten einen anderen Terminalemulator verwenden (z. B. den alten xterm). was piepen sollte. 
Was ist
$"\a"hier?
Lesen Sie das Kapitel zur Shell-Erweiterung des Bash-Handbuchs. Es heißt ANSI-C-Zitat (wie von South Parker kommentiert).
Warum Echo leere Zeilen druckt
 den Befehl echo (lesen Sie mehr  echo (1)  …) ist häufig eine  eingebaute Bash-Shell  (ohne -n) druckt seine erweiterten Argumente (hier das Glockenzeichen) gefolgt von einem Zeilenumbruch. Ihr Terminalemulator läutet jedoch nicht die akustische Klingel (und das Klingelzeichen wird  nicht  angezeigt, da es sich um ein  Steuerzeichen  handelt). 
 Übrigens, Apple soll die GPLv3 + -Lizenz nicht mögen, daher könnten Sie Ihre  bash  auf eine aktuelle Version (z. B. 4.4 im August 2017) auf Ihrem Apple-Computer. 
Für einen historischen Ansatz lesen Sie möglicherweise den entmystifizierten tty zu Terminalemulatoren unter Unix. Siehe auch pty (7) .
Kommentare
- Das ' ist sehr informativ, vielen Dank! 🙂
-  $'...'ist nicht ' wird nicht als " Zitatentfernung " bezeichnet, sondern alsbash' gibt ihm keinen Namen. Diese Form des Zitierens wird auch von mindestensksh93Shell, aber nicht vonpdksh. Ich glaube, es ist ' eine Erweiterung der POSIX-Syntax.
- Kusalananda Ich denke, Sie haben Recht, die Syntax heißt ASCI-C und zitiert: gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
- @SouthParker Ah, das ' s der Name davon. Vielen Dank, dass Sie mir geholfen haben, mich zu erinnern!