Niektóre programy wymagają, aby ich pliki były widoczne, na przykład 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
Byłoby wygodnie, gdyby proces zastępowania korzystał z plików tymczasowych.
Widzę na stronie podręcznika, że bash może wrócić do plików tymczasowych z podstawieniem procesów, ale czy mogę wyraźnie poprosić go o użycie plików tymczasowych?
Podobnie jak zsh
s” =()
.
$ 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
źródło
źródło
mktemp
.bash
zHAVE_DEV_FD
ustawionym na0
.objdump -D -b binary -m i8086 /dev/stdin <<<$(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)
objdump
, to jest sedno pytania. W przeciwnym razie<()
było wystarczająco dobre.Odpowiedzi:
Na podstawie komentarza meuha; najwyraźniej bash tutaj-ciągi mogą być nadużywane jako pliki tymczasowe, spróbuj tego:
źródło
objdump ...
zstat /dev/fd/9
aby zobaczyć, że nie będzie to problematyczne FIFO lub rury, ale dowiązaniem do pliku w/tmp
lub$TMPDIR
).objdump
sytuacji. Co ciekawe, zadziałało tylko u mniegcc -o /dev/fd/9 [ . . . ]
, a nie u mniegcc >&9 -o - [ . . . ]
. Chciałem napisać odpowiedź (nie na sytuację objdump, ale na sytuację niewrażliwą na wartości null), która używała dokumentu tutaj z podstawieniem polecenia, ale potem zobaczyłem, że już wspomniałeś tutaj ciąg znaków w komentarzach do pytania , co jest jeszcze lepsze.