Comment puis-je modifier le contenu de mon bash_history
fichier? Quelles valeurs ou variables contrôlent la durée de l'historique? Y a-t-il d'autres choses que je peux changer pour mieux contrôler mon historique BASH ??
11
Comment puis-je modifier le contenu de mon bash_history
fichier? Quelles valeurs ou variables contrôlent la durée de l'historique? Y a-t-il d'autres choses que je peux changer pour mieux contrôler mon historique BASH ??
HISTSIZE
etHISTFILESIZE
sont les seules surfaces de contrôle dont vous disposez pour contrôler la quantité d'historique conservée.Réponses:
Il existe deux variables qui contrôlent la taille de l'historique:
et
Ces deux variables vous permettent de contrôler le comportement de votre historique. Fondamentalement, il
HISTSIZE
s'agit du nombre de commandes enregistrées au cours de votre session en cours etHISTFILESIZE
du nombre de commandes qui seront mémorisées d'une session à l'autre. Ainsi, par exemple:Dans l'exemple ci-dessus, étant donné qu'il
HISTSIZE
est défini sur 10,history
renvoie une liste de 10 commandes. Cependant, si vous vous déconnectez puis vous reconnectez,history
ne renverra que 5 commandes carHISTFILESIZE
est défini sur 5. En effet, une fois que vous quittez votre session, vosHISTFILESIZE
lignes de votre historique sont enregistrées dans votre fichier d'historique (~/.bash_history
par défaut mais contrôlé parHISTFILE
). En d'autres termes, les commandes sont ajoutéesHISTFILE
jusqu'à ce que cela atteigne les$HISTFILESIZE
lignes à quel point, chaque ligne suivante ajoutée signifie que la première commande du fichier sera supprimée.Vous pouvez définir les valeurs de ces variables dans votre
~/.profile
(ou~/.bash_profile
si ce fichier existe). Ne les définissez pas dans votre~/.bashrc
premier car ils n'y ont rien à faire et deuxièmement parce que cela entraînerait un comportement différent dans les shells de connexion par rapport aux shells sans connexion, ce qui peut entraîner d' autres problèmes .D'autres variables utiles qui vous permettent d'affiner le comportement de votre historique sont:
HISTIGNORE
: Cela vous permet d'ignorer certaines commandes courantes qui sont rarement intéressantes. Par exemple, vous pouvez définir:Cela entraînerait que toute commande commençant par
pwd
,df
oudu
soit ignorée et non enregistrée dans votre historique.HISTCONTROL
: Celui-ci vous permet de choisir le fonctionnement de l'historique. Personnellement, je l'ai défini pourHISTCONTROL=ignoredups
qu'il ne sauvegarde les commandes dupliquées qu'une seule fois. Les autres options consistentignorespace
à ignorer les commandes commençant par un espace,erasedups
ce qui entraîne la suppression de toutes les lignes précédentes correspondant à la ligne actuelle de la liste d'historique avant l'enregistrement de cette ligne.ignoreboth
est un raccourci pour ignorespace et ignoredups.HISTTIMEFORMAT
: Cela vous permet de définir le format d'heure du fichier d'historique. Voir la réponse de Pandya ou lireman bash
pour plus de détails.Pour un réglage plus fin, vous avez:
L'
histappend
option bash. Cela peut être défini en exécutantshopt -s histappend
ou en ajoutant cette commande à votre~/.bashrc
. Si cette option est définieCeci est très utile car il vous permet de combiner les historiques de différentes sessions (pensez à différents terminaux par exemple).
La
history
commande a deux options utiles:history -a
: provoque l'écriture automatique de la dernière commande dans le fichier historiquehistory -r
: importe le fichier historique dans la session en cours.Vous pouvez, par exemple, ajouter ces deux commandes à votre
PROMPT_COMMAND
(qui est exécutée chaque fois que votre shell affiche l'invite, donc chaque fois que vous démarrez un nouveau shell et après chaque commande que vous y exécutez):Combinés, ils garantissent que tout nouveau terminal que vous ouvrirez importera immédiatement l'historique de toutes les autres sessions shell. Le résultat est un historique commun à tous les terminaux / sessions shell.
la source
La taille par défaut du fichier historique est de 500 lignes. Une fois que le fichier .bash_history atteint 500 lignes, les premières entrées sont éliminées pour faire de la place aux lignes plus récentes, comme dans FIFO. Vous pouvez changer cela en changeant la valeur de la variable
HISTFILESIZE
qui par défaut a la valeur 500.Mettre un
HISTFILESIZE=10000
dans votre .bashrc augmentera le nombre de lignes que le fichier historique peut contenir à 10000, augmentant ainsi la durée de vie de son contenu.la source
HISTSIZE
la limite, pensezHISTFILE
aussi à changer . Si vous exécutezbash --norc
HISTSIZE
reviendra à la valeur par défaut, tronquer votreHISTFILE
à la sortie./etc/bash.bashrc
définit unHISTFILESIZE
(ou peut-êtreHISTSIZE
; je n'ai pas vérifié lequel), alors Bash semble tronquer.bash_history
au moment où il lit/etc/bash.bashrc
(ou au moins à un moment donné avant que votre nouvelle limite ne soit définie dans vos propres fichiers d'initialisation Bash). Pour éviter cela, encore une fois, définissez le vôtreHISTFILE
afin que votre historique réel y soit et non dans le.bash_history
fichier que Bash tronque.export
, car cela le rendrait visible pour tous les obus enfants, qui pourraient alors chercher à le tronquer au lieu de.bash_history
!)Lisez
man bash
pour plus de détails sur l' histoire de bash comme:Particulièrement
HISTFILESIZE
etHISTSIZE
que vous cherchiez et vous aide.la source