टर्मिनल शुक्रवार: बैश [मुख्य विस्तार]

सबसे पहले मैं माफी मांगना चाहता हूं, पिछले शुक्रवार से मैं पोस्ट नहीं लिख सकता था इसलिए आज मैं खोया हुआ दिन बनाने के लिए एक अतिरिक्त जोड़ूंगा। 🙂

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

स्पैनिश में, मुख्य विस्तार मुझे प्रेरित करने वाला कार्य लगता है सी शैल, यह उन वर्णों के बीच संयोजन उत्पन्न करता है जो ब्रेसिज़ के अंदर दर्ज किए जाते हैं, यह जिस क्रम का उपयोग करता है वह बाएं से दाएं होता है। यह बिल्कुल भी जटिल नहीं है लेकिन यह एक विकल्प है जो जीएनयू / लिनक्स के हमारे दौरों में बहुत उपयोगी होगा।

उदाहरण:

$ गूंज एक {1,2,3} a1 a2 a3

जब अल्पविराम के साथ प्रयोग किया जाता है (,) ब्रेसिज़ के अंदर मूल्य ए और मूल्यों के बीच संयोजन उत्पन्न करता है। यदि कुंजियों के बाहर कोई मूल्य नहीं था, तो यह केवल एक बार प्रत्येक मूल्य को दिखाएगा जिसमें कुंजी शामिल है।

$ गूंज {ए, बी, सी} एबीसी

इसका उपयोग जटिल नहीं है, एक फ़ोल्डर में कई निर्देशिकाएं बनाने जैसे अन्य सामान्य उदाहरण हैं

$ mkdir ~ / नौकरियां / {एक, दो, तीन, चार, पांच}

यह नौकरियों फ़ोल्डर के भीतर पांच फ़ोल्डर बनाता है, यह एक समय में एक कमांड दर्ज करने जैसा है। 5 निर्देशिका बनाना।

दो बिंदुओं से विस्तार होता है .. यह संख्याओं या पात्रों की एक श्रृंखला बनाता है जो प्रारंभिक मूल्य से अंतिम मूल्य तक जाते हैं, अक्षर वाले संख्याओं का उपयोग नहीं करते हैं।

$ गूंज {१.५.५} # सही १ २ ३ ४ ५ $ गूंज {a। अक्षर में इस नीले रंग का उपयोग किया जाता है

हम एक चक्र बनाकर समय बचा सकते हैं एसटी

# लेखन के लिए $ ((i = 1; i <= 5; i ++); गूंज "मेरा नंबर $ i"; मेरा नंबर 1 मेरा नंबर 2 मेरा नंबर 3 मेरा नंबर 4 मेरा नंबर 5 # ब्रेस विस्तार का उपयोग कर कोड। $ के लिए मैं {1..5} में; echo do "मेरा नंबर $ i; किया मेरा नंबर 1 मेरा नंबर 2 मेरा नंबर 3 मेरा नंबर 4 मेरा नंबर 5 # अगर यह आउटपुट अलग है, तो उपयोग करने के लिए वैध है। $ इको" मेरा नंबर "{1..5}। मेरा नंबर 1 मेरा नंबर 2 मेरा नंबर 3 मेरा नंबर 4 मेरा नंबर 5

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

$ गूंज {a .c} {1..3} a1 a2 a3 b1 b2 b3 c1 c2 c3

घोंसले के शिकार के रूप में कई कल्पना करेंगे कि आप विस्तार कुंजी के भीतर विस्तार कुंजी का उपयोग कर सकते हैं

$ प्रतिध्वनि {a, c {1..3}, d} a c1 c2 c3 d

और अंत में से बैश नोटिंग मूल्यों को बढ़ाना संभव है।

$ गूंज {0..20..2} 0 2 4 6 8 10 12 14 16 18 20

यह सब आज के लिए है, इसलिए मुझे पढ़ने के लिए धन्यवाद all

अतिरिक्त

कैसे एक स्थानीय बिन बनाने के लिए

