453 votes

Historique illimité de Bash

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 ?

560voto

fotinakis Points 804

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.

416voto

Lri Points 8342

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).

52voto

simont Points 11362

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 .

31voto

Jörg Beyer Points 2123

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.

-3voto

Ed Heal Points 24309

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X