简单的 ZSH 函数和名称中包含空格的文件
Simple ZSH function and files with spaces in their name
我已将以下函数放入我的 ~/.zshrc
文件中:
function note() {
vim $HOME/Dropbox/.md
}
例如,当我用 note "20150209-132501-Recx-new note today.md"
调用它时,它会创建一个新文件,但文件名为“20150209-132501-Recx-new”。我知道这是一个简单的问题,但如何才能用全名创建笔记?
shell 依次执行参数替换和分词。
这意味着你最终执行
vim /home/username/Dropbox/20150209-132501-Recx-new note today.md.md
即你用三个文件名调用 vim。如果你想抑制替换部分的分词,你必须在函数定义中也使用引号:
function note() {
vim "$HOME/Dropbox/.md"
}
并用
调用它
note "20150209-132501-Recx-new note today"
编辑 1: 此版本的 note
将所有参数与单个 space:
连接起来
function note() {
filename=
while test $# -gt 1; do shift; filename="$filename "; done
vim "$HOME/Dropbox/$filename.md"
}
编辑 2: 这可能更容易:
function note() {
vim "$HOME/Dropbox/$*.md"
}
我已将以下函数放入我的 ~/.zshrc
文件中:
function note() {
vim $HOME/Dropbox/.md
}
例如,当我用 note "20150209-132501-Recx-new note today.md"
调用它时,它会创建一个新文件,但文件名为“20150209-132501-Recx-new”。我知道这是一个简单的问题,但如何才能用全名创建笔记?
shell 依次执行参数替换和分词。 这意味着你最终执行
vim /home/username/Dropbox/20150209-132501-Recx-new note today.md.md
即你用三个文件名调用 vim。如果你想抑制替换部分的分词,你必须在函数定义中也使用引号:
function note() {
vim "$HOME/Dropbox/.md"
}
并用
调用它note "20150209-132501-Recx-new note today"
编辑 1: 此版本的 note
将所有参数与单个 space:
function note() {
filename=
while test $# -gt 1; do shift; filename="$filename "; done
vim "$HOME/Dropbox/$filename.md"
}
编辑 2: 这可能更容易:
function note() {
vim "$HOME/Dropbox/$*.md"
}