Como visualizar o arquivo `.bash_history` via linha de comando?

72

Quero ver o conteúdo do meu .bash_historyarquivo, mas não sei como chegar lá através da linha de comando.

isupportopensource
fonte
7
Como sobrehistory | less
MadMike 14/10
2
Você já conferiu /home/username/.bash_history ?
Mitch
2
Nota: .bash_historyé anexado apenas quando um terminal está fechado.
Nicolas VERHELST

Respostas:

56

Se você quiser acessar o próprio arquivo real, basta usar o seu editor de texto favorito (eu uso emacs, mas você pode usar plumade geditou vimou qualquer outro):

emacs ~/.bash_history

Esse é o local padrão, se o seu arquivo de histórico. Se você não encontrar nada, pode ter alterado o nome do arquivo de histórico. Isso é armazenado na $HISTFILEvariável, portanto, imprima-o para verificar seu valor atual:

echo $HISTFILE

Se, em vez do arquivo, você apenas quiser ver seu histórico, poderá executar historycomo @ minez029 sugerido. O historycomando sem opções apenas imprime o conteúdo do seu $HISTFILEseguido pelos comandos executados no shell atual que ainda não foram gravados nesse arquivo, com números de linha.

terdon
fonte
49

Se você realmente precisa da saída do .bash_historyarquivo, substitua historypor
cat ~/.bash_historytodos os comandos abaixo.

Se você realmente deseja os comandos sem números à frente, use este comando em vez de history:

history | cut -d' ' -f 4-

caso contrário, não haverá diferença (exceto se você estiver usando um shell diferente).


Últimos 15 comandos

Você pode usar

history | tail -n 15

para obter apenas as últimas 15 linhas do seu histórico com a última executada impressa por último (na parte inferior).


Procurando por um Comando

Como alternativa, use

history | grep "apt-get" | tail -n 15

para obter os últimos 15 comandos que continham apt-getcom o último executado impresso por último (na parte inferior). Você pode substituir apt-getpor qualquer comando (ou argumento de comando) que deseja procurar (pode ser uma expressão regular).


Percorrendo o histórico

Você pode usar

history | tac | less

para percorrer todos os comandos executados, começando pelos mais recentes no topo. Pressione qpara sair.

Da mesma forma, use

history | grep "apt-get" | tac | less

para percorrer todos os comandos executados com " apt-get" neles (incluindo argumentos), começando pelos mais recentes no topo. Pressione qpara sair.

kiri
fonte
15

Além da excelente resposta de minerz029.

Para reiterar - o comando 'history' imprime a história junto com um número próximo a ela.

Você pode canalizar a saída do histórico para grep, menos etc.

A saída do histórico também mostra um número à esquerda, próximo à saída. por exemplo

  469  free
  470  ps -fA
  471  ps -fA | grep xend
  472  free
  473  sudo vi /etc/xen/xend-config.sxp 
  474  cat /etc/default/grub 

Com esse número, você pode executar novamente o comando.

por exemplo, para executar novamente 473 eu digitaria no terminal

 admin@xen1~$ !473

seguido pela tecla Enter para repetir o comando próximo a 473 na saída do histórico.

Você também pode pesquisar de maneira interativa no histórico de comandos, digitando as ctrl + rteclas e, em seguida, comece a digitar parte do conteúdo do comando, que será pesquisado e preenchido. Quando você o encontrar, poderá digitar enter para repeti-lo ou pressionar a [tab]tecla para copiá-lo na linha de comando e editar o comando primeiro.

Obviamente, essas duas últimas opções funcionam no shell bash. Não tenho certeza se esses recursos funcionam em outras conchas. Mas como o bash é o shell padrão do Ubuntu, você deve encontrá-los lá.

Matt H
fonte
1

insira a descrição da imagem aqui

Você pode tentar o histórico semelhante a "caixa de sugestões" https://github.com/dvorka/hstr - lê o histórico do Bash e permite uma navegação rápida.

Martin Dvorak
fonte