在涉及终端(即命令行)的代码文档中,在打算作为命令的代码行前添加 $
符号非常流行。
就像这样
$ brew install somepackage
这样做是为了模拟您(可能)在命令行上看到的提示符。 这是我的提示符

因此,美元符号 ($
) 是人们用来指示“这行代码应该在命令行上运行”的小技巧。
小问题
问题在于,我(而且我敢打赌大多数其他人也会)会从这些文档中复制粘贴这样的命令。
如果我将上面的命令按原样在我的终端中运行...

...它无法运行。 $
不是一个命令。 如何处理这个问题? 你只需要知道。 你只需要以前遇到过这个问题,并以某种方式了解到文档实际告诉你的是在命令行中运行命令 brew install somepackage
(不带美元符号)。
我称之为“小问题”,因为世界上每个工作中都会出现各种类似的问题。 当我在博客文章中写下 font-size: 2.2rem
时,我不会另外说,“将此声明放在你的 HTML 文件链接的 CSS 文件中的规则集中。” 你只需要知道这些东西。
用 CSS 修复
虽然这只是一个“小问题”,而且技术领域充斥着需要知道的东西,但这并不意味着我们不能尝试修复这个问题并做得更好。
这篇文章的灵感来自于这条推文,它获得了比我想象中更多的点赞
为了更详细地说明,我想你可能正在使用类似以下方式标记你的文档
<p>Install package like:</p>
<pre><code class="command">brew install package</code></pre>
现在你可以将 $ 作为伪元素插入,而不是作为实际文本
code.command::before {
content: "$ ";
}
现在你不仅节省了 HTML 中的一个字符,而且 $
无法被选中,因为这就是伪元素的工作原理。 现在你在 UX 方面做得更好一些。 即使用户双击该行或尝试全选,他们也不会得到导致复制粘贴错误的 $
。
希望他们不会因为无法复制 $
而同样感到沮丧。😬
所以,总之,就像我这样令人难以置信的设计
用文本修复
很多关于代码的文档都放在 GitHub 这样的公共 Git 代码库上。 你无法访问 CSS 来设置 GitHub 的样式,所以虽然可以使用一些技巧,但你不能直接在里面放置 CSS 代码来设置样式。
我们可能不得不(啊!)使用我们的文字
<p>
Install the package by entering this
command at your terminal:
</p>
<kbd class="command">brew install package</kbd>
其他想法
- 你可能根本不会考虑语法高亮显示。 我认为我从未见过在您输入命令时进行语法高亮显示的终端。
- Eric Meyer 建议 使用
<kbd>
元素,即键盘输入元素。 我喜欢它。 我一直使用<code>
,但我认为<kbd>
在这里更合适。 - Tim Chase 建议 使用
<span>
并将提示符包含在 HTML 中,以便您可以根据需要对其进行独特地设置样式,包括使用user-select: none;
使其不可选。 - Justin Searls 有一个 dotfiles 技巧,如果不小心复制粘贴了
$
,它会忽略它并运行后面的所有内容。 - Jackson Bates 建议 非常小心地复制粘贴到终端。
- 我了解到
$
也是一种表示“非特权”命令的方式,而# 用于表示 root 命令。 部分原因是,如果你复制粘贴 root 命令,它将不会运行,因为它会被识别为注释。
这就是 $ 所代表的,我已经想知道多年了。 在我的 Windows PC 上,我从未见过任何 $ 符号。 感谢您澄清这一点。
命令中的美元符号表示该命令以普通用户身份运行。
如果该命令由管理员(通常是“root”)运行,则符号为 #
你好,像往常一样很棒的文章。 $ 提示符不仅告诉您接下来要运行的内容是在终端中运行的,而且还告诉您命令应以普通用户身份运行。 如果您必须以超级用户权限运行命令,则该命令将以 # 提示符开头。 所以我认为在做这个的时候应该考虑到这一点。
是的
关于您其他想法的一些想法
我知道一个带有语法高亮显示的 shell:它被称为 fish,它很酷,虽然它的脚本与 bash/sh 不兼容。
至少在 Linux 上,bash 通常被配置为在以 root 用户身份登录时将 $ 提示符替换为 #
哇,这真是天才! 如果能在论坛和 Git 页面上的文档中实现就太好了。
多年来,我一直害怕终端; 每当我尝试运行命令时——“$ 未找到”会困扰我。 我从不确定在没有它的情况下运行命令是否意味着相同的事情,或者会导致世界末日。
现在我教授CLI 自动化; 我喜欢编写脚本来自动化繁琐的工作。 我真希望我早点开始。
直到今天,我认为添加 $ 会让初学者更难适应命令行的概念。 它对初学者不友好——缺少上下文。
我鼓励开发人员使用文字来解释命令,并使它们比使用 $ 来表示命令更易于访问。
谢谢您,Chris,写了这篇文章。 这样的 CSS 技巧确实很有帮助。
PowerShell 具有某种语法高亮显示。 在一定程度上很有用。
顺便说一下,示例不应该放在
<pre><kbd>
中吗?我敢肯定我在某个 Stack Exchange 网络上问过这个问题,但不幸的是我找不到它。 如果我没记错的话,其中一个答案建议在代码示例中打印
$
的原因实际上是为了阻止人们复制粘贴一堆代码到他们的终端,以防止出现意外结果。我想说zsh-syntax-highlighting(结合zsh-autosuggestions)彻底改变了我的生活... :P
fish
shell 和 Powershell 具有内置的语法高亮显示功能。