Zsh过度替换别名

问题描述 投票:0回答:2

在Bash中,运行tmux ls可以正常工作。但是,在Zsh中,我收到此错误:

tmux:未知选项 - p 用法:list-sessions [-F格式]

我怀疑这是因为Zsh用ls的自定义别名替换命令的ls

alias -g ls='ls -p --color'

我尝试设置alias -g tmux\ ls='tmux list-sessions',但这不起作用。

有没有办法改变Zsh的别名扩展/替换行为?

alias zsh tmux
2个回答
2
投票

您将ls定义为全局别名,这意味着它会在shell看到ls的任何地方展开,而不仅仅是在它用作命令时。只需删除-g选项:

alias ls='ls -p --color'

0
投票

在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 || ...
© www.soinside.com 2019 - 2024. All rights reserved.