जवाबों:
क्या यह सिर्फ एक "क्योंकि मैं जानना चाहता हूं" सवाल है, या क्या इसके लिए एक वास्तविक उपयोग मामला है? हम इसे प्राप्त करने के लिए कुछ जिम्नास्टिक के माध्यम से जा सकते हैं:
$ eval echo\ {a,b,c}\;
a
b
c
लेकिन मैं किसी को भी शिकार करूँगा जो हमारे सिस्टम स्क्रिप्ट में इस प्रकार के ओफ़्फ़ुसेटरी कमांड में डाल रहा है।
इसके बजाय स्पष्टता के लिए क्यों न जाएं:
$ for X in {a,b,c}; do echo $X; done
आप पूरे हॉग में भी जा सकते हैं और एक नई सूची में डाल सकते हैं और इसे थोड़ा सा प्रेरित कर सकते हैं ताकि आप हमेशा समझ सकें कि आप क्या करने की कोशिश कर रहे थे।
for
काम करता है, लेकिन यह अभी भी अधिक टाइपिंग है: पी
eval git branch -d \{ branch-a, branch-b }\;
मार्क मान के चयनित जवाब के आधार पर , मैं इस उदाहरण को आगे बढ़ाने में सक्षम था, जो बहुत अच्छा काम करता है:
$ eval echo\ category_{17,32,33}.properties\{,.bak\}\;
category_17.properties category_17.properties.bak
category_32.properties category_32.properties.bak
category_33.properties category_33.properties.bak
जो दिखा रहा है, वह यह है कि जब आप एक पंक्ति के भीतर ब्रेस विस्तार की कई घटनाओं का उपयोग कर रहे हैं, तो मार्क का मूल उदाहरण व्यक्तिगत रूप से प्रत्येक भिन्नता को मुद्रित करेगा। इसके बजाय, मैं कई फ़ाइलों को स्थानांतरित / नाम बदलने के लिए उनके उत्तर का उपयोग करना चाहता था। यह सुनिश्चित करने के लिए कि आउटपुट प्रारूप से मेल खाता है जो mv
सामान्य रूप से उम्मीद करता है ( mv oldfilename newfilename
), मैं ब्रेस विस्तार की दूसरी घटना से बच गया, ताकि प्रारंभिक कमांड निष्पादित होने के बाद तक इसका मूल्यांकन नहीं किया जा सके eval
।
जैसा कि उपरोक्त आउटपुट उम्मीद के अनुसार दिखाई दिया, तब मैं निम्नलिखित कमांड चलाने में सक्षम था:
$ eval mv\ category_{17,32,33}.properties\{,.bak\}\;
$ ls
category_17.properties.bak category_32.properties.bak category_33.properties.bak
उनके मूल उत्तर के लिए मार्क को बहुत धन्यवाद। कृपया उसके उत्तर को वोट करें यदि आप पसंद करते हैं तो उसका उत्तर मुझे क्या करने की अनुमति देता है :-)
file-{r,b,g}{m,n,o}{x,y.z}.foo
तो सभी 27 मानों की गणना करने की तुलना में संक्षिप्त रूप का उपयोग करना बेहतर है।