我正在学习 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 本身的页面内。
我应该保持标题不变还是将其更改为更合适的标题?
正如我在 eyoung100 的评论中指出的,我在 Debian 的 open-scsi 2.1.3-5 软件包中没有看到这个问题。另外,我的该文档副本的第 498 行没有字体选择转义序列(或请求),因此几乎可以肯定您使用的是另一个版本。
我的副本格式没有警告:
(我曾经
-ww
打开所有警告并-z
抑制格式化输出,因为我感兴趣的是诊断消息。)我确实在doc/iscsiadm.8文件副本的第 503 行看到以下内容:
如果我删除大写 I,我会得到以下结果。
因此,我认为您的副本也发生了类似的情况。
你可以试试这个:
这应该告诉您该页面是否存在我怀疑的错误。
人们可能想知道为什么会发生错误。这是由于字体选择转义序列的语法造成的
\f
。groff (7)对此进行了总结。方括号形式是 GNU troff对 AT&T troff语言的扩展。(它们实际上可能起源于 SoftQuad troff,它是 AT&T 的 Documenter's Workbench 2.0 troff的后代,现在几乎被遗忘了。)
因此,当您后面
\f
跟着左括号(
或左方括号以外的其他字符时[
,下一个字符将被解释为要选择的字体的名称。(它也可能是一位数的字体安装位置,但幸运的是,这种用法在man (7) 页中非常罕见。)就groff而言,终端仅支持四种字体名称:
R
、I
、B
和BI
;grotty ( 1) 手册页说明了更多内容。尝试选择任何其他字体名称都会失败;与 Unix 中的许多其他内容一样,*roff 字体名称区分大小写。 与早期版本的groff相比, groff 1.23.0 开始在字体选择失败时发出诊断信息。