简单的ZSH功能和名称中带有空格的文件

时间:2015-02-09 13:27:21

标签: whitespace filenames zsh expansion

我已将以下功能放入我的~/.zshrc文件中:

function note() {
    vim $HOME/Dropbox/$1.md
}

当我用note "20150209-132501-Recx-new note today.md"调用它时,它会创建一个新文件,但文件名为“20150209-132501-Recx-new”。我意识到这是一个简单的问题,但如何让它创建全名注释呢?

1 个答案:

答案 0 :(得分:0)

shell按此顺序执行参数替换和字拆分。 这意味着你最终执行

vim /home/username/Dropbox/20150209-132501-Recx-new note today.md.md

即。你用三个文件名称调用vim。如果要在替换部分上禁止分词,则必须在函数定义中使用引号

function note() {
    vim "$HOME/Dropbox/$1.md"
}

并用

调用它
note "20150209-132501-Recx-new note today"

编辑1:此版本的note将所有参数与一个空格连接起来:

function note() {
    filename=$1
    while test $# -gt 1; do shift; filename="$filename $1"; done
    vim "$HOME/Dropbox/$filename.md"
}

编辑2:这可能更容易:

function note() {
    vim "$HOME/Dropbox/$*.md"
}