Digamos que eu tenho um comando git branch
(sempre com algumas palavras) por exemplo.
O que eu quero é acompanhar quando esse comando é executado com argumentos. Por exemplo, se eu executar o comando git branch develop
sem erros, desejo salvar develop
em um arquivo.
Tentei sobrescrever o comando git no meu .bash_profile
, algo como isto:
git () {
if [ $# -eq 3 ]
then
git $@
echo $2 > /path/tacked_parameters.txt
else
git $@
fi
}
Mas parece que não funciona bem. Há alguma maneira de fazer isso?
Respostas:
Você tem alguns problemas aqui:
git
função está se chamando recursivamente em vez dogit
comando original .$@
aspas, o que não faz nenhum sentidoecho
para dados arbitrários .git
comando original .~/.bash_profile
destinadas a personalizar sua sessão de login, não o seu shell e normalmente não é lido porbash
invocações que não são de login .Você gostaria de algo como:
Isso é:
command
para executar ogit
comando ,git
em variáveis locais e retorne-o na saída,>>
vez de>
redirecionar para o arquivo de log.printf
vez deecho
.~/.bashrc
lugar (certifique-se de que você~/.bash_profile
está fornecendo,~/.bashrc
pois osbash
shells de login não são lidos~/.bashrc
por padrão (umbash
bug / falha)). A menos que você queira exportar essagit
função (comexport -f git
) no caso de você também desejarbash
scripts que chamamgit
para chamar essa função.fonte
[ "$#" -eq 2 ]
, de acordo com seu exemplo. E pode ser uma boa ideia também adicionar a data a "tacked_parameters.txt". E eu iria para o caso geral (ou seja, não apenas rastrear os 2º parâmetros quando 2 parâmetros, mas rastrear quaisquer parâmetros): eu me livraria do if e teriaprintf '%s: %s\n' "$(date '+%Y-%m-%dT%H:%M:%S')" "$0 $*"
:? (ou seja, mostre o comando + todos os parâmetros (observe que você ainda perde algumas informações, por exemplo, quais os parâmetros possuem intra-separadores, se houver). Data portátil próxima ao padrão iso8601)