การทดแทนกระบวนการ bash ด้วยไฟล์ชั่วคราว


8

บางโปรแกรมต้องการไฟล์ของพวกเขาจะ seekable เช่น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

มันจะสะดวกที่จะมีการทดแทนกระบวนการใช้ไฟล์ชั่วคราว

ฉันสามารถดูได้ในหน้า man ที่ทุบตีสามารถย้อนกลับไปยังไฟล์ชั่วคราวด้วยการทดแทนกระบวนการ แต่ฉันสามารถขอให้เขาใช้ไฟล์ชั่วคราวได้หรือไม่?

เช่นเดียวกับ'szsh=()

$ 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

ฉันสงสัยมัน mktempแต่คุณสามารถใช้
Wildcard

1
บางทีคุณอาจจะพยายามรวบรวมbashกับชุดHAVE_DEV_FD 0
cuonglm

6
คุณสามารถใช้สตริงที่ค้นหาได้ที่นี่แทน:objdump -D -b binary -m i8086 /dev/stdin <<<$(echo 0xea 0x5b 0xe0 0x00 0xf0|xxd -r -p)
meuh

2
อุ่ย นี่สตริงรุ่นเงียบหยดถ่านโมฆะ!
meuh

1
@ Wildcard ที่ใช้ Fifo เป็นไปไม่ได้objdumpนั่นคือประเด็นทั้งหมดของคำถาม <()เป็นอย่างอื่นก็ดีพอ
Elazar Leibovich

คำตอบ:


2

ตามความคิดเห็นของ meuh; เห็นได้ชัดว่าทุบตีที่นี่ - สตริงสามารถถูกทารุณกรรมเป็นไฟล์ชั่วคราวลองนี้:

( echo 0xea 0x5b 0xe0 0x00 0xf0 | 
  xxd -r -p >/dev/fd/9; objdump -D -b binary -m i8086 /dev/fd/9) 9<<<''

เคล็ดลับคือที่นี่เอกสารและสตริงที่นี่ใช้ไฟล์ชั่วคราวภายใต้ประทุน (แทนที่objdump ...ด้วยstat /dev/fd/9เพื่อดูว่ามันจะไม่เป็น FIFO หรือท่อที่มีปัญหา แต่ symlink ไปยังไฟล์ใน/tmpหรือ$TMPDIR)
mr.spuratic

ฉันใช้วิธีการตอบสำหรับobjdumpสถานการณ์ของฉัน ที่น่าสนใจก็ทำงานเฉพาะสำหรับผมด้วยไม่ได้กับgcc -o /dev/fd/9 [ . . . ] gcc >&9 -o - [ . . . ]ฉันกำลังจะเขียนคำตอบ (ไม่ใช่สถานการณ์ objdump แต่สำหรับสถานการณ์ที่ไม่เป็นโมฆะ) ที่ใช้เอกสารนี่กับการทดแทนคำสั่ง แต่จากนั้นฉันเห็นว่าคุณได้กล่าวถึงสตริงที่นี่ในคำถามความคิดเห็น ซึ่งดียิ่งขึ้น
clacke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.