Создание псевдонима для `tree -P '* name *'`

434
Bentley4

Я создаю aliasдля следующей команды с treeпрограммой:

tree -P '*name*' 

Это работает именно так, как я хочу. Но когда я создаю псевдоним для этой команды, команда ведет себя по-другому: она печатает только каталоги, а не файлы.

В .bash_aliases

function tree_seek { tree -P '*$1*'  }  alias treeseek='tree_seek' 

Почему псевдоним treeseek nameне делает так же, как tree -P '*name*'.

0
@artistoex Не могли бы вы уточнить это? Из того, что я могу сказать, это ничем не отличается от удаленного ответа, который вы прокомментировали, поскольку звездочки в двойных кавычках не подлежат расширению, поэтому `tree -P" * $ 1 * "` также должно работать. Daniel Beck 11 лет назад 2
В самом деле, использование двойных кавычек, как сказал Дэниел Бек, также работает. Не могли бы вы опубликовать это как отдельный ответ? Bentley4 11 лет назад 0
Псевдонимы не обрабатывают аргументы, используйте функцию оболочки. vonbrand 11 лет назад 0

1 ответ на вопрос

2
Eero Helenius

В Bash одинарные кавычки ничего не интерполируют . Попробуйте вместо этого использовать двойные кавычки в своей функции:

function tree_seek() { tree -P "*$1*"  }  alias treeseek='tree_seek' 
@ Даниэль-Бек: Извините, я, конечно, не хотел угнать ваш ответ. Я не видел ваш комментарий, прежде чем опубликовал свой ответ. Eero Helenius 11 лет назад 0
+1 за выяснение и ваши извинения перед Даниэлем Беком. jaume 11 лет назад 0

Похожие вопросы