कमांड लाइन: <<< के बजाय <<<


63

कमांड md5sum <<< 'ddd' (आउटपुट:) d6d88f2e50080b9602da53dac1102762 -सही क्यों है , और md5sum << 'ddd'नहीं?

क्या <<<मतलब है?

जवाबों:


45

<<<शुरू होता है एक "यहाँ स्ट्रिंग": स्ट्रिंग विस्तार किया है और कार्यक्रम के stdin को खिलाया जाता है। (आपके मामले में, बहुत विस्तार नहीं हो रहा है।) यह इसके बराबर है:

echo ddd | md5sum

दूसरी ओर, <<यहां एक दस्तावेज़ शुरू करता है। मार्कर वाले एक तक की सभी निम्न पंक्तियों dddमें प्रोग्राम का इनपुट शामिल होगा। (आपको एक मार्कर का उपयोग करना चाहिए जो आपके डेटा में दिखाई देने की संभावना नहीं है।) आप इस तरह से ऊपर जैसा प्रभाव प्राप्त कर सकते हैं:

md5sum <<END
ddd
END

के बीच एक अंतर है <<ENDऔर <<'END': उद्धरण के बिना, किसी भी चर, भागने के अनुक्रम आदि यहां दस्तावेज़ में हमेशा की तरह विस्तारित होंगे।


3
कहाँ यह बराबर नहीं है कि को छोड़कर है rc, <<<(जैसे <<) एक अस्थायी फ़ाइल इसलिए आदेशों द्वारा इस्तेमाल किया जा सकता का उपयोग करता है lseekउनके stdin।
स्टीफन चेज़लस

32

<<<एक स्ट्रिंग का परिचय देता है : <<<कमांड के इनपुट के रूप में पास होने के बाद स्ट्रिंग । यह बायरन राक्गितिस के बंदरगाह rc(एक योजना 9 शेल) के यूनिक्स में उत्पन्न होता है, और यह zsh, ksh93 और bash में भी मौजूद है।

<<यहां एक दस्तावेज पेश किया गया है : शेल स्क्रिप्ट की बाद की लाइनें कमांड के इनपुट के रूप में पारित की जाती हैं, और स्ट्रिंग के बाद <<एक टर्मिनेटर है। यहाँ दस्तावेज़ सभी बॉर्न-शैली के गोले (बॉर्न, पोसिक्स, ऐश, बाश, क्श, ज़श, ...), सी-स्टाइल के गोले (csh, tcsh) और प्लान 9 गोले (आरसी, es) में काम करते हैं।


3
नहीं, कोई एक्सटेंशन <<<नहीं है ksh, पथ है rc-> zsh-> ksh93-> bash( kshरिलीज नोट एक बार से सुविधा उधार लेने के लिए स्वीकार करते हैं zsh)। शैली के गोले <<में भी काम करता हैrc
स्टीफन चेज़लस

इसमें एक अंतर है rcऔर zsh <<<हालांकि rcइसमें एक अनुगामी न्यूलाइन वर्ण शामिल नहीं है और यह एक अस्थायी फ़ाइल का उपयोग नहीं करता है (एक पाइप का उपयोग करता है और एक अतिरिक्त प्रक्रिया इसे कम से कम लिनक्स में पोर्ट में खिलाती है)।
स्टीफन चेज़लस

अधिक सटीक होने के लिए यह <<<यूनिक्स बंदरगाह से आता है जैसा कि rcयह नहीं लगता है कि यह प्लान 9 के rcपास है।
स्टीफन चेज़लस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.