我昨晚开始了一个命令行在线课程。我正在玩一些基本命令,出于某种原因,每次我使用cat mydoc.txt或mydoc.docx时,它只会向终端输出问号和其他随机符号。我搜索了这个网站和谷歌,无法找到这个特定问题的确切解决方案。我遇到了几个网站,说可能尝试更改文件权限,但这似乎不会影响输出。
任何见解都表示赞赏!
答案 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),它可能已经安装完毕。