Linux中國

5 個有用的 Linux Shell 轉義序列

如何在你的 Bash 終端使用這些秘密代碼,請下載我們新的 Linux 元字元速查表。

我最近在讀一篇 Don watkins 關於 Shell 元字元的文章。他的文章讓我想到了你可以用 shell 輸入做的所有的奇怪事情。雖然我可能還沒有發現極端的情況,但是我經常發現 shell 轉義序列,比如 btf 非常有用。

轉義序列是一種特殊類型的終端輸入。它們旨在讓你能夠輸入物理鍵盤上沒有的字元或觸發事件。下面是我最喜歡的 Bash shell 的轉義序列。

1、退格符

你可以在命令中輸入若干退格符,以便在命令執行時觸發。例如這個命令,你可能會認為它的輸出是ab,但是看一下真正的輸出:

$ echo a$'b'b
b

技術上來說,Shell 確實輸出了 ab(你可以通過在命令後面附加 | wc -m 來確認這一點),但是全部輸出的一部分是 b 退格事件。退格鍵在輸出 b 字元之前刪除了 a 字元,因此輸出只有 b 字元。

2、換行符

換行符是一個讓你的 Shell 轉到下一行的第 0 列的信號。這一點很重要,當使用像 printf 這樣的命令時,它不會像 echo 那樣在輸出的末尾自動添加換行符。看看不帶 n 換行符的 printf 語句和帶換行符的 printf 語句之間的區別:

$ printf "%03d.txt" 1
001.txt$
$ printf "%03d.txtn" 1
001.txt
$

3、換頁符

f 換頁信號就像換行符,但是卻並不是返回到第 0 列。下面是一個使用換頁符而不是換行符的 printf 命令:

$ printf "%sf" hello
hello
     $

你的 Shell 提示符出現在下一行,但不是在下一行的行首。

4、製表符

有兩種製表符轉義序列:水平製表符 t 和垂直製表符 v。水平製表符如下所示:

$ echo a$'t'b
a     b

理論上,垂直製表符是相同的原理,但是在垂直空間中。然而,在大多數控制台上,一行的垂直間距是不可變的,所以它通常看起來很像一個換頁符:

$ echo a$'v'b
a
 b

5、Unicode

Unicode 標準中有很多可用的字元,而你的鍵盤只有大約 100 個鍵。在 Linux 上有幾種方法可以輸入 特殊字元,但是將它們輸入到終端的一種方法是使用 Unicode 轉義序列。這個轉義序列以 u 開頭,後跟一個十六進位值。你可以在文件 /usr/share/X11/locale/en_US.UTF-8/Compose 中找到許多 Unicode 值。你也可以在 https://www.Unicode.org/charts/ 查看 Unicode 規範。

這對於輸入像圓周率 π(圓的周長與直徑之比)等常見符號非常有用:

$ echo $'u03C0'
π

還有許多其他的符號和字元:

$ echo $'u270B'
✋
$ echo $'u2658'
♘
$ echo $'u2B67'
⭧

有盲文符號、音樂符號、字母、電氣符號、數學符號、表情符號、遊戲符號等等。事實上,有如此多的可用符號,有時你需要 U(注意大寫字母)Unicode 轉義序列來訪問高區的 Unicode。例如,這張紅心 5 的撲克牌只出現在 U 轉義序列中:

$ echo $'U1F0B5'
?

瀏覽一下 Unicode 規範,找到適合你的位置,並使用 uU 來訪問你需要的所有特殊符號。

除此之外

Bash Shell 的手冊頁中列出了 18 個轉義序列,我發現其中一些更有用。我已經在本文中介紹了我最愛的幾個,Don Watkins 也談到了他在文章中最常用的元字元,但是還有更多待發現。有很多方法可以對字母和數字、子 Shell、數學方程等進行編碼。為了更好地了解 Shell 可用的元字元,可以下載我們的 元字元速查表,你可以在使用計算機上最強大的應用程序 —— Linux 終端時將它放在手邊。

via: https://opensource.com/article/23/2/escape-sequences-linux-shell

作者:Seth Kenlon 選題:lkxed 譯者:zepoch 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國