0

我使用这里的建议来设置别名以使用命令将降价转换为man样式输出,

alias mdless="pandoc -s -f markdown -t man \!* | groff -T utf8 -man | less"

我不断收到错误:pandoc: !*: openFile: does not exist (No such file or directory)

但是如果我这样做的话,命令词很好pandoc -s -f markdown -t man README.md | groff -T utf8 -man | less

这个 bash 扩展语法有问题吗?

4

1 回答 1

3

该示例是tcsh别名而不是bash别名。这就是为什么您需要将=原始文件添加到您的文件中才能使其正常工作的原因。

问题是tcsh(显然)从它在双引号字符串中看到的历史扩展感叹号中删除了转义反斜杠:

tcsh$ echo "\!*"
!*

bash(由于某种原因我从来不明白)不这样做:

bash$ echo "\!*"
\!*

我不确定您是否可以获得该别名的完全相同的副本,bash因为我认为 bash 不会对别名扩展进行历史扩展,因此您可以获得的最接近的是一个将文件作为参数的函数:

mdless() {
    pandoc -s -f markdown -t man "$@" | groff -T utf8 -man | less
}
于 2015-04-28T15:42:30.937 回答