为什么在将一堆二进制数据转储到终端后,我的击键变成了疯狂的字符?

ral*_*ldi 20 unix linux terminal ascii

如果我这样做:

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

进入我的终端,我理解为什么我看到一堆二进制数据,代表ls可执行文件.但事后,当我得到我的提示时,我自己的击键看起来很疯狂.我键入"a",我得到一个奇怪的对角线.我输入"b",我得到一个学位符号.

为什么会这样?

Nic*_*son 44

因为二进制数据中的某个位置是终端解释为请求的某些控制序列,例如,更改用于绘制的字符集.您可以将所有内容恢复正常,如下所示:

reset
Run Code Online (Sandbox Code Playgroud)


tzo*_*zot 13

只需复制粘贴:

echo -e '\017'
Run Code Online (Sandbox Code Playgroud)

你的bash和角色将恢复正常.如果您不运行bash,请尝试以下按键:

<Ctrl-V><Ctrl-O><Enter>
Run Code Online (Sandbox Code Playgroud)

并且当它抱怨它找不到<Ctrl-V> <Ctrl-O>或<Ctrl-O>命令来运行时,希望终端的状态将恢复正常.

<Ctrl-N>或字符14 - 当发送到您的终端时 - 命令切换到特殊图形模式,其中字母和数字被符号替换.<Ctrl-O>或字符15可将某些内容恢复正常.


Ste*_*e g 3

您将通过管道将一些控制字符输入到 shell 中,这些控制字符告诉 shell 改变其行为并以不同的方式打印内容。