1. ホーム
  2. linux

Linuxターミナル:タイピングフィードバックがなくなり、改行が表示されない

2023-11-19 11:01:39

質問

時々、出力が私のターミナルを壊すようなコマンドラインツール (Python スクリプト) を実行する必要があります。 実行が終了すると、入力のフィードバックがなくなり (自分が何を入力しているのかが見えなくなります)、また改行も表示されません。この現象は、ターミナルをリモートで Putty を介してリモートで起動した場合、またローカルで gnome-terminal .

例えば、問題が発生した後、私が ENTER pwd 入力 , と予想されます。

[userA@host006 ~]$
[userA@host006 ~]$ pwd
/home/userA
[userA@host006 ~]$

しかし、実際には出力されるのは

[userA@host006 ~]$ [userA@host006 ~]$ /home/userA
                                                             [userA@host006 ~]$

修正するには、そのターミナルを閉じて、新しいターミナルを立ち上げるしかありません。

スクリプトの出力には、ターミナル ベースの書式設定 (たとえば、いくつかのステータス メッセージを強調するために前景と背景を反転させる) が含まれているので、関連するかもしれません。この出力をファイルにダンプすると、次のようなものが表示されます。 [07mSome Message Here[0m .

これを防ぐためにできることはありますか?

どのように解決するのですか?

コマンドを実行する reset を実行すると、端末が復元されるはずです ( 参照 ).

この問題は、一般にバイナリデータをターミナルにダンプする際に発生します。 STDOUT で、受け取ったエスケープコードが処理されると、テキストの色の変更、エコーの無効化、文字セットの変更など、あらゆることを行うことができます。

これを避ける簡単な方法は、ターミナルに未知のバイナリ データをダンプしないようにすること、そして、もししなければならない場合は、ターミナルの設定を変更しないように 16 進数に変換することです。