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.