misc-scripts/fzfmenu-run

15 lines
535 B
Bash
Executable File

#!/bin/sh
set -euf
cmd="$(IFS=':'; find $PATH \( -type f -o -type l \) | awk -F '/' '{print $NF}' | sort | uniq | fzfmenu --layout reverse --prompt 'run > ' "$@")"
# this menu will act as if you typed the command in a shell, hence eval and -e sh -c
# this runs in userspace, so no eval security risk should be present
# that is, no more of a risk than what said user could do with a shell themselves
case "$cmd" in
''|'!') exit 1 ;;
*'!') exec "${TERMINAL:-urxvt}" -e sh -c 'exec '"${cmd%!}" ;;
*) exec sh -c "exec $cmd" ;;
esac