Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

बैश ब्रेस एक्सपेंशन ट्यूटोरियल:ब्रेसेस के भीतर एक्सपेंशन एक्सप्रेशन के 6 उदाहरण

बैश शैल विस्तार

बैश ब्रेस एक्सपेंशन ट्यूटोरियल:ब्रेसेस के भीतर एक्सपेंशन एक्सप्रेशन के 6 उदाहरण इनपुट का विश्लेषण करते समय शेल के संचालन में से एक शेल विस्तार है। बैश विभिन्न प्रकार के विस्तार प्रदान करता है। इस लेख में आइए हम एक महत्वपूर्ण विस्तार - "ब्रेस विस्तार" की समीक्षा करें।

यह लेख हमारी चल रही बैश ट्यूटोरियल श्रृंखला का हिस्सा है।

ब्रेस एक्सपेंशन

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

$ echo last{mce,boot,xorg}.log
lastmce.log lastboot.log lastxorg.log

where last is Preamble and .log is the postscript

उपरोक्त इको स्टेटमेंट आपको तीन लॉग फाइलों को अलग-अलग निर्दिष्ट करने से बचाता है। यदि आप अंतिम बूट लॉग, mce लॉग और xorg लॉग की सामग्री देखना चाहते हैं तो आप ब्रेस विस्तार का उपयोग कर सकते हैं जैसा कि उपरोक्त इको स्टेटमेंट में दिखाया गया है।

<एच3>1. ब्रेस विस्तार का उपयोग करके बैकअप के लिए उदाहरण
$ cat bkup.sh
set -x # expand the commands
da=`date +%F`
cp $da.log{,.bak}

$ ./bkup.sh
++ date +%F
+ da=2010-05-28
+ cp 2010-05-28.log 2010-05-28.log.bak

उपरोक्त बैकअप स्क्रिप्ट में, यह वर्तमान दिनांक लॉग फ़ाइल को एक्सटेंशन .bak के साथ कॉपी करता है। ब्रेसिज़ में पहला तत्व खाली है, इसलिए पहले तत्व में केवल प्रस्तावना होगी।

<एच3>2. ब्रेस विस्तार का उपयोग करके पुनर्स्थापित करने के लिए उदाहरण
$ cat restore.sh
set -x # expand the commands
da=`date +%F`
cp $da.log{.bak,}

$ ./restore.sh
++ date +%F
+ da=2010-05-28
+ cp 2010-05-28.log.bak 2010-05-28.log

पुनर्स्थापना स्क्रिप्ट में, पैरामीटर में पहला तत्व .bak है जहां दूसरा तत्व खाली है।

साथ ही, अतिरिक्त पढ़ने के लिए बैश शेल फंक्शन पर हमारा पिछला लेख देखें।

<केंद्र> <एच3>3. प्रस्तावना और पोस्टस्क्रिप्ट के बिना ब्रेस विस्तार के लिए उदाहरण

यदि कोई प्रस्तावना और पोस्टस्क्रिप्ट नहीं है, तो यह केवल ब्रेसिज़ में दिए गए तत्वों का विस्तार करता है।

$ cat expand.sh
echo {oct,hex,dec,bin}

$ ./expand.sh
oct hex dec bin

वैकल्पिक प्रस्तावना और पोस्टस्क्रिप्ट स्ट्रिंग्स के बिना, परिणाम दिए गए स्ट्रिंग्स की केवल एक स्थान से अलग की गई सूची है

श्रेणियों के लिए ब्रेस विस्तार

ब्रेस विस्तार अनुक्रमों का भी विस्तार करता है। अनुक्रम पूर्णांक या वर्णों के हो सकते हैं।

<एच3>4. पूर्णांक और वर्ण अनुक्रमों के लिए उदाहरण
$ cat sequence.sh
cat /var/log/messages.{1..3}
echo {a..f}{1..9}.txt

$ ./sequence.sh
May 9 01:18:29 x3 ntpd[2413]: time reset -0.132703 s
May 9 01:22:38 x3 ntpd[2413]: synchronized to LOCAL(0), stratum 10
May 9 01:23:44 x3 ntpd[2413]: synchronized to
May 9 01:47:48 x3 dhclient: DHCPREQUEST on eth0
May 9 01:47:48 x3 dhclient: DHCPACK from 23.42.38.201
..
..
a1.txt a2.txt a3.txt a4.txt b1.txt b2.txt b3.txt b4.txt c1.txt c2.txt c3.txt c4.txt

