Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Store your zsh history into a sqlite3 database (github.com/larkery)
85 points by pmoriarty on Aug 17, 2017 | hide | past | favorite | 16 comments


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.


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.


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.







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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: