#!/usr/bin/env sh # Description: Fuzzy find a command from history, edit in $EDITOR and run as a command # Currently supports only bash and fish history # # Shell: POSIX compliant # Author: Arun Prakash Jana shellname="$(basename "$SHELL")" if [ "$shellname" = "bash" ]; then hist_file="$HOME/.bash_history" entry="$(fzy < "$hist_file")" elif [ "$shellname" = "fish" ]; then hist_file="$HOME/.config/fish/fish_history" entry="$(grep "\- cmd: " "$hist_file" | cut -c 8- | fzy)" fi if ! [ -z "$entry" ]; then tmpfile=$(mktemp) echo "$entry" >> "$tmpfile" $EDITOR "$tmpfile" if [ -s "$tmpfile" ]; then $SHELL -c "$(cat "$tmpfile")" fi rm "$tmpfile" printf "Press any key to exit" read -r _ fi