शून्य से शून्य कैसे करें?


83

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

alias grep="grep --color=always"

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

alias grep=grep --color=always

मेरा साथ छोड़ना:

--color=always
grep=grep

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

जब मैं thecolor को साफ़ करने की कोशिश करता हूं = हमेशा unalias --colorमेरे द्वारा उपयोग किए जाने वाले :

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

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

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


13
हा हा, अब मैं यह भी खान में फंस, इसे संपादित पर काम कर रहा है: ऐसा लगता है कि choroba का जवाब मेरे लिए काम किया
Asmith

9
तरह मुझे पुराने की याद दिलाता है echo > \\?\c:\windows\x., या उस समय मैं rm -rf * ~दुर्घटना से।
जेसन सी

जवाबों:


127

आप 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

19
यद्यपि यह ध्यान देने योग्य है कि फ़ाइलों के लिए, एक समान रूप से मान्य विधि उस फ़ाइल के लिए पथ का उपयोग करना है जो इससे बचता है; इसलिए आप उपयोग कर सकते हैं ls ./-blaऔर rm ./-bla(या पूर्ण पथ निर्दिष्ट कर सकते हैं , जो आपके मामले में आसान है)। जाहिर है, हालांकि यह उपनाम के लिए काम नहीं करता है!
मुजेर

1
pubs.opengroup.org/onlinepubs/009695399/basedefs/… दिशानिर्देश 10
DarkHeart

93

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

unalias whatever --color

9
वास्तव में काम करता है, +1 लेकिन दूसरा समाधान थोड़ा साफ है :)
आवश्यक

1
वास्तव में, निश्चित रूप से :-)
चोरोबा

unalias unalias --color
C

3

तेजी से समाधान

दोनों गलत उपनामों को ठीक करने के लिए आप बस चला सकते हैं

unalias grep --color


जो हुआ है उसे समझना

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

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

    --color=always
    grep=grep

    तो तुम दोनों को परेशान करने की जरूरत है।

  • ऐसा क्यों हुआ? उर्फ का संक्षिप्त में इसका मतलब है कि एक पंक्ति में कई प्रतिभाजन करने के लिए संभव है:
    ...

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

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

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

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

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

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

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

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

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

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

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

    unalias whatever -a

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

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

उपनाम कुछ उपयोगों में भ्रमित कर रहे हैं।

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