Coquille

Tirer le meilleur parti de l'histoire de Linux Bash

Tirer le meilleur parti de l'histoire de Linux Bash

Ligne de commande Linux - le terminal, comme tous les shells, conserve un historique des commandes exécutées dans le passé par un utilisateur. Cet historique est persistant et reste en mémoire même lorsque nous redémarrons notre système. Ces commandes stockées peuvent être rappelées et réutilisées par nous de la manière la plus optimale pour utiliser efficacement la fonction d'enregistrement de l'historique de la plupart des shells.

Le bash Linux est livré avec une commande très puissante appelée « history ». Cette commande est une commande bash intégrée, utilisée pour extraire les informations d'historique sur les commandes qui ont été exécutées par les utilisateurs Linux dans toutes les sessions précédentes. Dans ce tutoriel, nous allons vous permettre de tirer le meilleur parti de votre historique de shell en apprenant le bon usage de la commande history. Linux stocke l'historique des commandes d'un certain utilisateur dans un fichier ~/.bash_history par défaut.

Nous utiliserons l'application Terminal de Linux pour exécuter les commandes mentionnées dans ce tutoriel.

Affichage de l'historique complet

Un utilisateur peut afficher l'intégralité de l'historique de ses commandes shell à partir du fichier d'historique enregistré exclusivement pour cet utilisateur en utilisant la commande simple suivante :

$ historique

L'historique sera imprimé à l'écran dans le format par défaut suivant :

Dans l'image ci-dessus, vous pouvez voir une liste de toutes les commandes avec un numéro attribué à chacune d'elles. La commande numéro 1 correspond à la première commande que vous avez exécutée et la dernière commande numérotée représente la dernière commande que vous avez exécutée.

Si vous avez exécuté beaucoup de commandes depuis que vous utilisez le bash, vous remarquerez qu'il y aura des centaines voire des milliers de ces commandes affichées ici. Pour accéder à quelques commandes pertinentes, vous pouvez filtrer les résultats affichés par la fonction d'historique. Vous pouvez également personnaliser la commande history pour afficher un nombre spécifique de commandes pour vous.

Filtrage de la sortie de l'historique

Si vous souhaitez filtrer votre sortie d'historique en fonction d'un mot-clé spécifique que vous avez peut-être utilisé dans les commandes précédentes, vous pouvez utiliser la commande history comme suit :

$ histoire | grep [mot-clé]

Exemple: Dans cet exemple, je souhaite afficher uniquement les commandes ping que j'ai déjà exécutées dans le shell. Par conséquent, j'utiliserai la commande suivante :

$ histoire | grep ping

Vous pouvez voir que ma sortie n'affiche désormais que les commandes, y compris mon mot-clé de recherche "ping"

Affichage d'un certain nombre de commandes récentes

Vous pouvez également afficher un nombre spécifique de commandes, par exemple :

OU ALORS

N Nombre de commandes récentes

Vous pouvez afficher un nombre spécifique de commandes récemment exécutées via la commande suivante :

$ histoire | queue -n

Exemple:

Dans cet exemple, je souhaite afficher les 3 dernières commandes que j'ai exécutées, avec le mot clé 'ping' :

$ histoire | grep ping | queue -3

La sortie n'affiche que les 3 commandes ping récentes au lieu de tout l'historique

N Nombre de commandes les plus anciennes

Vous pouvez afficher un nombre spécifique des commandes d'exécution les plus anciennes via la commande suivante :

$ histoire | tête -n

Exemple:

Dans cet exemple, je souhaite afficher les 3 commandes les plus anciennes que j'ai exécutées, avec le mot clé 'ping' :

$ histoire | grep ping |tête -3

La sortie n'affiche que les 3 commandes ping les plus anciennes au lieu de tout l'historique

Répertorier toutes les commandes avec date et horodatage

Si vous souhaitez afficher l'historique de vos commandes avec la date et l'horodatage, veuillez utiliser la commande d'exportation suivante :

$ export HISTTIMEFORMAT="%F, %T"

Maintenant, lorsque vous souhaitez afficher l'historique, exécutez simplement la commande history pour voir la sortie au format suivant :

Veuillez noter que ce changement de format est temporaire et qu'il sera restauré au standard précédent lorsque vous fermerez la session.

Navigation dans les commandes de l'historique

Pendant que vous êtes sur la ligne de commande, vous pouvez parcourir les commandes précédemment exécutées et également rappeler certaines commandes récemment utilisées en fournissant un mot-clé.

Faire défiler les commandes

Vous pouvez utiliser les commandes clavier suivantes pour parcourir les commandes de l'historique

Flèche haut/Ctrl+PÀ l'aide de ces contrôles, vous pouvez afficher la commande précédente que vous avez utilisée. Vous pouvez appuyer plusieurs fois sur ces commandes pour revenir à une commande spécifique dans l'historique.
Flèche bas/Ctrl+NEn utilisant ces contrôles, vous pouvez afficher la prochaine commande que vous avez utilisée. Vous pouvez appuyer plusieurs fois sur ces commandes pour passer à une commande spécifique dans l'historique.
Alt+RSi vous éditez une commande, que vous avez extraite de l'historique, sur une ligne courante, vous pouvez utiliser ce contrôle pour revenir à la commande d'origine.

Rappel de commandes

Vous pouvez rappeler, exécuter ou choisir de ne pas exécuter une commande spécifique de l'historique, à l'aide des commandes suivantes :

Ctrl+RA l'aide de ce contrôle, vous pouvez rappeler une commande de l'historique en spécifiant une chaîne de recherche.
Ctrl+OEn utilisant ce contrôle, vous pouvez exécuter la commande que vous avez rappelée via Ctrl+R
Ctrl+GEn utilisant ce contrôle, vous pouvez quitter l'historique sans exécuter la commande que vous avez rappelée via Ctrl+R

