Unix cat命令问题

时间:2015-12-21 20:10:16

标签: linux unix

我昨晚开始了一个命令行在线课程。我正在玩一些基本命令,出于某种原因,每次我使用cat mydoc.txt或mydoc.docx时,它只会向终端输出问号和其他随机符号。我搜索了这个网站和谷歌,无法找到这个特定问题的确切解决方案。我遇到了几个网站,说可能尝试更改文件权限,但这似乎不会影响输出。

任何见解都表示赞赏!

1 个答案:

答案 0 :(得分:2)

.doc文件包含MS字知道如何处理的二进制[0x00-0xFF范围内的8位字节]字节。它有许多内部小节,表格等。

当你cat到终端时,它只是一个二进制字节流。终端程序试图将其解释为文本。它将尝试使用unicode的UTF8编码,它具有特殊的可变长度[1-4字节] UTF"字符"被称为"代码点"。

并非所有1-4字节序列都产生有效的UTF8代码点。当终端程序找到非码点序列时,它输出?

否则,终端程序将尝试输出它认为正确的字符。这可能是一个带有 umlaut 的德语元音。或者,中文字符集中的字符。

如果终端程序加载了特定字符集/字体集,那么你得到了什么。如果给定的集合不可用,终端程序将[再次]输出?

请注意,所有这些只是"尽力而为"通过终端程序来解释"作为文本,实际上只是一个随机的二进制序列。它类似于试图解释cat /usr/bin/cat,这是一个真正没有文字可言的二进制文件。

如果您cat 的文件只是一个简单的文本文件[或utf8编码],您所做的工作。要查看,请使用简单的文本文件并执行(例如)cat /etc/passwd。或者,echo abc > /tmp/foo然后cat /tmp/foo

当然,如果您的目标只是打开linux / * BSD等下的.doc,那么程序可以理解这些文件。值得注意的是:libreoffice是一个完全开源的程序套件,类似于MS office,你想要的是LibreOffice Writer。如果您安装了标准发行版(例如ubuntu或fedora),它可能已经安装完毕。