在所有命令上隐式调用 grc 终端着色器

Posted

技术标签:

【中文标题】在所有命令上隐式调用 grc 终端着色器【英文标题】:Invoke grc terminal colorizer on ALL commands implicitly 【发布时间】:2012-08-08 06:13:58 【问题描述】:

我喜欢终端的 grc 着色器。但是,我必须明确地为我想要着色的任何内容添加前缀:

grc --config=conf.mine

有没有办法让它自动应用于你在命令行上输入的所有内容(这样我可能甚至不需要知道 grc 是什么)?如果没有更好的选择,也许可以使用 shell 钩子?

【问题讨论】:

【参考方案1】:

自 v1.9 起随 grc 提供的 grc.bashrc 和 grc.zsh 文件通过为常用命令添加别名以(非完整)方式执行此操作:

grc.bashrc

GRC=`which grc`
if [ "$TERM" != dumb ] && [ -n "$GRC" ]
then
    alias colourify="$GRC -es --colour=auto"
    alias configure='colourify ./configure'
    alias diff='colourify diff'
    alias make='colourify make'
    alias gcc='colourify gcc'
    alias g++='colourify g++'
    alias as='colourify as'
    alias gas='colourify gas'
    alias ld='colourify ld'
    alias netstat='colourify netstat'
    alias ping='colourify ping'
    alias traceroute='colourify /usr/sbin/traceroute'
    alias head='colourify head'
    alias tail='colourify tail'
    alias dig='colourify dig'
    alias mount='colourify mount'
    alias ps='colourify ps'
    alias mtr='colourify mtr'
    alias df='colourify df'
fi

grc.zsh

if [[ "$TERM" != dumb ]] && (( $+commands[grc] )) ; then
  # Prevent grc aliases from overriding zsh completions.
  setopt COMPLETE_ALIASES

  # Supported commands
  cmds=(
    cc \
    configure \
    cvs \
    df \
    diff \
    dig \
    gcc \
    gmake \
    ifconfig \
    last \
    ldap \
    ls \
    make \
    mount \
    mtr \
    netstat \
    ping \
    ping6 \
    ps \
    traceroute \
    traceroute6 \
    wdiff \
  );

  # Set alias for available commands.
  for cmd in $cmds ; do
    if (( $+commands[$cmd] )) ; then
      alias $cmd="grc --colour=auto $cmd"
    fi
  done

  # Clean up variables
  unset cmds cmd
fi

【讨论】:

【参考方案2】:

我试过了,它对我有用:

alias ls="ls -FHG"

【讨论】:

您能提供更多详细信息吗?定义别名如何解决给定的问题?

以上是关于在所有命令上隐式调用 grc 终端着色器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Metal 中组合使用不同着色器的渲染命令编码器

片段着色器是不是处理来自顶点着色器的所有像素?

初识OpenGL 链接着色器

初识OpenGL 链接着色器

哪些 OpenGL 函数在顶点着色器之前修改顶点位置?

现代硬件上的 OpenGL 可分离着色器程序和管道性能