जब मैं कहता हूं ए बिन स्थानीय का मतलब है एक निर्देशिका जिसमें हमारी अपनी स्क्रिप्ट्स हैं और उन्हें एक साधारण कमांड के रूप में निष्पादित करना संभव है ...

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

mkdir ~ / .bin # इस उदाहरण में इसे छिपाया जाएगा

अब हमारे पास स्क्रिप्ट को सहेजने के लिए हमारा फ़ोल्डर है, लेकिन यह तब तक काम नहीं करेगा जब तक हम नए .bin से $ PATH का रास्ता नहीं जोड़ते
इसके लिए फाइल को एडिट किया जाता है बैश_प्रोफाइल, और लाइन जोड़ी जाती है।

PATH = $ PATH: ~ / .bin निर्यात करें

और वोइला जो एक स्थानीय बिन बनाने के लिए पर्याप्त है, निश्चित रूप से यह रूट अनुमतियों के लिए पूछेगा यदि आवश्यक हो तो एक उदाहरण के लिए हम एक त्वरित स्क्रिप्ट लिखते हैं।

#! / बिन / बास गूंज "हाय $ 1, आप कैसे हैं?"

के नाम से सेव करें नमस्ते
स्क्रिप्ट को निष्पादन की अनुमति दी गई है और यह केवल टर्मिनल से इसे कॉल करने के लिए पर्याप्त होगा

$ हैलो वाडा # यह संदेश दिखाएगा हैलो वाडा, आप कैसे हैं?

तो इस क्विक ट्रिक से आप अपनी स्क्रिप्ट्स को तेजी से चला सकते हैं

