Lxterminalのウィンドウで実行しているインタラクティブbashシェルで、何を台無しにしたのかわかりません。
Returnキーを入力しても新しい行は始まりませんが、Ctrl-Cで始まります。
$ ^C
$ $ $ $ $ ^C
$ ^C
$ $ $ $ $ $ $
コマンドを入力すると、Returnキーを押しても実行されますが、入力したコマンドが表示されません。
それが起こる前に、私はいくつかのコマンドを実行していましたSudo lsof ... | less
(またはSudo netstat ... | less
)、そして何も出力されていないようだったので、ctrl-cやqを任意の順序で複数回ヒットしました。ようやくless
から抜け出したとき、bashに関するその問題が発生しました。
シェルのstdoutを誤って別の場所にリダイレクトしましたか?
シェルを閉じたくないので、問題を解決する方法はありますか?ありがとう。
端末が「おかしい」モードでスタックしている可能性があります。通常はncurses
ライブラリに付属している/usr/bin/reset
コマンドでリセットできます。
reset
(別の回答で提案)が機能しない場合は、以下を試してください。
stty sane
多分続く
tput rs1
次のエイリアスを定義しました(stackoverflowのどこかで取得したと思います)。
alias fixtty='reset; stty sane; tput rs1; clear; echo -e "\033c"'
他の回答が示唆するように、最も簡単な修正はreset
を実行することです。
原因についてはどうですか?これは通常、バイナリファイルまたはデータを端末にcat
(または出力)したときに発生します。
テキストは単なるテキストであり、端末では特別に扱われませんが、テキストではない特殊な文字もいくつかあり、カーソルの移動、画面のクリア、色の変更、出力のエコーの停止などを行うために使用されます。
(テキストではなく)バイナリー・データを出力すると、端末はこれらの特殊な制御文字を認識し、通過するときにそれらを解釈しようとします。画面がクリア、点滅、またはジャンプすることに気づくかもしれません-これはすべて、これらのコントロールキャラクターが栄えているためです。新しいターミナルでhead /dev/urandom
を実行して、私の意味を確認してみてください。
ほとんどの場合、端末がとにかく奇妙な動作をしている場合は、reset
を実行するだけで、端末を基本的なデフォルトモードに設定するために必要なすべての特殊文字をエコーするだけで修正されます。 stop echoing input
コードとstart echoing input
コードがあります。バイナリデータには前者がランダムに含まれているため、入力内容を確認できません。また、reset
には後者(他のものも含む)が含まれるため、修正されます。