在手册中sudo
我需要搜索-k
所以我尝试了这个:
man sudo | grep '\-k'
但这会导致输出结果只写了一半:
sudo -h | -K | -k | -V
Similar to the -k option, except that it removes the user's
-k, --reset-timestamp
相反,我尝试打印整个手册,并使用以下内容为搜索短语着色:
man sudo | grep '\-k\|$'
但是由于手册页太长,我无法向上滚动到足以到达输出的开头(注意:我不想更改终端的配置文件设置中的 Scrollback 行)。
所以我需要使用more
或less
命令,才能按页显示输出,所以我尝试了:
man sudo | grep '\-k\|$' | less
但它当然不起作用,因为管道在第一个命令上运行了第二个命令。
知道如何重定向管道吗?
或者grep
打印整个段落而不是一行?(行数基于终端的窗口大小)
答案1
man
默认情况下已经用作less
分页器来显示手册页内容。
现在less
已经具有内置的搜索和突出显示功能,因此您不需要类似的外部工具grep
。
man sudo
只需在 shell 中运行以打开手册页,然后输入/-k
(按下/并输入您的搜索模式)。less
现在将突出显示此正则表达式在文档中匹配的任何位置,并直接跳转到第一个匹配项。
n
然后,您可以通过键入(按)导航到下一场比赛,或者通过键入(按+ )N导航到上一场比赛。N
ShiftN
更一般地说,如果您想grep
在 中以彩色突出显示的方式查看 的输出less
,则必须使用grep --color=always
(始终发出颜色代码,即使不是输出到终端而是输出到管道)和less -R
(解释颜色转义而不是打印控制字符):
man sudo | grep --color=always '\-k\|$' | less -R
答案2
使用和grep
开关来捕捉周围的线条-A
-B
-C
man grep | grep '\-[ABC]' -A2
-A NUM, --after-context=NUM
Print NUM lines of trailing context after matching lines. Places a line containing a group separator (described under --group-separator) between contiguous groups of matches. With the -o or
--only-matching option, this has no effect and a warning is given.
-B NUM, --before-context=NUM
Print NUM lines of leading context before matching lines. Places a line containing a group separator (described under --group-separator) between contiguous groups of matches. With the -o or
--only-matching option, this has no effect and a warning is given.
-C NUM, -NUM, --context=NUM
Print NUM lines of output context. Places a line containing a group separator (described under --group-separator) between contiguous groups of matches. With the -o or --only-matching
option, this has no effect and a warning is given.
就你的情况而言:
man sudo | grep '\-k' -A5 -B2
这当然并不完美,因为您不知道需要多少行,但它仍然可以帮助您找到所需内容。
答案3
也许most
传呼机可以满足您的要求。试试
export PAGER=most
man sudo
/-k