Tutorial

Tutorial

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

Informações básicas Estou usando o terminal OSX para interagir com a linha de comando.

Responder1

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

~/.bash_history

Tutorial

terminal de pesquisa reversa

Com a janela do Terminal ativa, pressione Control+Re o reverse-i-searchprompt aparecerá. Agora basta começar a digitar os primeiros caracteres de um comando usado anteriormente – e o comando inteiro será exibido. Isto é inestimável para aqueles de nós com memória curta e comandos longos.

aumentar o tamanho do histórico do terminal

Se você gosta da ideia de o Terminal lembrá-lo dos comandos anteriores, você pode querer aumentar o tamanho do arquivo de histórico do Terminal – para obter ainda mais armazenamento de histórico.

Se você tiver um .bash_profile

  1. Abra .bash_profile no editor de texto de sua preferência

  2. Adicione isso:

    HISTFILESIZE=1000000000 HISTSIZE=1000000

  3. Salvar e sair

Se você não possui um .bash_profile

  1. Iniciar Terminal

  2. Navegue até a pasta inicial digitando:

    cd ~/

  3. Crie .bash_profile digitando:

    touch .bash_profile

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

    open -e .bash_profile

  5. Por último, adicione isto ao arquivo .bash_profile:

    HISTFILESIZE=1000000000 HISTSIZE=1000000

  6. Salvar e sair

Os créditos deste ótimo tutorial pertencem amactóides.

Responder2

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

Responder3

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

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

  1. O historycomando. Sem opções, ele simplesmente imprimirá o conteúdo do seu arquivo $HISTFILE. No entanto, possui algumas opções para manipular a lista de histórico. Você pode ver todos eles com help history. Os que considero 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 em meu arquivo de inicialização bash (isso está ~/bash_profileno OSX e ~/.bashrcna maioria dos outros sabores *nix):

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

    Esses dois comandos são executados sempre que recebo um novo prompt (toda vez que o terminal exibe $, quando ele abre pela primeira vez e após cada execução de comando). O resultado é que meu histórico é compartilhado por todas as janelas do terminal, pois após cada execução de comando, esse comando é gravado $HISTFILEe $HISTFILElido no disco.

  2. Os botões Upe Down. Bater Upuma vez mostrará o comando anterior que você executou, bater novamente mostrará o comando anterior e assim por diante. O Downbotão irá movê-lo para o outro lado.

    Isso está habilitado por padrão na maioria dos sistemas modernos (como OSX), mas se não estiver, você pode habilitar esse comportamento adicionando estas 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 menciona):

  • 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ê notar que o histórico não persiste nas sessões do terminal, adicione esta linha ao seu ~/.bash_profile:

    shopt -s histappend
    
  • A HISTCONTROLvariável:

    Uma lista de valores separados por dois pontos que controlam como os comandos são salvos na lista de histórico. Se a lista de valores incluir ignorespace, as linhas que começam com um caractere de espaço não serão salvas na lista de histórico. Um valor ignorado faz com que as linhas correspondentes à entrada anterior do histórico não sejam salvas. Um valor de ignoreboth é uma abreviação de ignorespace e ignoreups. Um valor apagado faz com que todas as linhas anteriores correspondentes à linha atual sejam removidas da lista de histórico antes que a linha seja salva. Qualquer valor que não esteja na lista acima será ignorado. Se HISTCONTROL não estiver definido ou não incluir um valor válido, todas as linhas lidas pelo analisador shell serão salvas na lista de histórico, sujeitas ao valor de HISTIGNORE. A segunda linha e as subsequentes de um comando composto de múltiplas linhas não são testadas e são adicionadas ao histórico independentemente do valor de HISTCONTROL.

  • A HISTIGNOREvariável:

    Uma lista de padrões separados por dois pontos usada para decidir quais linhas de comando devem ser salvas na lista de histórico. Cada padrão é ancorado no início da linha e deve corresponder à linha completa (nenhum *' 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,&' implícito corresponde à linha do histórico anterior. `&' pode ser escapado usando uma barra invertida; a barra invertida é removida antes de tentar uma correspondência. O segundo e as linhas subsequentes de um comando composto de múltiplas linhas não são testadas e são adicionadas ao histórico, independentemente do valor de HISTIGNORE.

Juntando tudo isso, tenho as seguintes linhas em meu arquivo de inicialização do shell ( ~/.bash_profilepara OSX ~/.bashrcpara 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;'

informação relacionada