\curl -L https://get.rvm.io | bash -s stable
आज्ञा क्यों शुरू हो रही है \
?
यह वह स्थल है जहाँ मैंने इसे देखा था।
\curl -L https://get.rvm.io | bash -s stable
आज्ञा क्यों शुरू हो रही है \
?
यह वह स्थल है जहाँ मैंने इसे देखा था।
जवाबों:
alias curl='curl --some --default --options'
यदि आपके पास एक उपनाम है curl
और आप इसका उपयोग नहीं करना चाहते हैं, तो सामने एक बैकस्लैश डालना उपनाम को निष्क्रिय कर देता है और कर्ल बाइनरी को सीधे चलाता है।
ध्यान दें कि यह केवल एक इंटरैक्टिव शेल पर लागू होता है। उपनाम स्क्रिप्ट में प्रभावी नहीं होते हैं इसलिए यह वहां अनावश्यक होगा।
\curl
किसी भी शेल फ़ंक्शन को बायपास नहीं करता है curl
। उसके लिए, आप bash बिल्ट-इन कमांड का उपयोग कर सकते हैं command
:command curl ...
\curl ...
का एक आसान तरीका हैcommand curl ...
dash
(और संभवतः अन्य गोले, हालांकि आप bash
बिना सही हैं expand_aliases
) स्क्रिप्ट में उपनामों का विस्तार करता है ।
बोर्न / पोसिक्स) शेल स्पेसिफिकेशन का कहना है कि एक इंटरैक्टिव शैल में अन्य उपनाम प्रतिस्थापन को दबा दिया जाता है जब कमांड शब्द का कोई भी वर्ण उद्धृत किया जाता है। एक बैकस्लैश ऐसा करने का एक तरीका है, लेकिन उद्धरण के लिए अन्य प्रसिद्ध तरीके भी हैं: एकल और दोहरे उद्धरण। निम्नलिखित में से सभी अन्य उपनाम प्रतिस्थापन को दबाएंगे:
\curl
cur\l
\c\u\r\l
"c"url
"curl"
"c""u""r""l"
'curl'
'cu'"rl"
का उपयोग करना \curl
सबसे आम और पठनीय तरीका है। चूंकि यह एक मानकीकृत विशेषता है, आप इसे सभी बॉर्न-हेरिटेज गोले में काम करने की उम्मीद कर सकते हैं।
\curl
एक TeX कमांड की तरह एक सा दिखता है, है ना? :-)
\curl
बताने के लिए कि एक ही नाम के एक उपनाम को क्यों दरकिनार किया जाता है; ध्यान दें कि केवल उपनामों को इस तरह से बाईपास किया जाता है, शेल फ़ंक्शन नहीं ; या तोcommand curl ...
बाईपास सुनिश्चित करेगा ।
command() { echo "Not command, lol!"; } ; command -V echo ; \command -V echo ; \command command echo "This is command! (masking despair)"
प्रिंट्स Not command, lol!
एक्स 3.
command
स्वयं को शेल फ़ंक्शन से बदलते हैं, तो आप तंत्र को हरा रहे हैं। जैसा कि आपके उदाहरण से पता चलता है कि \
यह कार्य नहीं करता है , जैसा कि कहा गया है। एक गैर-आत्म-पराजित उदाहरण date() { echo 'not date'; }; date; command date
:। आप दुर्भावनापूर्ण बारे में चिंतित हैं छेड़छाड़ के साथ command
, देखने के stackoverflow.com/a/35931876/45375
command
ओवरराइड नहीं होना चाहिए। अपने स्वयं के लिंक से:Thus, with no control over the execution environment, you cannot write shell scripts that are fully immune to tampering, unless you know that your code will be executed by dash, ksh, or bash (with the workaround in place)
shopt -s expand_aliases
से पहले उपनामों में उपनाम का उपयोग किया जा सकता है