3

у меня обычно есть следующий простой псевдоним в моем 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 ответ1

7

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .