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

54

Eu quero ver o conteúdo do meu arquivo .bash_history , mas não sei como chegar lá pela linha de comando.

    
por isupportopensource 14.10.2013 / 11:46

4 respostas

45

Se você quiser acessar o arquivo propriamente dito, basta usar seu editor de texto favorito (eu uso emacs , mas você pode usar pluma de gedit ou vim ou qualquer outra coisa):

emacs ~/.bash_history

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

echo $HISTFILE

Se, em vez do arquivo, você quiser apenas ver seu histórico, você pode executar history como @ minerz029 sugerido. O comando history sem opções apenas imprime o conteúdo do seu $HISTFILE seguido pelos comandos executados no shell atual que ainda não foram gravados naquele arquivo, com números de linha.

    
por terdon 14.10.2013 / 23:43
40

Se você realmente precisar da saída do arquivo .bash_history , substitua history por cat ~/.bash_history em todos os comandos abaixo.

Se você realmente quiser os comandos sem números na 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 o último executado 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-get com o último executado por último (na parte inferior). Você pode substituir apt-get por qualquer comando (ou argumento de comando) que você queira procurar (pode ser uma expressão regular).

Rolando pelo histórico

Você pode usar

history | tac | less

para percorrer todos os comandos executados, começando pelo mais recente no topo. Pressione q para 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 com o mais recente no topo. Pressione q para sair.

    
por kiri 14.10.2013 / 12:07
15

Além da excelente resposta do minerz029.

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

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

A saída da história também mostra um número à esquerda ao lado da 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 re-executar 473 eu digitaria no terminal

 admin@xen1~$ !473

seguido pela tecla enter para repetir o comando ao lado de 473 na saída do histórico.

Você também pode pesquisar interativamente para trás no histórico de comandos, digitando ctrl + r keys, em seguida, começar a digitar parte do conteúdo do comando e ele pesquisará e preencherá o conteúdo. Quando você o encontrar, digite enter para repeti-lo ou pressione a tecla [tab] para copiá-lo para a linha de comando para editar o comando primeiro.

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

    
por Matt H 15.10.2013 / 01:47
1

Você pode querer experimentar o histórico de link como "sugerir caixa" - ele lê o histórico de Bash e permite navegação rápida.

    
por Martin Dvorak 11.05.2015 / 14:15