Как поместить мои аргументы в команду псевдонима 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 ; }