Cara unalias minus?

Kopi pagi saya sudah't mencapai otak saya namun ketika saya lupa kutipan di:

alias grep="grep --color=always"

jadi, bukannya saya mengetik:

alias grep=grep --color=always

meninggalkan saya dengan:

--color=always
grep=grep

di alias.

Ketika saya mencoba untuk pembersihan --warna=selalu menggunakan unalias --warna yang saya dapatkan:

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

Aku mencoba melarikan diri, mengutip dan memohon, tapi aku tidak bisa mencari cara untuk membuat komando unalias pembersihan kekacauan.

(Aku tahu restart akan melakukan trik, tapi tentunya harus ada cara lain)

Mengomentari pertanyaan (2)
Larutan

Anda dapat menghindari POSIX-compliant sistem menafsirkan tanda hubung di perintah dengan menambahkan -- sebelum argumen.

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

Ini juga bekerja dengan utilitas lain, let's mengatakan anda memiliki sebuah file yang bernama -bla. Jika anda mencoba untuk menghapusnya dengan rm anda akan mendapatkan error berikut:

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.

Dengan menggunakan -- sebelum nama file, anda akan menghapus file:

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

Hanya menggunakan trik yang sama yang anda gunakan untuk membuat alias

unalias whatever --color
Komentar (3)

Solusi cepat

Untuk memperbaiki kesalahan kedua ** yang salah alias anda hanya dapat menjalankan

unalias grep --color

###Memahami apa's terjadi Anda memberikan perintah yang salah `alias grep=grep --color=selalu` tanpa `"..."`.
  • Anda mengatur dua alias --warna dan grep, memang anda bisa membacanya di sisi kiri output (semua di sisi kiri = adalah alias perintah):

--color=selalu grep=grep

jadi, anda perlu untuk diset kedua.

  • Mengapa hal ini terjadi? The ... di sinoptik alias berarti bahwa adalah mungkin untuk melakukan beberapa penugasan dalam satu baris:

    alias: alias [-p] [nama[=value] ... ]

Dalam output dari bantuan alias anda dapat membaca sinoptik tapi dari man bash anda dapat membaca bahwa mungkin dalam baris yang sama bahkan untuk daftar dan menetapkan pada saat yang sama:

Ketika argumen yang diberikan, alias didefinisikan untuk setiap nama dan nilai yang diberikan. Trailing spasi di nilai menyebabkan kata berikutnya yang akan diperiksa untuk alias substitusi ketika alias diperluas. Untuk setiap nama pada daftar argumen yang tidak ada nilai yang diberikan, nama dan nilai alias dicetak...

  • Anda memiliki masalah untuk unset pertama --warna saja. Ini karena itu ditafsirkan sebagai pilihan untuk alias oleh shell anda, untuk menghindari hal ini anda perlu berkomunikasi untuk anda bash shell itu apa berikut ini adalah bukan sebuah pilihan.

  • The Holy Grail Linux: pria, dalam hal ini man bash yang adalah sebuah peti yang penuh dengan harta berguna dalam situasi seperti ini. Anda dapat membaca dari man bash:

  • Sebuah-sinyal akhir dari pilihan dan gambaran lebih lanjut pilihan pengolahan. Setiap argumen setelah -- diperlakukan sebagai nama file dan argumen. Argumen - setara dengan --.

Seperti yang dilaporkan di lain menjawab POSIX cara adalah dengan menggunakan kombinasi karakter khusus --.

unalias -- --warna

  • Tapi mengapa unalias grep --color bekerja? Maksud saya tanpa menggunakan --? Karena itu bekerja untuk alias bahkan untuk unalias itu adalah mungkin untuk memberikan lebih dari satu nama dalam satu waktu (lagi-lagi [...]).

unalias: unalias [-a] nama [nama ...]

Saya hanya dapat memberikan dugaan saya: pemrograman yang baik adalah kebiasaan untuk menulis membaca dan menulis rutinitas di waktu yang sama, di bawah ini logika yang sama. Jadi itu harus untuk pilihan parsing rutinitas alias dan unalias.

Bahwa karya ini anda dapat melihat bahkan dari perintah ini (dari shell dibuka untuk tujuan ini) yang tidak akan menghapus semua alias anda:

unalias apapun -

Akhir kata

Di bagian BUG man bash di antara beberapa hal yang dilaporkan anda dapat membaca :-)

Alias membingungkan dalam beberapa penggunaan.

Komentar (0)