我正在学习 iscsiadm 的用法,不知何故我注意到grep
.
尝试运行以下 grep 命令man iscsiadm | grep "aia"
会导致troff:<standard input>:498: warning: cannot select font 'i'
.
我试了一下,发现当我 grep for ia
or时并没有出现错误ai
,因此,它一定是由特定模式引起的aia
。
谁能为这种行为提供解释?
编辑
@telcoM
我运行了这两个命令,两个文件都包含相同的错误;它们实际上是相等的,是的,我不再在控制台中看到错误消息。这两个文件都包含与以前相同的错误消息。
@TheNotoriousGBR
看来你是对的。我运行了命令zgrep '\\fi' $(man -w iscsiadm)
,实际上大写的“I”丢失了:
\fiSNS\fR supported depends on build options, but is enabled by default.
根据之前的结果,该问题似乎与grep
许多人建议的无关,但实际上位于man
iscsiadm 本身的页面内。
我应该保持标题不变还是将其更改为更合适的标题?
答案1
正如我在 eyoung100 的评论中所指出的(编辑:在现已删除的答案中),我在 Debian 的 open-scsi 2.1.3-5 软件包中没有看到这个问题。另外,我的该文档副本的第 498 行没有字体选择转义序列(或请求),因此几乎可以肯定您使用的是另一个版本。
我的副本格式没有警告:
$ nroff -ww -man -z ./doc/iscsiadm.8
(我曾经-ww
打开所有警告并-z
抑制格式化输出,因为我感兴趣的是诊断消息。)
我确实看到了,在我的副本的第 503 行doc/iscsiadm.8文件,内容如下:
like you would in node mode, run \fIiscsiadm \-m fw\fR.
如果我删除大写 I,我会得到以下结果。
$ nroff -ww -man -z ./doc/iscsiadm.8
troff:./doc/iscsiadm.8:503: warning: cannot select font 'i'
因此,我认为您的副本也发生了类似的情况。
你可以试试这个:
$ zgrep '\\fi' $(man -w iscsiadm)
这应该告诉您该页面是否存在我怀疑的错误。
人们可能想知道为什么会发生错误。这是由于字体选择转义序列的语法造成的\f
。就是这样格罗夫(7) 总结。
\fP Select previous font mounting position (abstract style or
font); same as “.ft” or “.ft P”.
\fF Select font mounting position, abstract style, or font with
one‐character name or one‐digit position F. F cannot be P.
\f(ft Select font mounting position, abstract style, or font with
two‐character name or two‐digit position ft.
\f[font]
Select font mounting position, abstract style, or font with
arbitrarily long name or position font. font cannot be P.
\f[] Select previous font mounting position (abstract style or
font).
方括号形式是 GNU特罗夫AT&T 的扩展特罗夫语言。 (它们实际上可能起源于 SoftQuad特罗夫,现在几乎被遗忘的 AT&T Documenter's Workbench 2.0 的后代特罗夫.)
因此,当您\f
后面跟着左括号(
或左方括号以外的其他字符时[
,下一个字符将被解释为要选择的字体的名称。 (也可以是个位数字体安装位置,但这种用法在男人(7) 页——幸运的是。)
据,直到...为止格罗夫就终端而言,仅支持R
、I
、B
、四种字体名称BI
;这糟糕的(1) 手册页说明了更多内容。尝试选择任何其他字体名称都会失败;与 Unix 中的许多其他内容一样,*roff 字体名称区分大小写。 格罗夫1.23.0 开始在字体选择失败时发出诊断,比早期版本的情况要多得多格罗夫做过。