bash история для текущей сессии

Вопрос или проблема

Может быть, я что-то упускаю, но есть ли способ получить текущую историю bash для сессии, которую вы используете, например

если я выполняю

ssh host
$ pwd
$ ls
$ cd /tmp

Я просто хочу увидеть эти 3 команды и ничего больше

Немного обходной путь:

history -a ~/current_history

Это сохранит несохраненную историю bash текущей сессии в ~/current_history, которую вы затем сможете просмотреть.

У меня была проблема, что я хотел записать текущую history в файл, но все же хотел, чтобы записи заносились в основную history bash

Я решил это, просто присоединив файл с помощью cat:

history -a current-history
cat current-history >> .bash_history

Используйте history -a с именем файла. Это может быть файл устройства, как /dev/stdout.

Тогда вы можете направить это, как вам угодно. Например, чтобы просмотреть историю текущей сессии в less, вы можете

history -a /dev/stdout | less

Используйте comp, чтобы сравнить всю историю (включая текущую сессию Bash) с уже сохраненной историей в .bash_history и распечатать только те строки, которые уникальны для текущей сессии — это должно показать только те команды, которые были выполнены с момента начала текущей оболочки Bash

comm -23 <( history | cut -c 8- ) ~/.bash_history

Редактировать: как отметил @Wildcard, эта команда не работает для всех дистрибутивов comm. Я тестировал это на Mac OS.

Вариант той же идеи с использованием diff:

diff <( history | cut -c 8- ) ~/.bash_history | sed -n 's/^< //pg'

Попробуйте добавить это в ваш .bashrc файл

alias currenthistory="history|tac|sed '/exit/q'|tac"

затем выполните

currenthistory

когда вы хотите увидеть историю текущей сессии.

Это ищет последний раз, когда вы выполнили команду exit, и затем показывает все команды, выполненные после этого. Это работает, сначала переворачивая список истории, затем находя все команды до exit, затем он развертывает его обратно.

Этот метод не работает, если у вас есть какая-либо другая команда, содержащая “exit” (поэтому вы хотите добавить это как псевдоним в .bashrc, чтобы он не совпадал с самим собой) или вы используете Control+D для завершения сессий.

.

Ответ или решение

Вопрос об отображении истории bash для текущей сессии может быть решён различными методами. Ниже приведены несколько подходов, которые помогут вам эффективно отобразить именно те команды, которые были выполнены в текущей сессии, используя Bash.

1. Использование команды history -a

Вы можете воспользоваться командой history -a, чтобы записать историю вашей текущей сессии в отдельный файл и затем его просмотреть. Например:

history -a ~/current_history

Это сохранит историю в файл ~/current_history, который потом можно открыть любым текстовым редактором.

2. Просмотр с помощью less

С помощью команды history -a можно записать историю на устройство вывода, как /dev/stdout, и затем просмотреть её при помощи утилиты less:

history -a /dev/stdout | less

3. Сравнение с .bash_history

Чтобы вывести только команды текущей сессии, которые еще не записаны в .bash_history, можно использовать команды comm и diff. Вот пример с использованием comm:

comm -23 <(history | cut -c 8-) ~/.bash_history

Однако эта команда может не работать на всех системах одинаково. Альтернативно, с помощью команды diff:

diff <(history | cut -c 8-) ~/.bash_history | sed -n 's/^< //pg'

4. Использование псевдонима в .bashrc

Вы также можете настроить псевдоним для отображения истории текущей сессии. Добавьте в файл .bashrc следующее:

alias currenthistory="history|tac|sed '/exit/q'|tac"

Затем, запустив команду currenthistory, можно будет увидеть всю историю команд, начиная с последнего завершения сессии командой exit.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...