zsh扩展根据目录名创建文件名

时间:2015-03-30 13:17:53

标签: shell zsh

我正在尝试使用pandoc将目录中的所有.markdown文件编译成一个pdf,其中pdf的名称是目录名加空格notes.pdf。我可以将所有markdown文件编译成一个pdf,如果我对pdf名称进行硬编码,但是当我尝试生成pdf名称时,它会失败。

例如,如果我在一个名为path/to/markdown files的文件路径的目录中,我想编译成一个名为markdown files notes.pdf的pdf。

我尝试了以下内容:

pandoc *.markdown -o $PWD notes.pdf

错误 - " Pandoc可以转换为PDF,但不能转换为PDF。"

pandoc *.markdown -o ${PWD notes.pdf}

错误 - "错误的替换"

pandoc *.markdown -o '$PWD notes.pdf'

生成一个名为$ PWD(:t)notes.pdf

的pdf
pandoc *.markdown -o $PWD" notes.pdf"

错误="未找到匹配项"

有谁知道我怎么能让这个工作?

非常感谢

1 个答案:

答案 0 :(得分:0)

$PWD:t扩展为当前目录的基本名称。这需要不加引号或双引号,而不是单引号,因为单引号会阻止扩展。该空间也需要引用,因为它是文件名的一部分。

pandoc -o "$PWD:t notes.pdf" *.markdown

请注意,这使用zsh语法。如果你需要在普通sh中(例如对于makefile),你可以使用

pandoc -o "${PWD##*/} notes.pdf" *.markdown

(在makefile中,加倍$。)