16 comments

[ 3.6 ms ] story [ 48.0 ms ] thread
anyone know of something like this for bash?
I use this:

> export PROMPT_COMMAND='if [ "$(id -u)" -ne 0 ]; then echo "$(date "+%Y-%m-%d.%H:%M:%S") $(pwd) $(history 1)" >> ~/.logs/bash-history-$(date "+%Y-%m-%d").log; fi'

It just logs everything into files per date, have come in handy at times.

This looks very cool! I especially love the attention to syncing and merging, as well as the section specifically for zsh-autosuggestions. However, I really wish there were performance metrics (e.g. "zsh-autosuggestions used to take me Xms but now they only take Yms, and I have Z entries in my history")
I don't have any timing data and I don't actually use the autosuggest thing (I wrote that for someone else who asked about it), but I can say that I have months of daily use in mine and there's no noticeable query delay or insertion delay so far.

Sqlite3 is to thank for that, it's a pretty amazing bit of engineering.

I've been using this for a while. I like the fact that it stores dates/times of command executed. I plan to combine this with org-mode to quickly get a report of all shell commands executed while I was working on a specific task. Helps if I want to convert it into a guide/blog post.
Not that it affects you, but for others that think have date/time in their history zsh supports this with their EXTENDED_HISTORY (setopt extendedhistory) option. Formats history as...

: <beginning time>:<elapsed seconds>;<command>

You can do that w/o external tools, at least in bash. Just set HISTTIMEFORMAT. see man bash.
why do i want to know how many times i type ls!!!!!

j/k This seems pretty cool

it stores those under _BORING_COMMANDS and doesn't log them.

Source: Read the source

OffTopic: I have always considered my (bash) history as a profound source of knowledge. I hope one day, some machine learning wizard will create a function extractor from history. Something like: "oh it seems you often chain those commands: .... Let me make a function for you. Here it is: ... How would you like to call it?"
Have you tried the ”fish” shell? It's the closest I've seen to what you're describing, but not exactly the same.