Bash pandoc定义函数扩展错误
Bash expansion error defining function with pandoc
我正在使用 advice here 设置别名以使用命令将 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
}
我正在使用 advice here 设置别名以使用命令将 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
}