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 :
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.
 | Examen 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 :
Pour avancer d'un écran, appuyez sur la barre
d'espacement ; pour reculer d'un écran,
appuyez sur B ; pour quitter, appuyez sur
Q.
 | Localisation 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, entrez
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 d'un
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).