O history
incorporado em bash
permite especificar nomes de arquivos quando usados com -anrw
flags e -a
flag description de help history
states:
append history lines from this session to the history file
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 para opion do arquivo) grava o histórico whole no arquivo especificado, portanto -a
(append) aqui é a escolha preferida.
Existem outras formas manuais. Em especial, ksh
não tem -a
sinalizador como bash
, mas o que ksh
e mksh
têm é HISTFILE
variável de ambiente (e bash
tem isso também, porque bash
incluiu muitos recursos ksh
); a propósito, esta variável por padrão não está definida (pelo menos mksh
no Ubuntu não configurou). Portanto, para a saída da sessão atual para outro arquivo, chamamos HISTFILE
prepended to command, que na sintaxe shell significa executar o comando com a variável de ambiente adicional que você especificar. Assim:
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 a partir disso é que ksh
e seus shells relacionados geram histórico com caracteres especiais, em vez de texto simples como o que bash
faz. Então, você pode querer abrir esse arquivo com ksh
.
Tanto quanto o POSIX /bin/sh
shell no Ubuntu , que é o Debian Almquist Shell ou o Dash, existe fc
embutido . No entanto, no Ubuntu dash é compilado sem o lib-edit , que é uma escolha consciente dos desenvolvedores do Ubuntu por razões de desempenho, portanto fc
e outros modos que requerem edição de linha não funcionam imediatamente (a menos que você recompile dash
e instale %código%).
As formas neutras da Shell seriam gravar sua sessão com as ferramentas existentes ou para gravar por comando.