!['man' 如何将双引号渲染为双反引号和主字符?](https://linux22.com/image/96124/'man'%20%E5%A6%82%E4%BD%95%E5%B0%86%E5%8F%8C%E5%BC%95%E5%8F%B7%E6%B8%B2%E6%9F%93%E4%B8%BA%E5%8F%8C%E5%8F%8D%E5%BC%95%E5%8F%B7%E5%92%8C%E4%B8%BB%E5%AD%97%E7%AC%A6%EF%BC%9F.png)
当我执行以下命令时:
man bash
我看到报价显示为:
``...''
有帖子解释了为什么会发生这种情况:
但我还没有找到强制的方法男人或底层寻呼机显示 ASCII 双引号 (") 或加粗字符,或除使用反引号/撇号字符之外的任何内容。
我的用例是我希望能够搜索巴什单引号或反引号的手册页表明它们具有语义价值,而非语义反引号/质数字符的混乱使这变得很困难。
我尝试将 LC_ALL 从 en_us.UTF-8 更改为 C,并尝试使用男人的选项 -P 来指定其他寻呼机/选项,但我还没有找到解决方案。
我的环境是 man 2.6.3、CentOS 7.2 (3.10.0-327.13.1.el7.x86_64)、bash 4.2.46(1) 或 zsh 5.0.2。
我的偏好是找到一个解决方案,导致男人将双引号呈现为 ASCII 双引号字符 ("),或将引用的内容呈现为格式化文本(例如,通过下划线或粗体显示)。
这同样适用于如何男人将单引号内容呈现为`内容'。
一个糟糕的解决方法:
man bash | sed -e "s/\(''\|\`\`\)//g" -e "s/\`\([^']*\)/\1/g" | less
谁能告诉我如何制作男人不显示带有反引号和撇号的引用内容?该解决方案不应要求安装任何软件(即,该解决方案应适用于 CentOS 7.2 最小安装)。
答案1
bash 手册页中的反引号是在 troff 源代码中明确给出的,而不是某些宏的结果,因此很难更改。但是,特殊的单反引号被引用\`
,因此您可以将 sed 应用于源 troff,而不是使用此差异。
相反,您可以添加 troff 命令将反引号转换为其他字符。该命令.tr AXBY
将所有 A 转换为 X,将 B 转换为 Y。所以
(echo '.tr `"'\''"'; zcat $(man -w bash)) | man /dev/stdin
将反引号和单引号转换为双引号。这使得您在输出中只留下想要的特殊单反引号,尽管您也有像the pipeline"s return
.
总的来说,我认为你的“糟糕的解决方法”已经足够了。
答案2
这可能不是一个令人愉快的选择,但您可以用作的HTML 输出的w3m
浏览器:man
BROWSER=w3m man -H bash
它``…''
使用 Unicode 引号进行渲染(与 Google Chrome 一样,但由于某种原因lynx
没有)。
FreeBSD 的联机帮助页存储库告诉我CentOS 7man
确实支持-H
。
答案3
同意 @meuh 的观点,即引号已嵌入 troff(手册页)源中,无论是难的改变是值得商榷的。这主要取决于给定文档的开发人员。 bash 使用该约定来处理相关工具集,例如,makeinfo
。
例如,xterm 的手册页使用宏来获得(可以说)更好的外观:
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds AQ \(aq
.el .ds AQ '
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
这是来自错误报告(已修复2009年):
使用宏解决 ASCII 引号的 groff 映射(Reuben Thomas 根据 Colin Watson 建议提出请求,修复Debian #378700)。
并使用,例如
.PP
Although both windows may be displayed at the same time, one of them is
considered the \*(``active\*('' window for receiving keyboard input and terminal
output.
并生成这个(从 xterm 剪切/粘贴以保留备用引号):
尽管两个窗口可能同时显示,但其中一个被视为“活动”窗口,用于接收键盘输入和终端输出。这是包含文本光标的窗口。可以通过转义序列、VTxxx 窗口中的 VT 选项菜单以及 4014 窗口中的 Tek 选项菜单来选择活动窗口。
截图可以更好地显示它:
由于宏中的条件,PDF 中的结果使用不同的引号:
因此,可能的改进是修改预处理器以添加宏定义并替换 groff 的命名字符而不是文字单引号和双引号。由于默认情况下两者都不生成 ASCII,因此结果中的语法混乱会更少。
这提醒我,将这些“xxx”更改为斜体会改善情况(也许是另一次)。