paint-brush
कमांड लाइन: एक व्यापक गाइडद्वारा@marcinwosinek
2,192 रीडिंग
2,192 रीडिंग

कमांड लाइन: एक व्यापक गाइड

द्वारा Marcin Wosinek9m2023/01/18
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

कमांड लाइन इंटरफेस (सीएलआई) के अभ्यस्त होने के लिए कई अच्छे तर्क हैं, हालांकि, एक पूर्ण शुरुआत के रूप में, इसे शुरू करना मुश्किल हो सकता है, और एक नया शेल सत्र थोड़ा डराने वाला लग सकता है। शुरू करने के लिए, आपको एक टर्मिनल इम्यूलेटर की आवश्यकता है: एक प्रोग्राम जो आपके मशीन के लिए केवल-टेक्स्ट एक्सेस का अनुकरण करता है।
featured image - कमांड लाइन: एक व्यापक गाइड
Marcin Wosinek HackerNoon profile picture

कमांड लाइन इंटरफेस (सीएलआई) के अभ्यस्त होने के कई अच्छे तर्क हैं। हालाँकि, एक पूर्ण शुरुआत के रूप में, इसे शुरू करना मुश्किल हो सकता है, और एक नया शेल सत्र थोड़ा डराने वाला लग सकता है:

आइए सीएलआई मूल बातें देखें!

कहा से शुरुवात करे

पहली चीज जो आपको चाहिए वह एक टर्मिनल इम्यूलेटर है: एक प्रोग्राम जो आपके मशीन पर टेक्स्ट-ओनली एक्सेस का अनुकरण करता है। किसी भी ऑपरेटिंग सिस्टम (OS) में इम्यूलेटर्स का एक बड़ा विकल्प होगा: वे सभी बहुत समान हैं, और मुख्य अंतर होंगे:


  • समर्थित रंगों की संख्या,


  • फ़ॉन्ट प्रकार, आकार, या रंग स्कीमा के लिए उपलब्ध विकल्प,


  • फॉन्ट साइज बढ़ाने के लिए प्रमुख शॉर्टकट आदि।


बिल्कुल शुरुआत में, आपको अपने ओएस या एकीकृत विकास पर्यावरण (आईडीई) में जो उपलब्ध है, उसके साथ ठीक होना चाहिए।

गोले

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


सूक्ष्म अंतर के साथ कई विकल्प उपलब्ध हैं जो उपयोगकर्ता के अनुभव को बहुत बदल सकते हैं।

ज़श

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

दे घुमा के

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

श्री

मानक खोल। यह मानक यूनिक्स कमांड का हिस्सा है, और यह किसी भी यूनिक्स जैसी मशीन पर होने की गारंटी है। इसलिए, जब स्क्रिप्ट लिखने की बात आती है तो यह एक सुरक्षित शर्त है।


उपयोगकर्ता इंटरफ़ेस में कई आधुनिक सुधारों का अभाव है, इसलिए मैं इसे वायरिंग स्क्रिप्ट के अलावा किसी भी चीज़ के लिए उपयोग नहीं करूँगा।

मेरा खोल वैसे भी क्या है?

आप अपने खोल की जांच कर सकते हैं echo $? :
इमेज डिस्क्रिप्शन एन

मेरे मामले में, यह zsh है

अपना शेल कैसे बदलें

हर शेल एक प्रोग्राम है और इसे दूसरे शेल से सीधे चलाया जा सकता है। उदाहरण के लिए:


asciicast

इस तरह, आप जाँच सकते हैं कि आपने कौन से गोले स्थापित किए हैं और उनका शीघ्रता से परीक्षण कर सकते हैं। शेल को स्थायी रूप से बदलने के लिए, आप लिनक्स और macOS दोनों में कमांड chsh (चेंज शेल) का उपयोग कर सकते हैं:


asciicast

यदि आपके पास वह शेल नहीं है जिसका आप उपयोग करना चाहते हैं, तो आपको पहले इसे स्थापित करने की आवश्यकता है—सटीक आदेश आपके OS या Linux वितरण पर निर्भर करता है।

इमारत ब्लॉकों

तो, एक बार जब आपका टर्मिनल चालू हो जाता है, तो आप इसका उपयोग कैसे करते हैं?

आदेश

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


इसी तरह, प्रत्येक ओएस कमांड का अपना सेट लाता है, लेकिन वे समानताएं साझा करते हैं-विशेष रूप से यूनिक्स, मैकोज़ और लिनक्स से प्रेरित सिस्टम के साथ।


