bagaimana cara menempatkan argumen saya ke perintah alias Bash?


3

saya biasanya memiliki alias sederhana berikut di bashrc saya:

alias g="grep --color=always --exclude-dir=\*.svn\*"

tapi sekarang saya harus bekerja pada sistem yang hanya memiliki GNU grep 2.5, karenanya tidak --exclude-dir argumen.

sekarang saya perlu sesuatu seperti ini untuk bekerja:

alias g="grep --color=always $1 $2 | grep -v .svn"

tapi tentu saja, argumennya ditambahkan ke akhir alias. $ 1 dan $ 2 diuraikan ketika alias dibuat bukan saat dipanggil, bahkan dengan kutipan kuat.

Bisakah saya menyelesaikannya tanpa menggunakan skrip atau fungsi tambahan?

Jawaban:


7

Tidak, kamu tidak bisa. Seperti yang dinyatakan oleh manual bash:

Tidak ada mekanisme untuk menggunakan argumen dalam teks pengganti, seperti dalam `csh '. Jika diperlukan argumen, fungsi shell harus digunakan (* note Shell Shell Functions: :).

Fungsi adalah hal yang tepat untuk ini, dan dapat dengan mudah ditulis sebagai alias. Dalam hal ini, bisa jadi

function g () { grep --color=always "$1" "$2" | grep -v .svn ; }

2
+1 Lebih aman untuk mengutip posisi params.
glenn jackman

Sangat benar. Diedit untuk memperbaikinya.
Alan Shutko
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.