74

ときどきコマンドライン ツール (Python スクリプト) を実行しなければならないことがありますが、その出力によって端末が壊れてしまうようです。実行が終了すると、タイピング フィードバックがなくなり (何を入力しているかわかりません)、改行も表示されません。これは、端末が を使用してリモートで起動Puttyされ、 を使用してローカルでも起動された場合に発生しgnome-terminalます。

たとえば、問題が発生した後に と入力ENTER pwd ENTERすると、次のように表示されると予想されます。

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

しかし、実際の出力は次のとおりです。

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

それを修正する唯一の方法は、その端末を閉じて新しい端末を起動することです。

関連する可能性があります: スクリプト出力には、端末ベースの書式設定が含まれています (たとえば、フォアグラウンド/バックグラウンドを反転して、いくつかのステータス メッセージを強調表示します)。この出力をファイルにダンプすると、[07mSome Message Here[0m.

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

4

2 に答える 2

162

コマンドを実行するresetと、端末が復元されます (参照)。

この問題は通常、バイナリ データを端末にダンプするときに発生STDOUTします。受信したエスケープ コードが処理されると、テキストの色の変更、エコーの無効化、文字セットの変更など、あらゆることが可能になります。

これを回避する簡単な方法は、不明なバイナリ データを端末にダンプしないようにすることです。その後、16 進数に変換する必要がある場合は、端末の設定が変更されないようにします。

于 2013-07-16T17:20:38.180 に答える