histórico do bash para a sessão atual


15

Talvez eu esteja ignorando alguma coisa, mas existe uma maneira de obter seu histórico atual do bash para a sessão atual que você está usando como

se eu correr

ssh host
$ pwd
$ ls
$ cd /tmp

Eu só quero ver esses 3 comandos e nada mais


você verificou o historycomando ??
— Hackaholic

ya eu sei sobre history, mas que não dá apenas a minha sessão
— Mike

A quantia economizada entre as sessões é controlada pela variável do shell SAVEHIST, se bem me lembro. Assim, se a quantidade de história guardou última vez foi zero, então você deseja obter história para a sessão shell atual (mas é claro que não nos níveis sub)
— MDPC

@ MDPC, que documentos você está lendo? Na página de manual do Bash, não encontro referência ao SAVEHIST, mas apenas a HISTSIZEe HISTFILESIZE.
— Curinga

Respostas:


15

Uma maneira ligeiramente indireta:

history -a ~/current_history

Isso salvará o histórico do bash não salvo da sessão atual ~/current_history, para o qual você poderá visualizar.


isso poderia funcionar, mas não lidar com várias sessões .. Eu acho que eu pode criar um arquivo temporário aleatório para armazená-lo em
— Mike

1
@ Mike use um nome conectado ao PID do shell, talvez ~/$$_history.
— Muru

4
Vale a pena notar que isso não limpará o histórico nem afetará o salvamento normal do histórico! Eu não tinha certeza até testar. :)
— NHDaly 29/01

Acho mais conveniente fazê history -a-lo, juntamente com o histórico anterior, em ~ / .bash_history ... o que pode ser um problema se o seu histórico for maior que o cutoff, que é 1000 nos meus sistemas centos7 e fedora 24.
— Ray Foss

0

Eu tive o problema de querer escrever a corrente historyem um arquivo, mas ainda queria que as entradas fossem registradas no bash principalhistory

Resolvi isso anexando o arquivo com cat:

history -a current-history
cat current-history >> .bash_history

-1

Use comppara comparar o histórico inteiro (incluindo a sessão atual do Bash) com o histórico já persistido .bash_historye imprimir apenas as linhas exclusivas da sessão atual - que devem mostrar apenas os comandos que foram executados desde o início do shell do Bash atual

comm -23 <( history | cut -c 8- ) ~/.bash_history

Edit: como @Wildcard apontou este comando não funciona para todas as distribuições de comm. Eu testei isso no Mac OS.

Uma variação da mesma ideia usando diff:

diff <( history | cut -c 8- ) ~/.bash_history | sed -n 's/^< //pg'

Um bom pensamento, mas muito pouco confiável nos meus testes. commassume entrada classificada. Bem-vindo ao Stack Exchange! :)
— Curinga

@Wildcard, ambos os lados da entrada commsão classificados inerentemente no meu exemplo acima. Você executou? E não produziu seu histórico atual de sessões do Bash?
— Christian Kadner

Sim, eu fiz, e não, não. E não, o conteúdo de não~/.bash_history é classificado; e também não é a saída ordenada quando os números das linhas principais são removidos. (Além do que, espera entrada lexicograficamente classificada, não entrada numericamente.)historycomm
— Curinga

Certo, eu quis dizer que os dois argumentos para o commcomando no meu exemplo estão na mesma ordem, não que sejam ordenados lexicográficos. A versão FreeBSD de commnão exigir a entrada lexicographically ordenada
— Christian kadner

Estou usando o Mac OS X. Não tem nada a ver com isso. Olhando mais de perto, parece haver os primeiros comandos do histórico da memória, que foram substituídos no arquivo de histórico por outros shells existentes.
— Curinga
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.