2010-04-12 9 views
13

मैंमैं grep -R के लिए उपनाम कैसे लिखूं?

grep -Rni pattern . 

और बहुत भयंकर टाइपिंग खत्म। मैं की तरह

alias gr='grep -Rni [email protected] .' 

रनिंग कि देता है एक उपनाम में इस बनाने के लिए कैसे करते हैं:

$ gr pattern 
grep: pattern: No such file or directory 

हालांकि उर्फ ​​ठीक लग रहा है:

$ type gr 
gr is aliased to `grep -R [email protected] .' 

ऐसा लगता है $ @ और कहा कि। वास्तव में निष्पादित होने पर स्वैप हो जाएं।

+2

यह '$ @' और '।' नहीं है। स्वैप किए जा रहे हैं - इसका '$ @' प्रतिस्थापित नहीं हो रहा है (इसे खाली कर रहा है ') और' पैटर्न 'लाइन के अंत में जोड़ा जा रहा है। आपका आदेश 'grep -Rni बन रहा है। पैटर्न '। –

उत्तर

6

उपनाम के बजाय एक फ़ंक्शन बनाएं। एक फ़ाइल जैसे mylibrary.sh में इसे सहेजें और जब भी आप समारोह का उपयोग करना चाहते हैं, तो फ़ाइल स्रोत

जैसे mylibrary.sh

myfunction(){ 
grep -Rni ... 
} 

#!/bin/bash 
source mylibrary.sh 
myfunction 
+0

मीठा! कोई विचार है कि इसे उपनाम के बजाय फ़ंक्शन क्यों होना चाहिए? एक समारोह के अंदर – numerodix

+1

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

22

इस प्रयास करें:

$ alias gr='grep -Rnif /dev/stdin . <<<' 
$ gr pattern 
./path/file:42: here is the pattern you were looking for 

यह भी काम करता है:

$ alias gr='grep -Rnif - . <<<' 
+1

+1। –

+0

वाह! वह शांत है। – sixtyfootersdude

+0

कुछ या सभी '-। <<< '' -f' ध्वज के साथ मेल खाता है? –

संबंधित मुद्दे