Я часто смотрю в свой файл .bash_history, чтобы узнать, как я запускал программу или какие именно аргументы я использовал. Проблема в том, что моя история кажется очень неполной. Некоторые команды, которые я найду, я провел несколько месяцев назад, другие, которых я побежал вчера, и их нет. Я думаю, что проблема в том, что я много работаю над ssh, и я часто не выхожу из системы чисто, а скорее отключается, когда мой ноутбук спит, или я перехожу к другой сети Wi-Fi. Таким образом, кажется, что bash записывает только в файл истории, когда он выходит. Это правильно? Есть ли способ заставить его написать каждую команду или каждую команду?Как я могу сделать обновление bash_history чаще?
ответ
Добавить history -a
в ваш PROMPT_COMMAND
, чтобы обновить сохраненную историю до каждого приглашения.
PROMPT_COMMAND='history -a'
Это должно быть в вашем файле .bashrc
.
Вы можете установить Advanced Shell History, инструмент с открытым исходным кодом, который записывает вашу историю bash
или zsh
в базу данных sqlite. Это немного более экстремальные, чем просто в том числе history -a
в вашем PROMPT_COMMAND
, но он также записывает такие вещи, как текущий рабочий каталог, код завершения команды, запуск команды и остановки, начало сеанса и остановки, телетайп и т.д.
Если вы хотите запросить базу данных истории, вы можете зайти так далеко, чтобы писать пользовательские SQL-запросы и сделать их доступными в комплекте ash_query
. Есть также несколько полезных предварительно упакованных запросов, но, поскольку я хорошо знаю SQL, я обычно просто открываю базу данных и пишу что-то обычай, когда мне нужно что-то искать.
Одна команда, которую я нахожу очень полезной, однако, смотрит на историю текущего рабочего каталога. Это помогает мне вспомнить, где я остановился, когда работал над чем-то.
[email protected]:~$ ash_query -q CWD
session
when what
1
2014-08-27 17:13:07 ls -la
2014-08-27 17:13:09 cd .ash
2014-08-27 17:16:27 ls
2014-08-27 17:16:33 rm -rf advanced-shell-history/
2014-08-27 17:16:35 ls
2014-08-27 17:16:37 less postinstall.sh
2014-08-27 17:16:57 sudo reboot -n
И та же история с использованием текущего рабочего каталога (и все, что под ним):
[email protected]:~$ ash_query -q RCWD
session
where
when what
1
/home/vagrant/advanced-shell-history
2014-08-27 17:11:34 nano ~/.bashrc
2014-08-27 17:12:54 source /usr/lib/advanced_shell_history/bash
2014-08-27 17:12:57 source /usr/lib/advanced_shell_history/bash
2014-08-27 17:13:05 cd
/home/vagrant
2014-08-27 17:13:07 ls -la
2014-08-27 17:13:09 cd .ash
/home/vagrant/.ash
2014-08-27 17:13:10 ls
2014-08-27 17:13:11 ls -l
2014-08-27 17:13:16 sqlite3 history.db
2014-08-27 17:13:43 ash_query
2014-08-27 17:13:50 ash_query -Q
2014-08-27 17:13:56 ash_query -q DEMO
2014-08-27 17:14:39 ash_query -q ME
2014-08-27 17:16:26 cd
/home/vagrant
2014-08-27 17:16:27 ls
2014-08-27 17:16:33 rm -rf advanced-shell-history/
2014-08-27 17:16:35 ls
2014-08-27 17:16:37 less postinstall.sh
2014-08-27 17:16:57 sudo reboot -n
FWIW - Я автор и сопровождающий проекта.
выполнить следующую comands
- экспорта HISTTIMEFORMAT = "% d /% м /% г% T"
- shopt -s histappend
- PROMPT_COMMAND = "История -a; $ PROMPT_COMMAND "
Примечание- Вы можете добавить эти команды в файл .bash_profile и перезагрузиться для постоянного решения
- 1. Как я могу сделать обновление таблицы доктрины
- 2. Как я могу вспомнить команды из bash_history в vim?
- 3. Как добавить дату в .bash_history?
- 4. Как я могу сделать массовое обновление в Realm Android?
- 5. Как я могу сделать это обновление при изменении размера?
- 6. Как я могу сделать это динамическое обновление в Oracle?
- 7. Как я могу сделать обновление сайта в определенное время?
- 8. Как я могу сделать свое обновление CSS постоянным?
- 9. Как я могу сделать обновление BackColor Label быстрее?
- 10. Как я могу сделать обновление «крошечной версии» с помощью jQuery?
- 11. Как я могу сделать обновление mysql с точкой останова
- 12. Как я могу сделать обновление Django с условным футляром?
- 13. Как я могу сделать этот сложный запрос на обновление?
- 14. Петля заполнить .bash_history
- 15. Docker и .bash_history
- 16. disable .bash_history в GNU
- 17. Как я могу сделать простое окно, которое я могу сделать?
- 18. Как я могу реализовать обновление SQL, которое я могу отменить?
- 19. как я могу сделать .gitignore работать?
- 20. Как я могу сделать перевод? сделать это?
- 21. Как я сделать обновление заявление, где условие
- 22. Как я сделать обновление SQL C#
- 23. Как я могу получить автоматическое обновление SVN?
- 24. Как я могу это сделать?
- 25. Как я могу сделать ограничение?
- 26. Как я могу сделать скрипт?
- 27. Как я могу сделать перерыв?
- 28. Как я могу сделать наклон
- 29. Как я могу это сделать?
- 30. Как я могу сделать анимацию?
Обратите внимание, что в bash до bash-4.2-alpha была ошибка, которая предотвращала работу этого метода «history -a» (например, если вы начинали с пустой истории $ HISTFILE и 'PROMPT_COMMAND = '-a' ', $ HISTFILE не будет обновляться, как ожидалось). См. [Исходный отчет об ошибках] (http://lists.gnu.org/archive/html/bug-bash/2010-08/msg00071.html). Это было исправлено в bash-4.2-alpha (поиск 'history -a' в [CHANGES] (http://git.savannah.gnu.org/cgit/bash.git/diff/CHANGES?id=495aee441b75276e38c75694ccb455bb6463fdb9) для описание исправления. – troydj