如何在markdown中突出显示bash/shell命令?

556

我该如何在Markdown文件中突出显示Bash/Shell命令?


例如,要突出显示js,我会写:

```js
function () { return "This code is highlighted as Javascript!"}
```

我使用```html来突出显示HTML代码。

那么我们如何突出显示Bash/shell命令呢?


20
жҲ‘еҸҜд»ҘжӢ…д»»дёӯж–Үзҝ»иҜ‘пјҢд»ҘдёӢжҳҜйңҖиҰҒзҝ»иҜ‘зҡ„еҶ…е®№пјҡTL;DR: \``shellor```bash` - Ricardo
8个回答

629

如果您想要突出展示一个shell会话命令序列,以便用户可以看到提示符(而不仅仅是作为一个假设的脚本文件的内容),那么目前可以使用的正确标识符是console

```console
foo@bar:~$ whoami
foo
```

GitHub Markdown预览选项卡截图


4
不错!这个标准有参考资料吗?是Git风格的MD还是其他什么?谢谢! - Jorge Orpinel Pérez
6
@JorgeOrpinel 我相信我在GitHub的语法突出显示支持列表中找到了它这里 - Anton Strogonoff
8
根据 https://github.com/github/linguist/blob/3c3b037910006fc2f1a9bb34b2c4e9cde062206c/lib/linguist/languages.yml#L5842-L5843 ,ShellSession 语言的别名包括 consolebash session。因此,我理解为可以使用 consolebash sessionShellSession 来实现这个语言,但在我的测试中只有 consoleshellsession(大小写不敏感)可用。bash session 可能也可以使用,但由于存在空格,我不能正确引用它,所以它只会选择开头的 bash 并忽略 session - Elijah Lynn
2
你知道建议的标识符是否已更改吗?当我在stackoverflow尝试 console 时,我没有得到任何语法高亮显示。并且 shellbash 似乎认为每一行都是shell代码,即使是命令输出(这些行不包含任何 $ 吗?)。 - HelloGoodbye
@HelloGoodbye 是的,看起来今天可能不起作用。我不确定这是否是有意为之,因为 SO 上的语法突出显示是通过 highlight.js 实现的,而该库显然支持带提示符的 console(请参见 https://github.com/highlightjs/highlight.js/blob/6b8c831f00c4e87ecd2189ebbd0bb3bbdde66c02/src/languages/shell.js#L13-L29)。我现在没有足够的决心去查看 SO 使用的 highlight.js 版本以及它是如何集成的……可能是某种回归。 - Anton Strogonoff
显示剩余2条评论

495

这取决于Markdown渲染引擎和Markdown语法的不同。目前没有统一的标准。例如,如果您指的是GitHub风格的Markdown,shell应该可以正常工作。别名包括shbashzsh。您可以在此处找到可用语法词法分析器的列表。


2
我在此提供了更多有关如何从上面链接的文件中推断Markdown语言规范符号的细节:https://stackoverflow.com/a/45786100/6884590,以防对于发现这个问题的任何人有用。 - pchaigno
1
谢谢。另外,“fish”也是一种有效的编程语言。我没有编辑答案,因为问题是围绕bash的,但我认为它对其他人可能有用。 - Elijah Lynn

89

我在Markdown Cheatsheet找到了一个好的描述:

代码块是Markdown规范的一部分,但是语法高亮不是。

然而,许多渲染器(如GitHub和Markdown Here)支持语法高亮。支持哪些语言以及如何编写这些语言名称将因渲染器而异。Markdown Here支持几十种语言(以及不是真正的语言,如差异和HTTP标头);要查看完整列表以及如何编写语言名称,请参见highlight.js演示页面。

虽然我找不到任何关于使用highlight.js的官方GitHub文档,但我测试了很多语言,似乎工作正常。

要查看我使用的语言列表,可以访问https://github.com/highlightjs/highlight.js/blob/master/SUPPORTED_LANGUAGES.md

一些shell示例:

Shell:      console, shell
Bash:       bash, sh, zsh
PowerShell: powershell, ps
DOS:        dos, bat, cmd

例子:

```bat
cd \
copy a b
ping 192.168.0.1
```

1
我喜欢这个“shell”编程界面,谢谢!它让$字符看起来暗淡了一些。 - vintprox

50

如果我只需要将第一个单词突出显示作为命令,我经常使用properties

```properties
npm run build
```  

我得到的东西类似于:

npm run build


1
非常适用于dotenv文件。 - elpddev

18

使用 knitr 软件包:

```{r, engine='bash', code_block_name} ...

例如:

```{r, engine='bash', count_lines}
wc -l en_US.twitter.txt
```

您还可以使用:

  • engine='sh' 来使用 shell
  • engine='python' 来使用 Python
  • engine='perl'engine='haskell' 和许多其他类C语言甚至 gawk、AWK等。

4
本地 .md 文件没有任何反应吗? 它必须是一个通过 Web 服务器提供的文档才能起作用吗? - WestCoastProjects

17

根据GitHub的文档,涉及GFM语法高亮代码块:

我们使用Linguist来执行语言检测和语法高亮。 您可以在语言YAML文件中找到哪些关键字是有效的。

在GitHub上呈现,console使控制台后面的行变成蓝色。bashshshell似乎没有太多“高亮”...您可以使用posh来处理PowerShell或CMD。


2

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接