फ़ाइलों के बजाय आउटपुट की तुलना करने के लिए vimdiff


15

मैं दो कमांड आउटपुट (कोई फ़ाइल नहीं) की तुलना करने की कोशिश कर रहा हूं

vimdiff "$(tail /tmp/cachain.pem)" "$(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)"

मैंने पुनर्निर्देशन, पाइप के साथ खेलने की कोशिश की, vim - -cलेकिन मुझे कुछ याद आ रहा है। क्या कोई कृपया मदद कर सकता है?

जवाबों:


23

आप भ्रमित कर रहे हैं $(…)के साथ <(…)। आपने पूर्व का उपयोग किया, जो आउटपुट को तर्क के रूप में पास करता है vimdiff। उदाहरण के लिए, यदि अंतिम पंक्ति में /path/to/fooसमाहित है bar bar bar, तो निम्न कमांड

echo $(tail -1 /path/to/foo)

के बराबर है

echo bar bar bar

इसके बजाय, आपको उपयोग करने की आवश्यकता है <(…)। यह कहा जाता है प्रक्रिया प्रतिस्थापन , और एक के रूप में उत्पादन गुजरता छद्म फ़ाइल को vimdiffआदेश। इसलिए, निम्नलिखित का उपयोग करें।

vimdiff <(tail /tmp/cachain.pem) <(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)

यह बाश और zsh में काम करता है, लेकिन जाहिर है tcsh में प्रक्रिया प्रतिस्थापन करने का कोई तरीका नहीं है


यह केवल बैश में है, हालांकि
सिमोना

@ मेरे लिए zsh में भी काम करता है। शायद csh और tsh भी।
स्पार्कहॉक

@Sparhawk उस में tcsh काम नहीं करता है
सिमोना

@ साइमोना उस जानकारी के लिए धन्यवाद; मैं tsh से परिचित नहीं हूँ। आप एक जवाब देने पर विचार कर सकते हैं जो tsch में काम करता है। चीयर्स।
स्पर्हाक

@Sparhawk जाहिरा तौर पर tcshफ़ाइल unix.stackexchange.com/questions/5111/…
simona
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.