Histoire de Bash avec horodatages


15

J'aimerais garder des horodatages sur les commandes enregistrées dans mon Bash $ HISTFILE, est-ce possible?

Je n'ai pas réussi à le configurer en utilisant man bashcomme source d'information.

Mes autres options sont les suivantes:

function thebanana() {
  local -r -a bash_commands=(
    "ls"
    # ... more coconut commands
  )
  for bash_command in "${bash_commands[@]}"; do
    printf "${bash_command}"
    printf ":"
  done
}
export HISTFILE=banana
export HISTIGNORE="$(thebanana)"
export HISTSIZE=999999
export HISTFILESIZE=999999999
export HISTCONTROL=ignoredups:erasedups

J'aurais dû mentionner que je suis sur OS X Mountain Lion (soupir). uname -aDonne moi:

Darwin CoconutMac.local 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64

et echo $BASH_VERSIONme donne:

3.2.48(1)-release

J'ai essayé d'ajouter ceci:

export HISTTIMEFORMAT='%b %d %I:%M:%S %p '

et il préfixe uniquement ce type d'horodatage aux commandes:

#1349057791

J'essaie de renvoyer la variable ( echo $HISTTIMEFORMAT), elle a la bonne valeur.

Intéressant!

J'ai même supprimé complètement .profile pour déboguer cela. Toujours des horodatages amusants:

#1349058320

Je ne sais pas comment résoudre davantage ce problème ... :(

Solution : j'utilisais un script qui lit directement $ HISTFILE, pas l'historique intégré, donc l'horodatage basé sur l'époque (en secondes depuis le temps universel coordonné (UTC) du 1er janvier 1970) n'était pas traduit à l'aide de la chaîne de formatage de la date . Plain-old historyfonctionne très bien, je vais l'utiliser à la place.


2
Avez-vous essayé de régler HISTTIMEFORMAT?
jw013

Je me trompe probablement le format strftime. Il serait utile que la page de manuel comprenne au moins quelques exemples. +% Y-% m-% d% H-% M-% S?
Robottinosino

Réponses:


15

Oui, mettez ceci dans ~/.bashrc:

export HISTTIMEFORMAT='%F %T '

Ensuite, exécutez les commandes suivantes:

. ~/.bashrc
history

Il ressemblera à ceci :

 (...)
 5200  2012-09-30 23:55:37 find -printf '%Ts %f\n'
 5201  2012-10-01 00:00:58 ls
 5202  2012-10-01 00:03:45 cd
 (...)

Explications de la sortie:

  • le premier col est unique id
  • la seconde est la date, la troisième est l'heure
  • la dernière est votre ligne de commande

3
Non, ne fonctionne pas sur OSX .. :( Probablement que c'est le problème. Un étrange OS.
Robottinosino

Et vous source ~/.bashrc?
Gilles Quenot

Je l'ai définitivement fait. Il fait "quelque chose": ajouter une ligne commentée avant la commande avec un horodatage numérique: # 1349057149
Robottinosino

1
@Robottinosino Oui, la ligne commentée est le format attendu. Pour afficher les commandes avec une heure formatée, utilisez la historycommande intégrée, ne regardez pas directement le fichier historique.
jw013

1
Est-il possible d'enregistrer l'horodatage dans le fichier historique à l'aide de HISTTIMEFORMAT? Je n'utilise jamais la historycommande, à la place j'utilise un éditeur de texte pour trouver les commandes que je recherche, et ce serait bien d'avoir une référence de date lisible par l'homme.
disparu le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.