web-dev-qa-db-ja.com

bashがエコーを停止した場合はどうすればよいですか?

私が仕事で使用しているアプリケーションの1つは、bashにねじ込まれることがあるため、自分の入力が表示されなくなります。つまり.

$ echo foo
foo
$

なる

$ foo $

誤ってstty -echoを実行しようとしましたが、問題が悪化し、コマンドの受け入れがすべて停止し、入力が何らかの状態になり、改行するたびに>が表示されます。

私は何をすべきでしたか?

10
Kit Sunde

このようなものに対する通常の治療法は

stty sane

stty -echoは、入力のエコーをオフにするだけで、これをさらに悪化させるべきではありませんでした。

リターンと言うと、>が表示されるだけです。これは、次の行の継続を引き起こしている何かを開始したことを意味します。 echo 'は、終了する'が文字列を終了するのを待っているため、これを実行します。 if somethingなど、他の原因もこれを引き起こします。 then ... fiの部分を待っています。

たぶんヒットしたでしょう ctrl-c その段階で、端末がめちゃくちゃになって割り込みも生成されない場合を除いて、コマンドの残りを待って停止します。

19
wurtel

@wurtelの回答(特に>の問題について考えられる説明)に加えて、stty echostty -echoの反対なので、それを使用することができます。通常はncursesパッケージに付属するresetを使用することもできます。

3
peterph