Seguir ciertos parameters en algún command

Digamos que tengo un command git branch (siempre con un par de palabras) por ejemplo.

Lo que quiero es hacer un seguimiento de cuándo este command se ejecuta con arguments. Por ejemplo, si ejecuto el command git branch develop sin errores, quiero save el develop en un file.

Traté de sobrescribir el command git en mi .bash_profile , algo como esto:

 git () { if [ $# -eq 3 ] then git $@ echo $2 > /path/tacked_parameters.txt else git $@ fi } 

Pero parece que eso no funciona bien. ¿Hay alguna manera de hacer esto?

Aquí tienes algunos problemas:

  • su function git está llamando recursivamente en lugar del command original de git .
  • estás usando $@ comillas que no tiene ningún sentido en absoluto
  • usted está dejando otras variables sin comillas , pidiéndole al caparazón que las divida + englobe.
  • estás usando echo para datos arbitrarios .
  • estás perdiendo el estado de salida del command original de git .
  • está sobrescribiendo su file de logging en cada invocación.
  • está poniendo definiciones de function en su ~/.bash_profile que está destinado a personalizar su session de inicio de session, no su shell y normalmente no es leído por invocaciones de acceso sin inicio de session.

Querrías algo como:

 git() { if [ "$#" -eq 3 ] then local ret command git "$@"; ret=$? printf '%s\n' "$2" >> /path/tacked_parameters.txt return "$ret" else command git "$@" fi } 

Es decir:

  • cita tus variables,
  • use command para ejecutar el command git ,
  • save el estado de salida de git en variables locales y devolverlo al salir,
  • use >> lugar de > para networkingireccionar al file de logging.
  • use printf lugar de echo .
  • y ponlo en tu ~/.bashrc en su lugar (asegurándote de que ~/.bash_profile está obteniendo ~/.bashrc ya que las shell de inicio de session no leen ~/.bashrc de manera pnetworkingeterminada (un fallo / error). A less que quiera exportar esa function git (con export -f git ) en caso de que también quiera scripts bash que llamen a git para llamar a esa function.