這些序列在 PS1 變數中意味著什麼?
我很難理解什麼
\[\e]0;$PWD\007\]
和\[\e(0\]b\[\e(B\]
意思。我在 Windows 上的 MobaXterm 上設置提示符,這兩個序列是預設序列。它們分別處於最開始和最結束。
我認為第二個是用來顯示取代傳統的小箭頭,
$
但我不知道它是如何達到這個結果的。它幾乎看起來像垃圾。我想這是某種unicode技巧?關於第一個,我完全不知道它的目的是什麼。我對這個
$PWD
部分更加困擾。關於連結的問題:
好吧,正如我提到的,我知道第二個序列顯示箭頭,但為什麼它使用兩個由普通 b 分隔的轉義序列?這很奇怪。
而且,關於第一個,它沒有顯示 PWD。在我的螢幕截圖中,這個序列顯示在最開始,甚至在日期列印之前。紫色路徑使用經典的 \w。我不明白為什麼它在轉義序列中使用 $PWD,這就是我問這個問題的原因。
每個案例都包含“包圍”一些數據的原因是它告訴終端開始做某事,然後發送數據,然後完成某事。
第一個序列是xterm 控制項,bash 可以使用該控制項將 的值放入
$PWD
視窗標題(和圖示名稱)中。您不會在提示中看到任何內容。shell 值$PWD
是數據,左邊開始一個轉義序列,右邊結束這個序列。另一個切換到 VT100 畫線字元集(請參閱指定 G0 字元集:
0
轉到畫線,B
返回到 Latin-1)為b列印(某些東西) 。但是真正的 VT100 並沒有為此顯示箭頭鍵(它會顯示一個*“HT”***,用於水平選項卡):但是,一些“VT100 仿真器”會做出自己的選擇(儘管通常他們會單獨留下原始的 VT100 選擇)。有趣的是,儘管 MobaXterm 基於 PuTTY,但 PuTTY 在評論中記錄了早期的 VT52 選擇(儘管它沒有實現b的選擇):
/* * From the VT100 Manual * NOTE: The special graphics characters in the VT100 * are different from those in the VT52 * * From VT102 manual: * 137 _ Blank - Same * 140 ` Reserved - Humm. * 141 a Solid rectangle - Similar * 142 b 1/ - Top half of fraction for the * 143 c 3/ - subscript numbers below. * 144 d 5/ * 145 e 7/ * 146 f Degrees - Same * 147 g Plus or minus - Same * 150 h Right arrow * 151 i Ellipsis (dots) * 152 j Divide by * 153 k Down arrow * 154 l Bar at scan 0
真正的 VT100 也可以模擬 VT52,因此 PuTTY 有一些與 VT52 相關的程式碼。但是顯示的轉義序列不會那麼遠——它只是 VT100。至於為什麼 VT52 提供右箭頭和下箭頭,而不是上箭頭或左箭頭,大約 40 年後還不清楚。但是 MobaXterm 的開發人員可能決定使用看起來沒那麼有用的程式碼來改進事情。
MobaXterm 終端仿真器的來源在他們的網站上,名稱為“MoTTY”。用於畫線字元的表格如下所示:
/* Character conversion arrays; they are usually taken from windows, * the xterm one has the four scanlines that have no unicode 2.0 * equivalents mapped to their unicode 3.0 locations. */ static const WCHAR unitab_xterm_std[32] = { //MOBAMODIF // 0x2666, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0, 0x00b1, 0x2022, 0x2592, 0x27a4, 0x240c, 0x2714, 0x2718, 0x00b0, 0x00b1, //END_MOBAMODIF 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, 0x23ba, 0x23bb, 0x2500, 0x23bc, 0x23bd, 0x251c, 0x2524, 0x2534, 0x252c, 0x2502, 0x2264, 0x2265, 0x03c0, 0x2260, 0x00a3, 0x00b7, 0x0020 };
第一行是他們改變的(評論來自 PuTTY,反過來改編自 xterm)。在 xterm 上將第一行渲染為 UTF-8 顯示字元是什麼(提示:第一個條目是八進制140,或**`**):
8226 ->0x2022 ->{•} (4 bytes, punct) 9618 ->0x2592 ->{▒} (4 bytes, printing) 10148 ->0x27a4 ->{➤} (5 bytes, printing) 9228 ->0x240c ->{␌} (4 bytes, printing) 10004 ->0x2714 ->{✔} (5 bytes, printing) 10008 ->0x2718 ->{✘} (5 bytes, printing) 176 ->0xb0 ->{°} (3 bytes, printing) 177 ->0xb1 ->{±} (3 bytes, printing)
建議的重複項與問題的任何一部分都無關,尤其是第二部分,因為提示字元串不是使用 UTF-8,而是使用不同的編碼。