虚构情况:您已经使用mysqldump创建了一个mysql数据库的备份。此数据库具有blob列。这意味着你的“文本”转储文件包含字符串和二进制数据(二进制数据存储为字符串?)
如果您将此文件录制到屏幕
$ cat dump.mysql
你经常会得到意想不到的结果。终端将开始发出哔哔声,然后输出完成滚动,你通常会在终端上输入垃圾字符,就像你输入它们一样,有时你的提示和你输入的任何内容都是垃圾字符。
为什么会这样?换句话说,我想我正在寻找将二进制字符串存储到文件中时,以及当您捕获这些文件时,以及将cat的结果报告给终端时的实际情况以及任何其他步骤的概述我失踪了。
答案 0 :(得分:6)
当您捕获二进制文件时,您可能会无意中send control characters到终端。
如果终端应用程序想要发送蜂鸣声,它会将以下二进制文件发送到终端:0x007(仅限SYS V)。
颜色,光标位置等也一样。
答案 1 :(得分:5)
从这里开始:http://www.faqs.org/docs/Linux-HOWTO/Keyboard-and-Console-HOWTO.html
特别是第3节(控制台常规)和第4节(重置终端)。
它比你所说的更多,但应该给你你需要的东西。
答案 2 :(得分:2)
当您将二进制数据捕捉到屏幕时,终端会尝试将该二进制数据解释为ASCII(或UTF)。一些角色能够控制终端。例如,
echo "^[[0;31;40m" # The first ^[ comes from pressing Ctrl+v, Esc
将背景变为黑色,前景变为红色。使用reset
将您的终端恢复正常。