web-dev-qa-db-fra.com

Recherche d'une ancienne commande dans l'historique du shell

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.

8
saviour123

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
  • Ouverture de Nautilus, Ctrl+het en recherchant le fichier .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:

pages de manuel Bash

crédit aux commentaires de Byte Commander

13
M. Becerra

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.

10
Byte Commander

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.

0
cP4n