为什么在将一堆二进制数据转储到我的terminal后,我的按键会变成疯狂的字符?

如果我做这样的事情:

$ cat /bin/ls 

进入我的terminal,我明白为什么我看到一堆二进制数据,代表ls可执行文件。 但事后,当我得到我的提示时,我自己的击键看起来很疯狂。 我键入“a”,我得到一个奇怪的对angular线。 我input“b”,然后获得学位符号。

为什么会这样呢?

Solutions Collecting From Web of "为什么在将一堆二进制数据转储到我的terminal后,我的按键会变成疯狂的字符?"

因为二进制数据中的某个地方是你的终端解释为请求的一些控制序列,例如,改变用于绘制的字符集。 你可以恢复一切正常,如下所示:

 reset 

只要做一个复制粘贴:

 echo -e '\017' 

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

 <Ctrl-V><Ctrl-O><Enter> 

希望终端的状态在抱怨找不到<Ctrl-V> <Ctrl-O>或者<Ctrl-O>命令的时候会恢复正常。

<Ctrl-N>或字符14 – 当发送到您的终端命令切换到一个特殊的图形模式,其中字母和数字被符号替换。 <Ctrl-O>(或字符15)恢复正常。

你得到一些控制字符传入shell,告诉shell改变它的行为并以不同的方式打印。

终端会尝试将其中的二进制数据解释为控制代码,并且在这个过程中出现乱码,所以你需要清理你的tty。

跑:

 stty sane 

事情应该恢复正常。 即使命令在输入时看起来是乱码,实际的字符也会被正确存储,而当你按回车时,命令将被调用。

你可以在这里找到更多关于stty命令的信息 。

VT100几乎是用于终端窗口的标准命令集,但是有很多扩展。 一些控制字符集,键盘映射等

当你发送很多二进制字符到这样一个终端,很多设置改变。 一些终端可以选择将设置“清除”回到默认设置,但是一般来说它们不是用于二进制数据的。

VT100及其后续版本允许Linux在简单的终端程序中以彩色文本(如彩色的ls列表)进行打印。

-亚当

如果您真的必须将二进制数据转储到您的终端,那么如果您将它传输到less的寻呼机上,它将以更易读的格式显示。 (你也可能对stringsod有兴趣,如果你在摆弄二进制文件的话,这两个都可以是有用的。)