GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation de la fonctionnalité d'historique sur Bash Shell sur le serveur Ubuntu 16.04 LTS

Le Bash (bourne again shell) est un shell populaire utilisé sur la plupart des systèmes de type UNIX. Bash est écrit par Brian Fox en tant que projet GNU. Il intègre des fonctionnalités du shell Bourne, du shell C et du shell Korn. Les utilisateurs qui passent leur temps sur la ligne de commande à l'aide du shell bash aimeront souvent répéter les commandes qui ont été exécutées dans le passé. La fonction d'historique du shell Bash aide à mémoriser les commandes récentes et à les réutiliser ultérieurement ; économisant ainsi du temps pour retaper. Commençons!

Historique des annonces

Quand historique commande utilisée sans argument passé, elle affichera les commandes récentes utilisées avec les numéros de ligne correspondants.

$ history 

La sortie ressemblera à ce qui suit :

Liste des "n" dernières commandes exécutées

En utilisant "l'historique ", les dernières "n" commandes exécutées peuvent être récupérées comme suit :

$ history 7 

Exécuter une commande spécifique à partir de l'historique

Il est possible d'exécuter une commande spécifique depuis l'historique. L'utilisation des points d'exclamation suivis du numéro de la commande répertoriée par l'historique fera la magie. Par exemple, la commande suivante relance la commande portant le numéro 7 (du –sh) comme suit :

$ !7 

Exécuter à nouveau une commande précédente

Dans de nombreuses situations, nous devons exécuter une commande encore et encore. Les commandes ci-dessous feront ce travail en exécutant la commande précédente utilisée.

$ !!
Or
$ !-1  

Rechercher les commandes

La sortie générée par l'historique peut être utilisée de plusieurs manières. Par exemple, la sortie de l'historique peut être transmise à - more, tail, grep afin de récupérer la sortie souhaitée.

Recherchez "free" dans l'historique des commandes :$ history | grep free Pour afficher uniquement les 4 dernières commandes :

$ history | tail -4 

La commande more permet d'afficher la sortie dans le terminal une page à la fois :

$ history | more   

Exécuter une commande précédente qui commence par un mot spécifique

L'utilisation d'un point d'exclamation suivi du mot spécifique de la commande fera la magie !. Supposons que l'utilisateur ait exécuté – « free –h ». Taper ‘!free’ relancera la commande ‘free –h’.

Effacer l'historique

Il est possible d'effacer l'historique avec la commande ci-dessous : ​ $ history -c Ceci efface toutes les commandes dans la mémoire du shell bash pour la session utilisateur en cours.

Alias ​​utiles

Un alias est un nom court donné à une commande longue et complexe. Alias ​​de caractère simple vers la commande d'historique.

$ alias 'h=history' 

L'alias "ht" ci-dessous affiche les dix commandes les plus récentes -

$ alias 'ht=history | tail' 

L'alias ci-dessous "hg" permet d'afficher toutes les commandes qui correspondent à la chaîne donnée -

$ alias 'hg=history | grep' 

Ajoutez ces alias dans le fichier "~/.bashrc" pour les rendre persistants à chaque démarrage du système.

Paramètres de configuration de l'historique

Variable d'interpréteur de commandes bash Description
HISTFILE ​Emplacement du fichier physique où l'historique stocke les commandes. Le shell bash est par défaut "~/.bash_history". Le réglage "/dev/null" désactivera l'enregistrement de l'historique.
HISTFILESIZE ​Fait référence à un certain nombre de commandes à stocker dans le fichier historique.
HISTSIZE ​Fait référence à un certain nombre de commandes stockées en mémoire dans une liste d'historique. Définir une valeur de 0 (zéro) désactivera l'enregistrement de l'historique.
HISTIGNORE ​Parfois, il est nécessaire de ne pas stocker certains types de commandes. Cette variable prend une liste de modèles séparés par deux-points. Par exemple, la configuration ci-dessous crée un historique pour ne pas enregistrer les commandes :ls, top et clear.

HISTIGNORE="ls*:top:clear" 
HISTTIMEFORMAT ​Cette variable HISTTIMEFORMAT permet d'afficher l'historique avec horodatage.