आज के लोगों के लिए बस इतना ही
पुनश्च गलतियों को माफ करना अगर वहाँ हैं, तो मेरी आँखें पहले से ही हाहा ha को बंद कर रही हैं


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।

  1.   घनाकार कहा

    मैं लंबे समय से बैश इश्यू में हूं और मैंने ब्रेस एक्सपैंशन को नहीं समझा था, धन्यवाद।

    पथ चाल पर, फेडोरा डिफ़ॉल्ट रूप से कुछ ऐसा करता है, लेकिन "~ / .local / bin" में, bash_profile के एक स्निपेट को देखें, जिसे मैं जेसी के पास लाया था।

    पथ = $ पाथ: $ गृह / .लोक / बिन: $ गृह / बिन
    निर्यात PATH

    1.    रिकार्डो कहा

      मुझे कुछ चिंताएँ हैं:
      1. मैं उसे अंकों के विस्तार के साथ मुझे दो अंतराल कैसे दे सकता हूं; आयु {1..24,55..90} और मैं 1 से 24 वर्ष की आयु का विस्तार करता हूं और 55 से XNUMX तक जारी रहता हूं। जैसा कि मैंने किया यह काम नहीं किया। क्यों?

      2. यदि मैं चाहता हूं कि पहला मूल्य शून्य हो और अंकन के साथ जारी रहे:
      भूल जाओ: http://manga.favorito / छवि http://manga.favorito/imagen1
      मैंने निम्नलिखित तरीके की कोशिश की लेकिन wget नहीं मिला: http://manga.favorito/imagen{, 1..42} मेरे अनुसार, मुझे पहला नाम बिना नंबर के छोड़ना होगा और नंबर 1 से 42 तक जारी रखना होगा, लेकिन ऐसा नहीं था। क्यों?

    2.    वाडा कहा

      आप सही कह रहे हैं कि कुछ डिस्ट्रोस के पास एक .bin है या है, लेकिन यह इतना है कि हर कोई समझ सकता है और देख सकता है कि किसी भी डिस्ट्रो में ऐसा करना संभव है: डी, ​​थैंक्यू बाय स्टॉप।

  2.   डेमो कहा

    लिनक्स दुनिया और इसकी सुरक्षा में ज्ञान के इन योगदानों के लिए बहुत अच्छा, कुछ शुक्रवार मुझे आशा है कि मैं पढ़ सकता हूं कि मैं टर्मिनल में एक पेनड्राइव को कैसे प्रारूपित कर सकता हूं और एक टर्मिनल में किसी भी मुक्त प्रणाली की एक आईएसओ छवि डीवीडी / सीडी जला सकता हूं।

    1.    वाडा कहा

      आपके शब्दों के लिए धन्यवाद भाई words मैं वादा करता हूं कि अगले शुक्रवार को मैं वह पोस्ट करूंगा। और मुझे विम हाहा को अनुकूलित करने के बारे में एक होना चाहिए, लेकिन मैं उन्हें यह सोचने के लिए नहीं चाहता था कि यह केवल विम को कवर करेगा।

  3.   edoardo_or कहा

    उत्कृष्ट टर्मिनल लेख, सबसे अच्छा मैंने लंबे समय में पढ़ा है, इस शैली के ट्यूटोरियल प्रकाशित करने वाले कई ब्लॉगों की गिनती की है। बहुत बहुत धन्यवाद!!

    1.    वाडा कहा

      बहुत बहुत धन्यवाद 😀 मैं बनाए रखने की कोशिश करूंगा।

  4.   जुआनली कहा

    स्थानीय बिन के उत्कृष्ट टिप!
    नमस्ते!

    1.    वाडा कहा

      बहुत बढ़िया, महान है कि यह आपके लिए उपयोगी है, भाई 😀 पास करने के लिए बहुत-बहुत धन्यवाद

  5.   गिस्कार्ड कहा

    बहुत अच्छा! इस बारे में कोई विचार नहीं। धन्यवाद 🙂

    1.    वाडा कहा

      आपका स्वागत है भाई, इसे पढ़ने के लिए समय देने के लिए धन्यवाद you

  6.   रिकार्डो कहा

    मुझे कुछ चिंताएँ हैं:
    1. मैं उसे अंकों के विस्तार के साथ मुझे दो अंतराल कैसे दे सकता हूं; आयु {1..24,55..90} और मैं 1 से 24 वर्ष की आयु का विस्तार करता हूं और 55 से XNUMX तक जारी रहता हूं। जैसा कि मैंने किया यह काम नहीं किया। क्यों?

    2. यदि मैं चाहता हूं कि पहला मूल्य शून्य हो और अंकन के साथ जारी रहे:
    भूल जाओ: http://manga.favorito/imagen http://manga.favorito/imagen1

    मैंने निम्नलिखित तरीके की कोशिश की लेकिन wget नहीं मिला: http://manga.favorito/imagen{, 1..42} मेरे अनुसार, मुझे पहला नाम बिना नंबर के छोड़ना होगा और नंबर 1 से 42 तक जारी रखना होगा, लेकिन ऐसा नहीं था। क्यों?
    * क्षमा करें, लेकिन मैंने उत्तर के रूप में पहली पोस्ट डाली और यह कुछ हिस्सों में गलत था

    1.    वाडा कहा

      1.- आपका लॉजिक गलत है आपको घोंसला देना है क्योंकि इसके साथ प्रयास करना चाहिए $ echo {{1..24},{55..90}}

      2.- पिछले एक के रूप में ही ... $ echo "URL"{,{1..42}}

      चिंता मत करो भाई, हम यहां एक-दूसरे की मदद करने के लिए हैं

  7.   जेवीके85321 कहा

    इको से बदलने के लिए यह इस तरह दिखेगा

    इको "माई नंबर" {1..5} $ '\ n' | sed -e: a -e '$! n; s / \ n / \ n /; ta' | sed -e: a -e '$! n; s / 5 \ n / 5 /; ta';

    लेकिन मुझे प्रिंटफ पसंद है

    प्रिंटफ "I, I% d \ n" {1..5}

    और कुंजी विस्तार की एक ही अवधारणा का उपयोग करें

    atte
    जेवीके85321

    1.    जेवीके85321 कहा

      आप टर्मिनल बॉक्स कैसे लगाते हैं ????

      atte
      जेवीके85321

  8.   जेवीके85321 कहा

    कोड टैग काम करता है तो परीक्षण
    hehe

    इको से बदलने के लिए यह इस तरह दिखेगा

    echo “Mi numero “{1..5}$’\n’ | sed -e :a -e ‘$!N;s/\n /\n/;ta’ | sed -e :a -e ‘$!N;s/5\n/5/;ta’

    pero prefiero printf

    printf “Mi numero %d\n” {1..5}

    और कुंजी विस्तार की एक ही अवधारणा का उपयोग करें

    atte
    जेवीके85321

    1.    जेवीके85321 कहा

      मैं कुछ कीड़े के साथ छोड़ दिया, लेकिन यह काम किया

      मैं जिंदा हूं

      कष्ट देने के लिए क्षमा करें

      atte
      जेवीके85321

      1.    वाडा कहा

        Hahaha आप अपने आप को जवाब दिया, लेकिन अगर यह लेबल के बीच है जगह नहीं ...

        और इसके स्थान पर प्रतिस्थापन के लिए इतना पाइप हाहाहा करना आवश्यक नहीं है:
        echo -e "Mi numero "{1..5}"\n\b"

        ईमानदार होने के लिए स्क्रिप्ट में टेक्स्ट प्रिंट करना सबसे अच्छा तरीका है, यह अधिक पोर्टेबल है, लेकिन पारंपरिक रूप से प्रतिध्वनि का उपयोग करता है।

      2.    वाडा कहा

        मैं रिक्त स्थान लेता हूं! हा हा हा हा हा

        चलो अब देखते हैं 😀

      3.    वाडा कहा

        भाड़ में जाओ यह "hahahaha से अधिक" / "से कम" / "कोड" से अधिक "कोड" से कम है

      4.    जेवीके85321 कहा

        ईको-ई की समस्या मानक नहीं है, इसलिए यह सभी प्रणालियों पर काम नहीं करती है।

        साथ ही गन्दा भी निकलता है
        jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5

        jvk@jvktos:~$
        और इसके साथ
        jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        मुझे लगता है कि दूसरा बेहतर परिणाम प्रस्तुत करता है, हाहाहा

        atte
        जेवीके85321

      5.    जेवीके85321 कहा

        ये लेबल एक बमर हैं, हेहे, चलो देखते हैं कि क्या वे अब बाहर काम करते हैं
        jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        और इसके साथ
        jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        मुझे लगता है कि दूसरा बेहतर परिणाम प्रस्तुत करता है, हाहाहा
        atte
        जेवीके85321

      6.    जेवीके85321 कहा

        वैसे भी, लाइनों के बीच के रिक्त स्थान को छोड़ दें, यही कारण है कि मैं html, hahahaha से नफरत करता हूं

  9.   जोकिन कहा

    अति उत्कृष्ट! मैं तुम्हारे चरणों को ताली बजाता हूं

    मुझे नहीं पता था कि कुंजियों को नेस्ट किया जा सकता है, क्योंकि मैंने कभी भी उन्हें इस्तेमाल करने की कोशिश नहीं की, यह वास्तव में बहुत सारे कोड बचाता है और यह इस तरह से अधिक पठनीय भी है। धन्यवाद!

    1.    वाडा कहा

      भाई को पास करने के लिए धन्यवाद, मुझे खुशी है कि यह उपयोगी उपयोगिता थी

      1.    जोकिन कहा

        आपका स्वागत है, यही हम विचारों को साझा करने और योगदान करने के लिए यहाँ हैं। मुझे नहीं पता कि कैसे प्रोग्राम करना है, मैंने बस बैश में कुछ चीजें कीं और मैंने दो पोस्ट में कुछ स्क्रिप्ट्स प्रकाशित कीं जो मैंने कीं। मुझे लगता है कि इसे जानने से कोड समझने में आसान हो सकता है।