我可以强制`man`进行小写敏感匹配吗?


10

当我搜索手册页时,搜索区分大小写,但仅针对大写字母。例如,x将匹配xXX仅匹配x。这是man-dbman 的版本,默认情况下使用在fedora派生系统上,其他版本可用。 man man说默认的传呼机是less -s$LESS在环境中未定义,我$PAGERless,我没有别名。

当我less自己调用时,这不是行为。

无论如何,在使用时是否强制小写x仅匹配小写?xman


1
默认值为严格区分大小写。您所描述的听起来像您的LESS环境变量包含-i
manatwork 2014年

1
less你有什么版本的?您是否设置了别名less?是否设置了LESS或LESSOPEN env var?默认情况下lessx仅搜索匹配项x,而不搜索X
bsd 2014年

我们不是已经有了这个问题吗?我想Hauke会问,我会寻找...。(SLM在5分钟前回来。在评论中过期...)这是一个非重复的,但看起来像您在问的,不是吗?unix.stackexchange.com/questions/116395/…–
slm

@slm,这也是我的第一个反应,但是当问题所有者参与该问题时,我想他知道这一点。
manatwork 2014年

@manatwork echo $LESS=没有。请注意,它不是大小写敏感的,而是仅强制使用WRT大写字母。@bdowning alias | grep less=没有。只是注意到它仅通过man(适用于mandb,btw)来应用。我敢肯定,我之前在某处已经读过这本书……
goldilocks 2014年

Answers:


3

人在呼唤更少;在人员级别上,唯一的控制权是选择使用哪个选项调用Less。

Less的搜索区分大小写由两个选项控制。

  • 如果-I有效,则搜索不区分大小写:aA可以用于匹配aA
  • 如果-i有效但不起作用-I,则搜索不区分大小写,但前提是该模式不包含大写字母。

如果-I为“ Less”设置默认选项,则即使在手册页中,所有搜索也不区分大小写。

Man-db通过LESS环境变量将其他选项传递给寻呼机,Less的解释方式与命令行选项相同。该设置在编译时进行了硬编码,并以开头-i。(该值"-ix8RmPm%s$PM%s$"自Man-db 2.6.2起;该P…$部分为提示字符串。)

如果您不希望手册页中的搜索区分大小写,或者希望它们始终不区分大小写,则无法在man-db本身中进行配置。您可以为man操作LESS环境变量创建别名或包装脚本,因为Man-db会将其内容附加到当前值(如果存在):

alias man='LESS="$LESS -I" man'

要关闭该-i选项,从而使手册页中的搜索默认情况下始终区分大小写:

alias man='LESS="$LESS -+i" man'

您还可以LESS通过设置MANLESS环境变量来为该值硬编码,但是如果这样做,则man只需将其设置LESSMANLESS,就会丢失自定义标题行(“手册页foo(42)”)和其他商品(尤其是make确保包含-R粗体和下划线格式)。


1

这是如何less-i(命令行开关)‘不区分大小写’模式下工作(即,它仍是上区分大小写)。正如Gilles指出的那样,使用它被编译到man-db中。

除了Gilles回答WRT中指定别名+-i或自定义设置的方式之外MANLESS,您还可以在打开手册页时切换严格的大小写匹配-i(打开和关闭开关);您会看到一则“搜索结果很重要”的消息,现在x仅匹配xX仅匹配X

Man-db man有一个-I开关,但这适用于搜索手册页-例如,默认情况下,man BASH将为您提供bash手册页,而man -I BASH不会。


0

“无论如何,在使用时是否强制小写字母x只匹配小写字母?”xman

这是一种方法

man -Tascii manpage |less

我不知道详细信息,但是该roff处理正在执行标记,并且寻呼机似乎正在匹配未标记的文本,即使它正在显示标记的文本。
非常令人困惑,希望nroff大师可以解释管道。


这在我的GUI终端(充满ESC[1m类型序列)中造成混乱。
goldilocks 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.