Skip to content

drmikecrowe/xontrib-log-all-history

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The xontrib save shell session history in `$HOME/.logs`.

If you like the idea click ⭐ on the repo and tweet.

Install

To install use pip:

xpip install xontrib-log-all-history
# or: xpip install -U git+https://github.com/drmikecrowe/xontrib-log-all-history

Usage

xontrib load log_all_history
# TODO: what's next?

⚠️ If you using SqliteHistory backend, you must include $XONSH_HISTORY_BACKEND = 'sqlite' before loading. For example:

$XONSH_HISTORY_BACKEND = 'sqlite'
xontrib load log_all_history

Architecture

This plugin intercepts history before sending to the JsonHistory or SqliteHistory backend. In short it takes the current command line and append to a history named $HOME/.logs/$PWD/xonsh-history-{DateTime}.log.

For example:

cat README.md > /dev/null
tail $LOG_ALL_HISTORY_FILE
# 2022-03-11.21.17.01 cat README.md > /dev/null

I've been using this method since October in 2019 (both in bash and now xonsh). Here's stats on my logs directory:

du -sh ~/.logs
# 16M     /home/mcrowe/.logs
egrep '^201' ~/.logs -Rh | cut -b -7 | sort | uniq | head -n 1
# 2019-10
find ~/.logs | wc -l
# 3645

Searching History

Two helper aliases are enabled to assist in searching your accumulated history.

  • hgrep -- "H"istory "Grep". This command is simply grep -ERh {SEARCH_STRING} $HOME/.logs -- it searches all folders.
  • hdgrep -- "H"istory in this "D"irectory "Grep". This command is simply grep -ERh {SEARCH_STRING} $HOME/.logs/$PWD -- it searches all logs you've done in this specific directory.

For example you use the python command frequently. You remember using a python command in the past for the current project with a lot of parameters you figured out, but you didn't save it. If you did hgrep python, you'd find many entries. By using hdgrep python, you find the specific command.

Example:

hgrep cat | wc -l
# 1427
hdgrep cat | wc -l
# 10

Environment variables

$LOG_ALL_HISTORY_DIR

If you want to place to the logs in a different folder, set:

$LOG_ALL_HISTORY_DIR = f"{$HOME}/.all-logs"
xontrib load 'log-all-history'

Credits

This package was created with xontrib cookiecutter template.