Disons que j'ai une commande git branch
(toujours avec quelques mots) par exemple.
Ce que je veux, c'est garder une trace de quand cette commande est exécutée avec des arguments. Par exemple, si j'exécute la commande git branch develop
sans erreur, je souhaite enregistrer develop
sur un fichier.
J'ai essayé d'écraser la commande git sur mon .bash_profile
, quelque chose comme ceci:
git () {
if [ $# -eq 3 ]
then
git $@
echo $2 > /path/tacked_parameters.txt
else
git $@
fi
}
Mais ça ne marche pas bien. Est-ce qu'il y a un moyen de faire ça?
Réponses:
Vous avez ici quelques problèmes:
git
fonction s'appelle récursivement au lieu de lagit
commande d' origine .$@
guillemets, ce qui n'a aucun sensecho
pour des données arbitraires .git
commande d' origine .~/.bash_profile
qui sont destinées à personnaliser votre session de connexion, pas votre shell et ne sont normalement pas lues par des appels sans connexionbash
.Vous voudriez quelque chose comme:
C'est:
command
pour exécuter lagit
commande ,git
dans une variable locale et le retourner à la sortie,>>
au lieu de>
pour la redirection vers le fichier journal.printf
au lieu deecho
.~/.bashrc
place (en vous assurant que votre~/.bash_profile
sourcing~/.bashrc
car lesbash
shells de connexion ne sont pas lus~/.bashrc
par défaut (unbash
bug / une erreur)). Sauf si vous souhaitez exporter cettegit
fonction (avecexport -f git
) au cas où vous souhaiteriez également que lesbash
scripts qui appellentgit
appellent cette fonction.la source
[ "$#" -eq 2 ]
, selon son exemple. Et ce pourrait être une bonne idée d'ajouter également la date à "tacked_parameters.txt". Et j'irais pour le cas général (c'est-à-dire, pas seulement le suivi des 2e paramètres lorsque 2 paramètres, mais le suivi des paramètres): Je me débarrasserais du si, et auraisprintf '%s: %s\n' "$(date '+%Y-%m-%dT%H:%M:%S')" "$0 $*"
:? (c.-à-d., affichez la commande + tous les paramètres (notez que vous perdez toujours des informations, par exemple, quel paramètre avait des séparateurs internes, le cas échéant). Date de fermeture portable de la norme iso8601)