कमांड लाइन इंटरफेस (सीएलआई) के अभ्यस्त होने के कई अच्छे तर्क हैं। हालाँकि, एक पूर्ण शुरुआत के रूप में, इसे शुरू करना मुश्किल हो सकता है, और एक नया शेल सत्र थोड़ा डराने वाला लग सकता है:
आइए सीएलआई मूल बातें देखें!
पहली चीज जो आपको चाहिए वह एक टर्मिनल इम्यूलेटर है: एक प्रोग्राम जो आपके मशीन पर टेक्स्ट-ओनली एक्सेस का अनुकरण करता है। किसी भी ऑपरेटिंग सिस्टम (OS) में इम्यूलेटर्स का एक बड़ा विकल्प होगा: वे सभी बहुत समान हैं, और मुख्य अंतर होंगे:
बिल्कुल शुरुआत में, आपको अपने ओएस या एकीकृत विकास पर्यावरण (आईडीई) में जो उपलब्ध है, उसके साथ ठीक होना चाहिए।
शेल एक प्रोग्राम है जो आपके आदेशों की व्याख्या करता है और आपके लिए प्रोग्राम चलाता है। हमने ऊपर बात की टर्मिनल सिम्युलेटर की तुलना में यह एक अलग बात है। एक तरह से, आपके ग्राफ़िक इंटरफ़ेस में, आप टर्मिनल खोलते हैं, और टर्मिनल के अंदर, आपके पास कमांड का टेक्स्ट-ओनली इंटरप्रेटर होता है।
सूक्ष्म अंतर के साथ कई विकल्प उपलब्ध हैं जो उपयोगकर्ता के अनुभव को बहुत बदल सकते हैं।
Z शेल, या Zsh, एक आधुनिक और लोकप्रिय कमांड दुभाषिया है। इसका इंटरफ़ेस उपयोगकर्ता के अनुकूल है, और ऐसे सामुदायिक पैकेज उपलब्ध हैं जो आपको अपने शेल अनुभव को अनुकूलित करने की अनुमति देते हैं: ओह माय ज़श । मैंने इसे कुछ सालों से इस्तेमाल किया है, और मेरी सीएलआई की अधिकांश आदतें इससे अनुकूलित हैं।
बैश Zsh का थोड़ा पुराना विकल्प है। यह बहुत सामान्य है, इसलिए आप उम्मीद कर सकते हैं कि यह कई मशीनों पर उपलब्ध होगा जिनका आप वहां सामना करेंगे। Zsh के कई शॉर्टकट वहां भी काम करते हैं, लेकिन यह अलग-अलग कॉन्फ़िगरेशन फ़ाइलों का उपयोग कर रहा है, और स्क्रिप्टिंग भाषा थोड़ी अलग है।
मानक खोल। यह मानक यूनिक्स कमांड का हिस्सा है, और यह किसी भी यूनिक्स जैसी मशीन पर होने की गारंटी है। इसलिए, जब स्क्रिप्ट लिखने की बात आती है तो यह एक सुरक्षित शर्त है।
उपयोगकर्ता इंटरफ़ेस में कई आधुनिक सुधारों का अभाव है, इसलिए मैं इसे वायरिंग स्क्रिप्ट के अलावा किसी भी चीज़ के लिए उपयोग नहीं करूँगा।
आप अपने खोल की जांच कर सकते हैं echo $?
:
मेरे मामले में, यह zsh
है
हर शेल एक प्रोग्राम है और इसे दूसरे शेल से सीधे चलाया जा सकता है। उदाहरण के लिए:
इस तरह, आप जाँच सकते हैं कि आपने कौन से गोले स्थापित किए हैं और उनका शीघ्रता से परीक्षण कर सकते हैं। शेल को स्थायी रूप से बदलने के लिए, आप लिनक्स और macOS दोनों में कमांड chsh
(चेंज शेल) का उपयोग कर सकते हैं:
यदि आपके पास वह शेल नहीं है जिसका आप उपयोग करना चाहते हैं, तो आपको पहले इसे स्थापित करने की आवश्यकता है—सटीक आदेश आपके OS या Linux वितरण पर निर्भर करता है।
तो, एक बार जब आपका टर्मिनल चालू हो जाता है, तो आप इसका उपयोग कैसे करते हैं?
सीएलआई आपको टर्मिनल में उनका नाम टाइप करके और एंटर दबाकर कमांड चलाने की अनुमति देता है। प्रत्येक कमांड एक अलग प्रोग्राम है जो एक व्यापक इंटरफ़ेस प्रदान करता है, और प्रत्येक अपने स्वयं के प्रलेखन के साथ आता है।
इसी तरह, प्रत्येक ओएस कमांड का अपना सेट लाता है, लेकिन वे समानताएं साझा करते हैं-विशेष रूप से यूनिक्स, मैकोज़ और लिनक्स से प्रेरित सिस्टम के साथ।
विंडोज पर, मानक कमांड लाइन cmd
में कमांड का एक बहुत अलग सेट होता है, लेकिन वहां भी समान इंटरफ़ेस प्राप्त करने के लिए कई विकल्प उपलब्ध हैं:
यूनिक्स एक ओएस था जो 1973 में सार्वजनिक रूप से उपलब्ध हो गया, और इसने बाद में आने वाली बहुत सी चीजों को प्रभावित किया। इसका वर्तमान विनिर्देश 161 आदेशों को परिभाषित करता है, लेकिन सौभाग्य से आपको CLI से लाभ उठाने के लिए उनमें से कुछ ही की आवश्यकता है।
आदेशों का उदाहरण:
ls
फ़ोल्डर में फ़ाइलों को सूचीबद्ध करता है—डिफ़ॉल्ट रूप से, यह वर्तमान फ़ोल्डर की सामग्री दिखाता है:
pwd
वर्तमान पथ दिखाता है जिसमें आप अपने आदेश चला रहे हैं:
cd
डायरेक्टरी को बदल देता है—डिफ़ॉल्ट रूप से यह होम डाइरेक्टरी में चला जाता है ( https://asciinema.org/ रिकॉर्डिंग या स्क्रीनशॉट)
प्रत्येक आदेश अतिरिक्त तर्क ले सकता है। तर्क स्थान से अलग मान हैं जो कमांड नाम के बाद आते हैं। तर्कों का अर्थ कार्यक्रम पर निर्भर करता है। आप कमांड दस्तावेज़ीकरण में विभिन्न तर्कों के बारे में पढ़ सकते हैं:
कई मानक आदेश विभिन्न विकल्पों के साथ आते हैं जो आपको प्रोग्राम के व्यवहार को संशोधित करने की अनुमति देते हैं। उदाहरण के लिए, ls
का उपयोग अक्सर निम्नलिखित विकल्पों के साथ किया जाता है:
-a
- सभी फाइलों को दिखाने के लिए, जिनमें से शुरू होता है .
- छिपी हुई फाइलों के लिए एक यूनिक्स सम्मेलन
-l
लंबे प्रारूप में फ़ाइलें दिखाएं—अधिक जानकारी प्रदान करना
एक आम सम्मेलन विकल्प को अलग पैरामीटर, ls -a -l
के रूप में अनुमति देना है, या एक पैरामीटर, ls -la
में संयुक्त है।
एक पैरामीटर एक तर्क है जो कमांड या उसके विकल्पों में से एक को मान प्रदान करता है।
तो उदाहरण के लिए, ऊपर से उदाहरण के साथ, आप डिफ़ॉल्ट व्यवहार को बदलने के लिए पथ प्रदान कर सकते हैं:
ls workspace
- कार्यस्थान फ़ोल्डर में फ़ाइलें सूचीबद्ध करता है:
cd workspace
- वर्तमान निर्देशिका को कार्यक्षेत्र में बदलता है:
cat file
—स्क्रीन पर फ़ाइल की सामग्री दिखाती है:
मापदंडों का अर्थ कार्यक्रम पर निर्भर करता है - सबसे पहले, आपको बहुत सारे दस्तावेज़ों की जांच करने की आवश्यकता हो सकती है।
मानक आउटपुट वह पाठ है जो प्रोग्राम चलाने पर कमांड लाइन में जोड़ा जाता है। इसका पाठ निष्पादन के सुखद पथ द्वारा दिखाया गया है। अब तक हमने जो उदाहरण देखे हैं उनमें विभिन्न कमांडों का मानक आउटपुट दिखाया गया है।
सी ++ सीखते समय, आप सीखने वाली पहली चीज़ों में से एक है cout
- मानक आउटपुट।
डिफ़ॉल्ट रूप से, मानक आउटपुट केवल स्क्रीन पर दिखाया जाता है, लेकिन आप इसे >
ऑपरेटर वाली फ़ाइल में आसानी से पुनर्निर्देशित कर सकते हैं। उदाहरण:
त्रुटि आउटपुट वह है जहां प्रोग्राम निष्पादन के दौरान आने वाली समस्याओं के बारे में जानकारी प्रदर्शित करते हैं। टर्मिनल से सीधे कमांड चलाते समय, त्रुटि आउटपुट और मानक आउटपुट को समान माना जाता है—वे केवल स्क्रीन पर प्रदर्शित होते हैं। उदाहरण के लिए, जब मैं एक गैर-मौजूदा फ़ाइल को ls
करने का प्रयास करता हूं:
जब आप आउटपुट को फ़ाइल में रीडायरेक्ट करते हैं तो अंतर स्पष्ट हो जाता है:
एक सामान्य कार्यप्रवाह में, मानक इनपुट वह है जो आप अपने प्रोग्राम में टाइप करते हैं। अब तक हमने जो आदेश देखे हैं, वे आम तौर पर इंटरैक्टिव मोड में उपयोग नहीं किए जाते हैं। एक साधारण उदाहरण एक man
पेज हो सकता है जो स्क्रॉल करने की अनुमति देता है:
सी ++ अनुभव वाले लोगों के लिए, आपने इस शब्द को cin
के लिए सुना है:
cin >> variable;
कई सामान्य आदेशों के लिए, पाइप ऑपरेटर के कारण मानक इनपुट विशेष रूप से महत्वपूर्ण हो जाता है।
पाइप एक प्रोग्राम के मानक आउटपुट को दूसरे प्रोग्राम के मानक इनपुट से जोड़ने के तरीके हैं। इस तरह सीएलआई इंटरऑपरेबिलिटी प्राप्त करता है जिसका मैंने अपने पिछले लेख में उल्लेख किया था।
पाइप का उपयोग करने से आप विभिन्न आदेशों को बहुत सारे रचनात्मक तरीकों से जोड़ सकते हैं—मैं इस श्रृंखला में बाद में कुछ उदाहरण दिखाऊंगा। अभी के लिए, एक साधारण उदाहरण है:
कहाँ:
cat …
- फ़ाइलें पढ़ता है और मानक आउटपुट में उनकी सामग्री लौटाता है,
less
मान प्राप्त करता है, और उसे स्क्रीन पर फ़िट बनाता है
इसी प्रकार, खोज उपयोगिता का उपयोग करके grep
:
कहाँ:
cat …
- ऊपर के रूप में
grep 1
—मानक इनपुट से मान प्राप्त करता है, और इसे केवल उन पंक्तियों के लिए फ़िल्टर करता है जिनमें 1
है। हम पहले ही उल्लेख कर चुके हैं कि फ़ाइल में कमांड के मानक आउटपुट को लिखने के लिए उपयोग किए जाने वाले >
ऑपरेटर का उपयोग किया जाता है। यह ऑपरेटर हमारे द्वारा प्रदान किए गए आउटपुट के साथ फाइल को ओवरराइड करता है। यदि आप इसे किसी मौजूदा फ़ाइल में जोड़ना चाहते हैं, तो आप इसके बजाय >>
का उपयोग कर सकते हैं।
कमांड लाइन में जो कुछ भी होता है वह एक विशिष्ट डिस्क स्थान-एक कार्यशील निर्देशिका के संदर्भ में किया जाता है। जब आप सापेक्ष फ़ाइल पथ निर्दिष्ट करते हैं - पढ़ने या लिखने के लिए - वे कार्यशील निर्देशिका से हल हो जाते हैं।
आमतौर पर, आप अपनी कार्यशील निर्देशिका को उस प्रोजेक्ट के शीर्ष फ़ोल्डर में सेट करते हैं, जिस पर आप काम कर रहे हैं। जब आप एक नया सत्र शुरू करते हैं, तो आमतौर पर कार्यशील निर्देशिका आपकी होम निर्देशिका पर सेट होती है।
शेल दुभाषिए आपके काम को गति देने के लिए आपको कई शॉर्टकट प्रदान करते हैं। समय के साथ, आप उनके बारे में सोचे बिना सहज रूप से उनका उपयोग करना शुरू कर देंगे।
अक्सर, जब मैं नौसिखियों के साथ स्क्रीन-शेयर करता हूं, तो मुझे याद आता है कि वे शॉर्टकट और कुछ नहीं बल्कि स्पष्ट हैं—नीचे, मैं आपको कमांड लाइन के साथ काम करने के लिए कुछ उत्पादकता तरकीबें दिखाऊंगा।
मैं खुद Zsh का उपयोग कर रहा हूं, और ये शॉर्टकट वहां काम करते हैं। कम से कम उनमें से कुछ को बैश में भी काम करना चाहिए, लेकिन यह सटीक संस्करण और कॉन्फ़िगरेशन पर निर्भर हो सकता है।
सीएलआई के साथ तेज होने की मुख्य चाल हर समय सब कुछ टाइप नहीं करना है। सबसे बुनियादी मामला यह है कि आप पहले कुछ पंक्तियों को चला चुके आदेश को वापस प्राप्त करें। आप ऊपर तीर कुंजी दबाकर ऐसा कर सकते हैं।
तीर ऊपर और नीचे तीर के साथ, आप हाल ही के आदेशों के माध्यम से स्क्रॉल कर सकते हैं, और एक बार जब आप एक समान चलाना चाहते हैं, तो आप इसे संपादित कर सकते हैं। यह पूरी प्रक्रिया को बहुत तेज करता है क्योंकि आप तर्कों में कुछ छोटे अंतरों के साथ अक्सर समान आदेश चलाते हैं।
मैनुअल स्क्रॉलिंग सबसे हाल के आदेशों में से एक या मुट्ठी भर प्राप्त करने के लिए ठीक है। यदि आप अतीत से कुछ और प्राप्त करना चाहते हैं, हालाँकि, आप खोज कार्यक्षमता का उपयोग कर सकते हैं। डिफ़ॉल्ट रूप से, कमांड इतिहास में खोज शुरू करने के लिए आप जिस कमांड का उपयोग कर सकते हैं वह CTRL + R है:
आपको उन सभी आदेशों को टाइप करने की ज़रूरत नहीं है जिन्हें आप चलाना चाहते हैं। Zsh और Bash दोनों ऑटोफिल के लिए पूछने के एक तरीके के रूप में टैब कुंजी का समर्थन करते हैं - यदि वे अद्वितीय हैं तो वे कमांड या फ़ाइल नाम भरेंगे या यदि आप जो टाइप करते हैं वह कई संभावनाओं से मेल खाता है तो आपको सभी उपलब्ध विकल्प दिखाएंगे।
Zsh कमांड विकल्पों के लिए भी ऑटोफिल प्रदान करता है।
स्वत: भरण दो स्तरों पर एक शानदार सुविधा है: यह आपको टाइपिंग पर समय बचाने में मदद करती है, और यह गलतियों को कम करती है। जैसा कि आप सीएलआई सीखते हैं, आपको यह सुनिश्चित करना चाहिए कि जितना संभव हो सके स्वतः पूर्ण का उपयोग करने की आदत डालें।
आप कई फाइलों के नामों का मिलान करने के लिए वाइल्डकार्ड का उपयोग करके टाइपिंग को और भी तेज कर सकते हैं:
अक्सर, जब किसी प्रोग्राम में इतना अधिक आउटपुट होता है कि वह स्क्रीन में फिट नहीं होता है, तो वह पेजर के रूप में दूसरे प्रोग्राम का उपयोग करता है—एक टूल जो आपको आउटपुट को नेविगेट करने और ऊपर और नीचे स्क्रॉल करने देता है। अक्सर, इसके लिए इस्तेमाल किया जाने वाला प्रोग्राम less
होता है। जब आप इसका इस्तेमाल करते हैं तो कुछ चीजें ध्यान देने योग्य होती हैं।
सबसे पहले और सबसे महत्वपूर्ण, अपने टर्मिनल एमुलेटर द्वारा प्रदान की गई स्क्रॉलबार से स्क्रॉल न करें। less
आउटपुट के अंत में पाठ की संपूर्ण स्क्रीन को पुनः आरेखित करता है।
यदि आप टर्मिनल एमुलेटर के अंदर स्क्रॉल करते हैं, तो आप देखेंगे कि पहले अन्य प्रोग्राम्स द्वारा क्या लौटाया गया था, न कि उस फ़ाइल की सामग्री जिसे आप पढ़ना चाहते हैं। स्क्रॉल बार (स्क्रॉल व्हील) के साथ स्क्रॉल करने के बजाय, फ़ाइल के चारों ओर जाने के लिए ऊपर और नीचे तीरों का उपयोग करें।
भ्रम का एक अन्य सामान्य बिंदु—मैं अब कैसे जाऊं? आप q
दबाकर 'कम' का फ़ुल-स्क्रीन मोड छोड़ सकते हैं। इसे अक्सर :q
के रूप में स्टाइल किया जाता है क्योंकि अन्य प्रोग्राम (उदाहरण के लिए vim
) कमांड शुरू करने के लिए :
का उपयोग करते हैं।
कमांड लाइन में, सब कुछ टेक्स्ट है, और टेक्स्ट को खोजना आसान है। आप कम द्वारा दिखाई गई सामग्री के अंदर /<search term>
टाइप करके खोज सकते हैं, और n
और N
टाइप करके परिणामों के माध्यम से नेविगेट कर सकते हैं:
less
अन्य नेविगेशन कमांड का समर्थन करता है जो आप vim
में पा सकते हैं:
j
एक पंक्ति नीचे स्क्रॉल करेंk
एक पंक्ति ऊपर स्क्रॉल करेंgg
- फ़ाइल की शुरुआत में स्क्रॉल करेंG
फ़ाइल के अंत तक स्क्रॉल करेंd/u
—डाउन/अप हाफ स्क्रीन
वे शॉर्टकट आपको फ़ाइल के माध्यम से तेज़ी से नेविगेट करने में मदद करेंगे।
एक दम बढ़िया! प्रोग्रामिंग करते समय अपनी दक्षता को बढ़ाने के लिए कमांड लाइन एक बेहतरीन टूल है। आप मुझसे अपडेट प्राप्त करने के लिए यहां साइन अप कर सकते हैं क्योंकि मैं कमांड लाइन से संबंधित अन्य सामग्री प्रकाशित करता हूं।
यहाँ भी प्रकाशित हुआ