Comment trouver une ancienne commande que j'ai exécutée dans mon terminal?
J'ai utilisé une commande appengine et je souhaite simplement la trouver dans l'historique de mes commandes locales sans effectuer de nouvelle recherche en ligne.
Historique est ce que vous recherchez.
Exécutez history
pour obtenir la liste des 1000 dernières commandes, ou exécutez:
history | grep command_to_search
pour rechercher un motif dans la liste générée par l'historique, par exemple:
history | grep apt
Pour rechercher une commande associée à apt
, notez que grep
n'ancre votre motif à aucune des extrémités de la chaîne. Aucun caractère générique n'est donc nécessaire dans la plupart des cas.
La liste history
est générée à partir de les 1000 dernières commandes (par défaut) stockées dans ~/.bash_history
(qui stocke les 2000 derniers par défaut) et ce fichier n'est mis à jour que lorsque vous quittez proprement votre session Bash. Cela signifie que toutes les commandes de votre session actuelle ne seront pas dans ce fichier jusqu'à ce que vous fermiez votre terminal. Ils ne seront également pas écrits si vous supprimez le processus Shell.
Par conséquent, l'historique des commandes (2000 dernières commandes) peut également être trouvé à ~/.bash_history
, de l'une des manières suivantes:
less ~/.bash_history
ou, par exemple gedit ~/.bash_history
.bash_history
.Les comportements history
et ~/.bash_history
peuvent être modifiés en ajoutant ou en modifiant les options de ~/.bashrc
, en voici quelques exemples:
Ajoutez export HISTCONTROL=ignoreboth:erasedups
ou modifiez la ligne HISTCONTROL
existante pour supprimer les commandes en double, c’est-à-dire si l’on exécute echo Hello
immédiatement après echo Hello
, une seule apparaît dans bash_history
.
Modifiez HISTSIZE=1000
pour étendre ou réduire le nombre de commandes affichées avec history
Modifiez HISTFILESIZE=2000
pour augmenter ou réduire le nombre de commandes stockées dans bash_history
. Définissez HISTFILESIZE=-1
pour un nombre illimité.
Ajoutez HISTFILE=/path/to/file
pour enregistrer l’historique ailleurs.
Sources et lectures complémentaires:
Il existe de nombreuses manières de rechercher une commande récemment exécutée.
Le plus simple est de simplement frapper le ↑ et parcourez l’historique des commandes ligne par ligne jusqu'à ce que vous trouviez ce que vous recherchiez.
Vous pouvez également appuyer sur Ctrl+R pour entrer dans le mode dit (reverse-i-search)
.
C'est une invite de recherche qui complétera automatiquement ce que vous commencez à taper avec la dernière commande exécutée contenant cette chaîne. Quand il montre ce que vous cherchiez, appuyez sur Enter pour l'exécuter, ou Esc pour quitter l'invite de recherche tout en conservant la commande sur l'invite afin de pouvoir la modifier. Pour annuler le résultat et quitter la recherche, appuyez sur Ctrl+C.
Vous pouvez utiliser la commande history
Bash intégrée pour afficher la liste complète des commandes enregistrées de votre historique.
Vous pouvez filtrer cette liste pour les lignes correspondant à un modèle spécifique en utilisant par exemple grep
, comme history | grep 'appengine'
.
Pour plus d’informations sur la commande intégrée history
de Bash, saisissez help history
.
Utilisez bang-expansion pour exécuter directement la commande la plus récemment exécutée contenant une chaîne. Ceci remplacera la ligne saisie par la ligne correspondante de l'historique et l'exécutera immédiatement, sans confirmation, alors soyez prudent.
Il vous suffit de taper !string
pour le remplacer par la ligne de commande la plus récente commençant par "string".
Si vous souhaitez exécuter la dernière commande terminée par "chaîne", tapez plutôt !?string
.
Ou si vous voulez que la dernière ligne de commande contenant "chaîne" n'importe où, tapez !?string?
.
Pour plus d’informations sur l’expansion historique, saisissez man history
.
S'il a été utilisé récemment, il peut être facile pour vous de le trouver en ouvrant un terminal et en utilisant les flèches haut et bas de votre clavier pour passer en revue vos dernières commandes utilisées.