Некоторым программам нужны их файлы для поиска, например objdump
.
$ objdump -D -b binary -m i8086 <(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)
objdump: Warning: '/proc/self/fd/11' is not an ordinary file
Было бы удобно иметь подстановку процесса, используя временные файлы.
На странице руководства я вижу, что bash может использовать временные файлы с заменой процесса, но могу ли я явно попросить его использовать временные файлы?
Как zsh
и =()
.
$ objdump -D -b binary -m i8086 =(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)
/tmp/zsh1u1Nrw: file format binary
Disassembly of section .data:
00000000 <.data>:
0: ea 5b e0 00 f0 ljmp $0xf000,$0xe05b
bash
shell
tmp
process-substitution
Элазар Лейбович
источник
источник
mktemp
.bash
сHAVE_DEV_FD
set to0
.objdump -D -b binary -m i8086 /dev/stdin <<<$(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)
objdump
, вот и весь вопрос. В противном случае<()
было достаточно хорошо.Ответы:
Основано на комментарии Меух; очевидно, bash here-строки могут быть использованы как временные файлы, попробуйте это:
источник
objdump ...
на,stat /dev/fd/9
чтобы увидеть, что это будет не проблемный FIFO или канал, а символическая ссылка на файл в/tmp
или$TMPDIR
).objdump
ситуации. Интересно, что он работал только для меняgcc -o /dev/fd/9 [ . . . ]
, а не сgcc >&9 -o - [ . . . ]
. Я собирался написать ответ (не для ситуации objdump, а для ситуации, не чувствительной к нулю), в которой использовался документ here с подстановкой команд, но потом я увидел, что вы уже упомянули строку here в комментариях вопроса , что даже лучше.