更少的模式 - 以或 $
請參閱can-i-get-individual-man-pages-for-the-bash-builtin-commands:
bashman () { man bash | less -p "^ $1 "; }
此函式將直接跳轉到所需的 bash 手動參數部分。
我想讓它即時接受任何手動名稱和手動參數,所以我將此功能更改為:
function superman () { man "$1" | less -p "^[ ]+[-]*$2[ ]" }
它完美地適用於:
$ 超人 bash 類型
並跳轉到所需的手冊頁部分:
但它不適用於以換行符結尾的部分。我需要將其更改為:
function superman () { man "$1" | less -p "^[ ]+[-]*$2$" }
然後執行
$ superman gcc Wall
將能夠跳轉到Wall
參數:如何結合
[ ]
和$
成為[ ] OR $
?即以“至少一個空格”或“換行符”結尾。我試過
$ man gcc | less -p "^[ ]+[-]*Wall[ |$]"
了,但它不起作用。請注意,我接受這種不受歡迎的跳轉,它以結尾
[ ]
但不是真正的開始,因為我相信如果正則表達式是[ ]
OR ,它是無法解決的$
:$$ Thanks for answers $$ 我想在這里分享我的最終表格:
function superman () { if [[ "$1" == "-I" || "$1" == "-i" ]]; then man "$2" | less -I -p "^[ ]+-*$3( |=|,|$|\[)" else man "$1" | less -p "^[ ]+-*$2( |=|,|$|\[)" fi }
如果我執行
superman -i gcc wl
這意味著不區分大小寫以跳轉到-Wl,option
部分,這將起作用。-Wl,option
從gcc
要求,
。scaletempo
從mplayer
要求[
和scale
從mplayer
要求=
我也寫過
info
版本:function superinfo () { if [[ "$1" == "-I" || "$1" == "-i" ]]; then info "$2" | less -I -p "^ *‘*'*-*\** *$3’*( |=|,|$|\[|:|')" else info "$1" | less -p "^ *‘*'*-*\** *$2’*( |=|,|$|\[|:|')" fi }
用
superinfo gcc _HPPA
,superinfo -i gcc werror
,superinfo -i gcc wl
,superinfo -i mplayer scaletempo
,superinfo -i mplayer stats
,superinfo -i ls -f
, 和superinfo -i bash -a
( 減號在這裡有很大的不同) 進行了測試。Unicode 的左單引號’
由-f
of使用ls
。
我相信您對正則表達式
[
中方括號的含義有誤。]
注意你的模式:^[ ]+[-]*Wall[ |$]
[ ]
完全一樣(a single space) and
[-]is just exactly the same as
-. And in the final part of the pattern,
[foo|bar]does not signify "either
fooor
bar".
What you're looking for is
( |$)`. That’s the syntax for matching one thing OR another thing. (You’ll also need to quote that part of the pattern with single quotes or a backslash instead of double quotes, because of the dollar sign).
[thing]
denotes a character class: it matches eithert
,h
,i
,n
, org
.`