Как сделать восьмеричный дамп файлов в моих каталогах?

Я читаю книгу Среда программирования Unix . Я наткнулся на команду od. Команда работает для содержимого файла, но не для каталогов, когда я ее запускаю. Однако эта команда, похоже, работает с каталогами, когда демонстрируются авторами книги.

Когда я запускаю следующую команду:

od -c .

я получаю сообщение об ошибке:

od: .: read error: Is a directory
0000000

Почему я получаю эту ошибку?

4
задан 31 July 2015 в 19:42

4 ответа

Чтобы иметь возможность читать каталоги как файлы, как показано в книге, Среда программирования Unix (стр. 51) невозможна в последних выпусках Linux.

Как уже упоминалось в этом ответе ( Когда каталоги перестали считываться как файлы? ) в Unix & amp; Подузел Linux, похоже, является отходом от стандарта POSIX, который позволяет считывать каталоги в виде файлов, пока они открываются в режиме только для чтения.

Также актуально: Как можно проверить информацию о структуре каталогов файла unix / linux?

0
ответ дан 31 July 2015 в 19:42

Почему od -c directory не работает

Каталог указывает на ноль, один или несколько файлов, это не сам файл, поэтому он не может быть обработан od или hd. Большинство Unix-подобных программ обрабатывают файлы, а не целые каталоги.

Что делать

Вы можете перечислить содержимое каталога с помощью ls, а затем использовать команду od -c или hd -b для вывода каждого файла, который вы хотите проверить. Делая их один за другим, вы будете знать, что содержится в каждом файле.

(od -c file1 file2 объединяет файл1 и файл2 вместе, а затем выводит все целиком. Это позволяет услышать, где заканчивается первый и начинается следующий.)

Вы также можете написать небольшой скрипт чтобы дать вам одно за другим имя файла каждого из файлов в каталоге, а затем вывести его в восьмеричном или шестнадцатеричном виде. Вот пример:

 for f in *; do echo $f; od -c $f; done | less

for f in * присваивает каждому файлу в текущем каталоге по очереди $ f; echo $f предоставляет имя файла на вашем терминале перед каждым дампом файла; od -c $f производит отвал; и done говорит, чтобы продолжить со следующим файлом или закончить, если их больше нет. |less говорит, что возьмите все вышеперечисленное и отправьте вывод через «менее» программу, которая позволяет вам смотреть на это по крупицам, а не с того, чтобы все катилось с верхней части экрана.

Подобный скрипт интерпретируется программой, называемой «оболочкой». Когда вы вводите команды в терминал, вы говорите с «оболочкой». По умолчанию Ubuntu использует оболочку "bash".

Если вы предпочитаете смотреть в шестнадцатеричном формате, вы можете использовать od -t x1 filename или hd filename. Используйте man od или man hd для дополнительных опций.

0
ответ дан 31 July 2015 в 19:42
  • Если вы хотите создать восьмеричный дамп всех файлов в текущем каталоге и ниже, используйте find, например:

    od -c `find -type f`

См. man find или обратитесь к учебнику по , найдите для получения дополнительной информации.

0
ответ дан 31 July 2015 в 19:42
od [options] [files] od --traditional [file] [[+] offset [[+] label] ]

Выведите указанные файлы к стандартному выводу. Значение по умолчанию должно вывести в восьмеричном формате, но другие форматы могут быть указаны. С несколькими файлами свяжите их в указанном порядке. Если никакие файлы не указаны, или файл - читайте из стандартного входа. Со второй формой, с помощью - традиционная опция, может быть указан 1 только один файл

Читать дальше

1Source:directory команд Linux

1
ответ дан 31 July 2015 в 19:42

Другие вопросы по тегам:

Похожие вопросы: