|
- #!/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="$(cat "$hist_file" | fzy)"
- elif [ "$shellname" = "fish" ]; then
- hist_file="$HOME/.config/fish/fish_history"
- entry="$(cat "$hist_file" | grep "\- cmd: " | cut -c 8- | fzy)"
- fi
-
- if ! [ -z "$entry" ]; then
- tmpfile=$(mktemp)
- echo "$entry" >> $tmpfile
- $EDITOR $tmpfile
-
- cmd="$(cat $tmpfile)"
-
- if ! [ -z "$cmd" ]; then
- $SHELL -c "$cmd"
- fi
-
- rm $tmpfile
-
- echo -n "Press any key to exit"
- read input
- fi
|