私が理解しているように、端末はリストされた制御コードを傍受し、シェルはstty -a
Readlineライブラリを利用して入力を処理し、各キーを押すたびにバッファリングされた入力を受け取ります。
また、シェルはターミナル制御コードを介してReadlinesの変更をターミナルに渡す必要があります。ところで端末では^W
(単語を逆に削除)などの制御コードをどのように端末に渡すのでしょうか?
これを確認するために、端末とシェルの間の相互作用をデバッグしたいと思います。どうすればいいですか?
ベストアンサー1
シェル - >端末方向の通信を確認するには、ログストリームを使用してscript(1)
ログファイルを確認するのが最も簡単な方法です。
ioctl
これには、他の方向(キーを押す)への通信やバイパス操作(コマンドに対応する端末)は含まれませんstty
。
(それでも含める必要がある場合は、strace
端末エミュレータの特定の機能を適用またはデバッグする必要があります。)
^W
シェル - >ターミナルの方向には(戻る単語の削除)のようなものがないことがわかります。指定されたセルの数だけカーソルを移動したり、文字を印刷(上書き)したり、より単純な基本要素のみが存在します。文字単位に文字やスペースが含まれているかどうかによって動作が異なることはないため、ここには「単語」という概念はありません。