La commande history
permet d’afficher les dernières commandes du Bash…(celles qui sont également accessibles avec les flèches du haut/du bas)..
Quelques améliorations sont possibles sur la façon de gérer cet historique…
- Fonctionnement général
À l’ouverture d’une session, le fichier HISTFILE
est lu et les HISTSIZE
dernières commandes sont mises en mémoire. À la fermeture d’une session, les HISTSIZE
dernières commandes en mémoire sont inscrites dans le fichier HISTFILE
(dans la limite de HISTFILESIZE
)
Avec bash
(mais pas tous les shells), chaque session garde son propre historique en mémoire jusqu’à sa fermeture, ce qui ne permet pas de partager en temps réel les historiques entre les sessions…
On peut cependant forcer l’écriture avec history -w
et forcer la lecture avec history -r
Maintenant place à la pratique…
J’ai mis ces différentes variables dans mon .bashrc mais le .bash_profile est peut être plus propre…
- HISTSIZE
The number of commands to remember in the command history […] . The default value is 500.[…]
HISTSIZE=1000
- HISTFILESIZE
The maximum number of lines contained in the history file. […] The default value is 500.[…]
HISTFILESIZE=100000
- HISTFILE
The name of the file in which command history is saved […]. The default value is ~/.bash_history.[…]
- HISTTIMEFORMAT
If this variable is set and not null, its value is used as a format string for strftime(3) to print the time stamp associated with each history entry displayed by the history builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions.[…]
CYAN=$(echo -e '\e[0;36m')
NORMAL=$(echo -e '\e[0m')
HISTTIMEFORMAT="${CYAN}[ %d/%m/%Y %H:%M:%S ]${NORMAL} "
- HISTCONTROL
A colon-separated list of values controlling how commands are saved on the history list. A value of ignoreboth is shorthand for ignorespace and ignoredups. […] ignorespace: lines which begin with a space character are not saved in the history A value of ignoredups causes lines matching the previous history entry to not be saved.[…]
HISTCONTROL=ignoreboth
permet de ne pas ecrire dans l’historique
- si la commande commence par un espace
- si la commande précédente était la même
- HISTIGNORE
A colon-separated list of patterns used to decide which command lines should be saved on the history list.[…]
HISTIGNORE="ls:cd:ll"
permet de ne pas ajouter a l’historique les commandes cd, ls ou ll (sans arguments)