ब्रेस विस्तार का समर्थन क्यों नहीं किया जाता है?


9

क्या मुझे ब्रेस विस्तार शुरू करने के लिए कोई कॉन्फ़िगरेशन करना होगा? जब मैं दौड़ता हूं mkdir {1..10}, यह सिर्फ एक डायर नामकरण बनाता है {1..10}


mkdir {1..10}मेरे लिए काम करता है, यह दस dirs बनाता है।
सस्पेंस

2
मैं echo ${SHELL}इस प्रश्न को एक उपयोगी उत्तर प्राप्त करने में सक्षम करने के लिए जोड़ने की सलाह देता हूं ।
दान

जवाबों:


11

जबकि तरह ब्रेस विस्तार {1,2}में निकलती है cshदेर से 70 के दशक में, और करने के लिए अपने रास्ता मिल गया बॉर्न की तरह में गोले bash/ zsh/ pdkshदेर से 80 के दशक के शुरू 90 के दशक में, {n1..n2}संस्करण बाद में में पहले आया था zshमें 1995 (2.6 beta4)।

bashइसे 2004 (3.0) और ksh932005 ( ksh93r) में कॉपी किया ।

शायद खोल आप इस में कोशिश कर रहे हैं उन में से कोई भी है या के एक पुराने संस्करण है bashऔर ksh93


हमें इस बात पर ध्यान देना चाहिए कि वह किस तरह के शेलबैंक का इस्तेमाल करता है। / मुझे संदेह है #!/bin/sh...
पोलमन को

3
@ पॉलीमोन, जो जरूरी मदद नहीं करेगा। उदाहरण के लिए, कुछ सिस्टम /bin/shपर bashया है ksh93
स्टीफन चेजलस

2
मुझे वास्तव में लगता है कि यह होगा: मंगलाचरण के आधार पर, गोले ऐतिहासिक के रूप में /bin/sh कार्य करते हैंsh (यह बैश मैन पेज वैसे भी कहते हैं)। kshमैन पेज चेक नहीं किया है , लेकिन मुझे यकीन है कि यह तदनुसार व्यवहार करेगा।
पोल्मन

1
@ user43312: आप अभी भी RH9 का उपयोग क्यों कर रहे हैं? यह कई वर्षों से अस्वस्थ है। एएस स्टीफन ने लिखा है कि यह हाल के बैश संस्करणों की एक विशेषता है। तो यह बहुत संभावना नहीं है कि आपका बैश संस्करण इसका समर्थन करता है। आप bash --version का उपयोग करके संस्करण की जांच कर सकते हैं। और सिर्फ यह सुनिश्चित करने के लिए कि क्या आप $ शेल चर की जाँच करके या केवल ps चलाकर bash शेल चला रहे हैं। इस सुविधा का उपयोग करने के लिए आप zshपहले एक zsh शेल ( ) शुरू करने का प्रयास कर सकते हैं । एंथेरर वर्कअराउंड "mkdir $ (seq 1 10)" जैसी किसी चीज़ का उपयोग करना होगा।
ब्रैम

1
@polemon एक अन्य शेल का स्टार्टअप व्यवहार (यानी, जो इसे स्टार्टअप पर स्रोत फाइल करता है), दूसरे शेल की नकल नहीं।
क्रिस डाउन

4

{x..y}रेंज ब्रेस विस्तार को बैश 3.0-अल्फा में लागू किया गया है। हमारी और आपकी मदद करने के लिए, कृपया अपना echo "$BASH_VERSION"आउटपुट दिखाएं ।

फिर उत्तर: यदि आप mkdir {1..10}नाम के साथ एक डायर बनाते {1..10}हैं तो आप पहले एक bash संस्करण का उपयोग कर रहे हैं bash 3.0-alpha। उस मामले में आप पाश निर्माण के लिए उपयोग कर सकते हैं:

for ((i=1;i<=10; i++)); do mkdir "$i"; done


1

अपना बैश संस्करण जांचें:

$ bash -version
GNU bash, version 4.1.7(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

यह भी जाँच लें कि mkdirकुछ अजीब तरीके से उपनाम नहीं किया गया है:

$ alias |grep mkdir
alias md='mkdir'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.