Beberapa program memerlukan file mereka agar dapat dicari, misalnya diperlukan 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
Akan lebih mudah untuk memiliki proses substitusi menggunakan file sementara.
Saya dapat melihat di halaman manual bahwa bash dapat mundur ke file sementara dengan substitusi proses, tetapi bisakah saya secara eksplisit memintanya untuk menggunakan file sementara?
Seperti 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
sumber
sumber
mktemp
.bash
denganHAVE_DEV_FD
set to0
.objdump -D -b binary -m i8086 /dev/stdin <<<$(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)
objdump
, itulah inti dari pertanyaan. Kalau tidak,<()
itu cukup baik.Jawaban:
Berdasarkan komentar meuh; ternyata bash di sini-string dapat disalahgunakan sebagai file sementara, coba ini:
sumber
objdump ...
denganstat /dev/fd/9
untuk melihat, itu tidak akan menjadi FIFO atau pipa yang bermasalah, tetapi sebuah symlink ke sebuah file di dalam/tmp
atau$TMPDIR
).objdump
situasi saya . Menariknya, itu hanya bekerja untuk sayagcc -o /dev/fd/9 [ . . . ]
, bukan dengangcc >&9 -o - [ . . . ]
. Saya akan menulis jawaban (bukan untuk situasi objdump, tetapi untuk situasi non-nol-sensitif) yang menggunakan dokumen di sini dengan substitusi perintah, tapi kemudian saya melihat bahwa Anda telah menyebutkan string di sini di komentar pertanyaan , yang bahkan lebih baik.