मानक Windows कमांड खोल - cmd.exe
- का उपयोग नहीं करता <<
ऑपरेटर बिल्कुल .¹
एक एकल का <
अर्थ है "फ़ाइल को मानक इनपुट में पढ़ें " cmd.exe
, लेकिन <
बैक-टू-बैक दो अक्षर अर्थहीन हैं cmd.exe
, इसलिए यह आपको मिली त्रुटि देता है।
<<
ऑपरेटर है के सभी प्रमुख प्रकार के लिए सार्थक यूनिक्स आदेश खोल , जहां इसके लिए प्रयोग किया जाता है यहाँ-दस्तावेज : ²
$ some-command <<END
blah blah blah
blah blah
blah blah blah blah blah
END
वे तीन लाइनें some-command
इसके मानक इनपुट पर भेजी जाती हैं ।
यह बहुत से पाठ को कमांड में भेजने के लिए उपयोगी है, इसे पहले किसी फाइल पर लिखे बिना, जैसा कि आप <
ऑपरेटर के पास होगा। मैं अक्सर स्क्रिप्ट में "उपयोग" संदेश को एम्बेड करने के लिए इसका उपयोग करता हूं:
#!/bin/sh
if [ -z "$1" ]
then
cat <<USAGE
usage: myscript <files...>
Grobbles the foobie for all files given on the command line.
USAGE
exit 1
fi
# ... do something with command line arguments
यह echo
कथनों का एक गुच्छा लिखने से बेहतर है क्योंकि हर्डोक पाठ को बिल्कुल स्क्रीन की तरह प्रिंट किया जाता है। इसके अतिरिक्त, इस संदर्भ में श्वेत स्थान, उद्धरण, पुनर्निर्देशन, और चर प्रक्षेप से निपटना आसान है। सूचना, उदाहरण के लिए, कि मैंने उपयोग संदेश में कोण कोष्ठक का उपयोग किया है, ताकि शेल को आई / ओ पुनर्निर्देशन के लिए उपयोग करने से रोकने के लिए कुछ भी चालाक न हो।
यदि आप विंडोज पर इस तरह की चीजें करना चाहते हैं, तो आप सिगविन स्थापित कर सकते हैं और इसके एक गोले का उपयोग कर सकते हैं। यदि आप विंडोज 10 पर हैं, तो आप इसकी जगह WSL का उपयोग कर सकते हैं ।
फुटनोट:
यह लिंक संग्रहीत Windows XP प्रलेखन ट्री में जाता है। Microsoft ने उस लिंक को तोड़ दिया जिसका मैं पहले उपयोग कर रहा था जब उन्होंने इन डॉक्स को संग्रहीत किया, इसलिए यदि वे इसे फिर से तोड़ते हैं, तो यहां एक बैकअप थर्ड-पार्टी संदर्भ है।
केवल अन्य cmd.exe
संदर्भ सामग्री जो मुझे microsoft.com पर पता है, वह विंडोज कमांड पीडीएफ (4.9 एमबी, 948 पृष्ठ) है, जो बिल्ट-इन और माइक्रोसॉफ्ट द्वारा प्रदान किए गए बाहरी कमांड के अधिकांश (!) के लिए एक संदर्भ प्रदान करने की तुलना में थोड़ा अधिक है! आप cmd
प्रॉम्प्ट पर दे सकते हैं । यह पीडीएफ दो आधारों पर अपूर्ण है। सबसे पहले, और यहां सबसे अधिक प्रासंगिक, इस बात की कोई संयुक्त चर्चा नहीं है कि cmd.exe
शेल में पुनर्निर्देशन कैसे काम करता है ; शेल व्याकरण की चर्चा भी नहीं है। दूसरा, पीडीएफ की कमांड सूची अधूरी है: पहली चीज जो मैंने जांच की थी वह कवर नहीं की गई है diskpart
:।
मेरा मानना है कि यह सब Microsoft के PowerShell केcmd.exe
साथ बदलने के स्पष्ट प्रयासों का अनुसरण करता है , जो अब कई वर्षों से चल रहे हैं। इस लेखन के रूप में सबसे हाल ही में विंडोज 10 अपडेट में, उन्होंने अस्तित्व को छिपाने के लिए और कदम उठाए हैं , हालांकि यह पूरी तरह से अभी तक नहीं गया है।cmd.exe
यह ध्यान देने योग्य है कि पावरशेल भी <<
पुनर्निर्देशन ऑपरेटर का समर्थन नहीं करता है । न ही - यूनिक्स के गोले से एक दुखद प्रतिगमन में और cmd.exe
क्या यह <
पुनर्निर्देशन का समर्थन करता है !
यहाँ दस्तावेज़ शुरू करने के लिए विहित तरीका है जैसा कि मैंने इसे ऊपर लिखा है, जिसमें <<
और सीमांकक शब्द के बीच कोई स्थान नहीं है । मेरी फजी याद यह है कि शेल स्क्रिप्ट्स में मैंने यहां देखे गए दस्तावेजों के सभी उपयोग इस तरह से किए हैं। यहां के दस्तावेज़ों के लिए POSIX विनिर्देश अपने उदाहरणों में इस शैली का उपयोग करता है।
हालाँकि, POSIX.1-2008 विनिर्देश के अन्य भागों का सावधानीपूर्वक पढ़ने से पता चलता है कि यह <<
और सीमांकक शब्द के बीच कुछ स्थान या टैब वर्ण डालना कानूनी है । विशेष रूप से, देखने के टोकन मान्यता नियम 7 और 10 , की परिभाषा io_here
में खोल व्याकरण , और की परिभाषा "रिक्त" चरित्र वर्ग ।
यह है कि आप एक शेल का दस्तावेज कैसे बनाते हैं। नोट्स लें, Microsoft। ;)
यहां बैश 4 पर परीक्षण किया गया है और ksh93
पुष्टि करता है कि यह उम्मीद के मुताबिक काम करता है।