#!/usr/bin/env bash # Abstract calls to Bash help vs man(1) self=han # Give up completely if no BASH_VERSINFO (<2.0) if ! [ -n "$BASH_VERSINFO" ] ; then exit fi # Figure out the options with which we can call help; Bash >=4.0 has an -m # option which prints the help output in a man-page like format. declare -a helpopts if ((BASH_VERSINFO[0] >= 4)) ; then helpopts=(-m) fi # Create a temporary file and set up a trap to get rid of it. tmpdir=$(mktemp -dt "$self".XXXXXX) || exit cleanup() { rm -fr -- "$tmpdir" } trap cleanup EXIT # If we have exactly one argument and a call to the help builtin with that # argument succeeds, display its output with `pager -s`. if (($# == 1)) && help "${helpopts[@]}" "$1" >"$tmpdir"/"$1".help 2>/dev/null ; then (cd -- "$tmpdir" && pager -s -- "$1".help) # Otherwise, just pass all the arguments to man(1). else man "$@" fi