GNU/Linux >> Tutoriels Linux >  >> Linux

Comment gérer votre historique de commandes Linux

Vous savez probablement utiliser les touches fléchées haut et bas pour faire défiler votre historique Bash, mais saviez-vous que l'historique Bash ne se limite pas à répéter des commandes ? Il y a beaucoup plus dans l'histoire. Ou, cela devrait-il être beaucoup plus à l'histoire ? Dans les deux cas, la commande d'historique est l'une de ces commandes obscures qui sont puissantes et pratiques à connaître au moins à un niveau de base. Cet article démystifiera l'historique de Bash pour en faire un outil d'administration système plus convivial.

Le fond

Dans Bash, votre historique de commandes est stocké dans un fichier (.bash_history ) dans votre répertoire personnel. Le début (.) rend le fichier masqué de la vue normale. Pour le voir, émettez le ls -a commande.

$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc

Vous pouvez opérer sur le fichier .bash_history comme vous le feriez avec n'importe quel autre fichier texte ASCII brut.

Les trois variables d'environnement associées dont vous devez être conscient sont HISTFILE, HISTFILESIZE et HISTSIZE.

  • HISTFILE—/home//.bash_history
  • HISTFILESIZE—1000
  • HISTSIZE—1 000

La variable HISTFILE contient le nom et l'emplacement de votre fichier d'historique Bash. HISTFILESIZE est le nombre de commandes pouvant être stockées dans le .bash_history dossier. HISTSIZE est le nombre de commandes mises en cache. Une fois que vous atteignez 1000 commandes, les commandes les plus anciennes seront supprimées au fur et à mesure que les nouvelles seront enregistrées.

$ echo $HISTSIZE
1000
$ echo $HISTFILESIZE
1000
$ echo $HISTFILE
/home/khess/.bash_history

Ces variables et tailles sont attribuées par défaut à chaque utilisateur, y compris root. Si vous souhaitez modifier ces variables, modifiez le fichier .bashrc dans votre répertoire personnel. Par exemple, si vous souhaitez modifier les variables de taille en 500 commandes, modifiez le .bashrc fichier et utilisez les entrées suivantes :

export HISTSIZE=500
export HISTFILESIZE=500

Pour utiliser les nouvelles valeurs sans vous déconnecter et vous reconnecter, vous pouvez exécuter le .bashrc fichier.

$ . ~/.bashrc

Vos valeurs sont maintenant actives pour votre shell actuel et tous les sous-shells.

$ echo $HISTSIZE
500
$ echo $HISTFILESIZE
500

Si vous ne souhaitez pas que votre historique conserve les commandes en double, vous pouvez demander à votre historique d'ignorer les entrées en double en ajoutant ce qui suit à votre fichier .bashrc :

export HISTCONTROL=ignoredups

Le problème

Le problème avec l'historique de Bash est qu'il n'est pas écrit dans le .bash_history fichier jusqu'à ce que vous vous déconnectiez. Cela rend impossible l'utilisation de la commande history pour les scripts. Par exemple, supposons que vous enseignez un cours Linux et que vous souhaitiez vérifier si les élèves ont exécuté une commande particulière pour copier leurs fichiers sur un lecteur externe monté. Si l'élève reste connecté au système, vous ne pourrez pas déterminer si la copie a été effectuée, car votre script utilise son fichier d'historique (/home/student/.bash_history) pour vérifier si la commande a été exécutée.

La solution

Pour contourner cette fonctionnalité, utilisez la commande write option pour l'history commande. Dans le cadre de l'instruction en classe, vous demanderez aux élèves d'exécuter cette commande pour enregistrer leur historique même s'ils ne se déconnectent pas.

$ history -w

Cela écrit tout l'historique des commandes de la session en cours dans le HISTFILE. Et maintenant, votre script de vérification peut facilement trouver si la commande a été exécutée. Vous devez également être sûr que l'élève exécutera la commande d'historique.

[Consultez la leçon d'histoire de Seth Kenlon : Rendez l'historique de Bash plus utile grâce à ces conseils]

Un autre problème

Étant donné que HISTSIZE et HISTFILESIZE sont relativement volumineux (1 000 commandes), il est possible que l'étudiant ait exécuté la commande auparavant. Vous pouvez ajouter l'entrée export HISTCONTROL=ignoredups dans leur .bashrc, mais cela n'aidera pas si l'étudiant a exécuté une commande similaire il y a deux jours, car le fichier n'affichera qu'une seule commande.

La solution à ce problème

Pour contourner ce problème, vous devez effacer l'historique de l'étudiant lors de la connexion. Modifiez à nouveau le fichier .bashrc et ajoutez-y la commande suivante.

history -c

Cette commande efface leur historique à chaque connexion et supprime le problème de récupération d'une commande précédemment exécutée. Vous n'avez pas à vous soucier de récupérer une commande des sessions précédentes car le système déconnecte les utilisateurs inactifs après une période de temps spécifiée si vous définissez la limite de temps d'inactivité dans /etc/profile . Modifiez le /etc/profile fichier et ajoutez l'entrée suivante.

TMOUT=300

La variable TMOUT utilise un certain nombre de secondes de temps d'inactivité. Dans ce cas, 300 secondes correspondent à cinq minutes. Vous pouvez définir cette valeur sur n'importe quel nombre de secondes. Cette valeur prendra effet à la prochaine connexion pour tous utilisateurs. Pour définir des valeurs de délai d'expiration individuelles, utilisez .bashrc mais sachez que les utilisateurs peuvent modifier ce fichier à volonté.

[ Télécharger maintenant :Un guide de l'administrateur système sur les scripts Bash. ] 

Récapitulez

L'historique de Bash est un outil pratique, mais il peut être frustrant si vous n'êtes pas familier avec ses options et ses bizarreries. Il y a beaucoup plus d'options disponibles dans l'histoire. Consultez les pages de manuel pour plus d'informations. Et rappelez-vous que chaque commande que vous entrez est une histoire en devenir.


Linux
  1. Comment utiliser la commande history sous Linux

  2. Comment surveiller votre serveur Linux ?

  3. Comment effacer l'historique de Bash sous Linux

  4. Comment utiliser la commande Su sous Linux

  5. Comment enregistrer l'historique des commandes des utilisateurs sélectionnés sous Linux

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

Comment supprimer une commande de l'historique sous Linux

Comment vérifier l'historique des commandes Linux par dates

3 conseils utiles sur l'utilisation de la commande History sous Linux

Comment utiliser Screen Command sur Linux pour gérer les terminaux

Comment vérifier la disponibilité de votre serveur Linux