Avoir HISTTIMEFORMAT défini sur '%F %T  ' donne les résultats ci-dessous.​ Il s'agit d'une commande très utile pour les administrateurs système.
HISTCONTROL ​HISTCONTROL aide à ignorer les doublons. HISTCONTROL peut être défini avec des valeurs : erasedups, ignorespace, ignoreups ou ignoreboth. (deux points séparés)Voici quelques exemples : HISTCONTROL=ignoredups:erasedups
HISTCONTROL=ignorebothSupposons que les entrées de l'historique contiennent des doublons comme suit ("top" et "ls –latr" sont répétés consécutivement)​Si HISTCONTROL a été défini sur "ignoredups ” alors l'historique se serait affiché comme ci-dessous :

Paramètres de configuration avancés

Bash conserve la liste des commandes en interne dans la mémoire et elles sont écrites dans le fichier configuré (la valeur par défaut étant .bash_history) à la sortie. Lorsque l'utilisateur quitte le shell, les dernières lignes $HISTSIZE sont copiées de la liste d'historique vers le fichier défini sur $HISTFILE. Si un utilisateur est connecté avec de nombreuses sessions bash, seul le dernier à quitter aura son historique enregistré. Dans le cas où l'historique des commandes doit être écrit immédiatement au fur et à mesure qu'une commande est exécutée dans une session utilisateur, la configuration suivante peut être définie dans le fichier ".bashrc".

$ shopt -s histappend $ PROMPT_COMMAND=”history -a; historique -c ; history -r" "shopt –s histappend" active l'ajout au lieu d'écraser l'historique.
"history -a" est utilisé pour ajouter les commandes d'historique en mémoire à ~/.bash_history
"history -c" est utilisé pour effacer les commandes d'historique en mémoire
"history -r" est utilisé pour lire les commandes d'historique de ~/.bash_history vers la mémoire
Un fichier "~/.bashrc" typique avec un paramètre de configuration lié à l'historique sera apparaissent comme ci-dessous :# contrôle la taille des commandes à enregistrer dans la mémoire
HISTSIZE=2000# contrôle la taille des commandes à stocker dans le fichier
HISTFILESIZE=10000

# emplacement du fichier physique où les commandes sont écrites
HISTFILE=/var/users/rjujare/.bash_history

#Format à des fins d'enregistrement et d'affichage :inclusion de l'horodatage
HISTTIMEFORMAT='%F %T ‘

# ignorer les commandes courantes comme ls
HISTIGNORE="ls:id:uname:clear:top"

# ignorer les commandes en double et les commandes commençant par un espace
HISTCONTROL=ignoreboth
# ajouter, ne pas écraser l'historique
shopt -s histappend
PROMPT_COMMAND=”history -a ; historique -c ; historique -r"

Comment enregistrer la configuration ?

Ouvrez le fichier ~/.bashrc avec votre éditeur préféré pour modifier les paramètres. Lorsque les modifications sont terminées, enregistrez le fichier et quittez. Afin d'obtenir l'effet de modification, sourcez le fichier à l'aide de la commande "source" comme suit :

$ source ~/.bashrc   

Conclusion

Le shell Bash est livré avec de nombreuses fonctionnalités utiles et l'un d'eux est l'histoire. Ces fonctionnalités améliorent également considérablement la productivité des administrateurs et des utilisateurs réguliers. N'oubliez pas de partager vos propres expériences avec l'histoire !


Linux
  1. Comment effacer l'historique de Bash sous Linux

  2. Comment faire en sorte que la saisie anticipée s'applique à la recherche dans l'historique de Bash (ctrl-r) ?

  3. Diviser la sortie de la commande par colonnes à l'aide de Bash ?

  4. Script bash :utilisation de la commande de script d'un script bash pour la journalisation d'une session

  5. Comment exécuter une commande plusieurs fois à l'aide du shell bash ?

Comment mettre à niveau Ubuntu 16.04 LTS vers 20.04 LTS à l'aide du terminal de commande

Commande pour installer fish shell sur Ubuntu 20.04 LTS

Mettre à niveau Ubuntu 20.04 vers 22.04 LTS Jammy à l'aide de la commande ou de l'interface graphique

Comment installer TeamViewer sur Ubuntu 20.04 LTS

Comment installer Wine sur Ubuntu 22.04 LTS

Installation de Fish Shell sur Ubuntu sous Windows 10