我尝试cat
使用可执行文件执行命令:
cat /bin/ls
现在我无法在这个终端(Linux 控制台)中读取任何单词。我该如何修复它?
答案1
例如,在 Unix/Linux 终端 (Bash) 中,您经常会使用命令more
或less
或cat
来查看文件。当您执行此操作并且文件不打算被查看时(例如/bin/ls
),您将获得如下输出:
这里发生的事情是您刚刚尝试查看一个程序文件。正如我上面提到的,一个可执行文件不适合用标准查看器查看。
方法#1 - 重置
要解决此问题,您可以执行以下操作:
- 按 Control + C 几次 ( Ctrl+ C)
- 输入命令
reset
并按回车键
这通常会使您的终端恢复到更正常的模式。我还要提一件事,当您执行上述步骤时,您将在终端中盲输入它们。因此,请确保您输入正确。
方法#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
答案2
我曾经遇到过这样的情况:通常的技巧reset
或 都stty sane
不起作用(在意外调用print
python 字节数组之后)。我取得了成功这个有用的博客上列出了方法 2。
从那时起,我创建了一个最有用的别名:
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
用户也许能够将所有这些命令发送到他们的 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
会起作用,但我无法测试。