उपयोगकर्ता चलाने के लिए कमांड चलाने से पहले एक और कमांड चलाएं


9

मान लें कि मैं lsउपकरण के मूल व्यवहार को इस तरह से संशोधित करना चाहता हूं :

$ ls
Hello World
file1 file2 ...

मैं यह कैसे कर सकता हूँ?

दौड़ते समय lsमैं एक और कमांड चलाना चाहूंगा echo "Hello World!"

त्वरित समाधान जो मैं देख रहा हूं, वह उपनाम का उपयोग कर रहा है:

alias orig_ls="ls"
alias ls='echo "Hello World!"'

हालांकि, यह एक वास्तविक समाधान नहीं है जब से मैं orig_lsइसे चलाऊंगा आउटपुट "Hello World!"


उपयोगकर्ताओं के पथ में एक और एलएस रखो और मूल हुक करने के लिए इसका उपयोग करें।
पीटर - मोनिका

जवाबों:


12

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

आपके शेल के प्रारंभ होने पर (जैसे .bashrc) कुछ फ़ाइल जो खट्टी हो जाती हैं, निम्नलिखित फंक्शन जोड़ें:

ls () {
    echo "Hello world!"
    command ls "$@"
}

एक उपनाम के विपरीत, एक फ़ंक्शन पुनः प्राप्त कर सकता है। इसीलिए command lsइसका उपयोग किया जाता है ls; यह आपके शेल को lsआपके द्वारा निर्धारित फ़ंक्शन के बजाय वास्तविक का उपयोग करने के लिए कहता है।


2
वास्तव में। यह घोल बेहतर तरीके से निकलता है। +1
पायथनटन

commandओएस एक्स के लिए विकल्प क्या है ?
Ionică Bizău

@ IonicăBizău मुझे नहीं पता commandकि कोई काम नहीं किया है: / मेरे पास कोई विचार नहीं है और मेरे पास एक मैक नहीं है जिसके साथ यह परीक्षण करने के लिए, क्षमा करें।
भूमिगत

9

आपको कॉल करना नहीं भूलना चाहिए ls:

alias ls='echo "Hello World!"; ls'

हा! मुझे लगा कि यह एक अनंत चक्र बना देगा! लेकिन यह एक अनंत लूप क्यों नहीं बनाता है?
आयनॉ बिज़ुआ

1
आप इसके बजाय अन्य उपनाम "गूंज दुनिया!" की कोशिश कर सकते हैं। / usr / bin / ls '
jamesqf

5
@ IonicăBizău किसी भी "उपनाम विस्तार नियम" का केवल एक बार उपयोग किया जाता है।
डेविड जेड

एक के साथ दो में शामिल होने और भी काम करेंगे? यह भी सुनिश्चित करेगा कि उपयोगकर्ता की कमांड केवल तभी चलती है जब कस्टम एक काम करता है, है ना?
निधि मोनिका का मुकदमा

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