我想打印一个男人风格的用法消息来描述这样的输出man find
:
NAME
find - search for files in a directory hierarchy
SYNOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]
DESCRIPTION
This manual page documents the GNU version of find. GNU find searches the directory tree rooted at each
given starting-point by evaluating the given expression from left to right, according to the rules of
precedence (see section OPERATORS), until the outcome is known (the left hand side is false for and opera‐
tions, true for or), at which point find moves on to the next file name. If no starting-point is speci‐
fied, `.' is assumed.
OPTIONS
我在 ` 字符上遇到错误消息。
以下简单脚本显示错误:
~$ cat <<EOF
`.'
EOF
bash: bad substitution: no closing "`" in `.'
我虽然heredoc
是一种很酷的方式来通过粘贴来回显字符串,而不必转义其内容,例如引号等......
我认为我错了:/
有人可以解释一下这种行为吗?可以heredoc
接受`字符吗?
编辑 2:我接受了引用的 here-document <<'END_HELP'
的答案,但我最终不会将它用于这种完整的手动输出,因为kusalananda确实建议
编辑 1:(供将来阅读)使用引用的 here-document的限制是防止tput
在here-document
.
为此,我执行了以下操作:
- 未加引号
here-document
,用于tput
执行命令 - 通过转义反引号来防止“错误替换”错误
tput
内 使用here-document
例子:
normal=$( tput sgr0 ) ;
bold=$(tput bold) ;
cat <<END_HELP # here-document not quoted
${bold}NAME${normal}
find - search for files in a directory hierarchy
${bold}SYNOPSIS${normal}
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]
${bold}DESCRIPTION${normal}
This manual page documents the GNU version of find. GNU find searches the directory tree rooted at each
given starting-point by evaluating the given expression from left to right, according to the rules of
precedence (see section OPERATORS), until the outcome is known (the left hand side is false for and opera‐
tions, true for or), at which point find moves on to the next file name. If no starting-point is speci‐
fied, \`.' is assumed.
END_HELP
unset normal ;
unset bold ;
在这里,请注意作为错误来源的转义反引号:
\`.'
反引号引入了命令替换。由于未引用 here-document,因此 shell 将对其进行解释。由于命令替换没有结束反引号,因此 shell 会抱怨。
要引用此处的文档,请使用
或者
关于您对此问题解决的意见:
实用程序很少自己输出完整的手册,但可能会提供概要或基本使用信息。这很少(如果有的话)是彩色的(因为它的输出可能不会被定向到终端或寻呼机之类的
less
)。真正的手册通常使用groff
或专门的手册页格式化程序排版mandoc
,并且与代码完全分开处理。您想专门使用带有单引号/撇号的反引号/重音符号来引用某些内容吗?请不要,这种组合看起来很糟糕。在大多数字体中,反引号是倾斜的,而 (ASCII) 撇号是直的。这是我的浏览器显示您的手册页片段最后一行的方式:
如果你想使用比垂直 ASCII 引号更漂亮的引号,你可能应该使用U+2018和U+2019之类的东西。
输出当然取决于你的字体,但我认为“this”看起来比“this”更好。