3 ms·
I have a simpler solution. The use case is not precisely the same, but for many scenarios, it's effectively the same. Simply, like many, I have bash set up to
by whartung 5y ago
I have a simpler solution. The use case is not precisely the same, but for many scenarios, it's effectively the same.
Simply, like many, I have bash set up to record commands in .bash_history. I have it flush all the time, so .bash_history is always current.
# keep persistent bash history across sessions
export PROMPT_COMMAND='history -a;history -n'
export HISTCONTROL=ignoredups
shopt -s histappend
Next, I have a simple cron job running every minute.
file=/tmp/work.$$
cat ~/.bash_history ~/.unique_bash | grep -v findcmd | sort -u > $file
mv $file ~/.unique_bash
Then, I have a script called "findcmd" that simply greps my .unique_bash file.
for var in "$@"
do
cmd="| grep \"$var\" $cmd"
done
cmd="cat ~/.unique_bash $cmd"
eval $cmd
In the end, when I need to figure something out, I head to the internet. Those commands are then captured for posterity in the .unique_bash file. If I want to know how to post a JSON file to an endpoint using Curl, then
$ findcmd curl json
And all those curl commands show up.
It won't let me do something I don't know, but it make my memory much, much longer.
And, yea, I admit there have been instances where I've completely forgotten the command, and had to head back to the web. But when I've done that, I can hit my history and see how I used it.
If, sometimes, a "bad command", a command done wrong, too many of the same thing, just lingers, I can go edit it out. But most of the time I don't bother.
- suifbwish 5y agoThank you! You just improved my workflow and that does not happen every day. A spin I think I might add is to output all commands that do not result in standard error to a separate history file. .bash_history_no_error or something like that.
- themulticaster 5y agoYou might enjoy the fzf (fuzzy finder) tool configured for your shell's history search keybinding (most likely Ctrl+R). I can't elaborate at the moment, but essentially you type Ctrl+R, start typing roughly what you want and fzf searches your shell history based on what you typed. It works extremely well for me. Based on what you described, fzf Ctrl+R should be your workflow on steroids. Link: https://github.com/junegunn/fzf https://github.com/junegunn/fzf In particular, shell key bindings for fzf: https://github.com/junegunn/fzf#key-bindings-for-command-line https://github.com/junegunn/fzf#key-bindings-for-command-lin...
- racl101 5y agoYep, history is my go to Rosetta Stone for remembering other commands.
- Cerium 5y agoAnytime I sign into a system I have not signed into for a long time. The first thing I do is save the history file before I start working. Many times it has saved the day when you get stuck: where did I store that config? what was the command to restart the server?
- wink 5y ago(Unrelated to original post) That only helps if you know the keywords curl and json. My actual problem in the past has repeatedly been that I a) forget how the graphical file manager on my system is called because I use it a couple of times per year (dolphi, konqueror, thunar, whatever...) and b) I use i3 or xmonad and don't have a "start menu" to just browse. I think I should just put a symlink called explorer.exe in my ~/bin/ and then I know where to look ;)
- IshKebab 5y agoYou can use McFly instead: https://github.com/cantino/mcfly https://github.com/cantino/mcfly
- bobbob1921 5y agoNice work, I wanted to add how I deal with this. first my .bashrc Is setup to append and history is set to 100,000 lines. Most importantly I have an alias set up for the letter h , that greps, case insensitive .bash_history. ( grep -i $1 .bash_history ). So typing in the cli: # h awk gives me all my awk commands. And second , as a global history search across all my VMs/instances, (as I already make extensive use of splunk and splunks universal forwarder log forwarding app/tool) , all vms have their splunk universal forwarder service set to send any updates to .Bash_history to my central spunk server. thus I’m able to globally search the bash history from any VM globally, going back forever (I search that via the splunk web gui i mean). All works great!
- deleted 5y ago[deleted]