विंडोज पर, मानक कमांड लाइन cmd में कमांड का एक बहुत अलग सेट होता है, लेकिन वहां भी समान इंटरफ़ेस प्राप्त करने के लिए कई विकल्प उपलब्ध हैं:


  • लिनक्स के लिए नेटिव विंडोज सबसिस्टम


  • Git BASH, Windows के लिए Git द्वारा प्रदान किया गया


यूनिक्स एक ओएस था जो 1973 में सार्वजनिक रूप से उपलब्ध हो गया, और इसने बाद में आने वाली बहुत सी चीजों को प्रभावित किया। इसका वर्तमान विनिर्देश 161 आदेशों को परिभाषित करता है, लेकिन सौभाग्य से आपको CLI से लाभ उठाने के लिए उनमें से कुछ ही की आवश्यकता है।


आदेशों का उदाहरण:


  • ls फ़ोल्डर में फ़ाइलों को सूचीबद्ध करता है—डिफ़ॉल्ट रूप से, यह वर्तमान फ़ोल्डर की सामग्री दिखाता है:
    इमेज डिस्क्रिप्शन एन

  • pwd वर्तमान पथ दिखाता है जिसमें आप अपने आदेश चला रहे हैं:


    चित्र का वर्णन

  • cd डायरेक्टरी को बदल देता है—डिफ़ॉल्ट रूप से यह होम डाइरेक्टरी में चला जाता है ( https://asciinema.org/ रिकॉर्डिंग या स्क्रीनशॉट)


    asciicast

बहस

प्रत्येक आदेश अतिरिक्त तर्क ले सकता है। तर्क स्थान से अलग मान हैं जो कमांड नाम के बाद आते हैं। तर्कों का अर्थ कार्यक्रम पर निर्भर करता है। आप कमांड दस्तावेज़ीकरण में विभिन्न तर्कों के बारे में पढ़ सकते हैं:


asciicast

विकल्प

कई मानक आदेश विभिन्न विकल्पों के साथ आते हैं जो आपको प्रोग्राम के व्यवहार को संशोधित करने की अनुमति देते हैं। उदाहरण के लिए, ls का उपयोग अक्सर निम्नलिखित विकल्पों के साथ किया जाता है:


  • -a - सभी फाइलों को दिखाने के लिए, जिनमें से शुरू होता है . - छिपी हुई फाइलों के लिए एक यूनिक्स सम्मेलन


  • -l लंबे प्रारूप में फ़ाइलें दिखाएं—अधिक जानकारी प्रदान करना


एक आम सम्मेलन विकल्प को अलग पैरामीटर, ls -a -l के रूप में अनुमति देना है, या एक पैरामीटर, ls -la में संयुक्त है।
इमेज डिस्क्रिप्शन एन

मापदंडों

एक पैरामीटर एक तर्क है जो कमांड या उसके विकल्पों में से एक को मान प्रदान करता है।


तो उदाहरण के लिए, ऊपर से उदाहरण के साथ, आप डिफ़ॉल्ट व्यवहार को बदलने के लिए पथ प्रदान कर सकते हैं:


  • ls workspace - कार्यस्थान फ़ोल्डर में फ़ाइलें सूचीबद्ध करता है:


    asciicast

  • cd workspace - वर्तमान निर्देशिका को कार्यक्षेत्र में बदलता है:


    asciicast

  • cat file —स्क्रीन पर फ़ाइल की सामग्री दिखाती है:


    asciicast

मापदंडों का अर्थ कार्यक्रम पर निर्भर करता है - सबसे पहले, आपको बहुत सारे दस्तावेज़ों की जांच करने की आवश्यकता हो सकती है।

मानक आउटपुट

मानक आउटपुट वह पाठ है जो प्रोग्राम चलाने पर कमांड लाइन में जोड़ा जाता है। इसका पाठ निष्पादन के सुखद पथ द्वारा दिखाया गया है। अब तक हमने जो उदाहरण देखे हैं उनमें विभिन्न कमांडों का मानक आउटपुट दिखाया गया है।


सी ++ सीखते समय, आप सीखने वाली पहली चीज़ों में से एक है cout - मानक आउटपुट।


डिफ़ॉल्ट रूप से, मानक आउटपुट केवल स्क्रीन पर दिखाया जाता है, लेकिन आप इसे > ऑपरेटर वाली फ़ाइल में आसानी से पुनर्निर्देशित कर सकते हैं। उदाहरण:


asciicast

त्रुटि आउटपुट

त्रुटि आउटपुट वह है जहां प्रोग्राम निष्पादन के दौरान आने वाली समस्याओं के बारे में जानकारी प्रदर्शित करते हैं। टर्मिनल से सीधे कमांड चलाते समय, त्रुटि आउटपुट और मानक आउटपुट को समान माना जाता है—वे केवल स्क्रीन पर प्रदर्शित होते हैं। उदाहरण के लिए, जब मैं एक गैर-मौजूदा फ़ाइल को ls करने का प्रयास करता हूं:


इमेज डिस्क्रिप्शन एन

जब आप आउटपुट को फ़ाइल में रीडायरेक्ट करते हैं तो अंतर स्पष्ट हो जाता है:


चित्र का वर्णन

मानक इनपुट

एक सामान्य कार्यप्रवाह में, मानक इनपुट वह है जो आप अपने प्रोग्राम में टाइप करते हैं। अब तक हमने जो आदेश देखे हैं, वे आम तौर पर इंटरैक्टिव मोड में उपयोग नहीं किए जाते हैं। एक साधारण उदाहरण एक man पेज हो सकता है जो स्क्रॉल करने की अनुमति देता है:


asciicast

सी ++ अनुभव वाले लोगों के लिए, आपने इस शब्द को cin के लिए सुना है:

 cin >> variable;


कई सामान्य आदेशों के लिए, पाइप ऑपरेटर के कारण मानक इनपुट विशेष रूप से महत्वपूर्ण हो जाता है।

पाइप

पाइप एक प्रोग्राम के मानक आउटपुट को दूसरे प्रोग्राम के मानक इनपुट से जोड़ने के तरीके हैं। इस तरह सीएलआई इंटरऑपरेबिलिटी प्राप्त करता है जिसका मैंने अपने पिछले लेख में उल्लेख किया था।


पाइप का उपयोग करने से आप विभिन्न आदेशों को बहुत सारे रचनात्मक तरीकों से जोड़ सकते हैं—मैं इस श्रृंखला में बाद में कुछ उदाहरण दिखाऊंगा। अभी के लिए, एक साधारण उदाहरण है:


asciicast

कहाँ:

  • cat … - फ़ाइलें पढ़ता है और मानक आउटपुट में उनकी सामग्री लौटाता है,


  • less—मानक इनपुट less मान प्राप्त करता है, और उसे स्क्रीन पर फ़िट बनाता है


इसी प्रकार, खोज उपयोगिता का उपयोग करके grep :


asciicast

कहाँ:

  • cat … - ऊपर के रूप में


  • grep 1 —मानक इनपुट से मान प्राप्त करता है, और इसे केवल उन पंक्तियों के लिए फ़िल्टर करता है जिनमें 1 है।

फाइलों में लिखा जा रहा है

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

कार्यकारी डाइरेक्टरी

कमांड लाइन में जो कुछ भी होता है वह एक विशिष्ट डिस्क स्थान-एक कार्यशील निर्देशिका के संदर्भ में किया जाता है। जब आप सापेक्ष फ़ाइल पथ निर्दिष्ट करते हैं - पढ़ने या लिखने के लिए - वे कार्यशील निर्देशिका से हल हो जाते हैं।


आमतौर पर, आप अपनी कार्यशील निर्देशिका को उस प्रोजेक्ट के शीर्ष फ़ोल्डर में सेट करते हैं, जिस पर आप काम कर रहे हैं। जब आप एक नया सत्र शुरू करते हैं, तो आमतौर पर कार्यशील निर्देशिका आपकी होम निर्देशिका पर सेट होती है।

रनिंग कमांड्स

शेल दुभाषिए आपके काम को गति देने के लिए आपको कई शॉर्टकट प्रदान करते हैं। समय के साथ, आप उनके बारे में सोचे बिना सहज रूप से उनका उपयोग करना शुरू कर देंगे।


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


मैं खुद Zsh का उपयोग कर रहा हूं, और ये शॉर्टकट वहां काम करते हैं। कम से कम उनमें से कुछ को बैश में भी काम करना चाहिए, लेकिन यह सटीक संस्करण और कॉन्फ़िगरेशन पर निर्भर हो सकता है।

दो बार टाइप न करें—तीर का प्रयोग करें

सीएलआई के साथ तेज होने की मुख्य चाल हर समय सब कुछ टाइप नहीं करना है। सबसे बुनियादी मामला यह है कि आप पहले कुछ पंक्तियों को चला चुके आदेश को वापस प्राप्त करें। आप ऊपर तीर कुंजी दबाकर ऐसा कर सकते हैं।


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


asciicast

पुराने आदेश खोजें

मैनुअल स्क्रॉलिंग सबसे हाल के आदेशों में से एक या मुट्ठी भर प्राप्त करने के लिए ठीक है। यदि आप अतीत से कुछ और प्राप्त करना चाहते हैं, हालाँकि, आप खोज कार्यक्षमता का उपयोग कर सकते हैं। डिफ़ॉल्ट रूप से, कमांड इतिहास में खोज शुरू करने के लिए आप जिस कमांड का उपयोग कर सकते हैं वह CTRL + R है:


asciicast

स्वत: भरण के लिए उपयोग करें

आपको उन सभी आदेशों को टाइप करने की ज़रूरत नहीं है जिन्हें आप चलाना चाहते हैं। Zsh और Bash दोनों ऑटोफिल के लिए पूछने के एक तरीके के रूप में टैब कुंजी का समर्थन करते हैं - यदि वे अद्वितीय हैं तो वे कमांड या फ़ाइल नाम भरेंगे या यदि आप जो टाइप करते हैं वह कई संभावनाओं से मेल खाता है तो आपको सभी उपलब्ध विकल्प दिखाएंगे।


Zsh कमांड विकल्पों के लिए भी ऑटोफिल प्रदान करता है।


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


asciicast

फ़ाइल नाम वाइल्डकार्ड

आप कई फाइलों के नामों का मिलान करने के लिए वाइल्डकार्ड का उपयोग करके टाइपिंग को और भी तेज कर सकते हैं:


asciicast

पेजर- कम

अक्सर, जब किसी प्रोग्राम में इतना अधिक आउटपुट होता है कि वह स्क्रीन में फिट नहीं होता है, तो वह पेजर के रूप में दूसरे प्रोग्राम का उपयोग करता है—एक टूल जो आपको आउटपुट को नेविगेट करने और ऊपर और नीचे स्क्रॉल करने देता है। अक्सर, इसके लिए इस्तेमाल किया जाने वाला प्रोग्राम less होता है। जब आप इसका इस्तेमाल करते हैं तो कुछ चीजें ध्यान देने योग्य होती हैं।

सरल स्क्रॉलिंग

सबसे पहले और सबसे महत्वपूर्ण, अपने टर्मिनल एमुलेटर द्वारा प्रदान की गई स्क्रॉलबार से स्क्रॉल न करें। less आउटपुट के अंत में पाठ की संपूर्ण स्क्रीन को पुनः आरेखित करता है।


यदि आप टर्मिनल एमुलेटर के अंदर स्क्रॉल करते हैं, तो आप देखेंगे कि पहले अन्य प्रोग्राम्स द्वारा क्या लौटाया गया था, न कि उस फ़ाइल की सामग्री जिसे आप पढ़ना चाहते हैं। स्क्रॉल बार (स्क्रॉल व्हील) के साथ स्क्रॉल करने के बजाय, फ़ाइल के चारों ओर जाने के लिए ऊपर और नीचे तीरों का उपयोग करें।


asciicast

बाहर निकलना

भ्रम का एक अन्य सामान्य बिंदु—मैं अब कैसे जाऊं? आप q दबाकर 'कम' का फ़ुल-स्क्रीन मोड छोड़ सकते हैं। इसे अक्सर :q के रूप में स्टाइल किया जाता है क्योंकि अन्य प्रोग्राम (उदाहरण के लिए vim ) कमांड शुरू करने के लिए : का उपयोग करते हैं।

खोज कर

कमांड लाइन में, सब कुछ टेक्स्ट है, और टेक्स्ट को खोजना आसान है। आप कम द्वारा दिखाई गई सामग्री के अंदर /<search term> टाइप करके खोज सकते हैं, और n और N टाइप करके परिणामों के माध्यम से नेविगेट कर सकते हैं:


asciicast

फैंसी स्क्रॉलिंग

less अन्य नेविगेशन कमांड का समर्थन करता है जो आप vim में पा सकते हैं:


  • j एक पंक्ति नीचे स्क्रॉल करें
  • k एक पंक्ति ऊपर स्क्रॉल करें
  • gg - फ़ाइल की शुरुआत में स्क्रॉल करें
  • G फ़ाइल के अंत तक स्क्रॉल करें
  • d/u —डाउन/अप हाफ स्क्रीन


वे शॉर्टकट आपको फ़ाइल के माध्यम से तेज़ी से नेविगेट करने में मदद करेंगे।

क्या आप और अधिक सीखने में रुचि रखते हैं?

एक दम बढ़िया! प्रोग्रामिंग करते समय अपनी दक्षता को बढ़ाने के लिए कमांड लाइन एक बेहतरीन टूल है। आप मुझसे अपडेट प्राप्त करने के लिए यहां साइन अप कर सकते हैं क्योंकि मैं कमांड लाइन से संबंधित अन्य सामग्री प्रकाशित करता हूं।


यहाँ भी प्रकाशित हुआ