Veja todas as atividades / registros de linha de comando anteriores

2

Existe uma maneira de ver todas as atividades / registros anteriores da linha de comando, como um recurso de 'histórico' em um navegador?

Bit de fundo Estou usando o terminal OSX para interagir com a linha de comando.

    
por sam 03.10.2013 / 21:52

3 respostas

5

A menos que o administrador do sistema ou você mesmo tenha definido $HISTFILE para outra coisa, seu histórico será armazenado em

~/.bash_history

Tutorial

terminal reverse-i-search

Com a janela Terminal ativa, pressione Control+R e o prompt reverse-i-search será exibido. Agora, simplesmente comece a digitar os primeiros caracteres de um comando usado anteriormente - e o comando inteiro será exibido. Isso é inestimável para aqueles de nós com memórias curtas e comandos longos.

aumenta o tamanho do histórico de terminal

Se você gostou da ideia do Terminal lembrando você dos comandos anteriores, então você pode querer aumentar o tamanho do seu arquivo de histórico do Terminal - para ainda mais armazenamento de histórico.

Se você tiver um .bash_profile

  1. Abra o .bash_profile no editor de texto de sua escolha
  2. Adicione isto:

    HISTFILESIZE=1000000000 HISTSIZE=1000000

  3. Salvar e sair

Se você não tiver um .bash_profile

  1. Iniciar terminal
  2. Navegue até a pasta Home digitando:

    cd ~/

  3. Crie .bash_profile inserindo:

    touch .bash_profile

  4. Agora, edite o .bash_profile no seu editor de texto favorito ou digite-o na janela do Terminal para abrir automaticamente o arquivo no TextEdit padrão:

    open -e .bash_profile

  5. Por fim, adicione isso ao arquivo .bash_profile:

    HISTFILESIZE=1000000000 HISTSIZE=1000000

  6. Salvar e sair

Os créditos para este ótimo tutorial pertencem aos mactoids .

    
por 03.10.2013 / 22:10
2

Em muitos shells, você pode ver seu histórico de comandos simplesmente digitando history .

    
por 03.10.2013 / 22:33
1

O Bash tem algumas opções para lidar com o seu histórico. Primeiro de tudo, seu histórico é salvo em um arquivo de texto. Isso normalmente é ~/.bash_history , mas pode ser alterado definindo a variável $HISTFILE para outra coisa.

As formas mais fáceis de acessar seu histórico são

  1. O comando history . Sem opções, simplesmente imprimirá o conteúdo do seu $HISTFILE . No entanto, tem algumas opções para manipular a lista de histórico. Você pode ver todos eles com help history . Os que eu acho particularmente úteis são

    -a  append history lines from this session to the history file
    -r  read the history file and append the contents to the history list
    

    Eu tenho esta linha no meu arquivo de inicialização do bash (isso é ~/bash_profile no OSX e ~/.bashrc para a maioria dos outros * nix sabores):

    export PROMPT_COMMAND='history -a;history -r;'
    

    Esses dois comandos são executados toda vez que recebo um novo prompt (sempre que o terminal exibe $ , quando é aberto pela primeira vez e após cada execução de comando). O resultado é que minha história é compartilhada em todas as janelas de terminal, já que após cada execução de comando, esse comando é gravado em $HISTFILE e o $HISTFILE é lido a partir do disco.

  2. Os botões Up e Abaixo . Acertar Up uma vez mostrará o comando anterior que você executou, acertá-lo novamente mostrará o anterior e assim por diante. O botão Para baixo moverá você para o outro lado.

    Isso é habilitado por padrão na maioria dos sistemas modernos (como o OSX), mas se não for, você pode habilitar esse comportamento adicionando essas linhas a um arquivo chamado ~/.inputrc :

     "\e[A": history-search-backward
     "\e[B": history-search-forward
    

O Bash também oferece algumas opções e variáveis que controlam o comportamento do histórico (muitas das quais são mencionadas na resposta muito boa do @ Chris, mencionarei algumas que ele não faz):

  • histappend

    If  set,  the history list is appended to the file named by the 
    value of the HISTFILE variable when the shell exits, rather than
    overwriting the file.
    

    Novamente, isso deve ser definido por padrão. Se você perceber que o histórico não persiste nas sessões de terminal, adicione essa linha ao seu ~/.bash_profile :

    shopt -s histappend
    
  • A variável HISTCONTROL :

    A colon-separated list of values controlling how commands are saved on the history list. If the list of values includes ignorespace, lines which begin with a space character are not saved in the history list. A value of ignoredups causes lines matching the previous history entry to not be saved. A value of ignoreboth is shorthand for ignorespace and ignoredups. A value of erasedups causes all previous lines matching the current line to be removed from the history list before that line is saved. Any value not in the above list is ignored. If HISTCONTROL is unset, or does not include a valid value, all lines read by the shell parser are saved on the history list, subject to the value of HISTIGNORE. The second and subsequent lines of a multi-line compound command are not tested, and are added to the history regard‐ less of the value of HISTCONTROL.

  • A variável HISTIGNORE :

    A colon-separated list of patterns used to decide which command lines should be saved on the history list. Each pattern is anchored at the beginning of the line and must match the com‐ plete line (no implicit *' is appended). Each pattern is tested against the line after the checks specified by HISTCONTROL are applied. In addition to the normal shell pattern match‐ ing characters,&' matches the previous history line. '&' may be escaped using a backslash; the backslash is removed before attempting a match. The second and subsequent lines of a multi-line compound command are not tested, and are added to the history regardless of the value of HISTIGNORE.

Colocando tudo isso junto, eu tenho as seguintes linhas no meu arquivo de inicialização do shell ( ~/.bash_profile para OSX ~/.bashrc para a maioria dos outros):

export HISTCONTROL=ignoredups
export HISTSIZE=10000
export HISTIGNORE="pwd:df:du:ls"

## Make Bash append rather than overwrite the history on disk:
shopt -s histappend

## history -a causes the last command to be written to the
## history file automatically and history -r imports the history
export PROMPT_COMMAND='history -a;history -r;'
    
por 03.10.2013 / 23:17

Tags