web-dev-qa-db-ja.com

バイナリファイルを表示した後のターミナルを修正

実行可能ファイルでコマンドcatを試しました:

cat /bin/ls

この端末(Linuxコンソール)でWordを読むことができなくなりました。どうすれば修正できますか?

136
lotusirous

たとえば、Unix/Linuxターミナル(Bash)でファイルを表示するには、moreまたはlessまたはcatコマンドを使用することがよくあります。これを行い、ファイルが表示されることを意図していない場合(/bin/lsなど)、次のような出力が得られます。

ss of binary output

ここで起こっているのは、プログラムであるファイルを表示しようとしたところです。上で述べたように、標準のビューアで表示することを意図していない実行可能ファイル。

メソッド#1-リセット

この問題を解決するには、次のようにします。

  1. Control + Cを数回押します(Ctrl+C
  2. コマンドresetを入力してReturnキーを押します

これは通常、端末をより通常のモードに戻すはずです。上記の手順を実行するときは、ターミナルにブラインドと入力して説明します。したがって、正しく入力していることを確認してください。

メソッド#2-stty sane

@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
190
slm

resetまたはstty sane、動作しました(python bytearrayで誤ってprintを呼び出した後)。 この有用なブログにリストされている方法2 で成功しました。

それ以来、私は最も役立つエイリアスを作成しました:

alias fix='echo -e "\033c"'
42
Benjamin Riggs

以前の答えはどれも私には役に立たなかった。しかし、これは.bashrc addでトリックを行うように見えました:

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

そして、問題が発生したら、これを入力してください(おそらくそれが表示されない場合でも!)

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

以前の提出者に感謝します。また、補足として、これらの実行可能ファイル(またはキーストアなど)を表示するときに端末が不安定になる理由は、これらのファイルに制御コードであるバイナリシーケンスが含まれていることが多いためです。制御コードは、グラフィック文字セットへの切り替え、前景色と背景色の同じものへの設定など、ランダムなことを行う場合があります。

tmuxユーザーはこれらのすべてのコマンドをシェルに送信できる可能性がありますが、リセットするとtmuxペインに昇格しません。

新しいtmuxウィンドウを作成します:ctrl-B ctmux list-panesボーキングされていると思うペイン番号に注意してください。通常、0PPPとしましょう

Tmuxウィンドウを選択します。ここで、XXXは、ボークされるウィンドウ番号であり、必ずしもペイン番号と同じではありません。 ctrl-B XXXtmux send-key -R -t PPP

すると、この質問に対する他の回答のすべてのコマンドがシェルに到達しましたが、機能しませんでした。多分ブラインドtmux send-key -R -t PPPは機能しますが、テストできません。

4
Jack Wasey

以前の投稿とほぼ同じエイリアスで、1つの小さな変更(tput reset の代わりに rs1)と1つの追加コマンド(setterm -reset):

alias clr='echo -e "\033c" ; stty sane; setterm -reset; reset; tput reset; clear'
3

上記のことは何の助けにもなりませんでした。しかし、Jack Waseyがtmuxについて言及したので、私はtmuxを実行して再び終了し、すべてが正常に戻りました。

別の解決策は次のとおりです。

reset
2
xdevs23

私はこれがここにあることを知っていますが、他の多くの答えは私のためにうまくいきましたが、リセット、正気、時にはそれらのどちらも私のために働かなかったので、私はいつも次のようにします:

echo ^v^o

エコーCtrl + Vに続いてCtrl + O

0
John L

端末をリセットする方法をアドバイスする他の回答に加えて、適切に保護しない限り、破損を回避できないと考えました。そのため、出力を単純なテキスト対応のコンバーターcat -v

docker logs myjenkinscontainer 2>&1 | cat -v

バイナリファイルの表示と編集はhexdump -Cおよびvi -R:%!xxd -g1 16進表示の場合、:%!xxd -g1 -r(16進数の変更を保存する場合)。

0
eel ghEEz