GNU/Linux >> Tutoriels Linux >  >> Linux

Analyser l'historique de Bash sous Linux

Dans Bash, l'history La commande est la clé non seulement pour comprendre ce que vous avez fait pendant votre session shell, mais aussi pour la matière première des nouvelles commandes que vous souhaitez exécuter à l'avenir. History est particulièrement utile lorsque vous utilisez un serveur sans tête. Si vous n'avez pas de souris, vous ne pouvez pas facilement copier et coller la dernière moitié d'une commande complexe pour en exécuter une version légèrement modifiée, vous devez donc tout retaper - à moins que vous n'utilisiez history modificateurs.

Gardez l'historique hors de votre historique

Avant de discuter de l'historique, voici une astuce pour conserver l'history littéral entrées de votre historique.

Le problème avec l'utilisation de l'history commande pour revoir votre history c'est qu'il ajoute une entrée à votre history dossier. Ces entrées ne font pas qu'encombrer votre history , mais ils font également régresser chaque ligne "plus loin" par rapport à votre position actuelle.

$ cd example-project
$ ls
bin doc src
$ touch doc/LICENSE
$ history
102 cd example-project
103 ls
104 touch doc/LICENSE
105 history
$

Une cible en mouvement est difficile à suivre et difficile à atteindre, donc si vous prévoyez d'utiliser sérieusement votre history pour accélérer vos interactions Bash, ajoutez cette configuration à votre .bashrc fichier :

export HISTCONTROL=$HISTCONTROL:ignorespace

Cette configuration empêche toute commande précédée d'un espace d'être ajoutée à votre history Bash .

$ cd example-project
$ ls
bin doc src
$ touch doc/LICENSE
$   history
102 cd example-project
103 ls
104 touch doc/LICENSE
$

[ Cours en ligne gratuit :Présentation technique de Red Hat Enterprise Linux. ]

Événements de l'historique

La structure de base du shell history commence par une liste d'events . Un event est tout ce que vous avez entré dans le shell, suivi du Return ou Enter clé. Chaque event se voit attribuer un numéro d'index (un numéro de ligne), et vous pouvez afficher et rappeler des événements en utilisant des event designators .

Par exemple, pour rappeler un élément de ligne spécifique dans votre shell history , utilisez un point d'exclamation (! ) suivi immédiatement du numéro de l'history ligne :

$   history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src

Vous pouvez également vous référer aux commandes passées par rapport à leur position dans l'history référencement. Par exemple, pour exécuter une commande deux lignes dans le passé, considérez votre invite actuelle comme une plus grande que la dernière ligne de l'history , puis soustrayez le numéro de la ligne que vous souhaitez exécuter de votre numéro de ligne actuel. Dans cet exemple, ligne 103 est la ligne cible et 105 est l'invite actuelle (pour un delta de 105-103=2 ):

$   history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src

Vous pouvez enregistrer un caractère entier si vous souhaitez simplement réexécuter la dernière ligne. L'expression !! et !-1 sont synonymes :

$   history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src

Notez que la commande elle-même est répétée dans la sortie lorsque history est répété. Pour des raisons de brièveté et de clarté, une telle sortie est exclue des autres exemples de cet article.

Désignateurs de mots

Bash a des fonctionnalités pour vous aider à analyser votre history en utilisant des word designators , et des outils pour vous permettre de modifier les commandes de votre history . Il peut être utile de penser à votre shell history en tant que tableau indexé, ou même en tant qu'objet d'historique volumineux composé de nombreux éléments plus petits. Chaque mot sur chaque ligne de votre history est indexé, commençant à 0 (ce qui est généralement la commande, mais les commandes en plusieurs parties et les préfixes des variables d'environnement sont des exceptions notables). Vous pouvez accéder à chaque index en ajoutant deux-points (: ) à votre référence de ligne, suivi immédiatement du word designator .

Voici un exemple d'accès au premier mot :

$   history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src

Parce que saisir le premier argument est commun, le circonflexe (ou le "chapeau":^ ) est un alias pour :1 .

$ echo foo
$ !!^
foo

À l'autre extrémité du spectre, le dollar ($ ) signe représente l'argument final :

$ echo foo bar baz
$ echo !!$
baz

Gammes de mots

Vous n'avez pas à vous contenter d'un seul argument. Vous pouvez également extraire les plages d'un index. Tous les arguments sauf le zéro sont disponibles avec un astérisque (* ).

$ echo foo bar baz
$ touch !!*
$ ls
foo bar baz

C'est en fait un synonyme de 1-$ (c'est-à-dire du premier argument au dernier argument). Comme vous vous en doutez, vous pouvez définir arbitrairement votre plage en utilisant cette notation non abrégée. Cet exemple fait référence au deuxième au cinquième argument, en ignorant le premier et les deux derniers arguments :

$ cp foo a.sh spacer.sh rev.bin sync.py baz ~/dest
$ cd ~/dest
$ chmod ug+x !-2:2-5
$ ls -l --classify
a.sh*  baz  foo  rev.bin*  spacer.sh*  sync.py*

Si vous avez juste besoin d'exclure le dernier mot unique d'un index, vous pouvez fournir une plage sans terminaison :

$ cp foo a.sh spacer.sh ~/dest
$ cd ~/dest
$ chmod ug+x !-2:2-
$ ls -l --classify
a.sh*  foo  spacer.sh*

Utilisation de l'historique pour la vitesse et la précision

L'history La commande ne consiste pas toujours à réduire les pressions sur les touches. Vous pouvez utiliser votre history Bash pour éviter d'exclure accidentellement un fichier ou un dossier d'une opération importante ou de mal orthographier un nom de fichier. Familiarisez-vous avec l'history commande pour des interactions Bash plus robustes.

[ Voulez-vous essayer Red Hat Enterprise Linux ? Télécharge le maintenant gratuitement. ]


Linux
  1. Hivériser votre invite Bash sous Linux

  2. Comment effacer l'historique de la ligne de commande BASH sous Linux

  3. Comment effacer l'historique de Bash sous Linux

  4. La commande d'historique sous Linux expliquée en profondeur

  5. Comment effacer une commande spécifique de l'historique Bash sous Linux

Commande d'historique sous Linux (historique de bash)

Commande d'historique sous Linux avec des exemples

Comment éviter les entrées en double dans l'historique de Bash sous Linux

Comment activer l'horodatage dans l'historique de Bash sous Linux

Comment installer Mcfly sur Linux.

Comment effacer l'historique de Bash sous Linux et Mac