我在这里使用这里的建议来设置别名以使用命令将 markdown 转换为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 扩展语法有问题吗?
该示例是tcsh
别名,而不是bash
别名。这就是为什么您需要将原始文件必须添加到您的=
才能使其正常工作的原因。
问题是tcsh
(显然)从历史扩展感叹号中删除了它在双引号字符串中看到的转义反斜杠:
tcsh$ echo "!*"
!*
而bash
(出于某种原因我从未理解)不会这样做:
bash$ echo "!*"
!*
我不确定您是否可以在bash
中获得该别名的精确副本,因为我认为 bash 不会在别名扩展上进行历史记录扩展,因此您可以获得的最接近的是将文件作为参数的函数:
mdless() {
pandoc -s -f markdown -t man "$@" | groff -T utf8 -man | less
}