![使用别名在 bash 中回显反引号](https://linux22.com/image/1539204/%E4%BD%BF%E7%94%A8%E5%88%AB%E5%90%8D%E5%9C%A8%20bash%20%E4%B8%AD%E5%9B%9E%E6%98%BE%E5%8F%8D%E5%BC%95%E5%8F%B7.png)
如果这个问题在其他地方已经得到解答,我深表歉意,我无论如何也找不到解决我这个特殊情况的方法,我承认这有点奇怪。(注意:这篇文章中的所有“使用”字眼出于某种原因都显示为蓝色,但它们不应该是蓝色的,而且我不知道如何防止这种情况发生)。
我在 MacOS 中使用 bash。我的 .bashrc 中有几个别名,它们只是将一些内容打印到终端窗口以帮助我记住命令,或者快速向某人展示一个示例(在下面的代码中,我在命令行上创建了别名,但实际上我总是将别名放在 .bashrc 中):
556 ~ alias howtotensorboard="echo tensorboard --logdir=logs/ --port=6001"
557 ~ howtotensorboard
tensorboard --logdir=logs/ --port=6001
如果我仅在命令行上使用 echo,则在反引号前面加上反斜杠可以使我将反引号打印到窗口中:
559 ~ echo Using \`which python\` etc
Using `which python` etc
但是在别名中执行同样的事情实际上会执行“哪个python”而不是将其打印到窗口:
560 ~ alias howtobacktick="echo Using \`which python\` etc"
561 ~ howtobacktick
Using /usr/bin/python etc
TL;DR,我想要的是在 .bashrc 中放置一个别名,使用 echo 打印出反引号,这样最后我可以在 bash 中做到这一点:
558 ~ howtobacktick
Using `which python` etc
我在 .bashrc 中的别名中尝试了许多变体,但都没有奏效。我怎样才能获得我想要的行为?有没有办法专门用 echo 来做到这一点?
答案1
$ alias howtobacktick='echo Using \`which python\` etc'
$ howtobacktick
Using `which python` etc
编辑:
这是因为反引号 ( `
) 和其他特殊字符在单引号内不会被特殊处理。比较:
$ echo 'Using `which python` etc'
Using `which python` etc
$ echo "Using `which python` etc"
Using /usr/bin/python etc