क्या मैं अपनी आज्ञा बना सकता हूं?


12

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

क्या मैं अपनी आज्ञा बना सकता हूं? यदि हाँ, तो कैसे?


आप स्क्रिप्ट बना सकते हैं, यदि आप चाहते हैं कि क्या है
अलवर

जवाबों:


19

हां - संगीत नामक एक फ़ाइल बनाएं और उसके अंदर निम्नलिखित डालें:

#!/bin/bash
echo "Hello world"

अगला, टाइप करें chmod +x music- यह फ़ाइल को निष्पादन योग्य बनाता है। अब आप ./musicइस स्क्रिप्ट को चलाने के लिए टाइप कर सकते हैं ।

echo $PATHउन निर्देशिकाओं में से एक में स्क्रिप्ट लिखना और कॉपी करना एक अच्छा विचार है । मैं सुझाव देता हूं $HOME/binकि आप इसे अपने पेटीएम के माध्यम से बना रहे हैं ~/.bash_profileया जोड़ रहे हैं ~/.profile। यह (उन फ़ाइलों में से एक में) जोड़कर किया जा सकता है export PATH="$HOME/bin:$PATH":। फिर आपको इसे फिर source .bash_profileसे लोड करने के लिए चलाने की ज़रूरत होगी (यह मानकर कि आप इसे उस फ़ाइल में डालते हैं)।

एक और विकल्प यह होगा कि आप उस कमांड को जोड़ें जिसे आप बैश उपनाम के रूप में चलाना चाहते हैं। आप इसे .bash_aliasesअपने होम डायरेक्टरी में नामित फ़ाइल में जोड़कर कर सकते हैं :

alias music='vlc --some-option --foo'

भागो source ~/.bash_aliasesया लॉगआउट और लॉगिन और यह काम करना चाहिए :-)


3

ऐसा करने का सबसे अच्छा तरीका है कि .bash_aliasesआप अपने होम फोल्डर में एक फाइल को संशोधित (या बना) करें।

सिंटेक्स काफी सरल है:

alias install='sudo apt-get -y install'

इस आदेश के साथ, यदि आप installएक टर्मिनल में टाइप करते हैं, तो इसके बजाय इसकी व्याख्या की जाएगी

sudo apt-get -y install

हालांकि, ये कमांड एक टर्मिनल के बाहर कहीं भी काम नहीं करेंगे।


1

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

उपनाम भी काम करेंगे, लेकिन सीमित हैं क्योंकि वे "वन-लाइनर्स" हैं ताकि उनके साथ कुछ भी करने से जल्दी से कोड उत्पन्न होता है जिसे पढ़ना बहुत मुश्किल है। इसके अलावा, चूंकि वे उसी चर दायरे में निष्पादित होते हैं, जिस शेल में आप उन्हें टाइप करते हैं, वे आसानी से अनपेक्षित साइड इफेक्ट्स हो सकते हैं जैसे कि आपको किसी अन्य निर्देशिका में छोड़ना या चर को परिभाषित करना जो केवल उस कार्य के लिए आवश्यक होते हैं जो अन्य नाम से होता है। (बेशक, कभी-कभी आप उर्फ ​​का ठीक-ठीक उपयोग करना चाह सकते हैं, क्योंकि इसके वांछित दुष्प्रभाव होते हैं।)

यदि आप अपने पथ में एक निर्देशिका में अपने नए आदेश डालते हैं, तो वे शेल द्वारा पाए जा सकते हैं और निष्पादित किए जा सकते हैं। उन्हें लगाने के लिए सबसे आम जगह $ घर / बिन में है। यदि यह निर्देशिका मौजूद है, तो यह अक्सर आपके पथ पर स्वचालित रूप से जोड़ दी जाएगी।

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

2) आप अपने पथ की शुरुआत या अंत में $ HOME / bin जोड़ सकते हैं (या बीच में कहीं भी, लेकिन आमतौर पर ऐसा नहीं किया जाता है)।

इसे अपने पथ के सामने जोड़ना सबसे सुविधाजनक विकल्प है क्योंकि आपके कमांड का संस्करण हमेशा वही होगा जो निष्पादित होता है और यह तेजी से मिल जाएगा। यह एक सुरक्षा भेद्यता भी है क्योंकि जो कोई भी आपके $ HOME / bin (रूट एक्सेस प्राप्त करने की तुलना में बहुत आसान है) को अनुमति दे सकता है वह सामान्य आदेशों को संभावित दुर्भावनापूर्ण कोड से बहुत आसानी से बदल सकता है। इसके अलावा, यदि आपको कभी किसी ऐसे व्यक्ति से मदद मांगने की ज़रूरत है जो आपके सिस्टम को नहीं जानता है, तो वे आपके कस्टम कमांड के विशेष व्यवहार से तब तक फंसने की संभावना है जब तक कि आप बस के शीर्ष पर सब कुछ समझाने में बहुत अधिक अतिरिक्त प्रयास खर्च न करें। अपने सवाल पूछ रहा हूँ।

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

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

लिनक्स में अधिकांश चीजों की तरह, नए कमांड बनाने और उपयोग करने के कई तरीके हैं और उनमें से प्रत्येक के अपने फायदे और सीमाएं हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.