Zsh过度替换别名

时间:2017-12-20 20:18:56

标签: alias zsh tmux

在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的别名扩展/替换行为?

2 个答案:

答案 0 :(得分:2)

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

alias ls='ls -p --color'

答案 1 :(得分: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 || ...