PS1変数では、これらのシーケンスはどういう意味ですか? [コピー]

PS1変数では、これらのシーケンスはどういう意味ですか? [コピー]

\[\e]0;$PWD\007\]との意味を理解するのに苦労しています\[\e(0\]b\[\e(B\]
私はWindowsでMobaXtermのプロンプトを設定していますが、これら2つのシーケンスは基本シーケンスです。彼らはそれぞれ始まりと終わりにあります。

以下は、生成されたプロンプトのスクリーンショットです。 ここに画像の説明を入力してください。

2番目は、伝統的な矢印の代わりに小さな矢印を表示するために使用されているようですが、どのようにして$この結果が得られるのかわかりません。ほぼゴミのように見えます。これは一種のUnicodeトリックだと思いますか?

最初はその目的が何であるか全く知りませんでした。私はこの部分がもっと好きです$PWD

リンクに関する質問:

さて、前述のように、2番目のシーケンスに矢印が表示されることはわかりますが、なぜ通常bで区切られた2つのエスケープシーケンスを使用しますか?これはとても奇妙です。
そして、最初の項目にはPWDは表示されません。私のスクリーンショットでは、日付が印刷される前でも最初にシーケンスが表示されます。紫色のパスはクラシック\ wを使用します。エスケープシーケンスに$ PWDを使用する理由を理解できず、この質問をしました。

ベストアンサー1

各ケースに特定のデータの「括弧」が含まれているのは、端末に通知するためです。スタート何かをしてからデータを送る終わる何かしてみてください。

最初の順序はxtermコントロール$PWDbashを使用してウィンドウのタイトル(およびアイコン名)に値を入れることができます。プロンプトには何も表示されません。シェル値$PWDはデータで、左側からエスケープシーケンスを開始し、右側で完了します。

VT100ライン描画文字セットに切り替える別の方法(参照:G0 文字セットの指定:0線画段階に入ると、Bラテン語に戻る-1)印刷(何か)第二。ただし、実際のVT100には矢印キーは表示されません。「HT」、水平タブの場合):

ここに画像の説明を入力してください。

ただし、一部の「VT100エミュレータ」は独自に選択します(通常は元のVT100選択を無視します)。興味深いことに、MobaXtermはPuTTYに基づいていますが、PuTTYはコメントに初期のVT52オプションを文書化しました(実装されていませんが)。第二):

        /*
         * 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ターミナルエミュレータのソースコードは、そのWebサイトに「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
};

最初の行は彼らが変更したものです(コメントはxtermで変更されたPuTTYから来たものです)。 xtermで最初の行をUTF-8としてレンダリングすると、どの文字が表示されます(ヒント:最初の項目は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)

提案された重複項目は、質問のどの部分、特に2番目の部分とも関係ありません。これは、プロンプト文字列がUTF-8を使用せずに別のエンコーディングを使用するためです。

おすすめ記事