首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么将二进制文本输送到屏幕上通常是一个终端

问为什么将二进制文本输送到屏幕上通常是一个终端
EN

Stack Overflow用户
提问于 2010-04-12 18:54:23
回答 3查看 274关注 0票数 5

假想情景:使用mysqldump创建mysql数据库备份的。此数据库的列是blobs。这意味着您的“文本”转储文件同时包含字符串和二进制数据(二进制数据存储为字符串?)

如果你把这个文件放在屏幕上

代码语言:javascript
复制
$ cat dump.mysql

你经常会得到意想不到的结果。终端将开始发出嗡嗡声,然后输出结束滚动,您通常会在终端上输入垃圾字符,就像键入垃圾字符一样,有时您输入的提示和任何内容都是垃圾字符。

这一切为什么要发生?换句话说,我想我想要的是,当您将二进制字符串存储到文件中时,以及当您对这些文件进行cat时,以及当cat的结果报告给终端时,以及我遗漏的任何其他步骤时,实际发生的事情。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-12 18:58:04

从这里开始:http://www.faqs.org/docs/Linux-HOWTO/Keyboard-and-Console-HOWTO.html

特别是第3节(控制台通用)和第4节(重新设置终端)。

它涵盖的范围比你所说的要多一点,但应该能满足你的需要。

票数 5
EN

Stack Overflow用户

发布于 2010-04-12 18:58:48

当您禁止二进制文件时,您可能会无意中将发送控制字符发送到终端。

例如,如果终端应用程序想要发送beep,它会向终端发送以下二进制文件: 0x007 (仅SYS)。

颜色、光标位置和其他情况也是如此。

票数 6
EN

Stack Overflow用户

发布于 2010-04-12 19:06:13

当您将二进制数据猫到屏幕上时,终端试图将该二进制数据解释为ASCII (或UTF)。一些字符可以控制终端。例如,

代码语言:javascript
复制
echo "^[[0;31;40m" # The first ^[ comes from pressing Ctrl+v, Esc

会把背景变成黑色而前景变成红色。使用reset将终端恢复正常。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2624554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档