cross-posted from: https://beehaw.org/post/15501425

You can use cheat sh web service to show cheatsheets for all kind of commands. Just replace the command name: curl -s cheat.sh/date. I also wrote a a simple script with filename being just a question mark to get a working command as ?, that shows all commands in fzf menu if no argument is given or shows the cheatsheet in the less pager if command name is given.

Usage:

?
? -l
? date
? grep

Script ?:

#!/bin/env bash

cheat='curl -s cheat.sh'
menu='fzf --reverse'
pager='less -R -c'
cachefile_max_age_hours=6

# Path to temporary cache file. If your Linux system does not support /dev/shm
# or if you are on MacOS, then change the path to your liking:
cachefile='/dev/shm/cheatlist'      # GNU+LINUX
# cachefile="${TMPDIR}/cheatlist"   # MacOS/Darwin

# Download list file and cache it.
listing () {
    if [ -f "${cachefile}" ]
    then
        local filedate=$(stat -c %Y -- "${cachefile}")
        local now=$(date +%s)
        local age_hours=$(( (now - filedate) / 60 / 60 ))
        if [[ "${age_hours}" > "${cachefile_max_age_hours}" ]]
        then
            ${cheat}/:list > "${cachefile}"
        fi
    else
        ${cheat}/:list > "${cachefile}"
    fi
    cat -- "${cachefile}"
}

case "${1}" in
    '')
        if selection=$(listing | ${menu})
        then
            ${cheat}/"${selection}" | ${pager}
        fi
        ;;
    '-h')
        ${cheat}/:help | ${pager}
        ;;
    '-l')
        listing
        ;;
    *)
        ${cheat}/${@} | ${pager}
        ;;
esac
  • SolidGrue@lemmy.world
    link
    fedilink
    English
    arrow-up
    6
    ·
    3 months ago

    This is pretty cool!

    It works in Termux on Android too, you just need to uncomment the MacOS/Darwin cachefile line