Escape-Characters
BELL 字元“a”的機制?
我正在閱讀一本關於 shell 程式的書,並了解到以下命令是等效的,它們在我的 Mac 上發出嗶嗶聲,但在 Ubuntu 上沒有任何聲音:
$ echo $'\a' $ echo -e "\a" $
但是在這兩種情況下,終端都會提示一個空行。我的問題是:
- 這是什麼
$'\a'
?參數擴展、命令替換還是其他?- 為什麼
echo
列印空行,就好像參數未定義一樣,例如,在
$ echo $NONSENSE
哪個提示空行?謝謝!
不要在 Ubuntu 上發出任何聲音:
可能是因為您的特定終端仿真器被配置為避免聲音,或者因為
pcspkr
核心模組已解除安裝等…您可以使用另一個xterm
應該發出嗶嗶聲的終端仿真器(例如舊的)。這是什麼
$'\a'
?閱讀Bash 手冊中關於 shell 擴展的章節。它被稱為ANSI-C 引用(由South Parker評論)。
為什麼 echo 列印空行
該
echo
命令(閱讀更多echo(1) …)通常是內置的 bash shell,因此(沒有任何-n
)它會列印其擴展參數(此處為響鈴字元),後跟換行符。但是您的終端仿真器不會響鈴(並且不會顯示鈴鐺字元,因為它是控製字元)順便說一句,有傳言稱 Apple 不喜歡 GPLv3+ 許可證,因此您可以
bash
在 Apple 電腦上升級到最新版本(例如 2017 年 8 月的 4.4)。