
私はちょうどssh
自分のサーバー (Ubuntu 10.04.2) にログインして、aptitude
(対話モードで) 実行しました。キーを 1 つ (文字の 1 つだとg思います) 押すと、次のように変わりました (SSH セッションだけではなく、ssh
セッションを終了した後もこの動作が続きました)。
再接続するとすべて正常になりますが、aptitude
再度実行すると、同じ問題が発生します (ただし、奇妙なことに、 は 内に収まりますaptitude
)。
何が起こっているのか、誰か分かるでしょうか? 参考になれば幸いですが、私は というプロファイルscreen
で実行しており、 を10.6.7 で使用しています。byobu
$TERM
screen-bce
Terminal.app
答え1
コマンドを使用してreset
通常のターミナルに戻すことができます。
なぜこのようなことが起こるかというと、何らかの理由で、端末が ASCII ではなくバイナリ データを取得しているからです。
答え2
このスレッドはほぼ 1 年前のものだと認識していますが、Apple の Terminal.app で実行ファイルの内容を表示するために「cat」を使用した後に私自身もこの問題に遭遇したばかりなので、この状況は将来のユーザーにも影響する可能性があると考えています。
いずれにせよ、私が知る限り、奇妙な文字は ASCII の「シフト アウト」文字 (10 進数 14、0x0E) が印刷された後に表示されます。(まあ、「印刷」という言葉は適切ではないかもしれませんが、少なくとも Terminal.app では、これは印刷可能な文字ではないからです。しかし、私の言っている意味はおわかりだと思います。) 幸いなことに、ASCII の「シフト イン」文字 (10 進数 15、0x0F) が印刷されると、ターミナルは正常に戻ります。
つまり、次のような C プログラムを書いたとします...
#include <stdio.h>
int main() {
printf( "\x0F" );
return 0;
}
すべてが正常に戻るはずです。別の言語や bash シェル内ではもっと簡単な方法があるかもしれませんが、これでおわかりいただけたと思います。
どうやら、この奇妙な動作はバグではなく、むしろ(少なくとも私にとっては)わかりにくい機能のようです。情報を検索したところ、端末の動作のベースとなっていると思われるISO 2022にたどり着きました。ISO/IEC 2022に関するWikipediaの記事。
奇妙なキャラクターの背後にある謎が解明されたので、この投稿が役に立つことを願っています。
答え3
メニュー項目
ターミナル > シェル > リセットを送信
文字セットを含む端末状態をデフォルトにリセットし、この特定の問題を解決します。