Algunos programas necesitan que sus archivos sean buscables, por ejemplo 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
Sería conveniente que la sustitución del proceso utilice archivos temporales.
Puedo ver en la página del manual que bash puede recurrir a archivos temporales con sustitución de procesos, pero ¿puedo pedirle explícitamente que use archivos temporales?
Como zshs' =().
$ 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
Elazar Leibovich
fuente
fuente

mktemp.bashconHAVE_DEV_FDset to0.objdump -D -b binary -m i8086 /dev/stdin <<<$(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)objdump, ese es el punto central de la pregunta. De<()lo contrario fue lo suficientemente bueno.Respuestas:
Basado en el comentario de meuh; aparentemente bash here-strings puede ser abusado como archivos temporales, intente esto:
fuente
objdump ...constat /dev/fd/9para ver, no será un FIFO problemático o una tubería, sino un enlace simbólico a un archivo en/tmpo$TMPDIR).objdumpsituación. Curiosamente, solo funcionó para mí congcc -o /dev/fd/9 [ . . . ], no congcc >&9 -o - [ . . . ]. Iba a escribir una respuesta (no a la situación de objdump, sino a una situación no sensible a nulos) que usaba un documento aquí con una sustitución de comando, pero luego vi que ya había mencionado una cadena aquí en los comentarios de la pregunta , que es aún mejor.