Eksi unalias nasıl?


83

Sabah kahvem beynime henüz ulaşmamıştı, alıntıları unuttuğumda:

alias grep="grep --color=always"

bu yüzden şunu yazdım:

alias grep=grep --color=always

beni bırakarak:

--color=always
grep=grep

takma isimlerimde.

Temizlemeye çalıştığımda --color = daima kullanarak unalias --coloralıyorum:

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

Kaçmayı, alıntı yapmayı ve yalvarmayı denedim, ancak komando unalias'ın karmaşayı nasıl temizleyeceğini bulamıyorum.

(Yeniden başlatma işleminin işe yarayacağını biliyorum, ancak mutlaka başka bir yolu olmalı)


13
Ha ha, şimdi benimkiler içinde de sıkışıp kaldım, üzerinde çalışıyorum EDIT: Choroba'nın cevabı benim için işe yaramışa benziyor
avukat

9
Bana biraz eskileri hatırlatıyor echo > \\?\c:\windows\x.ya da o zaman rm -rf * ~kazayla.
Jason C,

Yanıtlar:


127

--Herhangi bir argümandan önce ekleyerek POSIX uyumlu sistemlerin komutlardaki kısa çizgileri yorumlamasını önleyebilirsiniz .

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:~$

Bu aynı zamanda diğer yardımcı programlarla da çalışır, diyelim ki bir dosya var -bla. Onu kaldırmaya çalışırsanız rmaşağıdaki hatayı alırsınız:

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.

--Dosya adından önce onu kullanarak dosyayı kaldırırsınız:

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

19
Her ne kadar dosyalar için eşit derecede geçerli bir yöntem de bundan kaçınan dosyanın yolunu kullanmaktır; böylece kullanabilir ls ./-blave rm ./-bla(veya sizin durumda daha kolay ne olursa olsun tam yollarını belirtmek). Açıkçası bu olsa takma adlar için işe yaramaz!
Muzer


93

Takma adı ayarlamak için kullandığınız numarayı kullanın

unalias whatever --color

9
1 gerçekten çalışır ancak diğer çözüm :) biraz temizleyici
Requist

1
Nitekim, elbette :-)
choroba

unalias unalias --color
Coeur

3

Hızlı çözüm

Her iki hatalı diğer adı düzeltmek için sadece

unalias grep --color


Ne olduğunu anlama

Yanlış komutu alias grep=grep --color=alwaysolmadan verirsin "...".

  • Sen iki takma ad ayarlamak --color ve grep; Gerçekten, çıktılarınızın solunda okuyabilirsiniz (tümü solunda =bir diğer ad komutudur):

    --color=always
    grep=grep
    

    bu yüzden ikisini de üzmelisin.

  • Bu neden oldu?
    Diğer ...adın özetinde, bir satırda birden fazla atama yapmanın mümkün olduğu anlamına gelir:

    alias: alias [-p] [ad [= değer] ...]

    Çıktısında help aliassize sinoptik okuyabilir ancak gelen man basho aynı çizgide bile listelemek için ve aynı zamanda atamak mümkündür okuyabilir:

    Bağımsız değişkenler sağlandığında, değeri verilen her ad için bir diğer ad tanımlanır. Değerde takip eden bir boşluk, takma ad genişletildiğinde, takma adın yerine konması için bir sonraki kelimenin kontrol edilmesini sağlar. Argüman listesindeki hiçbir değer belirtilmeyen her isim için, diğer ismin adı ve değeri yazdırılır ...

  • İlki --coloryalnız bırakmak için problemin var .
    Bunun nedeni , kabuğunuz için seçenek olarak yorumlanmasıalias ; Bundan kaçınmak için, bashkabuğunuza takip eden şeyin bir seçenek olmadığını bildirmeniz gerekir .

  • Kutsal Kase Linux:man bu durumda man bashböyle bir durumda yararlı hazineleri ile dolu bir sandık olduğunu.
    Şuradan okuyabilirsiniz man bash:

    - A - seçeneklerin sonunu gösterir ve daha fazla seçenek işlemeyi devre dışı bırakır. -'Den sonraki argümanlar dosya adları ve argümanlar olarak değerlendirilir . - argümanı - ile eşdeğerdir.

    Diğer cevaplarda belirtildiği gibi POSIX yolu özel karakter kombinasyonunu kullanmaktır --.

    unalias -- --color
  • Fakat neden unalias grep --colorçalışıyor? Kullanmadan --mı demek istiyorum ?
    Bunun için aliasbile çalıştığı unaliasgibi, bir defada birden fazla isim vermek mümkündür (yine [...]).

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

    Sadece tahminimi verebilirim: iyi bir programlama alışkanlığı okuma ve yazma yordamlarını aynı anda, aynı mantığın altına yazmaktır. Bu yüzden seçeneği ayrıştırma rutinleri için olmak zorunda aliasve unalias.

    Bu, tüm takma adlarınızı silmeyecek bu komuttan bile (bu amaç için açılan bir kabuktan) görebileceğiniz şekilde çalışır:

    unalias whatever -a

Son söz

BUGS bölümünde, man bashokuyabileceğiniz bildirilen birkaç şey arasında:-)

Diğer adlar bazı kullanımlarda kafa karıştırıcıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.