Bash не умеет использовать пробелы в оставшейся части имени файла. Вам нужно указать (экранировать )их, чтобы Bash использовал полное имя файла.
Так что можно
$video_dir
в кавычки. (?)В вашем случае проще всего использовать третий вариант.
Добро пожаловать в Unix и Linux SE!
Файл ELF имеет один или два двоичных заголовка и ряд именованных разделов. В Википедии есть описание структуры файла ELF, если вам интересно.
Ваша команда objcopy -O binary -j.interp /bin/ls /dev/stdout
просто выводит содержимое секции .interp
файла /bin/ls
точно так же, как -равно(-O binary
)"файлу" /dev/stdout
.
/dev/stdout
должен быть символической ссылкой на файловый дескриптор текущего процесса #1, то есть его стандартный поток вывода. По сути, это просто способ сообщить программе, которая ожидает записи вывода в именованный файл, вместо этого использовать стандартный вывод. Некоторые программы могут сделать это, если вы укажете имя выходного файла просто -
,но, по-видимому, objcopy
не следует этому соглашению.
Если вы видите «какую-то информацию журнала» при открытии /dev/stdout
, это может означать, что эта символическая ссылка была случайно заменена какой-то программой или сценарием, запущенным от имени пользователя root. Это должно выглядеть так:
$ ls -l /dev/stdout
lrwxrwxrwx 1 root root 15 Nov 17 23:25 /dev/stdout -> /proc/self/fd/1
В 64-битной -системе x86 ваша команда objcopy
должна вывести что-то вроде /lib64/ld-linux-x86-64.so.2
. Поскольку выходные данные не включают символ перевода строки -в конце, он может появиться в той же строке, что и следующая командная строка, что затрудняет обнаружение :
[my command prompt]$ objcopy -O binary -j.interp /bin/ls /dev/stdout
/lib64/ld-linux-x86-64.so.2[my command prompt]$
В 32-битном -битном x86 выводе будет что-то вроде /lib/ld-linux.so.2
.
Результатом является имя файла интерпретатора программы , также известного как динамический компоновщик/загрузчик , который следует использовать с исследуемым двоичным файлом. Вы можете получить больше информации об этом, используя команды man ld.so
или man ld-linux
в вашей системе.