Exemple:

Dans cet exemple, j'ai appuyé sur ctrl + R, puis j'ai fourni la chaîne de recherche 'ar'. L'historique affichait la commande 'arch'.

Lorsque j'ai exécuté la commande 'arch' en appuyant sur ctrl+O, elle a affiché l'architecture CPU de mon système :

Utiliser l'historique de Bash

La vraie magie de l'historique bash consiste à utiliser diverses commandes et à personnaliser la commande d'historique elle-même pour tirer le meilleur parti de la fonction d'historique :

Exécution de commandes à partir de l'historique

$ !#

Exemple:

Ici, j'exécute la commande numéro 95 à partir de mon historique :

$ !95

La sortie affiche le résultat de 'lscpu' qui était répertorié sous le numéro de commande 95 dans mon historique bash. Cette commande affiche les spécifications de mon processeur et de mon système d'exploitation.

$ !!

Exemple:

Ici vous pouvez voir que j'ai exécuté la commande 'arch'. En exécutant la commande mentionnée ci-dessus, je peux réexécuter la commande 'arch' pour afficher l'architecture de mon processeur comme suit :

$ ![mot-clé]

Exemple:

J'utiliserai la commande suivante pour réexécuter la dernière commande avec le mot-clé "dconf" :

$ !dconf

Vous pouvez reconfirmer dans l'image suivante qu'il s'agissait de la dernière commande dconf que j'avais exécutée.

Utilisation des arguments des commandes précédentes

Linux bash vous permet d'exécuter une nouvelle commande en utilisant les arguments de la commande précédente. C'est particulièrement utile lorsque vous voulez éviter de ressaisir des arguments longs ou compliqués. Vous pouvez utiliser la commande suivante à cette fin :

Utilisation du dernier argument de la commande précédente

$ [Commande] !$

La variable !$ contient le dernier argument de la commande précédente.

Exemple:

Dans cet exemple, je vais créer un fichier avec un nom long.

Nano [nomlongOfaFile]

Je vais ensuite le copier à un autre emplacement en évitant de retaper le nom long comme suit :

Cp !$ [destinationfolder]

Vous pouvez voir que j'ai pu copier un fichier sans retaper le nom du fichier en utilisant la variable !$

Utilisation du premier argument de la commande précédente

Parfois, seul le premier argument de la commande précédente est utile dans la commande actuelle.

Dans ce cas, vous pouvez utiliser la commande suivante :

$ [commande] !^

Exemple:

Dans l'exemple suivant, j'ai exécuté la commande ping en spécifiant le nom d'hôte et un nombre comme arguments. Maintenant, je veux utiliser le nom d'hôte (premier argument) plutôt que 2 (le dernier argument) dans ma nouvelle commande. J'utiliserai la commande suivante à cet effet :

$ ping !^

Utiliser tous les arguments de la commande précédente

Vous pouvez également utiliser tous les arguments de la commande précédente en utilisant la commande suivante :

$ !*

Utilisation d'un argument d'une commande d'historique

Vous pouvez également utiliser les commandes de votre historique en réutilisant leurs arguments. Utilisez la commande suivante à cette fin :

$ [commande] ![mot-clé]:#

Exemple:

$ écho !cp:2

Cette commande prendra les paramètres suivants :

commande : echo

Mot-clé:cp

#:2(deuxième argument de la commande)

La sortie suivante montre le 2ème argument de la dernière commande cp que j'ai exécutée :

Utilisation de tous les arguments d'une commande d'historique

La commande suivante stockera tous les arguments de la commande d'historique recherchée et les utilisera dans la commande actuelle :

$ commande ![mot-clé]:*

Exemple:

Dans la commande suivante, j'imprimerai tous les arguments de la dernière commande cp en utilisant la commande echo comme suit :

$ écho ![cp] :*

Modification et exécution des commandes précédentes

Si vous avez mal saisi une commande ou si vous souhaitez réexécuter une commande en modifiant du texte ; voici la marche à suivre :

$ ^[texte précédent]^[texte nouveau]

Exemple:

J'ai mal tapé la commande 'grep' comme 'gep' et maintenant je veux exécuter la commande en corrigeant le texte :

$ ^gep^grep

Vous pouvez maintenant voir que ma commande corrigée s'exécutera correctement comme suit :

Effacer l'historique

Afin d'effacer l'historique de votre bash, utilisez la commande suivante :

$ historique -c

Cette commande effacera votre historique et supprimera tout le contenu du fichier ~/.bash_history

Dans ce didacticiel, nous avons appris que même si l'impression de l'intégralité du contenu de l'historique n'est peut-être pas très utile, l'optimisation de la sortie via les commandes que nous avons apprises change vraiment la donne. Pratiquer avec cet article vous permettra d'afficher les commandes exactes que vous souhaitez, de réexécuter et de réutiliser ces commandes, et également d'utiliser les arguments des commandes précédemment exécutées pour en optimiser les nouvelles.

Top 10 des jeux à jouer sur Ubuntu
La plate-forme Windows a été l'une des plates-formes dominantes pour les jeux en raison du pourcentage énorme de jeux qui se développent aujourd'hui p...
5 meilleurs jeux d'arcade pour Linux
De nos jours, les ordinateurs sont des machines sérieuses utilisées pour les jeux. Si vous ne pouvez pas obtenir le nouveau score élevé, vous saurez c...
Bataille pour Wesnoth 1.13.6 Développement publié
Bataille pour Wesnoth 1.13.6 publiée le mois dernier, est la sixième version de développement de la 1.13.x series et il apporte un certain nombre d'am...