Existe alguma maneira de verificar o histórico apenas da sessão atual?

10

Eu queria saber se existe algum comando ou qualquer outra maneira de verificar meu histórico de comandos apenas na sessão atual.

Andrew
fonte

Respostas:

12

O historyinterno bashpermite especificar nomes de arquivos quando usados ​​com -anrwsinalizadores e -adescrição dos sinalizadores dos help historyestados:

anexar linhas de histórico desta sessão ao arquivo de histórico

Portanto, podemos fazer:

~$ history -a this_session.history
~$ cat ./this_session.history 
history mysession.history 
cat mysession.history 
clear
history -a this_session.history

Para o registro, -w(o histórico de gravação no arquivo opion) grava todo o histórico no arquivo especificado, portanto -a(anexar) aqui é a opção preferida.


Existem outras maneiras manuais. Em particular ksh, não possui -asinalizador bash, mas o que tem ksh e o mkshque é é HISTFILEvariável de ambiente (e bashpossui isso também porque bashinclui muitos kshrecursos); a propósito, essa variável por padrão não está definida (pelo menos mkshno Ubuntu não a definiu). Portanto, para enviar a sessão atual para outro arquivo, chamamos o HISTFILEprefixo de comando, que na sintaxe do shell significa executar o comando com a variável de ambiente adicional especificada. Igual a:

bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$ 
bash-4.4$ cat ./mykshfile.hist 
�echo 'Hello'
echo 'World'

O que você também pode ver é que isso kshe seus shells relacionados geram histórico com caracteres especiais, em vez de texto sem formatação bash. Portanto, convém abrir esse arquivo com ksh.

Quanto ao shell POSIX /bin/shno Ubuntu , que é o Debian Almquist Shell ou Dash, existe fcembutido . No entanto, no Ubuntu traço é compilado sem lib-edit , que é uma escolha consciente pelos desenvolvedores do Ubuntu, por razões de desempenho, por isso fce outros modos que exigem edição de linha não funcionam fora da caixa (a menos que recompilação dash-se e instalar lib-edit).


Formas neutras do shell seriam gravar sua sessão com ferramentas existentes ou escrever sua própria função para gravar por comando.

Sergiy Kolodyazhnyy
fonte