Historique des commandes et insertion des éléments manquants d'une commande (touche Tab)

Très rapidement, la seule perspective de devoir entrer encore et encore la même commande devient désagréable.

Les utilisateurs de Linux ne sont pas les derniers à penser cela. Etant donné que vous pouvez enchaîner des commandes à l'invite du shell, une faute de frappe même mineure dans une double ligne de commande peut entraîner la nullité de toutes les valeurs entrées.

C'est pourquoi il y a une solution : il s'agit de l'historique des lignes de commande. En faisant défiler l'écran à l'aide des touches de direction haut et bas, vous pouvez retrouver bon nombre des commandes entrées précédemment (dont celles contenant des fautes de frappe).

Essayons cette fonction en utilisant de nouveau le fichier tennis.txt. A l'invite du shell, nous entrerons la première fois :

cat tnnis.txt
	  

Rien ne se passe, naturellement, puisqu'il n'y a pas de fichier du nom tnnis.txt. Pas de problème. Nous allons simplement utiliser la touche de direction haut pour rappeler la commande, puis la touche de direction gauche pour accéder à l'endroit où manque le "e". Insérez la lettre manquante et appuyez de nouveau sur Entrée.

Voilà ! Le contenu de tennis.txt s'affiche.

Par défaut, il est possible de stocker jusqu'à 500 commandes dans le fichier historique des lignes de commande bash.

TuyauExamen de la variable d'environnement
 

En entrant la commande env à l'invite du shell, nous pouvons voir la variable d'environnement qui gère la taille de l'historique des lignes de commande. La ligne HISTFILESIZE=500 indique le nombre de commandes que le shell bash stockera.

L'historique des lignes de commande est en réalité stocké dans un fichier appelé .bash_history, dans le répertoire de connexion. Il y a plusieurs façons de le lire : en utilisant pico, cat, less, more et d'autres commandes.

Attention cependant : le fichier peut être très long.

Lisons-le avec la commande more :

more .bash_history
	  

Pour avancer d'un écran, appuyez sur la barre d'espacement ; pour reculer d'un écran, appuyez sur B ; pour quitter, appuyez sur Q.

TuyauLocalisation d'une commande précédemment exécutée
 

Vous souhaitez rechercher une commande dans le fichier historique sans devoir continuer à appuyer sur les touches de direction ou "feuilleter" le fichier historique ? Utilisez grep, un utilitaire de recherche performant. Voici comment rechercher rapidement une commande précédemment utilisée : imaginons que vous recherchiez la commande cat tenn-quelque chose. Vous avez utilisé cette commande et pensez qu'elle se trouve probablement dans votre fichier historique. A l'invite du shell, tapez

history | grep tenn
        

Outre la commande que vous venez d'entrer, vous voyez également apparaître la commande recherchée car grep a recherché dans le fichier historique chaque occurrence contenant le mot "tenn". Pour plus d'informations sur grep, reportez-vous plus loin dans ce chapitre, à la section présentant les outils pouvant vous aider à lire des fichiers.

Un autre outil permettant de gagner du temps est celui ayant trait à l'achèvement de nom de commande. Si vous entrez une partie d'un fichier, d'une commande ou d'un chemin d'accès, appuyez sur la touche Tab ; le shell bash vous présente la portion restante du fichier/chemin d'accès ou émet un signal sonore. Si vous entendez un signal sonore, appuyez de nouveau sur la touche Tab pour obtenir une liste des fichiers/chemins d'accès correspondant à ce que vous avez entré.

Par exemple, si vous avez oublié la commande updatedb mais vous rappelez une portion de celle-ci, vous pouvez exécuter la commande su pour être connecté en tant que root ; ensuite, à l'invite du shell, entrez up, appuyez deux fois sur la touche Tab pour afficher une liste des commandes possibles, notamment updatedb et uptime. Si vous ajoutez la lettre "d" à up, puis appuyez de nouveau sur la touche Tab, le système complète le texte de la commande.

De cette manière, même si l'ordinateur est éteint en fin de journée, il n'est pas trop difficile de mettre à jour la base de données slocate : il y a de fortes chances pour que la commande soit stockée dans l'historique des lignes de commande ou puisse aboutir grâce à l'exécution de commande (tant que vous vous rappelez le début du nom de chemin d'accès de la commande).