How to view the contents of .dat file in linux
I have a file with .dat extension how can i view the contents of the file in hexa ? mean if i open the file i should be able to see the contents in hex format, can this be done using vim editor. I have installed tnef but when i try opening this dat file it says «Seems not to be a TNEF file»
That depends on what the file is. .dat is such a generic extension that it could be anything. Where did you get the file from? What type of data do you expect to be contained in the file?
6 Answers 6
Firstly, the dat file can be anything.
Use file .dat to find what it is. Then depending out its type, use specific application to open it.
Some common Linux utilities for viewing hex dumps are:
file is a good command to try first.
After that, I use cat -v | less or od -a | less for a «readable» view. Check the man pages for od and file .
xxd is more modern than od , and often generates a prettier view, but sometimes only od is available.
Of course mc (in many serious distros available from basic install CD) has HEX viewer. It can be accessed id view mode by F4
can this be done using vim editor[?].
So, open a file in vi as usual, hit escape and type: :%!xxd to switch into hex mode
And when your [sic] done hit escape again and type: :%!xxd -r to exit from hex mode.
Okay, so this isn’t actaully switching to vi’s ‘hex mode’; vi doesn’t have one. What the above actually does is to stream vi’s buffer through the external program ‘xxd’.
Try adding the following to /etc/vim/vimrc.local , and you’ll get keyboard shortcuts for switching back and forth (F8 and F7).
" Switch to hex-editor` noremap :%!xxd " Switch back noremap :%!xxd -r
There is also a Vim tip on this subject.
Типы файлов Linux
В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.
Unix-подобная ОС не следит за расширениями файлов. Задача связать расширения файла с конкретным пользовательским приложением, в котором этот файл будет открываться, видимо лежит на какой-либо дополнительной программе. В свою очередь пользовательское приложение анализирует структуру данный файла, расширение ему также безразлично.
Таким образом, среди файловых атрибутов, хранящихся в операционной системе на базе ядра Linux, нет информации о типе данных в файле. Там есть информация о более существенном разделении, связанном с тем, что в Unix-подобных системах все объекты – это файлы. Все объекты весьма разнообразны. Поэтому тип файла в Linux – это скорее тип объекта, но не тип данных как в Windows.
В операционной системе GNU/Linux существуют следующие типы файлов: обычные файлы, каталоги, символьные ссылки, блочные устройства, символьные устройства, сокеты, каналы. Каждый тип имеет собственное обозначение одним символом. Знание этих символов нам пригодится в дальнейшем при изучении командной оболочки Bash.
Обычные файлы (-)
Сюда относятся все файлы с данными, играющими роль ценной информации сами по себе. Linux все-равно текстовый перед ним файл, исполняемый или картинка. В любом случае это будет обычный (regular) файл. Все они обозначаются знаком минус «-«. Остальные типы файлов считаются специальными (special).
Каталоги (d)
В Linux каталог представляет собой такой тип файла, данными которого является список имен других файлов и каталогов, вложенных в данный каталог. Напрямую, то есть через какой-либо редактор, пользователь не может редактировать данные файла-каталога. Редактированием занимается ядро операционной системы, получая, в том числе от пользователя, команды создания файла, удаления и др.
В файле каталога осуществляется связь между именами файлов (словесного обозначения для людей) и их индексными дескрипторами (истинным именем-числом, которым оперирует ОС).
В Unix-подобных системах один и тот же файл может существовать под разными именами и/или в разных каталогах: все имена будут связаны с одним и тем же индексным дескриптором (механизм жестких ссылок).
Также следует, что файлы всегда должны содержаться в каталогах, иначе станут недоступны, так как нигде не будет содержаться записи о них.
Символьные ссылки (l)
Символьная ссылка – это файл, в данных которого содержится адрес другого файла по его имени (а не индексному дескриптору).
Выполнение символьной ссылки приводит к открытию файла, на который она указывает. Это аналог ярлыков в операционной системе Windows.
Если удалить исходный файл, то символьная ссылка продолжит существовать. Она по-прежнему будет указывать на файл, которого уже нет.
Символьные ссылки не содержат атрибутов файлов, на которые они указывают. У них есть собственные атрибуты (свое время создания, размер, права доступа).
Символьные (c) и блочные устройства (b)
Файлы устройств предназначены для обращения к аппаратному обеспечению компьютера (дискам, принтерам, терминалам и др.). Когда происходит обращение к файлу устройства, то ядро операционной системы передает запрос драйверу этого устройства.
К символьным устройствам обращение происходит последовательно (символ за символом). Примером символьного устройства может служить терминал.
Считывать и записывать информацию на блочные устройства можно в произвольном порядке, причем блоками определенного размера. Пример: жесткий диск.
Сокеты (s) и каналы (p)
Чтобы понять, что такое канал и сокет, необходимо понимание процессов в операционной системе. И каналы и сокеты организуют их взаимодействие. Пользователь с данными типами файлов почти не сталкивается.
Ключевым отличием канала от сокета является то, что канал однонаправлен. Через канал один процесс всегда передает данные второму, но не наоборот. Сокеты позволяют передавать данные в разных направлениях, т. е. осуществляют связь.
Также следует отметить, что канал представлен в структуре каталогов файлом, только если он именован. Когда возникают безымянные каналы, то они существуют только внутри ядра Linux.
Команда file
Хотя выше было сказано, что Линукс не делает предположение о типе данных в обычном файле, есть специальная утилита, которая выполняет эту задачу, – программа file. Для этого она анализирует начало содержимого файла и находит в нем специальные «сигналы», характерные для определенного типа – бинарного файла, текстового, изображения и др.
На скриншоте также показано, что расширение для программы file безразлично. Файл flag – копия flag.png , и программа успешно его идентифицировала как изображение.
Команда file имеет множество различных ключей.
В примере файл 2020.ods является символьной ссылкой на файл, находящийся в другом каталоге, о чем нам говорит команда file без ключей. С помощью ключа -L мы можем узнать тип файла, на который ссылается файл-ссылка.
Курс с ответами к заданиям и дополнительными уроками в PDF
Введение в Linux и Bash. Курс
Команда file в Linux
Команда file — одна из самых полезных, поскольку позволяет узнать тип данных, которые на самом деле содержатся внутри документа. Если у вас есть какой-либо файл, взятый из ненадёжного источника, не поленитесь проверить его с помощью этой команды, прежде чем нажать кнопку Открыть. Возможно, такая предосторожность покажется лишней, но она оградит вас от «встречи» с нежелательным контентом.
В большинстве дистрибутивов Linux утилита file (работу которой и запускает одноимённая команда) входит в стандартный набор программного обеспечения.
Синтаксис и опции file
Синтаксис команды file достаточно простой. Записывать её в эмуляторе терминала или консоли следует так:
file опции название_документа
Что же касается опций, то их у этой команды несколько десятков. Мы рассмотрим лишь основные:
- -b, —brief — запрет на демонстрацию имен и адресов файлов в выводе команды;
- -i, —mime — определение MIME-типа документа по его заголовку;
- —mime-type, —mime-encoding — определение конкретного элемента MIME;
- -f, —files-from — анализ документов, адреса которых указаны в простом текстовом файле;
- -l, —list — список паттернов и их длина;
- -s, —special-files — предотвращение проблем, которые могут возникнуть при чтении утилитой специальных файлов;
- -P — анализ определенной части файла, которая обозначается различными параметрами;
- -r, —raw — отказ от вывода /ooo вместо непечатных символов;
- -z — анализ содержимого сжатых документов.
Для того, чтобы ознакомиться с полным списком опций, выполните в терминале команду:
Примеры использования file
Если вам нужно всего лишь посмотреть тип файла, использовать опции не обязательно. Достаточно прописать имя команды, а также название файла и путь к нему, при условии, что он находится не в корневой папке:
Случается, что нужно проверить не один, а несколько файлов. Чтобы не выполнять команду много раз подряд, перечисляйте названия всех файлов через пробел:
file /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file2.tiff
Как видно на примере, картинки с расширениями gif и tiff в действительности оказались текстовыми документами, а архив с расширением zip — PDF документом. Кстати, команда file даёт возможность не только проверить, является ли архив архивом, но и заглянуть внутрь, чтобы узнать, что в нём содержится. Для этой цели используется опция -z:
file -z /home/main-user/losst/testarchive.zip
Как вы успели заметить, команда, возвращая ответ, постоянно выводит названия файлов, что в некоторых случаях бывает удобно, но зачастую только усложняет чтение результатов. Отключить эту функцию легко — воспользуйтесь опцией -b:
file -b /home/main-user/losst/test-file.gif /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file2.tiff
Иногда нужно узнать не просто тип файла, а его MIME-тип. В таком случае на помощь приходит опция -i:
file -i -b /home/main-user/losst/fileA.sbin /home/main-user/losst/fileG.aspx /home/main-user/losst/fileH.lua
Нередко по каким-либо причинам утилита не может найти указанный файл: например, вы ошиблись буквой в его названии или неверно указали папку, в которой он находится. Тогда вывод информации об этом файле предваряет фраза cannot open. Впрочем, есть возможность видоизменить результат, добавив в него сообщение об ошибке. Для этого используйте опцию -E.
Сравните вывод команды с опцией -E и без неё:
file -E -b /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file4.raw /home/main-user/losst/test-file.gif
file -b /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file4.raw /home/main-user/losst/test-file.gif
Еще один способ работы с утилитой file — запись названий и адресов документов в простой текстовый файл. Применяя этот способ на практике, не забывайте добавлять к команде опцию —files-from, после которой указывайте имя файла, содержащего список документов, и путь к нему.
file —files-from /home/main-user/losst/list_of_files.txt
Выводы
Команда file помогает избежать ситуаций, когда вам приходится открывать подозрительные файлы, не будучи уверенными в их содержимом. Также вы можете использовать её для проверки содержимого нескольких архивов, если есть необходимость найти потерявшийся в большом массиве файлов документ, но нет желания просматривать все архивы вручную.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.