"<<(...)" पुनर्निर्देशन का क्या अर्थ है?


32

मैंने देखा है कि rvm (रूबी संस्करण प्रबंधक) निम्नलिखित कमांड का उपयोग करके स्थापित किया गया है:

bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )

इसलिए जैसा कि मैं समझता हूं कि हम स्क्रिप्ट सामग्री प्राप्त करते हैं और इसे बैश को पास करते हैं (मुझे विश्वास है < <और <<यही बात है?) मुझे इस < <भाग में दिलचस्पी है , नेट पर निम्नलिखित विवरण मिला:

<< टोकन मीन्स कार्यक्रम के लिए STDIN के रूप में वर्तमान इनपुट स्ट्रीम का उपयोग करते हैं जब तक कि टोकन को नहीं देखा जाता है।

यह मेरे लिए किसी तरह स्पष्ट नहीं है, क्या कोई उदाहरण दे सकता है या इसे और सरल तरीके से समझा सकता है?

जवाबों:


40

नहीं, < <और <<यही बात नहीं हैं।

पहला वाक्यविन्यास <के पहले चरित्र के साथ संयुक्त आम पुनर्निर्देशन चरित्र से बना है <(command)। यह एक है kshनिर्माण (भी में पाया bashऔर zsh) के रूप में जाना प्रक्रिया प्रतिस्थापन कि के उत्पादन में ले जाता है commandऔर एक फ़ाइल जिसका नाम पाइप के दूसरे छोर को संदर्भित करता है में यह प्रदान करता है commandके लिए लिख रहे हैं।

दूसरे शब्दों में आप सोच सकते हैं < <(command)के रूप में < fileहै, जहां फ़ाइल का उत्पादन होता है command


5
मैंने कुछ दिनों पहले इस कमांड के बारे में जाना, यह एक बहुत ही उपयोगी कमांड है। चीजें जो आप इसके साथ कर सकते हैं, वे केवल आपकी कल्पना द्वारा सीमित हैं: उदाहरण के लिए यह कमांड आपको केवल छिपी हुई फ़ाइलों की एक सूची देता है:diff <(ls) <(ls -a)
खाजा मिन्हाजुद्दीन

1
यह वाक्यविन्यास वास्तव में काफी उपयोगी हो सकता है, लेकिन स्टोनरैन के विशिष्ट मामले में, यह एक साधारण पाइप की तुलना में कोई अतिरिक्त मूल्य प्रदान नहीं करता है।
जुलियाग्रे

1
उपरोक्त सिंटैक्स में यह मदद नहीं करता है। लेकिन अगर आप यह थोड़ा बदलने के लिए, यह काफी बेहतर है: bash <(curl ...)के बजाय bash < <(curl ...)STDIN चोरी नहीं करता है, तो आप ऐसा कर रहे हैं मुक्त संकेतों का जवाब देने और पटकथा में इनपुट प्रदान करते हैं।
tylerl

का उपयोग करते हुए <() सीधे आदेशों के लिए कई $ चर भेजने के लिए एक बढ़िया विकल्प लगता है, इसके बजाय अनावश्यक रूप से पहले $ चर को फाइलों में लिखने की आवश्यकता नहीं है। diff <(echo "$ text1") <(echo "$ text2") stackoverflow.com/questions/13437104/…
सेपरो

18

यह सरल करने का एक जटिल तरीका है:

curl -s https://raw.github.com/... | bash
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.