我经常参考 man bash 来回忆“历史扩展”部分(事件/单词/修饰符)的使用。我知道我需要的男人部分是“历史扩展”。所以我在正向搜索列表中输入HISTORY EXPANSION
“/”。当然,less 不会直接跳转到“HISTORY EXPANSION”部分,而是显示给定 man 中该字符串的所有出现情况。因此,我认为输入如下内容会很棒:
/^HISTORY EXPANSION
这样我就可以跳到“行首”历史扩展。
既不工作/^HISTORY EXPANSION
也不/\^HISTORY EXPANSION
工作
在更少的人身上,我看到......
/pattern
在文件中向前搜索包含该模式的第 N 行。 N 默认为 1。该模式是正则表达式,由系统提供的正则表达式库识别。
我看到其他人也在研究这个问题,但目的不同: https://stackoverflow.com/questions/14698364/what-is-the-regular-expression-library-supplied-by-my-system
我按照这些步骤操作,但仍然无法确定我的计算机上使用的正则表达式版本。这是 less 二进制文件的共享库依赖项输出
$ ldd /usr/bin/less
linux-vdso.so.1 => (0x00007ffc229cb000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f44968e9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4496524000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4496b12000)
那么,如何在较少的搜索中指示行的开头,以便我可以轻松跳转到我需要的 man 部分?
答案1
经过尝试和实验,人类似乎确实用空格缩进了行。这就是我可以找到/^HISTORY EXPANSION
但失败的原因/^The history library
(这是历史扩展部分的第一句话)。这是正确的模式:
/^[[:space:]]{7}The history library...
正如我们所看到的, man/less 只是在不是节标题的每一行前面添加 7 个“空格”(ascii dec code 32)(以粗体显示,正如我看到其他人所说的那样)。我不能肯定地说这是否适用于所有 Linux 发行版/man 二进制文件,但到目前为止我测试过的所有文件都是如此。总结一下,以便在 man find 使用中找到(从第一次搜索)'-atime' 选项的描述
/^[[:space:]]{7}-atime
答案2
当 man 的输出经过 more 时,每个粗体字符实际上就是该字符,后跟一个退格键,然后重复该字符,然后到下一个字符。要查找粗体内容,请搜索 /^H..I..S..T
您也可以在 Stéphane 指出的文章中找到它。