【问题标题】:Add to existing alias添加到现有别名
【发布时间】:2018-05-13 14:23:06
【问题描述】:

我的 bashrc 的相关部分如下所示:

if [ -x /usr/bin/dircolors ]; then
    alias ls='ls --color=auto --list-directories-first' # use colors
    # ...
else
    alias ls='ls --list-directories-first' # don't use colors
    # ...
fi

这是为了允许动态确定部分别名(具体来说,是否输出颜色)。但是每次重写整个别名维护起来很繁琐,我宁愿添加到该别名而不是完全替换它,所以我想要这样的东西:

if [ -x /usr/bin/dircolors ]; then
    alias ls='ls --color=auto' # use color output
    # ...
fi
alias ls='ls --list-directories-first' # 
# ...

但是后面的 alias ls=... 语句替换了旧的别名。有没有办法修改或逐步构建别名而不是替换它?

【问题讨论】:

  • usecolors=; [ -x /usr/bin/dircolors ] && usecolors='--color=auto'; alias ls="ls --list-directories-first $usecolors"
  • 据我所知ls 没有--list-directories-first 选项。但是有--group-directories-first
  • @Sergio 是的,我是凭记忆写的,这可能就是我的意思
  • 有点切题,但为什么需要dircolors 出现才能使用--color
  • @chepner 我实际上并没有研究它是否有必要,但这是 zsh 自动生成的.bashrc 的剩余部分,我认为这是有原因的。可能不是最好的理由。

标签: bash alias


【解决方案1】:

David said this concisely,但请考虑使用变量并以这种方式构建您的别名。对于您的具体情况,只需定义一个像 USE_COLORS 这样的变量,它以空字符串开头:

USE_COLORS=
[ -x /usr/bin/dircolors ] && USE_COLORS='--color=auto'
alias ls="ls --list-directories-first $USE_COLORS"

您也可以一次构建一个变量命令:

LS_ALIAS='ls'
LS_ALIAS+='--list-directories-first'
[ -x /usr/bin/dircolors ] && LS_ALIAS+='--color-auto'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2022-01-09
    • 2012-12-26
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多