Bei einigen Programmen müssen die Dateien beispielsweise durchsuchbar sein 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
Es wäre praktisch, wenn die Prozessersetzung temporäre Dateien verwendet.
Ich kann auf der Manpage sehen, dass Bash auf temporäre Dateien mit Prozessersetzung zurückgreifen kann, aber kann ich ihn ausdrücklich bitten, temporäre Dateien zu verwenden?
Wie 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
quelle
quelle
mktemp
.bash
mitHAVE_DEV_FD
set to zu kompilieren0
.objdump -D -b binary -m i8086 /dev/stdin <<<$(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)
objdump
, das ist der springende Punkt der Frage. Ansonsten<()
war gut genug.Antworten:
Basierend auf Meuhs Kommentar; Anscheinend können bash here-Strings als temporäre Dateien missbraucht werden. Versuchen Sie Folgendes:
quelle
objdump ...
durchstat /dev/fd/9
, um zu sehen, es ist kein problematisches FIFO oder eine Pipe, sondern ein Symlink zu einer Datei in/tmp
oder$TMPDIR
).objdump
Situation verwendet. Interessanterweise hat es nur bei mir funktioniertgcc -o /dev/fd/9 [ . . . ]
, nicht beigcc >&9 -o - [ . . . ]
. Ich wollte eine Antwort schreiben (nicht auf die objdump-Situation, sondern auf eine nicht nullempfindliche Situation), in der ein Here-Dokument mit einer Befehlssubstitution verwendet wurde, aber dann sah ich, dass Sie in den Fragenkommentaren bereits eine Here-Zeichenfolge erwähnt hatten , was noch besser ist.