Congelando o arquivo de histórico temporariamente

1

Estas duas questões abordam como evitar que um determinado comando seja adicionado ao histórico da shell:

As respostas se concentram em soluções em que o usuário prefixa cada comando (por exemplo, com um espaço). O que eu estou procurando é um único comando que eu possa executar uma vez, e que efetivamente " congele " meu arquivo de histórico no shell até que eu descongele-o mais tarde com outro comando.

Enquanto o histórico é " congelado ":

  1. Eu quero que meus comandos consigam ler a partir do arquivo de histórico existente (por exemplo, para fazer pesquisas de comando, por exemplo, C-r e autocompletar padrão.

  2. Eu quero evitar que quaisquer comandos que eu execute sejam adicionados ao histórico

Como posso conseguir isso com o zsh?

    
por Amelio Vazquez-Reina 08.09.2017 / 18:01

2 respostas

1

Você pode usar fc -p para iniciar uma nova lista de histórico e fc -P para recuperar a lista de histórico anterior. Após um fc -p simples, você obtém um histórico em branco. Você pode passar um nome de arquivo para fc -p para ler o histórico desse arquivo, então salve o histórico e leia-o imediatamente com fc -p . Quando você chama fc -P , restaura o valor de HISTFILE antes da chamada para fc -p .

freeze_history () {
    fc -A
    fc -p $HISTFILE
    unset HISTFILE
}
unfreeze_history () {
    fc -P
}

Infelizmente, o histórico não pode ser editado diretamente na memória. Você só pode preenchê-lo artificialmente lendo um arquivo.

    
por 09.09.2017 / 00:38
0

Estes podem ajudar: Você pode digitar unset HISTFILE para desativar o histórico da sessão. Fazer o logout e voltar a iniciar será iniciado novamente.

Além disso, você pode retornar a um comando no histórico e apagá-lo pressionando CTRL-u .

Boa sorte!

    
por 08.09.2017 / 18:16