Bash
如何找出我的終端為 cat 不會顯示的某些特殊程式碼發送的轉義程式碼?
我想知道我的終端為 Ctrl+Backspace 和 Alt+Backspace 發送了什麼,執行此操作的標準方法是
cat
在終端上執行並鍵入內容通常有效,但是對於像這樣的某些輸出,結果很棘手。我猜 Alt+Backspace 正在發送
\x1b\x7f
(即轉義退格),但是如果我執行cat
並鍵入 Ctrl+V 和 Alt+Backspace,或者只是 Alt+Backspace,會發生什麼情況是轉義將被“鍵入”並且然後立即用退格鍵將其刪除,因此看起來什麼都沒有發生。我只是通過看到我的電腦渲染了一個^[
逃生幀在那裡才了解到這一點。到目前為止,我不確定如何計算出 Ctrl+Backspace 發送的內容。即使在 bash 提示符下都刪除了一個單詞,它也不是 Ctrl+W,因為
cat
它在 Ctrl+W 刪除一個單詞時什麼都不做!
只需使用以下命令:
showkey -a
在
zsh
中,有:$ STTY='raw -echo min 0 time 40' cat -vte ^[^?
或與
bash
:$ s=$(stty -g); stty raw -echo min 0 time 40; cat -vte; stty "$s" ^[^?
您將看到終端輸入原始,因為它發送它並由
cat -vte
. 在 4 秒(40 分秒)內不輸入任何內容以停止。您可以替換
cat -vte
為od -An -w1 -tu1 -tx1 -to1 -ta
(假設 GNUod
或兼容),例如以十進制、十六進制、八進製或字元形式查看每個字節值。27 1b 033 esc 127 7f 177 del