Contrôler votre historique de commandes

Une des fonctions couramment utilisée avec l'interpréteur de commandes Bash est l'historique de commandes : par une simple pression sur la touche fléchée "Haut" vous retrouvez les commandes lancées précédemment, avec leurs options. Vous pouvez éviter de fastidieuses saisies, limiter les erreurs et être plus efficace d'un manière générale.

Ce qui est parfois moins connu est l'utilisation de la commande history, qui affiche l'intégralité de commandes sauvegardées (500 lignes par défaut). Cet historique n'est toutefois pas parfait, entre autre exemple aucune date ou heure n'est indiquée.

Cela se règle assez facilement en déclarant une variable dans votre fichier ~/.profile :

export HISTTIMEFORMAT='%F %T '

Une fois le fichier enregistré, vous pouvez appliquer ce nouveau paramètre dans votre session :

source ~/.profile

Et la commande history vous donnera maintenant la date et l'heure pour chaque entrée de votre historique.

Mais dans certaines situations vous ne souhaitez pas que certaines commandes soit enregistrées. L'exemple le plus évident est lors de l'utilisation de commandes intégrant un mot de passe en clair (mysql, smbclient ou testsaslauthd entre autre). Une autre option peut être ajoutée à votre fichier .profile pour déclarer des exceptions :

export HISTIGNORE="mysql *:smbclient *:testsaslauthd *"

Toute ligne de commande débutant par une des commandes listées suivies d'un espace et d'arguments ne sera pas inclue dans votre historique.

Il reste quelques rares cas où vous souhaitez qu'une commande soit ignorée, mais que vous n'avez pas définie à l'avance. Bash propose alors une option supplémentaire adaptée à cette situation :

export HISTCONTROL=ignorespace

Toute commande débutant par un espace sera alors ignorée dans l'historique, sans que cela interfère lors de l'exécution.

Bash dispose d'autres options liées à l'historique de commandes, que vous pouvez trouver dans la page de manuel correspondante.

publié le 29 janvier 2016