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