सवाल कैसे एक ऋण को unalias करने के लिए?


मेरी सुबह कॉफी मेरे मस्तिष्क तक नहीं पहुंची थी जब तक मैं उद्धरण भूल गया था:

alias grep="grep --color=always"

तो इसके बजाय मैंने टाइप किया:

alias grep=grep --color=always

मुझे छोड़कर:

--color=always
grep=grep

मेरे उपनाम में।

जब मैं --color = हमेशा उपयोग करने की कोशिश करता हूं unalias --color मुझे मिला:

bash: unalias: --: invalid option
unalias: usage: unalias [-a] name [name ...]

मैंने भागने, उद्धृत करने और भीख मांगने की कोशिश की, लेकिन मैं यह नहीं समझ सकता कि कैसे कमांडो unalias गड़बड़ साफ करने के लिए।

(मुझे पता है कि एक पुनरारंभ करना चाल करेगा लेकिन निश्चित रूप से एक और तरीका होना चाहिए)


83
2018-03-02 10:01


मूल


हा हा, अब मुझे यह भी मिला है, इस पर काम कर रहा है संपादित करें: ऐसा लगता है जैसे कोरोबा के जवाब ने मेरे लिए काम किया - asmith
मुझे पुरानी याद दिलाता है echo > \\?\c:\windows\x., या उस समय मैं rm -rf * ~ गलती से। - Jason C


जवाब:


आप जोड़कर कमांड में डैश की व्याख्या करने वाले POSIX अनुपालन सिस्टम से बच सकते हैं -- किसी भी तर्क से पहले।

mtak@frisbee:~$ alias grep=grep --color=always
mtak@frisbee:~$ alias | grep color
alias --color='always'

mtak@frisbee:~$ unalias -- --color
mtak@frisbee:~$ alias | grep color
mtak@frisbee:~$

यह अन्य उपयोगिताओं के साथ भी काम करता है, मान लें कि आपके पास नाम की एक फ़ाइल है -bla। यदि आप इसे हटाने की कोशिश करते हैं rm आपको निम्न त्रुटि मिल जाएगी:

mtak@frisbee:~$ ls -- -bla
-bla
mtak@frisbee:~$ rm -bla
rm: invalid option -- 'b'
Try 'rm ./-bla' to remove the file '-bla'.
Try 'rm --help' for more information.

का उपयोग करके -- फ़ाइल नाम से पहले, आप फ़ाइल को हटा देंगे:

mtak@frisbee:~$ rm -- -bla
mtak@frisbee:~$ ls -- -bla
ls: cannot access '-bla': No such file or directory

128
2018-03-02 10:07



हालांकि यह ध्यान देने योग्य है कि फ़ाइलों के लिए, फ़ाइल के पथ का उपयोग करने के लिए एक समान रूप से वैध विधि है जो इसे टालती है; तो आप इसका उपयोग कर सकते हैं ls ./-bla तथा rm ./-bla (या पूर्ण पथ निर्दिष्ट करें, जो भी आपके मामले में आसान है)। जाहिर है यह उपनाम के लिए काम नहीं करता है! - Muzer
pubs.opengroup.org/onlinepubs/009695399/basedefs/... दिशानिर्देश 10 - DarkHeart


उपनाम सेट करने के लिए उपयोग की जाने वाली एक ही चाल का उपयोग करें

unalias whatever --color

94
2018-03-02 10:03



वास्तव में काम करता है, +1 लेकिन दूसरा समाधान थोड़ा क्लीनर है :) - Requist
दरअसल, ज़ाहिर है :-) - choroba
unalias unalias --color - Cœur


तेज़ समाधान

तै होना दोनों गलत उपनाम जिन्हें आप आसानी से चला सकते हैं

unalias grep --color


क्या हुआ है समझना

आप गलत आदेश देते हैं alias grep=grep --color=always के बिना "..."

  • आप दो उपनाम सेट करते हैं  --color तथा grep; वास्तव में आप इसे अपने आउटपुट के बाईं ओर पढ़ सकते हैं (सभी के बाईं ओर = एक अलियाड कमांड है):

    --color=always
    grep=grep
    

    तो आपको दोनों को अनसेट करने की आवश्यकता है।

  • ऐसा क्यों हुआ?
    ... उपनाम के synoptic में मतलब है कि एक पंक्ति में एकाधिक असाइनमेंट करना संभव है:

    उपनाम: उपनाम [-पी] [नाम [= मूल्य] ...]

    के उत्पादन में help alias आप synoptic लेकिन से पढ़ सकते हैं man bash आप पढ़ सकते हैं कि एक ही पंक्ति में संभव है कि एक ही समय में सूची और असाइन करें:

    जब तर्क प्रदान किए जाते हैं, एक उपनाम प्रत्येक नाम के लिए परिभाषित किया जाता है जिसका मूल्य दिया जाता है।  मूल्य में पिछली जगह उपनाम को विस्तारित करते समय उपनाम प्रतिस्थापन के लिए अगले शब्द की जांच की जाती है। तर्क सूची में प्रत्येक नाम के लिए जिसके लिए कोई मूल्य प्रदान नहीं किया जाता है, उपनाम का नाम और मान मुद्रित होता है ... 

  • आपको पहले को अनसेट करने में समस्याएं हैं --color अकेला
    ऐसा इसलिए है इसे विकल्पों के रूप में व्याख्या किया जाता है के लिये alias आपके खोल से; इससे बचने के लिए आपको अपने संवाद की आवश्यकता है bash खोल जो कि इसका पालन कर रहा है वह एक विकल्प नहीं है।

  • अंतिम भोज में ईसा मसीह द्वारा इस्तेमाल किया प्याला लिनक्स का: man, इस मामले में man bash यह इस तरह की स्थिति में उपयोगी खजाने से भरे एक कोफर है।
    आप से पढ़ सकते हैं man bash:

    - ए - विकल्पों के अंत को संकेत देता है और आगे अक्षम करता है   विकल्प प्रसंस्करण। के बाद किसी भी तर्क - फ़ाइल नाम के रूप में माना जाता है   और तर्क। एक तर्क - के बराबर है -।

    जैसा कि अन्य उत्तर में बताया गया है कि पॉसिक्स तरीका विशेष चरित्र संयोजन का उपयोग करना है --

    unalias -- --color
    
  • परंतु क्यूं कर unalias grep --color काम कर रहा है? मेरा उपयोग किए बिना मतलब है --?
    जैसा कि यह काम करता है alias के लिए भी unalias एक बार में एक से अधिक नाम देना संभव है (फिर से [...])।

    unalias: unalias [-a] name [name ...]
    

    मैं केवल अपना अनुमान दे सकता हूं: एक अच्छी प्रोग्रामिंग आदत एक ही तर्क के नीचे, एक ही समय में पढ़ने और लिखने के दिनचर्या लिखना है। तो यह विकल्प के पार्सिंग विकल्प के लिए होना चाहिए alias तथा unalias

    यह काम करता है आप इस आदेश से भी देख सकते हैं (इस उद्देश्य के लिए खोले गए खोल से) जो आपके सभी उपनामों को मिटा नहीं देगा:

    unalias whatever -a
    

अंतिम टिप्पणी

के बीयूजीएस अनुभाग में man bash रिपोर्ट की गई कुछ चीजों में से आप पढ़ सकते हैं :-)

उपनाम कुछ उपयोगों में उलझन में हैं।


3
2018-03-06 10:55