Вместо использования шестнадцатеричного дампа я бы предложил использовать xxd, например:
xxd <bin_name>
00000000: cffa edfe 0700 0001 0300 0080 0200 0000 ................
00000010: 1000 0000 d006 0000 8580 2100 0000 0000 ..........!.....
00000020: 1900 0000 4800 0000 5f5f 5041 4745 5a45 ....H...__PAGEZE
00000030: 524f 0000 0000 0000 0000 0000 0000 0000 RO..............
00000040: 0000 0000 0100 0000 0000 0000 0000 0000 ................
Если вы хотите |
вокруг букв ascii в конце, попробуйте это:
xxd <bin_name> | sed -r 's/(................)$/|\1|/g'
00000000: cffa edfe 0700 0001 0300 0080 0200 0000 |................|
00000010: 1000 0000 d006 0000 8580 2100 0000 0000 |..........!.....|
00000020: 1900 0000 4800 0000 5f5f 5041 4745 5a45 |....H...__PAGEZE|
00000030: 524f 0000 0000 0000 0000 0000 0000 0000 |RO..............|
00000040: 0000 0000 0100 0000 0000 0000 0000 0000 |................|
-r спрашивает :есть ли у пользователя разрешение на чтение файла, указанного операндом $1?
Таблица множества операторов тестирования, связанных с файлом -, доступна по адресу :.https://tldp.org/LDP/abs/html/fto.html
Некоторые из них :-файл существует
-f файл является обычным файлом (не каталогом или файлом устройства)
-s файл имеет ненулевой размер
-d файл является каталогом
-b файл является блочным устройством
-файл c является символьным устройством
-файл p — это канал
-L-файл является символической ссылкой
-Файл S является сокетом
-t файл (дескриптор )связан с оконечным устройством
-r файл имеет разрешение на чтение (для пользователя, выполняющего тест)
-w файл имеет разрешение на запись (для пользователя, выполняющего тест)
-x файл имеет разрешение на выполнение (для пользователя, выполняющего тест)
Выполняет команду [
с оператором -r
и содержимым первого позиционного параметра (или пустой строкой, если позиционные параметры не установлены )в качестве операнда оператора -r
(и замыкание ]
для симметрии ).
Команда [
встроена во все Bourne -, такие как оболочки (иfish
). Поэтому его документацию обычно можно найти в соответствующем руководстве по оболочке. Он также известен как test
.
В зависимости от вашей оболочки попробуйте:
info zsh test
info bash '['
fish -c 'help test'
man ksh
/ man dash
... для тех оболочек, у которых нет информационной страницы. (будьте осторожны, на некоторых системах необходимо установить пакет bash-doc
или zsh-doc
, чтобы документация в формате info
была доступна для этих оболочек ).
Системы также обычно имеют автономную команду [
или test
с аналогичным интерфейсом, которую можно использовать из других типов оболочек или из вещей, которые не являются оболочками и не используют оболочку для запуска команд (например env
, find -exec
... ). Его документацию можно найти по адресу info test
или man test
(, возможно, также man '['
).
В частности, оператор -r
должен проверить, имеет ли процесс, выполняющий оболочку, разрешение на открытие данного файла для чтения . Если true, команда [
возвращает статус выхода Success , и в этом случае оператор if
выполняет часть then
.
Это было бы эквивалентно access(argv[1], R_OK)
в C.