O comando history
nunca funciona em um arquivo, apenas em sua lista de histórico na memória. Você só pode ler ( r
), escrever ( -w
) e anexar ( -a
) essa lista de ou para um arquivo e acessar ou manipular a lista na memória. A leitura de um arquivo substituirá ou estenderá o histórico na sua sessão atual do shell.
Você pode, no entanto, gerar outro shell e manipular seu histórico para executar qualquer comando desejado, sem afetar o histórico do seu shell atual:
bash -c 'history -cr file ; history'
ou
( history -cr file ; history )
Você pode adicionar quaisquer opções de histórico desejadas ao segundo comando history
nos dois casos. Se você estiver fazendo muito isso, você pode querer definir uma função aceitando o arquivo como um argumento e executando a versão do subshell:
histfile() {
( history -cr "$1" ; history )
}
Se você estiver interessado em exibir carimbos de hora salvos, também precisará definir HISTTIMEFORMAT
. Se você estiver usando um subshell e obtiver registros de data e hora no shell do host, ele deverá estar lá automaticamente, mas para a versão bash -c
ou um script, será necessário defini-lo:
bash -c 'history -cr file ; HISTTIMEFORMAT="%Y%m%d%H%I%S " history'
Você também pode export
da variável do shell pai.