Man
全文搜尋手冊頁並從 apropos(1) 等控制台獲取名稱和描述列表
有沒有辦法對手冊頁進行全文搜尋並從控制台獲取相關手冊頁的名稱和描述列表
apropos(1)
?您可以使用
man -K
. 但是存在三個問題:
man -K
不向控制台顯示第一個結果的標題。man -K
僅顯示這樣的聯機幫助頁的標題:
--Man-- next: ansible(1) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
3.man -K
需要Ctrl-D
跳過查看手冊頁的內容。因此,您不能使用yes(1)
將響應傳遞給man -K
.
可能有一種更簡單的方法,但我發現
man -K
可以結合使用-w
來列印包含搜尋詞的文件的路徑,並且您可以將其結合起來,lexgrog
例如提取 whatis 資訊:$ man -Kws1 apropos | sort -u | xargs -rd '\n' lexgrog | perl -pe's/.*?: "(.*)"/$1/' apropos - search the manual page names and descriptions emacs - GNU project Emacs editor groffer - display groff files and man pages on X and tty info - read Info documents lexgrog - parse header information in man pages man - an interface to the system reference manuals manpath - determine search path for manual pages scanimage - scan an image whatis - display one-line manual page descriptions xman - Manual page display program for the X Window System
xargs
(這裡假設 GNU-r
和-d
選項,儘管後者不太可能是必要的)您可以將其轉換為
full-apropos
腳本或函式,例如:#! /bin/sh - man -Kw "$@" | sort -u | xargs -rd '\n' lexgrog | perl -pe's/.*?: "(.*)"/$1/'
但是,我們缺少 man 部分資訊。由於那是在文件的路徑中,我們可以將其添加回來,例如:
#! /bin/sh - man -Kw "$@" | sort -u | while IFS= read -r file; do section=${file%/*} section=${section##*/man} lexgrog -- "$file" | perl -spe's/.*?: "(.*)"/$1/; s/ - / ($s)$&/' -- "-s=$section" done