Есть ли способ проверить историю только текущей сессии?

10

Я хотел знать, есть ли какая-либо команда или любой другой способ, которым я могу проверить свою историю команд только в текущем сеансе.

Эндрю
источник

Ответы:

12

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 ее не устанавливали). Итак, для вывода текущего сеанса в другой файл мы вызываем HISTFILEprepended 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).


Оболочка нейтральными способами будет записывать ваш сеанс с помощью существующих инструментов или написать свою собственную функцию для записи на основе каждой команды.

Сергей Колодяжный
источник