no terminal linh ubuntu bash. existe alguma maneira de salvar o histórico do bash sem escrever a saída? Eu configurei a configuração para "HISTCONTROL = apagados"
o que, na minha opinião, funciona melhor que os ignorados.
de qualquer forma, por algum motivo, ele não salvará os últimos comandos no terminal bash, a menos que eu digite "exit". Estou acostumado a clicar na cruz na janela do terminal, por isso estou sempre irritado que os últimos comandos não foram salvos quando eu inicio a sessão.
lembrete: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/#more-130
ubuntu
bash
linux-terminal
command-history
ColacX
fonte
fonte
Respostas:
Histórico do Bash
Quaisquer novos comandos que foram emitidos no terminal ativo podem ser anexados ao
.bash_history
arquivo com o seguinte comando:O único conceito complicado de entender é que cada terminal tem sua própria lista de histórico de bash (carregado a partir do
.bash_history
arquivo quando você abre o terminal)Se desejar extrair qualquer novo histórico que tenha sido gravado por outros terminais durante a vida útil deste terminal ativo, você poderá anexar o conteúdo do
.bash_history
arquivo à lista de histórico do bash ativoIsso limpará a lista de histórico atual, para não obter uma lista repetida e anexar o arquivo de histórico à lista (agora vazia).
Solução
Você pode usar a variável bash
PROMPT_COMMAND
para emitir um comando a cada novo prompt (toda vez que você pressionar enter no terminal)Isso registrará cada comando no arquivo de histórico conforme ele é emitido.
Resultado
Agora, qualquer novo terminal que você abrir terá o histórico de outros terminais sem precisar
exit
desses outros terminais. Este é o meu fluxo de trabalho preferido.Mais precisão
Digamos (por algum motivo) que você tem dois terminais que está usando simultaneamente e deseja que o histórico reflita entre os dois para cada novo comando.
A principal desvantagem aqui é que você pode precisar pressionar enter para executar novamente o PROMPT_COMMAND para obter o histórico mais recente do terminal oposto.
Você pode ver por que essa opção mais precisa provavelmente é um exagero, mas funciona para esse caso de uso.
fonte
Para salvar o histórico do bash em um arquivo:
Ele exporta o histórico para um arquivo chamado history.txt. Você pode visualizá-lo usando seu editor favorito.
Resposta copiada de http://tech.karbassi.com/2007/01/14/view-and-change-bash-history/
fonte
Não é uma maneira de salvar toda a história sua festança para um arquivo separado , mas se você está tentando usar o mecanismo de história e por algum motivo ele não está salvando toda a sua história, que é uma questão diferente.
Para salvar todo o seu histórico em um arquivo separado, sempre, não importa o que aconteça com o terminal
Um script fornecido aqui faz o truque.
Para dizer ao comando do histórico "Salvar agora!" ao clicar no X em uma janela de terminal virtual
Primeiro, o que você precisa entender é: qual mecanismo seu emulador de terminal virtual usa para matar o
bash
processo quando ele sai? - Isso dependerá do emulador de terminal exato que você estiver usando.Existem algumas opções, e todas elas envolvem sinais UNIX .
SIGTERM, SIGINT, SIGQUIT: O comportamento padrão quando o Bash recebe um desses sinais no modo interativo é ignorá-lo, portanto provavelmente não é isso.
SIGHUP: Esse sinal normalmente faz com que o Bash termine normalmente e faça a limpeza, mas não tenho certeza se essa "limpeza" envolve salvar o arquivo de histórico. Provavelmente não.
SIGKILL, SIGSTOP: É impossível para o Bash como um processo no espaço do usuário ignorar esses sinais. O kernel pode forçosamente matar ou interromper o processo a qualquer momento usando esses sinais. Se o seu emulador de VT está enviando um desses, não podemos capturá-lo e fazer alguma coisa antes de sair, então você está sem sorte.
Algumas referências: pergunta ServerFault 337123
Pergunta Unix 6332
Usando o Histórico Interativamente no manual GNU Bash
fonte