Acabei de perceber que um fluxo de trabalho que venho usando há anos não faz o que deveria fazer. Como não percebi isso por tanto tempo, você pode pensar que não vale a pena colocar muito esforço nisso, mas acontece que agora isso se tornou um tanto importante.
Do que estou falando? Ok, estou tmux
rodando com várias sessões e cada sessão tem janelas diferentes e assim por diante. Trabalhar assim é maravilhoso. Há uma desvantagem nisso, no entanto. Quando o servidor é reiniciado, por qualquer motivo, ele fecha todas as minhas sessões. Justo, não pode ser evitado e não acontece com frequência. No entanto, a parte chata é que todo o meu zsh
or bash
history
também se foi. Isto é um problema. Eu confio na minha história, talvez demais.
Eu estava contornando esse problema pressionando fc -W
(in zsh
) de vez em quando. Achei que isso acrescentaria o histórico que está na memória e só perderia a parte entre minha última invocação fc -W
e a reinicialização do servidor. Mas não é isso que ele faz. Se eu usar fc -W
em uma janela, então fc -W
em outra, o histórico da primeira janela será substituído pelo histórico da segunda janela. Eu precisaria usar fc -R
primeiro, mas isso duplicaria todo o histórico... basicamente eu estava usando mal o fc
comando o tempo todo.
Aqui está a pergunta: Como posso ter certeza de não perder nada do meu histórico quando estou dentro tmux
e há um corte repentino de energia? Observação:
- Eu uso história infinita, caso isso importe.
- Perder parte do histórico não tem problema, ou seja, se eu tiver que invocar um comando manualmente (ou em um cronjob) e perder a parte do histórico desde a última execução do comando, tudo bem.
- Sair do terminal e abrir um novo não é a solução.
- Não quero armazenar meus comandos diretamente no histórico, pois isso mistura diferentes históricos.
- Soluções para ambos
bash
ezsh
são bem-vindas.zsh
é preferível.
Editar: destaque a parte que todos parecem não entender.
Você pode salvar seu
bash
histórico com este comando (não estou familiarizado comzsh
):Isso parece funcionar com
zsh
:No zsh, use
fc -AI
para salvar seu histórico, nãofc -W
. Use-A
, não-W
, caso contrário, o histórico de outras instâncias do shell será substituído. E-I
salva apenas as novas entradas do histórico desde o último salvamento.Dado o seu fluxo de trabalho, em vez de salvar manualmente, você provavelmente deve salvar o histórico automaticamente. Ative a
inc_append_history
opção de salvar cada comando no arquivo de histórico imediatamente antes de ser executado.Embora seja possível obter o mesmo efeito no bash, é mais difícil compartilhar o histórico adequadamente entre as instâncias do bash. Consulte Preservar o histórico do bash em várias janelas de terminal