में उर्फ करने के लिए तर्क पासिंग निम्न करने के लिए क्या यह संभव हैबैश
mongodb bin/mongod
मेरी bash_profile में मैं
alias = "./path/to/mongodb/$1"
में उर्फ करने के लिए तर्क पासिंग निम्न करने के लिए क्या यह संभव हैबैश
mongodb bin/mongod
मेरी bash_profile में मैं
alias = "./path/to/mongodb/$1"
एक उपनाम उस स्ट्रिंग में विस्तारित होगा जो इसका प्रतिनिधित्व करता है। ऊर्फ के बाद कुछ भी स्पष्ट विस्तार के रूप में पारित होने या सक्षम होने की आवश्यकता के बिना दिखाई देगा (उदा। $1
)।
$ alias foo='/path/to/bar'
$ foo some args
$ /path/to/bar some args
करने के लिए विस्तारित किया जाएगा आप स्पष्ट तर्क का उपयोग करने के, आप के रूप में यदि आप
किया था एक समारोह का उपयोग करने के$ foo() { /path/to/bar "[email protected]" fixed args; }
$ foo abc 123
निष्पादित किया जाएगा की आवश्यकता होगी चाहते हैं
$ /path/to/bar abc 123 fixed args
एक को परिभाषित करने के लिए उर्फ:
unset -f foo
(प्रत्येक परिभाषित उर्फ, कीवर्ड, समारोह, builtin या निष्पादन योग्य फ़ाइल के लिए) प्रकार और परिभाषा देखने के लिए::
type -a foo
unalias foo
एक समारोह परिभाषित करने के लिए या केवल टाइप करें (उच्चतम प्राथमिकता घटना के लिए):
type -t foo
आमतौर पर जब मैं बैश में उपनामों को तर्क देना चाहते हैं, मैं उपनाम के संयोजन का उपयोग करता हूं और इस तरह का एक फ़ंक्शन उदाहरण के लिए:
function __t2d {
if [ "$1x" != 'x' ]; then
date -d "@$1"
fi
}
alias t2d='__t2d'
हमेशा के लिए झूठा 'if' कथन क्या है? –
तय। यह एक टाइपो था, क्षमा करें। यह वास्तव में $ 1 – leed25d
'[-n" $ 1 "]' ("x" का उपयोग किसी भी आधुनिक खोल के लिए पुरातन और अनावश्यक है) के अस्तित्व की जांच करना था) –
leed25d के उत्तर को सरल बनाने के लिए, उपनाम और फ़ंक्शन के संयोजन का उपयोग करें। उदाहरण के लिए:
function __GetIt {
cp ./path/to/stuff/$* .
}
alias GetIt='__GetIt'
उपनाम में पैरामीटर का उपयोग करने, मैं इस विधि का उपयोग:
alias myalias='function __myalias() { echo "Hello $*"; unset -f __myalias; }; __myalias'
अपने एक आत्म विनाशकारी समारोह एक उपनाम में लिपटे, तो यह काफी दोनों दुनिया का सबसे अच्छा है, और आपकी परिभाषाओं में एक अतिरिक्त रेखा नहीं लेता है ... जो मुझे नफरत है, ओह हाँ और यदि आपको उस वापसी मूल्य की आवश्यकता है, तो आपको इसे अनसेट करने से पहले इसे स्टोर करना होगा, और फिर "वापसी" "उस स्वयं विनाशकारी कार्य में कीवर्ड:
alias myalias='function __myalias() { echo "Hello $*"; myresult=$?; unset -f __myalias; return $myresult; }; __myalias'
तो ..
आप कर सकते थे, तुम वहाँ
alias mongodb='function __mongodb() { ./path/to/mongodb/$1; unset -f __mongodb; }; __mongodb'
निश्चित रूप से
में कि चर की आवश्यकता है, तो ...
alias mongodb='./path/to/mongodb/'
वास्तव में मानकों की आवश्यकता के बिना एक ही बात करते हैं, लेकिन जैसा मैंने कहा, यदि आप चाहते थे या किसी कारण से उन्हें जरूरत है, आप का उपयोग करने की आवश्यकता होगी (उदाहरण के लिए, आप $ 2 के बजाय $ 1 की जरूरत) उस तरह एक रैपर। यदि यह एक पंक्ति से बड़ा है तो आप केवल एक समारोह को लिखने पर विचार कर सकते हैं क्योंकि यह एक बड़ी नजर में बन जाएगा क्योंकि यह बड़ा हो गया है। कार्य बहुत अच्छे होते हैं क्योंकि आप कार्य करने वाले सभी लाभ प्राप्त करते हैं (बैश मैनपेज में उपलब्ध कराई गई उपहारों के लिए पूर्णता, जाल, बाध्य आदि देखें)।
मुझे आशा है कि आप वास्तव में आप क्या चाहते हैं कर सकते हैं (जैसा कि बैश के खिलाफ) तुम बाहर में मदद करता है :)
~ $ उर्फ myalias = 'function __myalias() {echo "हैलो $ *"; unset -f __myalias; } __myalias ' ~ $ myalias -bash: अप्रत्याशित टोकन' __myalias ' – JeeBee
के पास वाक्यविन्यास त्रुटि यह भयानक है! आप हर बार समारोह को फिर से परिभाषित कर रहे हैं? (मैं यह जांचने के लिए भी परेशान नहीं हो सकता कि क्या आपके पास वाक्यविन्यास त्रुटियां हैं)। –
ऐसा नहीं है कि उन्हें ऐसा करना है, वैसे ही, यह एक उदाहरण माना जाता था, और हाँ इसे हर बार फिर से परिभाषित किया जाता है, जो इसे एक पंक्ति में रखता है, अन्यथा, यह एक शॉट नहीं होगा ? यह शिकायत करने जैसा है कि "उपनाम" हर बार इसे निर्दिष्ट सामग्री में फैलाता है, यह कैसे अलग है? और इतनी भावनात्मक होने की कोई आवश्यकता नहीं है। – osirisgothra
csh में।
alias print 'lpr \!^ -Pps5'
print memo.txt
अंकन \!^
का कारण बनता है तर्क इस बिंदु पर आदेश में प्रवेश करे।
!
चरित्र \
द्वारा इतिहास इतिहास के रूप में व्याख्या करने से रोकने के लिए पहले से आगे बढ़ता है।
तुम भी पारित कर सकते हैं कई तर्क:
alias print 'lpr \!* -Pps5'
print part1.ps glossary.ps figure.ps
(उदाहरण http://unixhelp.ed.ac.uk/shell/alias_csh2.1.html से लिया।)
धन्यवाद! मैं काम पर 'सीएसएच 'का उपयोग करता हूं और यह पहली बार मैंने इसकी सराहना की है! –
यह समाधान जो फ़ंक्शन का उपयोग करने से बचने कर सकते हैं:
alias addone='{ num=$(cat -); echo "input: $num"; echo "result:$(($num+1))"; }<<<'
परीक्षा परिणाम
addone 200
input: 200
result:201
यह मेरे लिए पूरी तरह से काम किया। मैं अपने उपनाम में रंग संख्या (31 से 37 तक) पीएस कमांड पास करना चाहता था। मैंने ऐसा कुछ किया: उर्फ psany = '{PS1 = "\ e [0; $ (बिल्ली -) m> \ e [m";} <<<' उपयोग: psany 32 – zviad
बस मेरे .bashrc mkcd() {mkdir "$ @" && cd "$ @" से उदाहरण जोड़ना चाहते हैं; } जहां मैं –
में डीआईआर और सीडीइंग कर रहा हूं, आपको फ़ंक्शन में पास किए गए तर्कों की $ @ = = सूची के बाद से "एबीसी" लाल रंग देना चाहिए। – 10basetom
@ 10basetom: यदि आप मेरे उत्तर में रंगों का जिक्र कर रहे हैं, तो यह सिंटैक्स हाइलाइटर द्वारा स्वचालित रूप से किया जाता है। –