Ver histórico de comandos executados no terminal

75

Existe uma maneira de salvar todos os meus comandos de terminal digitados e visualizá-lo como histórico em um livro de registro?

rgr
fonte

Respostas:

92

Isso é feito automaticamente. O Bash armazena seus comandos ~/.bash_history. Se você quiser dar uma olhada no histórico, imprima a saída desse arquivo usando um dos seguintes

cat ~/.bash_history
less ~/.bash_history
...any other pager or output command...

Ou você pode usar o comando embutido do bash:

history

Para limpar o histórico, exclua o arquivo e limpe o histórico temporário:

rm ~/.bash_history && history -c

O tamanho do histórico é padronizado em 500 comandos. No entanto, você pode aumentar isso adicionando uma linha ao seu ~/.bashrcarquivo para definir a HISTSIZEvariável:

HISTSIZE=<number of entries, -1 for unlimited>

Isso não entrará em vigor imediatamente, mas apenas para as sessões iniciadas recentemente. Para aplicar isso, crie novamente o .bashrcarquivo:

. ~/.bashrc

ou execute HISTSIZE=...na sua sessão atual.

s3lph
fonte
11
Por padrão, ele mantém apenas os 500 comandos mais recentes. Você pode alterar o número a ser mantido, mas é necessário iniciá-lo acidentalmente apenas com as configurações padrão uma vez, e todo o seu histórico antigo desaparecerá.
Kasperd #
Isso não está funcionando para mim no Ubuntu 16
Nam G VU /
31

Você pode digitar historyem um terminal para visualizar todos os comandos executados anteriormente.


Você pode truncar a saída para algumas linhas (onde 5 é o número de linhas):

history 5

Se você deseja visualizar apenas os comandos que contêm uma string (ou seja mv), você pode fazer o seguinte:

history | grep mv

Você pode recuperar um comando digitando !seguido pelo número da entrada.

Digamos que eu tenha uma história como esta:

1 ls -la
2 mkdir foo
3 mv bar.txt foo
  • Para executar mkdir foo, você pode digitar !2.
  • Para executar o último comando, você pode usar !-1ou!!
  • Para executar o penúltimo, você pode usar !-2

Se você executar um comando que falhar porque precisa de privilégios de root (ou seja touch /etc/foo), poderá usar sudo !!para executar o último comando como root.


  • Se você digitar !man, executará o último comando que começa comman
  • Se você digitar, !?man?ele executará o último comando que contém man(não necessariamente no início da linha)

Se você tiver um erro de digitação em um comando, poderá corrigi-lo dessa maneira. Digamos que eu digite cat .bash_hi, para substituir .bash_hipor .bash_historyeu só preciso digitar ^hi^history^.


Fonte: https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-expansions-on-a-linux-vps

Helio
fonte
2
Além disso, você pode pressionar Ctrl-R para realizar uma pesquisa no hostory enquanto digita.
Mhmd 18/05
historytrabalhando para mim no Ubuntu 16. Obrigado e deve ser o aceito!
Nam G VU
9

Basta digitar:

history > print.txt

Um novo arquivo chamado print.txt será criado no diretório atualmente em funcionamento.

Bilal
fonte
3
Corta os comandos após 1000
Antoine
3

Muitas vezes, também quero esses comandos recentes também. Para postar em minhas notas de desenvolvimento ou, bem, empilhar sites de troca como esses ... Isso provou ser muito útil, removendo números de linhas irrelevantes:

history | cut -c 8- | tail

ou, se você gosta de um alias, números de linhas removidos e recuados imediatamente (conforme necessário para a marcação de cotação de código)

alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\}  /    /gi'"
Frank Nocke
fonte
11
Mais fácil de usar fc: askubuntu.com/a/839642/158442
muru 28/10
0

Você pode tentar https://github.com/dvorka/hstr, que permite navegação simples , navegação e filtragem "sugerir estilo de caixa" do seu histórico do Bash:

insira a descrição da imagem aqui

Ele pode ser facilmente ligado a Ctrl-re / ouCtrl-s

Martin Dvorak
fonte