Файл .doc
содержит двоичные [8-битные байты в диапазоне 0x00-0xFF] байтов, которые MS-слово знает, как обращаться. Он имеет множество внутренних подразделов, таблиц и т. Д.
Когда вы используете cat
, это терминал, это просто поток двоичных байтов. Терминальная программа пытается интерпретировать это как текст. Он попытается использовать кодировку UTF8 для юникода, которая имеет специальную длину переменной [1-4 байта] UTF «символы», которые называются «кодовыми точками».
Не все 1-4 байтовые последовательности выдают действительные кодовые точки UTF8. Когда терминальная программа находит некодеповую последовательность, она выдает ?
.
В противном случае программа терминала попытается вывести то, что, по ее мнению, является правильным символом. Это может быть германский гласный с umlaut над ним. Или, персонаж в китайском наборе символов.
Это то, что вы получаете, если в терминальной программе установлен определенный набор символов/шрифт. Если данный набор недоступен, программа терминала будет [снова] выводить a ?
Обратите внимание, что все это просто «лучшее усилие» программы терминала, чтобы «интерпретировать» как текст, что на самом деле, просто случайная двоичная последовательность. Это похоже на попытку интерпретировать cat /usr/bin/cat
, который представляет собой двоичный файл, на котором на самом деле нет текста.
Если файл, который вы cat
является только простой текстовый файл [или utf8 закодированное], что вы сделали будет работу. Чтобы увидеть, используйте простой текстовый файл и сделайте (например) cat /etc/passwd
. Или, echo abc > /tmp/foo
, а затем cat /tmp/foo
Конечно, если ваша цель была просто открыть .doc
под Linux/* BSD и т.д., там являются программы, которые понимают эти файлы. Примечание: libreoffice
представляет собой полный набор программ с открытым исходным кодом, аналогичный MS office, и то, что вы хотите, это LibreOffice Writer
. Если у вас установлен стандартный дистрибутив (например, ubuntu или fedora), он, вероятно, уже будет установлен.
Разрешения управляют только если вы можете прочитать файл или нет, а не то, что вы читаете. Использование 'cat' в каком-то двоичном файле, таком как файл' docx' (независимо от того, что _really_), не имеет никакого смысла. Двоичные данные - это то, что вы можете читать как человек. В конце концов, это просто зависит от содержимого этого файла. Примечание: это означает, что контент в базовом, буквальном виде, а не в том виде, в каком он появляется в каком-либо приложении, который интерпретирует контент и показывает вам интерпретацию, то есть разницу _huge_. – arkascha
Хорошо, спасибо за это! Затем, как я могу отобразить содержимое файла на терминале? Docx - это расширение моего документа Microsoft Word .. в курсе, который мы узнали, имя файла cat будет отображать текст документа – user3344239
@ user3344239, 'cat' отобразит текст текстового документа. Однако он ничего не делает, чтобы извлечь текст из файла 'docx'. Чтобы получить легкий взгляд в любом файле, попробуйте выполнить команду 'hd' или' hexdump'.Это может показывать шестнадцатеричные значения для чего угодно, и наряду с этим выходом он может отображать найденные символы печати и точки для непечатаемых. – donjuedo