Я читаю книгу Среда программирования Unix . Я наткнулся на команду od
. Команда работает для содержимого файла, но не для каталогов, когда я ее запускаю. Однако эта команда, похоже, работает с каталогами, когда демонстрируются авторами книги.
Когда я запускаю следующую команду:
od -c .
я получаю сообщение об ошибке:
od: .: read error: Is a directory
0000000
Почему я получаю эту ошибку?
Чтобы иметь возможность читать каталоги как файлы, как показано в книге, Среда программирования Unix (стр. 51) невозможна в последних выпусках Linux.
Как уже упоминалось в этом ответе ( Когда каталоги перестали считываться как файлы? ) в Unix & amp; Подузел Linux, похоже, является отходом от стандарта POSIX, который позволяет считывать каталоги в виде файлов, пока они открываются в режиме только для чтения.
Также актуально: Как можно проверить информацию о структуре каталогов файла unix / linux?
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
для дополнительных опций.
Если вы хотите создать восьмеричный дамп всех файлов в текущем каталоге и ниже, используйте find
, например:
od -c `find -type f`
См. man find
или обратитесь к учебнику по , найдите для получения дополнительной информации.
od [options] [files] od --traditional [file] [[+] offset [[+] label] ]
Выведите указанные файлы к стандартному выводу. Значение по умолчанию должно вывести в восьмеричном формате, но другие форматы могут быть указаны. С несколькими файлами свяжите их в указанном порядке. Если никакие файлы не указаны, или файл - читайте из стандартного входа. Со второй формой, с помощью - традиционная опция, может быть указан 1 только один файл
1Source:directory команд Linux