「foo」、「bar」、「baz」という単語をすべて含むマニュアルページを検索

「foo」、「bar」、「baz」という単語をすべて含むマニュアルページを検索

「foo」、「bar」、「baz」という単語をすべて含むマニュアルページを検索したいと思います。

可能であれば、すべてのマニュアルページのすべてのテキスト(名前と説明だけでなく)を検索したいと思います。

そうだと思います。

man -K foo AND bar AND baz

ベストアンサー1

これを行うためにスクリプトを実装しました。

if [ $# -eq 0 ]; then
  PATTERNS=(NAME AUTHOR EXAMPLES FILES)
else
  PATTERNS=( "$@" )
fi

[ ${#PATTERNS[@]} -lt 1 ] && echo "Needs at least 1 pattern to search for" && exit 1

for i in $(find /usr/share/man/ -type f); do
  TMPOUT=$(zgrep -l "${PATTERNS[0]}" "$i")
  [ -z "$TMPOUT" ] && continue

  for c in `seq 1 $((${#PATTERNS[@]}-1))`; do
    TMPOUT=$(echo "$TMPOUT" | xargs zgrep -l "${PATTERNS[$c]}")
    [ -z "$TMPOUT" ] && break
  done

  if [ ! -z "$TMPOUT" ]; then
    #echo "$TMPOUT" # Prints the whole path
    MANNAME="$(basename "$TMPOUT")"
    man "${MANNAME%%.*}"
  fi
done

時間の無駄だと思います:(

編集:

man -K expr1 expr2 expr3

役に立たない?

編集:検索クエリを介してスクリプトを渡すことができます。./script foo bar

おすすめ記事