Je veux que mon .bash_history
Ainsi, je peux toujours revenir en arrière et voir comment j'ai construit/configuré quelque chose, ou quelle était cette commande astucieuse, ou comment une commande a cassé quelque chose il y a des semaines. Comment puis-je modifier ce paramètre ?
Réponses
Trop de publicités?Après de nombreuses itérations importantes et laides et des cas limites bizarres au cours des années, j'ai maintenant une section concise de mon .bashrc
consacré à ce sujet.
D'abord, vous devez commenter ou supprimer cette section de votre .bashrc
(par défaut pour Ubuntu). Si vous ne le faites pas, alors certains environnements (comme l'exécution de screen
sessions) tronquera toujours votre historique :
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
Deuxièmement, ajouter ceci au bas de votre fichier .bashrc :
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# http://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
Note : chaque commande est écrite immédiatement après avoir été exécutée, donc si vous collez accidentellement un mot de passe, vous ne pouvez pas juste " kill -9 %%
"pour éviter l'écriture de l'historique, vous devrez le supprimer manuellement.
Notez également que chaque session de bash chargera le fichier d'historique complet en mémoire, mais même si votre fichier d'historique atteint 10 Mo (ce qui prendra une heure et demie), vous ne pourrez pas le charger. longtemps, longtemps ) vous ne remarquerez pas beaucoup d'effet sur le temps de démarrage de votre bash.
Définir HISTSIZE
et HISTFILESIZE
dans .bashrc à une chaîne vide :
HISTSIZE=
HISTFILESIZE=
Sur bash 4.3 et plus vous pouvez également utiliser HISTSIZE=-1 HISTFILESIZE=-1
:
n. Setting HISTSIZE to a value less than zero causes the history list to be
unlimited (setting it 0 zero disables the history list).
o. Setting HISTFILESIZE to a value less than zero causes the history file size
to be unlimited (setting it to 0 causes the history file to be truncated
to zero size).
Dans le rôle de Jörg Beyer mentionné dans sa réponse , HISTSIZE
et HISTFILESIZE
sont essentiels.
En outre, vous devez définitivement vérifiez la variable environnementale HISTCONTROL
qui vous permet de faire des choses sympas comme ne pas stocker les commandes d'historique en double ( HISTCONTROL=erasedups
). Il ne sert à rien d'avoir un historique illimité si vous devez parcourir des centaines de lignes d'informations sur l'historique. cd ..
ou similaire.
Liens : ici et travailler avec l'historique de bash . La FAQ sur les variables bash est également à parcourir .
Il y a (au moins) deux variables env pertinentes ici :
- HISTSIZE : le nombre d'entrées dans le fichier d'historique
- HISTFILESIZE : le nombre de lignes dans le fichier d'historique
Je pense que nous pouvons convenir que le terme illimité est souvent la même chose que très grand (ou vous avez un stockage de fichiers illimité ?). Il suffit donc de définir des valeurs très élevées.
Vous feriez mieux d'acheter un cahier et d'écrire les choses que vous avez faites qui fonctionnent et qui sont bonnes. C'est plus rapide et plus simple que de feuilleter des rames de l'histoire de Bash.
Pour ce qui est de la construction de matériel, lisez les makefiles. Pour configurer les choses, utilisez le contrôle de version et commentez-les. Pour les tâches courantes, écrivez des scripts shell.
Je vous recommande de ne conserver que quelques jours d'historique. Après cela, vous ne pouvez pas être trop sûr que c'est le bon jeu de commandes.