पहला कैट कमांड, संदेशों को विस्तृत करता है।1,संदेश।2 और संदेश।3 और सामग्री प्रदर्शित करता है। और अगले इको स्टेटमेंट में कैरेक्टर और इंटीजर सीक्वेंस को मिलाकर इस्तेमाल किया जाता है।

इंक्रीमेंट मान वाले क्रम

kshell ब्रेस एक्सपेंशन में, आप सीक्वेंस जेनरेट करने के लिए इंक्रीमेंट वैल्यू का उपयोग कर सकते हैं।

Syntax:
<start>..<end>..<incr>

incr संख्यात्मक है। आप एक ऋणात्मक पूर्णांक का उपयोग कर सकते हैं, लेकिन सही चिह्न प्रारंभ और अंत के क्रम से काटा जाता है।

5. इंक्रीमेंट इन सीक्वेंस का उपयोग करने का उदाहरण

$ ksh
$ echo /var/log/messages.{1..7..2}
/var/log/messages.1 /var/log/messages.3 /var/log/messages.5 /var/log/messages.7
$

इसका उपयोग करके आप वैकल्पिक दिनों की लॉगफाइलें देख सकते हैं।

ब्रेस विस्तार में नुकसान

ब्रेस विस्तार बैश चर का विस्तार नहीं करता है, क्योंकि ब्रेस विस्तार शेल विस्तार का पहला चरण है, बाद में चर का विस्तार किया जाएगा।

<एच3>6. विस्तार में चर के लिए उदाहरण

यदि आप कथन के लिए निम्नलिखित दो का आउटपुट देखते हैं, तो आप उपरोक्त नुकसान की पहचान कर सकते हैं।

$ cat var_seq.sh
# Print 1 to 4 using sequences.
for i in {1..4}
do
 echo $i
done
start=1
end=4

# Print 1 to 4 using through variables
echo "Sequences expressed using variables"
for i in {$start..$end}
do
 echo $i
done

$ ./var_seq.sh
1
2
3
4
Sequences expressed using variables
{1..4}

  1. बैश वैरिएबल ट्यूटोरियल - 6 प्रैक्टिकल बैश ग्लोबल और लोकल वेरिएबल उदाहरण

    यह लेख हमारी चल रही बैश ट्यूटोरियल श्रृंखला का हिस्सा है। किसी भी अन्य प्रोग्रामिंग भाषाओं की तरह, बैश भी चर प्रदान करता है। बैश चर जानकारी के लिए अस्थायी भंडारण प्रदान करते हैं जिसकी कार्यक्रम के जीवनकाल के दौरान आवश्यकता होगी।सिंटैक्स: VARNAME=VALUE नोट: वेरिएबल असाइनमेंट में = साइन के आसपास कोई

  1. बैश शैल फंक्शन ट्यूटोरियल 6 व्यावहारिक उदाहरणों के साथ

    बैश शेल फ़ंक्शन समूह के लिए एकल नाम का उपयोग करके बाद में निष्पादन के लिए कई UNIX / Linux कमांड को समूहबद्ध करने का एक तरीका है। . बैश शेल फ़ंक्शन को नियमित यूनिक्स कमांड की तरह ही निष्पादित किया जा सकता है। शेल फ़ंक्शंस को मौजूदा शेल संदर्भ में उनकी व्याख्या करने के लिए कोई नई प्रक्रिया बनाए बिना न

  1. बैश स्क्रिप्टिंग परिचय ट्यूटोरियल 5 व्यावहारिक उदाहरणों के साथ

    हमारी चल रही यूनिक्स सेड और यूनिक्स Awk श्रृंखला के समान, हम बैश स्क्रिप्टिंग पर कई लेख पोस्ट करेंगे, जो सभी बैश स्क्रिप्टिंग तकनीकों को व्यावहारिक उदाहरणों के साथ कवर करेगा। शेल एक प्रोग्राम है, जो यूजर कमांड की व्याख्या करता है। कमांड या तो उपयोगकर्ता द्वारा सीधे दर्ज किए जाते हैं या शेल स्क्रिप्