web-dev-qa-db-ja.com

OS Xで「stty raw -echo」が行うこと

私が試したとき:$ stty raw -echo私のターミナル(OS X 10.6ではBash)。それは文字通りのことを行い、ターミナルがそこでハングするようなものです。次に、マニュアルを検索します。

stty —端末デバイスインターフェイスのオプションを設定する

生(-生)

設定されている場合、端末のモードを変更して、入力または
出力処理を行います。設定されていない場合、端末のモードを、入出力処理を実行する適切な状態に変更します。端末ドライバには単一のRAWビットがないため、rawを設定する前に設定されたフラグを直感することはできません。つまり、rawの設定を解除しても、以前に有効だった設定の一部が元に戻らない場合があります。端末をraw状態に設定してから正確に復元するには、次のシェルコードをお勧めします。

save_state=$(stty -g)
stty raw
...
stty "$save_state"              

エコー(-エコー)

入力したすべての文字をエコーバックします(エコーバックしません)。

だから、ターミナルをrawモードにしてから、私が入力したものをそのまま返すのですか?誰かがこのコマンドの機能を説明してもらえますか?そして、引数にダッシュがあるときの違いは何ですか? rawおよび-raw?それらは同じ意味ですか?これを学ぶことができるリソースはありますか?

20
Juanito Fatas

まず、ダッシュは設定を「無効にする」ことを意味します。だからこれはエコーを有効にします:

stty echo

これはそれを無効にします:

stty -echo

無効にすると、タイピングはエコーバックされません。そのため、ターミナルがハングしているように見えます。 stty -echoを試してから、lsと入力してReturnキーを押します。lsの出力が表示されます。

raw設定は、入力と出力が処理されず、そのまま送信されることを意味します。処理には、特定の文字を無視する、文字を他の文字に変換する、割り込み信号を許可するなどがあります。たとえば、stty rawでは、Ctrl-Cを押してプロセスを終了することはできません。

30
Josh Jolly