Le shell Linux conserve un historique des commandes qu'il exécute, et vous pouvez le rechercher pour répéter les commandes que vous avez exécutées dans le passé. Une fois que vous avez compris la commande Linux history et comment l'utiliser, peut augmenter considérablement votre productivité.
Manipuler l'historique
Quoi George Santayana a dit que le célèbre, “Ceux qui ne peuvent pas se souvenir du passé sont condamnés à le répéter”. Malheureusement, fr Linux, si tu ne te souviens pas du passé, je ne peux pas le répéter, même si tu veux.
C'est alors que Linux history
La commande est utile. Il vous permet de revoir et de répéter vos commandes précédentes. Ceci n'est pas destiné à promouvoir la paresse ou à gagner du temps.; il y a aussi un facteur d'efficacité (et précision) en jeu. Plus une commande est longue et compliquée, plus il sera difficile de s'en souvenir et de l'écrire sans se tromper. Il existe deux types d'erreurs: un qui empêche la commande de fonctionner et un qui permet à la commande de fonctionner, mais ça me fait faire quelque chose d'inattendu.
Les history
la commande élimine ces problèmes. Comme la plupart des commandes Linux, il y a plus que tu ne le penses. Malgré cela, si vous apprenez à utiliser le history
commander, peut améliorer votre utilisation de la ligne de commande Linux, tous les jours. C'est un bon investissement de votre temps. Il y a de bien meilleures façons d'utiliser history
commande que d'appuyer simplement sur la flèche vers le haut à plusieurs reprises.
La maîtrise de l'histoire
Dans sa forme la plus simple, vous pouvez utiliser le history
commande en tapant simplement son nom:
l'histoire
La liste des commandes précédemment utilisées est écrite dans la fenêtre du terminal.
Les commandes sont numérotées, avec le plus récemment utilisé (ceux avec les nombres les plus élevés) à la fin de la liste.
Pour voir un certain nombre de commandes, vous pouvez passer un numéro à history
sur la ligne de commande. Par exemple, pour voir les dernières 10 commandes que vous avez utilisées, écris ce qui suit:
l'histoire 10
Vous pouvez obtenir le même résultat si vous canalisez history
à travers de tail
commander. Pour le faire, écris ce qui suit:
l'histoire | queue -n 10
EN RELATION: Comment utiliser Pipes sur Linux
Commandes répétées
Si vous souhaitez réutiliser une commande de l'historique, écrire un point d'exclamation (!) Et le numéro de la commande sans espace au milieu.
Par exemple, pour répéter le numéro de commande 37, vous devez taper cette commande:
!37
Pour répéter la dernière commande, écrire deux points d'exclamation, de nouveau, sans espaces:
!!
Cela peut être utile lorsque vous émettez une commande et oubliez d'utiliser sudo
. Écrit sudo
, un espace, doubles points d'exclamation puis appuyez sur Entrée.
Pour l'exemple suivant, nous écrivons une commande qui a besoin sudo
. Au lieu de réécrire toute la ligne, nous pouvons enregistrer un tas de frappes et simplement taper sudo !!
, Comme indiqué ci-dessous:
mv ./my_script.sh /usr/local/bin/
sudo !!
Pour cela, vous pouvez taper le numéro correspondant dans la liste pour répéter une commande ou utiliser les doubles points d'exclamation pour répéter la dernière commande que vous avez utilisée. Malgré cela, Que faire si vous voulez répéter la cinquième ou la huitième commande?
Vous pouvez utiliser un point d'exclamation, un tiret (-) et le numéro de toute commande précédente (de nouveau, sans espaces) le répéter.
Pour répéter la treizième commande ci-dessus, vous devez écrire ce qui suit:
!-13
Rechercher des commandes par chaîne
Pour répéter la dernière commande qui commence par une chaîne particulière, vous pouvez taper un point d'exclamation, puis la chaîne sans espaces, puis appuyez sur Entrée.
Par exemple, pour répéter la dernière commande qui a commencé par sudo
, écrirais-tu cette commande:
!sudo
Malgré cela, il y a un élément de danger dans ce. Si la dernière commande qui a commencé par sudo
ce n'est pas qui vous pensez que c'est, vous exécuterez la mauvaise commande.
Malgré cela, fournir un filet de sécurité, vous pouvez utiliser le :p
(imprimer) modificateur, comme il est montré dans ce qui suit:
!sudo:p
Cela indique history
pour imprimer la commande dans la fenêtre du terminal, au lieu de l'exécuter. Cela vous permet de visualiser la commande avant de l'utiliser.. Si c'est la commande que tu veux, appuyez sur la flèche vers le haut, puis appuyez sur Entrée pour l'utiliser.
Si vous voulez trouver une commande qui contient une chaîne particulière, vous pouvez utiliser un point d'exclamation et un point d'interrogation.
Par exemple, pour rechercher et exécuter la première commande correspondante qui contient le mot “alias”, vous devez taper cette commande:
!?alias
cela trouvera toutes les commandes qui contiennent la chaîne “alias”, peu importe où il apparaît dans la chaîne.
Recherche interactive
Une recherche interactive vous permet de parcourir une liste de commandes correspondantes et de répéter celle que vous voulez.
Appuyez simplement sur Ctrl + r pour lancer la recherche.
Pendant que vous tapez la piste de recherche, la première commande correspondante apparaîtra. Les lettres que vous tapez apparaissent entre le backtick (`) et l'apostrophe ('). Les commandes correspondantes se mettent à jour au fur et à mesure que vous tapez chaque lettre.
Chaque fois que vous appuyez sur Ctrl + r, regarde en arrière pour la prochaine commande correspondante, qui apparaît dans la fenêtre du terminal.
Quand j'appuie sur Entrée, la commande affichée sera exécutée.
Pour éditer une commande avant de l'exécuter, appuyez sur la touche fléchée gauche ou droite.
La commande apparaît sur la ligne de commande et vous pouvez la modifier.
Vous pouvez utiliser d'autres outils Linux pour rechercher la liste de l'historique. Par exemple, pour canaliser la sortie de history
Dans grep
Oui rechercher des commandes contenant la chaîne “Alias” vous pouvez utiliser cette commande:
l'histoire | alias grep
Modifier la dernière commande
Si vous devez corriger une faute de frappe, puis répétez la commande, vous pouvez utiliser caret (^) pour le modifier. C'est une excellente astuce pour avoir dans votre manche chaque fois que vous orthographiez mal une commande ou que vous souhaitez en relancer une avec une option ou un paramètre de ligne de commande différent.
Pour l'utiliser, scribe (sans espaces) un curseur, le texte que vous souhaitez remplacer, un autre curseur, le texte par lequel vous voulez le remplacer, un autre caret, puis appuyez sur Entrée.
Par exemple, supposons que vous tapiez la commande suivante, saisie accidentelle “shhd” au lieu de “sshd”:
sudo systemctl démarrer shhd
Vous pouvez facilement corriger cela en tapant ce qui suit:
^shhd^sshd^
La commande est exécutée avec “shhd” fixé à “sshd”.
Supprimer des commandes de la liste d'historique
De plus, vous pouvez supprimer des commandes de la liste d'historique avec le -d
(supprimer) option. Il n'y a aucune raison de garder votre commande mal orthographiée dans la liste de l'historique.
Vous pouvez utiliser grep
pour le trouver, transmettez votre numéro à history
avec lui -d
possibilité de le supprimer, puis recherchez à nouveau pour vous assurer qu'il a disparu:
l'histoire | grep chhd
histoire -d 83
l'histoire | grep chhd
Vous pouvez également passer une série de commandes au -d
option. Pour supprimer toutes les entrées de la liste des 22 une 32 (compris), écrire cette commande:
histoire -d 22 32
Pour supprimer uniquement les cinq dernières commandes, tu peux écrire un nombre négatif, Donc:
histoire -d -5
Mise à jour manuelle du fichier journal
Lorsque vous vous connectez ou ouvrez une session de terminal, la liste d'historique est lue à partir du fichier d'historique. En bas, le fichier d'archive par défaut est .bash_history
.
Toutes les modifications que vous apportez à la session en cours de la fenêtre du terminal ne sont écrites dans le fichier journal que lorsque vous fermez la fenêtre du terminal ou que vous vous déconnectez.
Supposons que vous souhaitiez ouvrir une autre fenêtre de terminal pour accéder à la liste complète de l'historique, y compris les commandes que vous avez tapées dans la première fenêtre de terminal. Les -a
L'option (tout) vous permet de le faire dans la première fenêtre de terminal avant d'ouvrir la seconde.
Pour l'utiliser, écris ce qui suit:
histoire -a
Les commandes sont écrites en silence dans le fichier d'archive.
Si vous souhaitez écrire toutes les modifications de la liste d'historique dans le fichier d'historique (si vous avez supprimé d'anciennes commandes, par exemple), vous pouvez utiliser le -w
(Écrire) option, Donc:
histoire -w
Supprimer la liste d'historique
Pour supprimer toutes les commandes de la liste d'historique, vous pouvez utiliser le -c
(supprimer) option, de la manière suivante:
histoire -c
Si en même temps vous voulez forcer ces changements dans le fichier journal, utiliser el -w
option, Donc:
histoire -w
Sécurité et historique des fichiers
Si vous utilisez une application qui vous oblige à saisir des informations confidentielles (comme mots de passe) sur la ligne de commande, rappelez-vous que cela sera également enregistré dans le fichier historique. Si vous ne souhaitez pas que certaines informations soient enregistrées, vous pouvez utiliser la structure de commande suivante pour la supprimer immédiatement de la liste de l'historique:
application-spéciale mon-mot-de-passe-secret;histoire -d $(l'histoire 1)
l'histoire 5
Cette structure comprend deux commandes séparées par des points-virgules (;). Analysons cela:
- application spéciale: Le nom du programme que nous utilisons.
- mon-mot-de-passe-secret: Le mot de passe secret que nous devons fournir pour l'application sur la ligne de commande. C'est la fin de la commande un.
- histoire -d: Au commandement deux, nous invoquons le
-d
(supprimer) possibilité dehistory
. Ce que nous allons supprimer est dans la partie suivante de la commande. - $ (enregistrer 1): Cela utilise une substitution de commande. La partie de la commande contenue dans le
$()
s'exécute sur une sous-couche. Le résultat de cette exécution est publié sous forme de texte dans la commande d'origine. Leshistory 1
commande renvoie la commande précédente. Pour cela, vous pouvez considérer la deuxième commande comme l’historique -d “dernière commande ici”.
Vous pouvez utiliser le history 5
commande pour s'assurer que la commande contenant le mot de passe a été supprimée de la liste d'historique.
Malgré cela, il y a un moyen encore plus simple de le faire. Parce que Bash ignore les lignes qui commencent par un espace par défaut, n’inclure qu’un espace au début de la ligne, de la manière suivante:
special-app autre mot de passe
l'histoire 5
la commande avec le mot de passe n’est pas ajoutée à la liste de l’historique. La raison pour laquelle cette astuce fonctionne est contenue dans le .bashrc
Record.
Le fichier .bashrc
Les .bashrc
le fichier s’exécute chaque fois que vous vous connectez ou ouvrez une fenêtre de terminal. Il contient également des valeurs qui contrôlent le comportement du history
commander. Modifions ce fichier avec gedit
.
Écrivez ce qui suit:
gedit .bashrc
Près du haut du fichier, vous verrez deux entrées:
HISTSIZE
: Le nombre maximum d'entrées que la liste d'historique peut contenir.HISTFILESIZE
: La limite du nombre de lignes qu'une archive peut contenir.
Ces deux valeurs interagissent des manières suivantes:
- Lorsque vous vous connectez ou démarrez une session de fenêtre de terminal, l'historique est complété à partir du
.bash_history
Record. - Lorsque vous fermez une fenêtre de terminal, le nombre maximum de commandes défini dans
HISTSIZE
sont stockés dans le.bash_history
Record. - Si il
histappend
L'option shell est activée, les commandes sont ajoutées à.bash_history
. Ethistappend
n'est pas configuré,.bash_history
il est écrasé. - Après avoir enregistré les commandes de la liste d'historique dans
.bash_history
, le fichier journal est tronqué pour ne pas contenir plus deHISTFILESIZE
lignes.
Également près du haut du fichier, vous verrez une entrée pour le HISTCONTROL
valeur.
Vous pouvez déterminer cette valeur pour effectuer l'une des opérations suivantes:
ignorespaces:
Les lignes commençant par un espace ne sont pas ajoutées à la liste d'historique.ignoredups:
Les commandes en double ne sont pas ajoutées au fichier historique.ignoreboth:
Activer les deux ci-dessus.
De plus, vous pouvez répertorier les commandes spécifiques que vous ne souhaitez pas ajouter à votre liste d'historique. Séparez-les par deux points (:) et les mettre entre guillemets ("...").
Je suivrais cette structure pour ajouter une ligne à votre .bashrc
fichier et remplacez les commandes que vous souhaitez ignorer:
exporter HISTIGNORE="ls:l'histoire"
Utiliser des horodatages
Si vous souhaitez ajouter des horodatages à la liste d'historique, vous pouvez utiliser le HISTIMEFORMAT
réglage. Pour le faire, ajoutez simplement une ligne comme la suivante à votre .bashrc
Record:
exporter HISTTIMEFORMAT="%c "
Notez qu'il y a un espace avant les guillemets de fermeture. Cela empêche l'horodatage de correspondre aux commandes de la liste de commandes.
Maintenant, lorsque vous exécutez la commande history, voir la date et l'heure. Notez que toutes les commandes qui étaient dans la liste de l'historique avant d'ajouter les horodatages seront marquées avec la date et l'heure de la première commande qui reçoit un horodatage. Dans cet exemple ci-dessous, c'était la commande 118.
C'est un horodatage très long. Malgré cela, vous pouvez utiliser des jetons autres que %c
pour l'affiner. Les autres jetons que vous pouvez utiliser sont:
%d
: Jour%m
: Mes%y
: Année%H
: Heure%M
: Minutes%S
: Secondes%F
: Date complète (format année-mois-date)%T
: Heure (format de l'heure: minutes: secondes)%c
: Date et heure complètes (formats jour-date-mois-année et heure: minutes: secondes)
Expérimentons et utilisons quelques jetons différents:
exporter HISTTIMEFORMAT="%d n%m %T "
La sortie utilise le jour, le mois et l'heure.
Malgré cela, si on élimine le jour et le mois, il n'affichera que l'heure.
Toutes les modifications que vous apportez à HISTIMEFORMAT
appliquer à toute la liste de l'historique. Ceci est faisable car l'heure de chaque commande est stockée comme nombre de secondes depuis les jours Unix. Les HISTTIMEFORMAT
La directive spécifie simplement le format utilisé pour convertir ce nombre de secondes en un style lisible par l'homme, Quoi:
exporter HISTTIMEFORMAT="%T "
Notre production est maintenant plus gérable.
Vous pouvez également utiliser le history
commande pour auditer. Parfois, revoir les commandes que vous avez utilisées dans le passé peut vous aider à identifier ce qui a pu causer un obstacle.
Comme il peut dans la vie, fr Linux, vous pouvez utiliser le history
Commande de revivre les bons moments et d'apprendre des mauvais.
EN RELATION: 37 Commandes Linux importantes que vous devez connaître