Character-Encoding

stty 輸出中的字元是如何編碼的?

  • April 13, 2021

stty --all在一個終端上執行,該終端已被一個行為不良的程序重新配置,該程序在將我的終端恢復到其原始設置之前退出。部分輸出內容如下:eol = M-^?;. 這是什麼編碼?這個字元序列是什麼意思?

手冊頁有這樣的說明,大概是為那些了解先驗的人準備的:

在設置中,CHAR 是按字面意思表示的,或編碼為 ^c、0x37、0177 或 127;特殊值 ^- 或 undef 用於禁用特殊字元。

M-意味著設置了高位,因此在字元編碼中添加“0x80”。

表示“ ^?DEL”字元,所以 0x7F。

將兩者相加,我們得到 0xFF。

我們可以測試一下:

$ stty -a | grep -w eol | sed 's/.*; //'
eol = <undef>;

$ stty eol 0xff 

$ stty -a | grep -w eol | sed 's/.*; //'
eol = M-^?;

控製字元及其插入符號的完整列表可在關於 ASCII 的 Wikipedia 文章的控制程式碼圖表部分中找到。

引用自:https://unix.stackexchange.com/questions/643404