कार्य शेल कमांड उपनाम नहीं करता है


2

मैं दौड़ सकता हूं,

 svn status |grep -v .jasper$ |cut -d ' ' -f8 |sed '/.*\..*/!d' |xargs ls -altr --color=auto

बस ठीक। लेकिन जब मैं इसे एक उपनाम (उर्फ svtr = "...") के रूप में जोड़ने जाता हूं, तो मुझे एक त्रुटि मिलती है ...

-bash: !d': event not found

कोई विचार?

जवाबों:


2

बैकलैश का उपयोग करना \ अपने से बचने के लिए ! कार्य करना चाहिए।

alias svtr="svn status |grep -v .jasper$ |cut -d ' ' -f8 |sed '/.*\..*/\!d' |xargs ls -altr --color=auto"
alias svtr
alias svtr='svn status |grep -v .jasper$ |cut -d '\'' '\'' -f8 |sed '\''/.*\..*/\!d'\'' |xargs ls -altr --color=auto'

वास्तव में, यह सिर्फ त्रुटि को समाप्त करता है, क्योंकि अंदर "" खोल व्याख्या करने की कोशिश करता है !

आप उद्धरणों को वापस करना चाह सकते हैं (यानी, अलियास को परिभाषित करने के लिए सिंगलक्वाट का उपयोग करें और अलियास किए गए कमांड के अंदर डबलक्वाओट का उपयोग करें, और जहां आवश्यक हो, सिंगलक्वाट्स से बच जाएं।


धन्यवाद! दूसरा समाधान काम करने के बाद मैंने उसके सामने से भागने वाले चरित्र को हटा दिया!
JJRhythm

2

!d अपने में sed कमांड यह पैदा कर रहा है, क्योंकि ! बैश इतिहास विस्तार चरित्र है। अस्थायी रूप से इतिहास विस्तार को इस तरह बंद करें:

set -H
alias svtr="..."
set +H

इससे हो जाना चाहिए।


मैंने यह कोशिश की और वही त्रुटि प्राप्त की।
JJRhythm

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