Leia todo o histórico de comandos do terminal no OS X

10

Seria ótimo acessar todos os meus comandos executados no terminal no OS X para que eu possa revisar e usar como uma folha de lembrete em execução.

Estou usando o prompt Reverse-I-Search e atualizei meu .bash_profile para armazenar todo o meu histórico, conforme mencionado aqui no Mactoids: Como pesquisar o histórico de comandos do Terminal .

  1. Inicie o Terminal.

  2. Navegue até a pasta inicial digitando:

    cd ~/
    
  3. Crie .bash_profile digitando:

    touch .bash_profile
    
  4. Agora, edite .bash_profile no seu editor de texto favorito ou digite-o na janela Terminal para abrir automaticamente o arquivo no TextEdit padrão:

    open -e .bash_profile
    
  5. Por fim, adicione isso ao arquivo .bash_profile:

    HISTFILESIZE=1000000000 HISTSIZE=1000000
    
  6. Salvar e sair.

Você tem alguma idéia de como eu poderia acessar para gerar o histórico de comandos do terminal no OS X?

Cameron McGrane
fonte
4
Eu presumo que você leu man bash, então você deve saber que o histórico está armazenado no arquivo ~/.bash_history. O que mais você precisa saber, pode esclarecer?
Sim, porque eu novo o comando 'man' existia, então li o manual, encontrei a resposta e decidi fazer a pergunta acima apenas por diversão. Obrigado fideli pela resposta rápida, clara e despretensiosa.
Cameron McGrane

Respostas:

6

Todo o seu histórico é armazenado ~/.bash_history, onde reverse-i-searchas teclas para cima e para baixo são usadas. Esse arquivo é removido regularmente, mas se você seguiu o guia no seu link, o .bash_historyarquivo praticamente nunca será removido.

fideli
fonte
Poda FIFO ou LIFO?
Pacerier
@ Pacerier, não posso ter certeza absoluta, já que não uso mais o macOS, mas se tivesse que adivinhar, poda FIFO.
fideli
2

Pessoalmente, eu preferiria fazê-lo de uma maneira mais simples e imprimir tudo , em vez de verificar a última sessão que não cobre todas as janelas do Terminal e todos os comandos.

Obtenha um histórico completo

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

Se você deseja classificar por data da sessão

cd ~/.bash_sessions
cat `ls -tr *.historynew *.history`
Laimison
fonte
1

Caso você ainda precise de uma correção para isso, veja como eu fiz o meu. Com isso, posso SALVAR E ACESSAR o histórico em todas as guias (por exemplo, se você digitar um comando em uma guia, abrir uma nova guia e pressionar para cima, ele sugerirá o comando que você acabou de inserir na guia anterior)

Você precisará de duas coisas: 1. Digite este comando no seu terminal para verificar se o histappend está ativado:

shopt -s histappend && shopt histappend

2. Você também precisará saber onde seus comandos do histórico estão sendo armazenados.

Meus arquivos de histórico são armazenados em ~ / .bash_sessions, e é isso que meu código refletirá. Se o seu estiver armazenado em ~ / .bash_history, ou em outro diretório, troque-o por ~ / .bash_sessions quando o fizermos em nosso bash_profile.

Depois de descobrir isso, abra seu bash_profile e adicione o seguinte código:

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  
sharpharp
fonte
1
estar cientes de que a execução source ~/.bash_sessions/*.historyexecuta todos os comandos
panchicore