Lire tout l'historique des commandes du terminal dans OS X

10

Ce serait formidable d'accéder à toutes mes commandes exécutées dans le terminal sur OS X afin que je puisse les consulter et les utiliser comme feuille de rappel en cours d'exécution.

J'utilise l'invite Reverse-I-Search et j'ai mis à jour mon .bash_profile pour stocker tout mon historique comme mentionné ici sur Mactoids: Comment rechercher l'historique des commandes du terminal .

  1. Démarrez le terminal.

  2. Accédez au dossier d'accueil en entrant:

    cd ~/
    
  3. Créez .bash_profile en entrant:

    touch .bash_profile
    
  4. Maintenant, modifiez .bash_profile dans votre éditeur de texte préféré ou saisissez-le dans la fenêtre Terminal pour ouvrir automatiquement le fichier dans TextEdit par défaut:

    open -e .bash_profile
    
  5. Enfin, ajoutez ceci au fichier .bash_profile:

    HISTFILESIZE=1000000000 HISTSIZE=1000000
    
  6. Sauvegarder et quitter.

Avez-vous des idées sur la façon dont je pourrais accéder afin de sortir l'historique des commandes du terminal sous OS X?

Cameron McGrane
la source
4
Je suppose que vous avez lu man bash, vous devez donc savoir que l'historique est stocké dans le fichier ~/.bash_history. Que devez-vous savoir d'autre, pouvez-vous clarifier?
Oui, parce que j'ai créé la commande 'man', j'ai lu le manuel trouvé la réponse et j'ai décidé de poser la question ci-dessus juste pour le plaisir. Merci fideli pour la réponse rapide, claire et sans prétention.
Cameron McGrane

Réponses:

6

Tout votre historique est stocké dans ~/.bash_history, où les reverse-i-searchtouches haut et bas utilisent. Ce fichier est régulièrement élagué, mais si vous avez suivi le guide dans votre lien, le .bash_historyfichier ne sera pratiquement jamais élagué.

fideli
la source
La taille FIFO ou LIFO?
Pacerier
@Pacerier, je ne peux pas être complètement sûr car je n'utilise plus macOS mais si je devais deviner, l'élagage FIFO.
fideli
2

Personnellement, je préférerais le faire de manière plus simple et tout imprimer , au lieu de vérifier la dernière session qui ne couvre pas toutes les fenêtres du terminal et toutes les commandes.

Obtenez un historique complet

cd ~/.bash_sessions
cat *.historynew *.history

Si vous souhaitez trier par date de session

cd ~/.bash_sessions
cat `ls -tr *.historynew *.history`
laimison
la source
1

Au cas où vous auriez encore besoin d'une solution, voici comment j'ai fait la mienne. Avec cela, je peux ENREGISTRER ET ACCÉDER à l'historique sur tous les onglets (c'est-à-dire que si vous entrez une commande sur un onglet, puis ouvrez un nouvel onglet et appuyez vers le haut, il suggérera la commande que vous venez de saisir dans l'onglet précédent)

Vous aurez besoin de 2 choses: 1. Entrez cette commande dans votre terminal pour vous assurer que l'histappend est activé:

shopt -s histappend && shopt histappend

2. Vous devrez également savoir où vos commandes d'historique sont stockées.

Mes fichiers d'historique sont stockés dans ~ / .bash_sessions, c'est donc ce que mon code reflétera. Si le vôtre est stocké dans ~ / .bash_history, ou dans un autre répertoire, échangez-le simplement pour ~ / .bash_sessions lorsque nous le sourceons dans notre bash_profile.

Une fois que vous avez compris cela, ouvrez votre bash_profile et ajoutez le code suivant:

source ~/.bash_sessions/*.history        #<--sources prev sessions through your bash_profile. If you don't use ~/.bash_sessions to store your history, replace it with whatever you use (i.e. source ~/.bash_history/*.history

export HISTCONTROL=ignoredups:erasedups #<-- auto-erases duplicates in your history
export HISTSIZE=1000                    #<-- assigns # of results to return
export HISTFILESIZE=100000              #<-- assigns # of results to store in your .bash_history
shopt -s histappend                     #<-- appends & saves history throughout all tabs

export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"  <--appends history from all tabs, clears & uses appended history file as current  
tranchant
la source
1
sachez que l'exécution source ~/.bash_sessions/*.historyexécute toutes les commandes
panchicore