como colocar meus argumentos em um comando Bash alias?

3

Eu geralmente tenho o seguinte alias simples no meu bashrc:

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

mas agora eu tenho que trabalhar em sistemas que possuem apenas o GNU grep 2.5, portanto nenhum argumento --exclude-dir .

agora eu preciso de algo assim para funcionar:

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

mas, claro, os argumentos são anexados ao final do alias. $ 1 e $ 2 são analisados quando o alias é criado não quando é chamado, mesmo com citações strongs.

Posso resolver isso sem recorrer a scripts ou funções extras?

    
por gcb 02.11.2012 / 18:48

1 resposta

7

Não, você não pode. Como o manual do bash declara:

There is no mechanism for using arguments in the replacement text, as in 'csh'. If arguments are needed, a shell function should be used (*note Shell Functions::).

As funções são a coisa certa para isso e podem ser tão fáceis de escrever como um alias. Neste caso, poderia ser

function g () { grep --color=always "$1" "$2" | grep -v .svn ; }
    
por 02.11.2012 / 18:59