Como sobrecarregar um comando do Linux

1

Sempre que o usuário digita git commit -a ,
eu quero executá-lo no meu próprio script,
Em seguida, execute o comando original git commit.. e execute-o como normalmente faria.

    
por Binny Zupnick 28.01.2013 / 11:50

4 respostas

5

Você pode usar ".git / hooks" para instalar um gancho "pré-commit", talvez: link

Normalmente é assim que você faria isso. É claro que ajudaria se você explicasse exatamente o que você quer que a "sobrecarga" faça.

    
por 28.01.2013 / 11:55
2

Se você quer que o seu "gancho" não esteja limitado a apenas git , mas você precisa fazê-lo funcionar com qualquer executável, você pode usar alias

alias git='myhackyscript.sh'

então myhackyscript.sh pode parecer

#!/bin/bash

# save params
params=("$@")

# do what i want to do
do_something

# launch git 
git "${params[@]}"

myhackyscript.sh deve ser armazenado em uma pasta $PATH como /usr/bin/

    
por 28.01.2013 / 11:55
0

Você pode definir uma função de shell que invoca um script personalizado que passa as coisas para o comando git original:

git() {
  case $1 in
    commit)
      echo "WUFF"
      ;;
  esac
  \git "$@"
}

Colocar esta função em um dos arquivos RC do seu shell (por exemplo, ~/.profile ou /etc/profile no caso de sh sh / bash / ksh) tornará isso disponível após o próximo login. Claro, você pode obter muito mais elaboare do que isso. Além disso, você pode dar uma olhada no git-sh-setup(1) e git-rev-parse(1) , em particular a seção sobre parseopt .

    
por 28.01.2013 / 12:12
0

Se você criar um script ls em um local como ~/bin , que está localizado no path before /bin/ls , seu script será executado.

user@wopr /home/user/bin/: $ cat ls
#!/bin/bash

echo "Security Breached!"

# Run original command
/bin/ls "$@"

Agora, ao listar arquivos, a mensagem Security Breached! é sempre exibida.

user@wopr /home/user/bin/: $ ls
Security Breached!
ls file.sh file myscript.sh

user@wopr /home/user/bin/: $ which ls
/home/user/bin/ls

Você deve estar ciente dos diretórios no seu path e quem pode gravar nesses diretórios.

    
por 28.01.2013 / 12:05