Simplifique este comando bash

1

Como eliminar a digitação da consulta de pesquisa duas vezes neste one-liner ( search for something )?

git grep "search for something" $(git log -g --pretty=format:%h -S"search for something")

Minha solução:

Criar script bash /usr/local/bin/git-search :

search_string="$1"
git grep $search_string $(git log -g --pretty=format:%h -S$search_string)

Então eu posso usar:

git search 'search for something'
    
por takeshin 26.08.2010 / 14:09

4 respostas

4

Você pode colocar o seguinte em um arquivo e, em seguida, criar esse arquivo em ~/.bashrc :

function gitgrep {
    git grep "search for something" $(git log -g --pretty=format:%h -S"$1")
}

Para obtê-lo, você só teria o nome do arquivo . file_with_function

Então você faria:

gitgrep "foo bar baz" (aspas necessárias podem ser reproduzidas com $@ em vez de $1 se você não quiser usar as aspas)

    
por 26.08.2010 / 14:37
1

Você pode fazer isso como um alias:

alias youralias="git grep \"$0\" $(git log -g --pretty=format:%h -S\"$0\")"

E, em seguida, chame de shell como

youralias "search for something"

Isso funciona para você?

    
por 26.08.2010 / 14:13
1

outra opção é usar a expansão do histórico bash:

git grep "search for something" $(git log -g --pretty=format:%h -S!#:2)
    
por 26.08.2010 / 14:30
1

Enquanto todos estes funcionarão, se você também estiver querendo encurtar seus comandos base para o git, apenas crie um arquivo em ~/.gitconfig e adicione alguns aliases. Por exemplo, aqui estão alguns dos meus:

$ cat ~/.gitconfig
[alias]
   ci = commit
   co = checkout
   f = fetch
   s = status
   b = branch
   d = diff
   a = add
   l = log
   g = grep

Então, agora, você pode emitir o seguinte:

git g "search for something" $(git l -g --pretty=format:%h -S"search for something")

OU você ainda pode ter os aliases do git em seu arquivo .gitconfig, mas também incorporar outras funções bash, aliases, etc que foram propostas neste tópico.

    
por 26.08.2010 / 16:05