Zsh 过度替换别名
Zsh over-substituting aliases
在Bash中,运行tmux ls
正常工作。但是,在 Zsh 中,我收到此错误:
tmux: unknown option -- p
usage: list-sessions [-F format]
我怀疑这是因为 Zsh 将命令的 ls
替换为我为 ls
:
自定义的别名
alias -g ls='ls -p --color'
我尝试设置 alias -g tmux\ ls='tmux list-sessions'
,但没有成功。
有什么方法可以改变 Zsh 的别名 expansion/substitution 行为吗?
您正在将 ls
定义为全局别名,这意味着它在 任何地方 shell 看到 ls
时扩展,而不仅仅是当它用作命令。只需删除 -g
选项:
alias ls='ls -p --color'
在 zsh 中,当你使用 alias -g
时你有全局别名。全局别名是一种不仅在命令开头而且在任何地方都有效的别名。
这不是你想要的!
但是全局别名可以非常强大和有用。例如:
alias -g L="| less" # to page the output with less
alias -g WL="| wc -l" # to have stats from wc
alias -g CP="| xclip -f -r" # to copy output into clipboard
alias -g NU="&> /dev/null" # to remove error and standard outputs
要使用它们:
ps aux L # expanded into: ps aux | less
ls -1 WL # expanded into: ls -1 | wc -l
date CP # expanded into: date | xclip -f -r
ls /foo2 /usr NU || echo okay # expanded into: ls /foo2 /usr &> /dev/null || ...
在Bash中,运行tmux ls
正常工作。但是,在 Zsh 中,我收到此错误:
tmux: unknown option -- p
usage: list-sessions [-F format]
我怀疑这是因为 Zsh 将命令的 ls
替换为我为 ls
:
alias -g ls='ls -p --color'
我尝试设置 alias -g tmux\ ls='tmux list-sessions'
,但没有成功。
有什么方法可以改变 Zsh 的别名 expansion/substitution 行为吗?
您正在将 ls
定义为全局别名,这意味着它在 任何地方 shell 看到 ls
时扩展,而不仅仅是当它用作命令。只需删除 -g
选项:
alias ls='ls -p --color'
在 zsh 中,当你使用 alias -g
时你有全局别名。全局别名是一种不仅在命令开头而且在任何地方都有效的别名。
这不是你想要的!
但是全局别名可以非常强大和有用。例如:
alias -g L="| less" # to page the output with less
alias -g WL="| wc -l" # to have stats from wc
alias -g CP="| xclip -f -r" # to copy output into clipboard
alias -g NU="&> /dev/null" # to remove error and standard outputs
要使用它们:
ps aux L # expanded into: ps aux | less
ls -1 WL # expanded into: ls -1 | wc -l
date CP # expanded into: date | xclip -f -r
ls /foo2 /usr NU || echo okay # expanded into: ls /foo2 /usr &> /dev/null || ...