diff options
author | Alejandro Colomar <alx.manpages@gmail.com> | 2021-05-09 23:39:20 +0200 |
---|---|---|
committer | Michael Kerrisk <mtk.manpages@gmail.com> | 2021-05-10 11:33:10 +1200 |
commit | a3ccd456f3880b4a82c3f424e3375b3f75a03cbc (patch) | |
tree | c71c13f00afbdd255b8ef54c0dd12e947a10d0d0 /scripts | |
parent | 3a42b0815e69f00bb74aa002e77f321c634d0a66 (diff) | |
download | man-pages-a3ccd456f3880b4a82c3f424e3375b3f75a03cbc.tar.gz |
scripts/bash_aliases: man_section(): Accept multiple sections
Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/bash_aliases | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/scripts/bash_aliases b/scripts/bash_aliases index 813c00960c..7b1b7da9ca 100644 --- a/scripts/bash_aliases +++ b/scripts/bash_aliases @@ -85,26 +85,35 @@ function grep_syscall_def() ######################################################################## # Linux man-pages -# man_section() prints a specific manual page section (DESCRIPTION, SYNOPSIS, +# man_section() prints specific manual page sections (DESCRIPTION, SYNOPSIS, # ...) of all manual pages in a directory (or in a single manual page file). -# Usage example: .../man-pages$ man_section man2 SYNOPSIS; +# Usage example: .../man-pages$ man_section man2 SYNOPSIS 'CONFORMING TO'; function man_section() { if ! [ -v 2 ]; then - >&2 echo "Usage: ${FUNCNAME[0]} <dir> <section>"; + >&2 echo "Usage: ${FUNCNAME[0]} <dir> <section>..."; return ${EX_USAGE}; fi - find "${1}" -type f \ - |xargs grep -l "\.SH ${2}" \ + local page="$1"; + shift; + local sect="$@"; + + find "${page}" -type f \ + |xargs wc -l \ + |grep -v -e '\b1 ' -e '\btotal\b' \ + |awk '{ print $2 }' \ |sort -V \ |while read -r manpage; do - <${manpage} \ - sed -n \ - -e '/^\.TH/,/^\.SH/{/^\.SH/!p}' \ - -e "/^\.SH ${2}/p" \ - -e "/^\.SH ${2}/,/^\.SH/{/^\.SH/!p}" \ + cat \ + <(<${manpage} sed -n '/^\.TH/,/^\.SH/{/^\.SH/!p}') \ + <(for s in ${sect}; do + <${manpage} \ + sed -n \ + -e "/^\.SH ${s}/p" \ + -e "/^\.SH ${s}/,/^\.SH/{/^\.SH/!p}"; \ + done;) \ |man -P cat -l - 2>/dev/null; done; } |