Como fazer este alias “svngrep” funcionar em “.bash_aliases”?

0

Eu adicionei a seguinte linha ao arquivo "~ / .bash_aliases":

alias svngrep='grep -R $1 ./* --exclude-dir ".svn"'

mas não está funcionando.

O resultado é (na minha tradução para o inglês):

svngrep test
grep: test: File or directory not found

Mas com a linha "grep" completa funciona bem.

Alguma ideia do que há de errado com meu alias?

    
por Tom Brito 17.09.2012 / 15:38

2 respostas

1

$1 não funciona em um alias. Você precisa definir uma função para isso, por exemplo, no seu arquivo .bashrc.

function svngrep { grep -R --exclude-dir=".svn" "$@" . ; }

Isso deve fazer o truque! No entanto, certifique-se de que seu antigo alias não esteja por perto antes de testá-lo na linha de comando:

unalias svngrep
function svngrep { grep -R --exclude-dir=".svn" "$@" . ; }
svngrep "teststring"

Citando o manual do bash :

% bl0ck_qu0te%     
por January 17.09.2012 / 16:15
0

Você não precisa de uma função bash (você pode usá-la, por exemplo), apenas remova o $1 ./* do seu exemplo e chame desta forma:

alias svngrep='grep -R --exclude-dir ".svn"'
svngrep phrase .

ou aqui está um exemplo que uso há meses:

alias rg='rgrep --exclude-dir=.svn --exclude=*.pyc'
rg phrase .

Claro, você pode substituir . por qualquer diretório. Eu diria que usar aliases é mais intuitivo, alias é um alias, função pode fazer qualquer coisa.

    
por bartekbrak 17.09.2012 / 17:01