Here's a function I put together that you could use to print help-related items, one at a time. I used the example of -m
and the long help string from the question. The function hard-codes a width of 10 for the first column, then computes the remaining space for column 2.
#!/bin/bash
function printhelp() (
c1width=10
cols=$(tput cols)
c2width=$((cols - c1width - 1))
readarray -t lines < <(printf '%s' "$2" | fmt -w $c2width)
for((line=0; line < ${#lines[*]}; line++))
do
if [ $line -eq 0 ]
then
col1="$1"
else
col1=" "
fi
printf "%-${c1width}s %-${c2width}s\n" "$col1" "${lines[line]}"
done
)
optf='-m'
optd='This is a very very very very very very very very very very very very very very very very very very very very long sentence'
printhelp "$optf" "$optd"
Sample output on a 50-column screen:
-m This is a very very very very very
very very very very very very very
very very very very very very very
very long sentence
and on an 80-column screen:
-m This is a very very very very very very very very very very very
very very very very very very very very very long sentence
and on a 130-column screen:
-m This is a very very very very very very very very very very very very very very very very very very very very
long sentence
and on a 150-column screen:
-m This is a very very very very very very very very very very very very very very very very very very very very long sentence
cmd --help
)? – user123456 Oct 10 '16 at 18:32