как поместить мои аргументы в команду-алиас Bash?

как поместить мои аргументы в команду-алиас Bash?

Обычно в моем bashrc есть следующий простой псевдоним:

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

но теперь мне приходится работать на системах, в которых есть только GNU grep 2.5, поэтому --exclude-dirспорить не о чем.

Теперь мне нужно что-то вроде этого для работы:

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

но, конечно, аргументы добавляются в конец псевдонима. $1 и $2 анализируются при создании псевдонима, а не при его вызове, даже при наличии сильных кавычек.

Можно ли решить эту проблему, не прибегая к дополнительным скриптам или функциям?

решение1

Нет, не можете. Как гласит руководство по bash:

Механизма использования аргументов в тексте замены, как в `csh', нет. Если аргументы необходимы, следует использовать функцию оболочки (*примечание Функции оболочки::).

Функции — это то, что нужно для этого, и их можно так же легко написать, как псевдоним. В этом случае это может быть

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

Связанный контент