五個有用的 Linux Shell 轉義序列
我最近在讀一篇 Don watkins 關于 Shell 元字符的文章?。他的文章讓我想到了你可以用 shell 輸入做的所有的奇怪事情。雖然我可能還沒有發現極端的情況,但是我經常發現 shell 轉義序列,比如 ??\b?
??、??\t?
?? 和 ??\f?
? 非常有用。
轉義序列是一種特殊類型的終端輸入。它們旨在讓你能夠輸入物理鍵盤上沒有的字符或觸發事件。下面是我最喜歡的 Bash shell 的轉義序列。
1、退格符
你可以在命令中輸入若干退格符,以便在命令執行時觸發。例如這個命令,你可能會認為它的輸出是??ab?
?,但是看一下真正的輸出:
從技術上來說,Shell 確實輸出了 ??ab?
?(你可以通過在命令后面附加 ??| wc -m?
? 來確認這一點),但是全部輸出的一部分是 ??\b?
? 退格事件。退格鍵在輸出 ??b?
? 字符之前刪除了 ??a?
? 字符,因此輸出只有 ??b?
? 字符。
2、換行符
換行符是一個讓你的 Shell 轉到下一行的第 0 列的信號。這一點很重要,當使用像 ??printf?? 這樣的命令時,它不會像 ??echo?
? 那樣在輸出的末尾自動添加換行符。看看不帶 ??\n?
? 換行符的 ??printf?
? 語句和帶換行符的 ??printf?
? 語句之間的區別:
3、換頁符
??\f?
? 換頁信號就像換行符,但是卻并不是返回到第 0 列。下面是一個使用換頁符而不是換行符的 ??printf?
? 命令:
你的 Shell 提示符出現在下一行,但不是在下一行的行首。
4、制表符
有兩種制表符轉義序列:水平制表符 ??\t?
? 和垂直制表符 ??\v?
?。水平制表符如下所示:
理論上,垂直制表符是相同的原理,但是在垂直空間中。然而,在大多數控制臺上,一行的垂直間距是不可變的,所以它通常看起來很像一個換頁符:
5、Unicode
Unicode 標準中有很多可用的字符,而你的鍵盤只有大約 100 個鍵。在 Linux 上有幾種方法可以輸入 ??特殊字符??,但是將它們輸入到終端的一種方法是使用 Unicode 轉義序列。這個轉義序列以 ??\u?
? 開頭,后跟一個十六進制值。你可以在文件 ??/usr/share/X11/locale/en_US.UTF-8/Compose?
? 中找到許多 Unicode 值。你也可以在 ??https://www.Unicode.org/charts/?? 查看 Unicode 規范。
這對于輸入像圓周率 π(圓的周長與直徑之比)等常見符號非常有用:
還有許多其他的符號和字符:
有盲文符號、音樂符號、字母、電氣符號、數學符號、表情符號、游戲符號等等。事實上,有如此多的可用符號,有時你需要 ??\U?
?(注意大寫字母)Unicode 轉義序列來訪問高區的 Unicode。例如,這張紅心 5 的撲克牌只出現在 ??\U?
? 轉義序列中:
瀏覽一下 Unicode 規范,找到適合你的位置,并使用 ??\u?
? 和 ??\U?
? 來訪問你需要的所有特殊符號。
除此之外
Bash Shell 的手冊頁中列出了 18 個轉義序列,我發現其中一些更有用。我已經在本文中介紹了我最愛的幾個,Don Watkins 也談到了他在文章中最常用的元字符,但是還有更多待發現。有很多方法可以對字母和數字、子 Shell、數學方程等進行編碼。為了更好地了解 Shell 可用的元字符,可以下載我們的 ??元字符速查表??,你可以在使用計算機上最強大的應用程序 —— Linux 終端時將它放在手邊。