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 $
? IE以“至少一个空格”或“换行符”结尾。
我尝试过$ man gcc | less -p "^[ ]+[-]*Wall[ |$]"
,但不起作用。
请注意,我接受这种不需要的跳转,它以结尾[ ]
但不是真正的开头,因为我相信如果正则表达式是[ ]
OR ,它是无法解决的$
:
[感谢您的回答]
我想在这里分享我的最终形式:
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
require[
和scale
来自mplayer
require=
我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
(这里使用减号有很大区别)。of’
使用的Unicode 左单引号。-f
ls
答案1
我相信您误解了正则表达式[
中方括号的含义。]
注意你的模式:
^[ ]+[-]*Wall[ |$]
[ ]
与(单个空格)完全相同并且
[-]
与 完全相同-
。并且在该模式的最后部分,[foo|bar]
并不表示“要么foo
或bar
”。
您要找的是( |$)
.这是匹配一件事或另一件事的语法。 (由于美元符号的原因,您还需要用单引号或反斜杠而不是双引号来引用模式的该部分)。
[thing]
表示一个字符类:它匹配t
、h
、i
、n
或g
。
答案2
[ ]
和怎样组合$
?
([ ]|$)
或者( |$)