とは異なりbash
、ssh
のパスワードプロンプトでは、などの特別な端末入力ライブラリを使用しませんreadline
。 行編集機能は、POSIX TTYの基本的な行編集機能にすぎません。
そのため、POSIX TTYが「調理済み」モード(rawではない)、つまり標準モードであり、利用可能な行編集はカーネルによって提供されるものだけです。参照してくださいstty(1)
、とのことを注意してください
kill = ^U
。これは、バックスペース文字が定義されている場所でもありerase = ^?
ます()。単語消去(^W
)は、ブラインドを入力しないときに便利です。
lnext = ^V
これは、control-vを入力してから(control-cを含む)何でも入力してリテラルのcontrol-cを取得できることを意味します。
盲目的にやろうとしていたことをデバッグするには、実行するcat
かcat > /dev/null
、ターミナルで実行します。ものを入力してから、何が機能し、何が編集できないかを確認します。
readline
(で使用bash
)生の文字を読み取り、ユーザースペースで行編集を行います。ただし、デフォルトのバインディングは、両方が提供する編集機能のサブセットについては、デフォルトのTTY制御文字と互換性があります。
readlineは、単純なTTYの単純な行編集をはるかに超えています。(例えばTTYは行の末尾の文字を削除することができますので、何もありません^a
し、delete
あるいは左/右矢印)
ときにbash
フォアグラウンドでコマンドを実行します(それがデフォルトだから)、それは最初のカノニカルモードにTTYを置きます。そのため、stty -a
(リダイレクトなしで)実行すると、常に標準モードで独自のターミナルが表示されます。しかし、実行されている他のTTYからの入力をリダイレクトするbash
と、bash + readlineが適用された端末設定を確認できます。たとえば、その端末で実行しているため、rawモードでstty -a < /dev/pts/12
表示さ-icanon
れますbash
。(別のタブに切り替えて実行tty
した後、最初の端末からそのデバイスファイルパスを使用しました)。cat
他の端末で実行した場合icanon
、標準モードが表示されます。
関連:TTYの謎を解く
https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html
https://en.wikipedia.org/wiki/POSIX_terminal_interface