Respuestas:
El history
incorporado bash
permite especificar nombres de archivo cuando se usa con -anrw
banderas, y la -a
descripción de la bandera de los help history
estados:
agregar líneas de historial de esta sesión al archivo de historial
Por lo tanto, podemos hacer:
~$ history -a this_session.history
~$ cat ./this_session.history
history mysession.history
cat mysession.history
clear
history -a this_session.history
Para el registro, -w
(el historial de escritura en la opción de archivo) escribe el historial completo en el archivo especificado, por lo que -a
(agregar) aquí es la opción preferida.
Hay otras formas manuales. En particular, ksh
no tiene -a
marcar como bash
lo hace, pero lo que ksh
y mksh
que tienen es HISTFILE
variable de entorno (y bash
tiene que, también, porque bash
se incluye un montón de ksh
características); por cierto, esta variable por defecto no está configurada (al menos mksh
en Ubuntu no la configuró). Entonces, para enviar la sesión actual a otro archivo, llamamos HISTFILE
al comando prepended to que, en la sintaxis de shell, significa ejecutar el comando con la variable de entorno adicional que especifique. Al igual que:
bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$
bash-4.4$ cat ./mykshfile.hist
�echo 'Hello'
echo 'World'
Lo que también se puede ver de esto es que ksh
y sus shells relacionados muestran el historial con caracteres especiales, en lugar de texto sin formato como lo bash
hace. Por lo tanto, es posible que desee abrir ese archivo con ksh
.
En cuanto al shell POSIX /bin/sh
en Ubuntu , que es Debian Almquist Shell o Dash, existe fc
incorporado . Sin embargo, en Ubuntu guión se compila sin lib-edit , que es una elección consciente por parte de los desarrolladores de Ubuntu por razones de rendimiento, de modo fc
y otros modos que requieren la edición de línea no funcionan fuera de la caja (a menos que volver a compilar dash
su cuerpo e instale lib-edit
).
Las formas neutrales de Shell serían grabar su sesión con las herramientas existentes o escribir su propia función para grabar según el comando.