显示二进制文件后修复终端

lot*_*ous 154 terminal fonts binary console

我试过cat一个可执行文件的命令:

cat /bin/ls
Run Code Online (Sandbox Code Playgroud)

现在我无法在此终端(Linux 控制台)中读取任何字词。我该如何解决?

slm*_*slm 215

例如,通常在 Unix/Linux 终端 (Bash) 中,您会使用命令morelesscat查看文件。当您执行此操作并且不打算查看该文件(例如/bin/ls)时,您将获得如下输出:

                二进制输出的 ss

这里发生的事情是您只是试图查看一个程序文件。如上所述,不打算用标准查看器查看的可执行文件。

方法#1 - 重置

要解决此问题,您可以执行以下操作:

  1. 按 Control + C 几次 ( Ctrl+ C)
  2. 输入命令reset并回车

这通常会使您的终端回到更正常的模式。我还要提一件事,当您执行上述步骤时,您将在终端中盲目地输入它们。所以只要确保你输入正确。

方法#2 - 保持理智

正如@sendmoreinfo 在评论中所建议的那样,如果上述方法不起作用,您可能会使用以下命令获得更好的运气:

$ stty sane
$ tput rs1
Run Code Online (Sandbox Code Playgroud)

确定文件类型

顺便说一句,如果您遇到一个文件并且不确定它是否会弄乱您的终端,您可以使用命令检查该文件,该命令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
Run Code Online (Sandbox Code Playgroud)

  • `reset` 不是治疗极端疯狂的 100% 方法。尝试`stty sane`,然后是`tput rs1`。 (25认同)
  • `reset` 在我的情况下有效 (4认同)
  • `clear` 也适用于轻微的情况。 (2认同)

小智 50

我曾经遇到过没有任何常用技巧resetstty sane, 工作的情况(在不小心调用print了 python bytearray 之后)。我在这个有用的博客上列出的方法 2取得了成功。

我已经创建了一个最有用的别名:

alias fix='echo -e "\033c"'
Run Code Online (Sandbox Code Playgroud)

  • 我知道这是旧的,但这是上面唯一对我有用的答案!谢谢 (3认同)

Ste*_*sed 15

没有一个先前的答案对我有用。但这似乎在 .bashrc 添加:

alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"'
Run Code Online (Sandbox Code Playgroud)

然后当问题发生时输入这个(即使你可能看不到它!)

(ctl-c, ctl-c, ctl-c)
fix
Run Code Online (Sandbox Code Playgroud)

非常感谢之前的提交者。此外,作为旁注,您的终端在显示这些可执行文件(或密钥库等)时出现故障的原因是这些文件通常包含作为控制代码的二进制序列。控制代码可能会随机执行一些操作,例如切换到图形字符集、将前景色和背景色设置为相同的内容等。


小智 5

我有与上一篇文章几乎相同的别名,只有一个小的更改(tput reset而不是rs1)和一个添加的命令(setterm -reset):

alias clr='echo -e "\033c" ; stty sane; setterm -reset; reset; tput reset; clear'
Run Code Online (Sandbox Code Playgroud)


Jac*_*sey 5

tmux用户也许能够将所有这些命令发送到他们的 shell,但重置不会提升到窗格tmux

创建新的 tmux 窗口: ctrl-B c tmux list-panes 记下您认为被破坏的窗格编号,通常为0。我们就这样称呼它吧PPP

选择tmux窗口,其中XXX是被屏蔽的窗口号,不一定与窗格号相同。 ctrl-B XXX tmux send-key -R -t PPP

然后,您将看到该问题的其他答案中的所有命令,这些命令已进入您的 shell,但不起作用!也许盲人tmux send-key -R -t PPP会起作用,但我无法测试。


小智 5

我知道这已经有一段时间了,但是虽然许多其他答案对我有用,重置,stty sane,有时这些都不适合我,我总是求助于:

echo ^v^o
Run Code Online (Sandbox Code Playgroud)

这是 echo Ctrl+V 后跟 Ctrl+O