अस्थायी फ़ाइल के साथ बैश प्रक्रिया प्रतिस्थापन


8

उदाहरण के लिए कुछ कार्यक्रमों को अपनी फ़ाइलों की तलाश करने की आवश्यकता 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

यह प्रक्रिया प्रतिस्थापन अस्थायी फ़ाइलों का उपयोग करने के लिए सुविधाजनक होगा।

मैं उस आदमी पृष्ठ में देख सकता हूं कि बैश प्रक्रिया प्रतिस्थापन के साथ अस्थायी फ़ाइलों में वापस आ सकता है, लेकिन क्या मैं उसे स्पष्ट रूप से अस्थायी फ़ाइलों का उपयोग करने के लिए कह सकता हूं?

जैसा zshकी =()

$ 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
वाइल्डकार्ड

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
उफ़। यहाँ स्ट्रिंग संस्करण चुपचाप अशक्त चार बूँदें!
मयूह

1
@Wildcard का उपयोग करना संभव नहीं है objdump, यह सवाल का पूरा बिंदु है। अन्यथा <()काफी अच्छा था।
एलज़ार लीबोविच

जवाबों:


2

मयूह की टिप्पणी के आधार पर; जाहिरा तौर पर यहां-वहां की गड़बड़ियों को अस्थायी फाइलों के रूप में दुरुपयोग किया जा सकता है, यह कोशिश करें:

( 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 या पाइप नहीं होगा, लेकिन /tmpया में एक फ़ाइल के लिए एक सिमलिंक $TMPDIR)।
mr.spuratic

मैंने अपनी objdumpस्थिति के लिए आपके उत्तर की विधि का उपयोग किया । दिलचस्प बात यह है कि इसने केवल मेरे साथ काम किया gcc -o /dev/fd/9 [ . . . ], साथ नहीं gcc >&9 -o - [ . . . ]। मैं एक उत्तर लिखने के लिए जा रहा था (objdump स्थिति के लिए नहीं, बल्कि एक गैर-संवेदनशील स्थिति के लिए) जो कमांड प्रतिस्थापन के साथ यहां एक दस्तावेज़ का उपयोग करता था, लेकिन फिर मैंने देखा कि आपने पहले ही यहां टिप्पणी टिप्पणियों में स्ट्रिंग का उल्लेख किया था , जो और भी बेहतर है।
9
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.