バイナリ表示後の端末の修正

バイナリ表示後の端末の修正

cat実行可能ファイルを使用してコマンドを実行しようとしています。

cat /bin/ls

これで、この端末(Linuxコンソール)ではどの単語も読み取ることができません。どうすれば解決できますか?

答え1

たとえば、Unix / Linuxターミナル(Bash)では、ファイルを表示するため、またはmoreコマンドを頻繁に使用します。これを実行してファイルを表示しようとしない場合(たとえば)、次の出力が表示されます。lesscat/bin/ls

                バイナリ出力SS

ここで何が起こっているのかは、ただプログラムファイルを見ようとしたことです。上記のように、実行可能ファイルは標準ビューアであり、ビューには適していません。

方法#1 - リセット

この問題を解決するには、次の操作を行います。

  1. Ctrl + Cを数回押します(Ctrl+ C)。
  2. コマンドを入力しresetてEnterを押します

これにより、通常、端末はより一般的なモードに戻ります。もう一つ言いたいのは、上記の手順を実行すると、端末にその内容を入力しなくなることです。だから必ず正確に入力してください。

方法#2 - 精神

@sendmoreinfoのコメントで提案されているように上記のコマンドが機能しない場合は、次のコマンドを使用する方が良いかもしれません。

$ stty sane
$ tput rs1

ファイルタイプの決定

しかし、ファイルが見つかり、そのファイルが端末を台無しにしたかどうかわからない場合は、fileファイルの種類を報告するコマンドを使用してファイルを確認できます。

たとえば、/bin/lsファイルには次の出力が表示されます。

$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped

答え2

私は一度、一般的なトリックresetやトリックのいずれもstty sane動作しない状況に直面しました(print予期しないPythonバイト配列呼び出し後)。私は成功した方法2は、この便利なブログに記載されています。

それ以来、私は最も有用なエイリアスの1つを作成しました。

alias fix='echo -e "\033c"'

答え3

以前は、どんな答えも効果がありませんでした。しかし、これは.bashrcに以下を追加することで問題を解決したようです。

alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"'

その後、問題が発生した場合はそれを入力してください(見えなくても!)。

(ctl-c, ctl-c, ctl-c)
fix

以前のコミッターに感謝します。また、参考としてこれらの実行ファイル(またはキーストアなど)を表示するときに端末が不安定になる理由は、これらのファイルに制御コードであるバイナリシーケンスが含まれることが多いからです。制御コードは、グラフィック文字セットに切り替えたり、前景色と背景色を同じ内容に設定するなど、任意の操作を実行できます。

答え4

tmuxユーザーはこれらのコマンドをすべて自分のシェルに送信できますが、リセットはウィンドウには表示されませんtmux

新しいtmuxウィンドウを作成します。 ctrl-B c tmux list-panes 壊れたと思われるウィンドウの番号(一般的に)を記録しておきます0。そう呼ぶPPP

ブロックされたウィンドウ番号を持つtmuxウィンドウを選択します。XXXウィンドウ番号と必ずしも同じである必要はありません。 ctrl-B XXX tmux send-key -R -t PPP

これにより、この質問に対する他の回答のすべてのコマンドが表示されます。このコマンドはシェルに入りますが、動作しません!ブラインドがtmux send-key -R -t PPP機能する可能性がありますが、テストすることはできません。

関連情報