Ответы:
history
Встроенный bash
позволяет указать имена файлов при использовании -anrw
флагов и -a
описание флага из help history
состояний:
добавить строки истории из этого сеанса в файл истории
Поэтому мы можем сделать:
~$ history -a this_session.history
~$ cat ./this_session.history
history mysession.history
cat mysession.history
clear
history -a this_session.history
Для записи -w
(история записи в файл opion) записывает всю историю в указанный файл, поэтому -a
(добавление) здесь является предпочтительным выбором.
Есть и другие ручные способы. В частности ksh
, не имеет -a
флаг, как это bash
делает, но то, что ksh
и mksh
есть, является HISTFILE
переменной среды (и bash
имеет это тоже, потому что bash
включает в себя множество ksh
функций); кстати, эта переменная по умолчанию не установлена (по крайней мере, mksh
в Ubuntu ее не устанавливали). Итак, для вывода текущего сеанса в другой файл мы вызываем HISTFILE
prepended to command, что в синтаксисе оболочки означает запуск команды с указанной вами дополнительной переменной среды. Вот так:
bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$
bash-4.4$ cat ./mykshfile.hist
�echo 'Hello'
echo 'World'
Из этого также видно, что ksh
и связанные с ним оболочки выводят историю со специальными символами, а не простым текстом, как это bash
делает. Итак, вы можете открыть этот файл с ksh
.
Что касается оболочки POSIX /bin/sh
в Ubuntu , то есть Debian Almquist Shell или Dash, то здесь есть fc
встроенная оболочка . Однако в Ubuntu dash компилируется без lib-edit , что является сознательным выбором разработчиков Ubuntu по соображениям производительности, поэтому fc
и другие режимы, требующие редактирования строк , не работают «из коробки» (если не перекомпилировать dash
и не установить самостоятельно lib-edit
).
Оболочка нейтральными способами будет записывать ваш сеанс с помощью существующих инструментов или написать свою собственную функцию для записи на основе каждой команды.