Bashのような最新のシェルがrawモードで実行されているのに、なぜstty -a
出力に表示されないのですか?raw
私はすべての最新のシェルがrawモードで実行されるべきであることを知っています。つまり:
- 文字ごとに入力してください。
- エコーが無効になっています。
- 端子入出力のすべての特殊処理が無効になります。
Readline はユーザー入力を処理します。
raw
では、なぜ出力に表示されないのですかstty -a
?
答え1
それのおかげでオリジナルモード近似値です。正式な定義はありませんオリジナルモード実際、これはAPIごとに異なる意味を持ちます。
彼らが意味するのは、bash
このようなシェルが独自のラインエディタを無効にすることを実装しているということです。一部ttyラインルールの特徴。具体的には、独自のラインエディタ(icanon
別名設定-cbreak
)とローカルでラインルールを無効にする必要がありますecho
。^C
(設定)isig
時にSIGINT送信などの他の回線規則機能を無効にしません。
stty -a
個々の個々の用語の設定(たとえばicanon
、、、echo
上isig
)を報告します。
stty
一部のエイリアスもサポートしています。置く一度に複数の設定があります(例sane
:cooked
または...)。raw
。
stty raw
を除くすべてのttyライン規約機能を無効にしますecho
。したがって、ラインエディタで機能しない一部の機能(例isig
:)を無効にし、無効にしません。bash
echo
bash
GNU実装マニュアルはstty
これraw
と同じです。これは、(他の設定に関係なく)調整できる個々の設定の-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -icanon -opost -isig -iuclc -ixany -imaxbel -xcase min 1 time 0
セットです。termios
stty raw
これはエイリアスでopost
はなくstty
、独自の個別のttyラインルール設定ですが、他のすべての出力後処理設定に影響しますonlcr
。つまり、/がolcuc
オンにならないと効果はありません。これは、これらのすべての出力処理がうまくいかない理由を説明します。onlcr
olcuc
opost
stty raw
一部のシステムには、同時に複数の設定を指定できるcfmakeraw()
/libc機能があります。cfmakesane()
GNU libcはcfmakeraw()
少なくともGNUとは異なりますstty raw
。たとえば、echo
または。iuclc
ixoff