O mesmo comando está listado no meu histórico repetidamente. Como posso evitar isso? Eu sei que é possível via, HISTCONTROLmas não encontrei o caminho certo.
Eu criei uma pergunta relacionada: askubuntu.com/questions/205520/… . Dups na história são úteis para ver o contexto de um comando. Às vezes, o que você deseja omitir dups quando imprime o histórico.
justingordon
Respostas:
123
Na bashpágina do manual:
HISTCONTROL
Uma lista de valores separados por dois pontos que controla 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 são salvas na lista de histórico. Um valor de ignoredupsfaz com que as linhas correspondentes à entrada do histórico anterior não sejam salvas. Um valor de ignorebothé uma abreviação de ignorespace e
ignoredups. Um valor deerasedupsfaz 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 é ignorado. Se HISTCONTROL estiver desabilitado ou não incluir um valor válido, todas as linhas lidas pelo analisador de shell serão salvas na lista de histórico, sujeitas ao valor de HISTIGNORE. A segunda linha e as linhas subsequentes de um comando composto de várias linhas não são testadas e são adicionadas ao histórico, independentemente do valor de HISTCONTROL.
Deseja que eu adicione HISTCONTROL = ignoreboth na parte inferior de ~ / .bashrc?
precisa saber é o seguinte
11
@karthick Não importa onde você o coloca, o fundo é bom.
Isaiah
Na minha instalação do Ubuntu 12.04 Eu tive que fazer esta modificação na ~/.bash_loginmaior parte do tempo ele iria trabalhar se .bashrc é modificado, mas que não é o caso todo o tempo.
usar o seguinte
3
Não se esqueça de executar estes depois que você atualizar seus bash / arquivos rc perfil -source ~/.bashrc && source ~/.bash_profile
Eric Kigathi
23
Cole isso no seu ~/.bashrc:
export HISTCONTROL=ignoredups
Você poderia usar ignoreboth. Isso é uma abreviação para ambos ignorespaces(comandos começando com espaços) e ignoredups(duplicatas).
Eu prefiro ignoredupspor conta própria, pois acho o comportamento padrão de ignorar comandos com espaços na frente bastante irritante quando copio um comando de um site e ele não é salvo porque eu acidentalmente copiei um espaço também ... Mas para cada um deles.
@ karthick87 citado em outra resposta: Um valor que ignoredupsfaz com que as linhas correspondentes à entrada do histórico anterior não sejam salvas . Ele remove apenas linhas idênticas consecutivas.
AL
10
Colocá-lo ~/.bashrcaplicará a solução da @ alvin em diferentes sessões como wlell
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
Por que o uso dele export HISTCONTROLe o seu não? Qual é a diferença? É trabalhar para mim sem exportação, estou apenas curioso
felwithe
11
Boa pergunta! Eu também gostaria de saber a resposta. Em geral, exportfaz com que a variável disponível para sub-processos. stackoverflow.com/q/1158091/552621 No caso de HISTCONTROL, PROMPT_COMMANDetc, essas variáveis são usadas pelo próprio shell; portanto, talvez não seja necessário exportá-las (para processos filhos).
Respostas:
Na
bash
página do manual:Então coloque a seguinte linha no seu
~/.bashrc
:export HISTCONTROL=ignoreboth:erasedups
fonte
~/.bash_login
maior parte do tempo ele iria trabalhar se .bashrc é modificado, mas que não é o caso todo o tempo.source ~/.bashrc && source ~/.bash_profile
Cole isso no seu
~/.bashrc
:Você poderia usar
ignoreboth
. Isso é uma abreviação para ambosignorespaces
(comandos começando com espaços) eignoredups
(duplicatas).Eu prefiro
ignoredups
por conta própria, pois acho o comportamento padrão de ignorar comandos com espaços na frente bastante irritante quando copio um comando de um site e ele não é salvo porque eu acidentalmente copiei um espaço também ... Mas para cada um deles.fonte
ignoredups
faz com que as linhas correspondentes à entrada do histórico anterior não sejam salvas . Ele remove apenas linhas idênticas consecutivas.Colocá-lo
~/.bashrc
aplicará a solução da @ alvin em diferentes sessões como wlellFonte: Linux: Histórico do Bash: "ignoredups" e "apagados", configurando conflito com o histórico comum nas sessões
fonte
export HISTCONTROL
e o seu não? Qual é a diferença? É trabalhar para mim sem exportação, estou apenas curiosoexport
faz com que a variável disponível para sub-processos. stackoverflow.com/q/1158091/552621 No caso deHISTCONTROL
,PROMPT_COMMAND
etc, essas variáveis são usadas pelo próprio shell; portanto, talvez não seja necessário exportá-las (para processos filhos).fonte
Adicione o seguinte ao seu
~/.bashrc
:Para fazer isso, você pode usar este comando:
fonte
Registrar uniqely todos os novos comandos é complicado. Primeiro você precisa adicionar
~/.profile
ou semelhante:Então você precisa adicionar a
~/.bash_logout
:fonte