Membuat alias untuk `tree -P '* name *'`

0

Saya sedang membuat alias untuk perintah berikut dengan tree program:

tree -P '*name*'

Ini bekerja persis seperti yang saya inginkan. Tetapi ketika saya membuat alias untuk perintah ini, perintah tersebut berperilaku berbeda: Hanya mencetak direktori dan bukan file.

Di .bash_aliases

function tree_seek {
tree -P '*$1*' 
}

alias treeseek='tree_seek'

Kenapa alias treeseek name tidak melakukan hal yang sama seperti tree -P '*name*'.

Bentley4
sumber
2
@artistoex Bisakah Anda menjelaskannya? Dari apa yang dapat saya katakan, ini tidak berbeda dengan jawaban yang dihapus yang Anda komentari, karena tanda bintang yang dikutip ganda tidak dapat diperluas, tree -P "*$1*" harus bekerja juga.
Daniel Beck
Memang, menggunakan tanda kutip ganda suka Daniel Beck kata bekerja juga. Apakah Anda memposting ini sebagai jawaban terpisah?
Bentley4
Alias ​​tidak menangani argumen, gunakan fungsi shell.
vonbrand

Jawaban:

2

Di Bash, Kutipan tunggal tidak akan menginterpolasi apa pun . Coba gunakan tanda kutip ganda di fungsi Anda sebagai gantinya:

function tree_seek() {
  tree -P "*$1*" 
}

alias treeseek='tree_seek'
Eero Helenius
sumber
@ daniel-beck: Maaf, saya tentu tidak bermaksud membajak jawaban Anda. Saya tidak melihat komentar Anda sebelum saya memposting jawaban saya.
Eero Helenius
+1 untuk mengetahui dan meminta maaf kepada Daniel Beck.
jaume