〜/ .zshrc别名,带空格

问题描述

我有一个文件夹/文件名中放置空格的坏习惯。今天它咬了我。

我有一个名为NFB Lab文件夹,其中安装了NFB Lab。我想将快捷方式/命令nfb和pynfb添加~/.zshrc文件中,以便从任何地方启动主python脚本。

我使用以下命令通过nano编辑了~/.zshrc文件

alias nfb=/Users/mathieu/Documents/NFB\ Lab/pynfb/main.py
alias pynfb=/Users/mathieu/Documents/NFB\ Lab/pynfb/main.py

我也尝试过:

alias nfb="/Users/mathieu/Documents/NFB Lab/pynfb/main.py"
alias pynfb="/Users/mathieu/Documents/NFB Lab/pynfb/main.py"

都不行,我总是得到:

zsh: no such file or directory: /Users/mathieu/Documents/NFB

如何在没有卸载/重新安装NFB Lab的情况下解决此问题?

解决方法

您需要转义空格(\ ),例如,看看我的别名;

alias sub='/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl'

否则,请查看ZSH functions。与别名相比,还有更多选择;

例如,使用arg作为路径运行python脚本,然后创建一个调用该函数的别名

function runpy() {
    python3 "$@"
}
alias runx="runpy '/tmp/dir with space/py.py'"
alias runy="runpy '/tmp/dir with space/py_second.py'"
,

您需要两个反斜杠。

$ mkdir "f oo"
$ alias f="cd f\\ oo"
$ f
$ pwd
/home/foobar/tmp/f oo
,

考虑到单引号或双引号内反斜杠引起的混淆,这是一种替代方法:

alias nfb="'/Users/mathieu/Documents/NFB Lab/pynfb/main.py'"
alias pynfb="'/Users/mathieu/Documents/NFB Lab/pynfb/main.py'"