我有一个 ZSH 别名:
alias -g ...='../..'
alias -g ....='../../..'
当我尝试 时cd ...
,一切运行正常。但是,我无法在cp
命令中使用它:cp .../file .
使用 失败cp: .../file: No such file or directory
。
此外,尝试使用别名如:cd .../dir
失败:cd:cd:10: no such file or directory: .../dir
。使用 执行相同操作cd ...; cd dir
可以正常工作。
来自zsh 爱好者页:
全局别名可以在命令行的任何地方使用。例如:
$ alias -g C='| wc -l'
$ grep alias ~/.zsh/* C
443
这ZSH 简介还表示全局别名可以在命令行的任何地方替换。
为什么我的别名没有按照我想象的那样被使用?
答案1
原因可能是 '.../file' 中的 '...' 没有空格/边界分隔?
例如在 zsh-lovers 示例中,'C' 前面有一个空格。
从另一个 SU 问题中我发现以下内容可能会有所帮助:
nicoulaj / dotfiles:rationalize-dots
答案2
与别名相比,静态命名目录 ~...
将扩展到../..
内部路径,如果定义为
$ hash -d ...=../..
例如,
$ cd /usr/share/zsh
$ readlink -m ~...
/usr