Eu uso principalmente o Terminator, e geralmente é aberto com 3 janelas de terminal divididas. Eu também uso o terminal Gnome por várias razões.
Estou me perguntando como o histórico do bash é tratado nesse caso, pois às vezes sinto falta de comandos emitidos anteriormente quando executohistory
Por exemplo, meu prompt mostra a linha atual do histórico do bash ( \!
) e, se eu iniciar o Terminator com 3 janelas de terminal divididas, recebo a mesma linha do histórico (digamos 100) em todos os terminais. Qual histórico será salvo?
Também iniciando o Gnome Terminal depois de usar o Terminator, recebo a linha 100 na inicialização, independentemente de todos os comandos emitidos anteriormente no Terminator
command-line
bash
history
zetah
fonte
fonte
Respostas:
A sessão do bash salva é a do terminal que está fechado mais recentemente. Se você quiser salvar os comandos para cada sessão, use o truque explicado aqui .
De qualquer forma, você precisará levar em consideração que os comandos de diferentes sessões serão misturados no seu arquivo de histórico, para que não seja tão simples lê-lo mais tarde.
Veja também:
fonte
export PROMPT_COMMAND='history -a; history -r'
e obtive alguns números estranhos da linha do histórico no terminal - depois de emitir alguns saltos do número da linha do histórico de comandos em 2000, em vez de 1, o que é estranho, mas se comporta como foi dito - todo o histórico dos terminais é salvo.export
Não é necessário.Após várias leituras de
man bash
, uso arquivos de histórico separados para cada shell. Eu fiz ummkdir -m 0700 ~/.history
então adicionadopara o meu
~/.bashrc
. De vez em quando, lembro-me dedu -sk .history
limpá-lo. É bom ter todos os comandos que eu digitei preservados para mim.Eu apenas usei o acima para ver o que eu estava fazendo ultimamente:
cut -f1 "-d " .history/* | sort | uniq -c |sort -n -r |less
ou
cut -f1-2 "-d " .history/* | sort | uniq -c |sort -n -r |less
(para incluir o 1º argumento, por exemplo,
sudo mount
na cadeia de classificação).fonte
HISTFILESIZE
duas vezes?man bash
.Ctrl+r
trabalho novamente?egrep 'whatever' .history/*
(oucat .history/* | egrep 'whatever'
) em vez disso e use Ctrl-r para pesquisar o histórico de uma sessão individual. Leiaman bash-builtins
sobre o comando history. Meusort .history/* | uniq -c | sort -n | wc -l
mostra 16033 comandos únicos,cut '-d ' -f1 .history/* | sort | uniq -c | sort -n
mostra 2004 comandos únicos, principalmente erros de digitação. Carregar tudo isso na "lista de histórico" do bash não ajudaria.Para mostrar
history
de todos os terminais:Adicione
export PROMPT_COMMAND='history -a; history -r'
ao seu arquivo .bashrc.Fonte: http://nouthernmost.org/blog/flush-bash_history-after-each-command
fonte
history --merge
. Estou usando isso há mais ou menos um ano e resolve o problema. Quando quero o histórico mais recente de outras sessões, apenas executo esse comando e ele está disponível para mim instantaneamente.Consulte também " mantendo o histórico persistente no bash " para outra alternativa. Ele solicita que você envie todos os comandos já digitados em qualquer terminal para um arquivo "histórico persistente" (ao lado do que geralmente é feito para o regular
.history
).fonte
echo $$ $date_part "$command_part" >> ~/.persistent_history
Isso prefixa as entradas com os PIDs do processo do bash, para que possamos separar vários históricos.