终端中最后一个命令的颜色输出

时间:2017-02-02 23:45:30

标签: bash macos shell unix awk

当我在mac上的终端中读取bash命令的输出时,我发现很难找到命令输出的开始位置。我想用红色对最新命令的输出进行着色,然后当我运行一个新命令时,只有该命令的输出为红色,而之前命令的输出为黑色。

编辑:

举个例子,

echo hi
hi <- should be red

然后当我输入另一个命令

echo hi
hi <- should be black
echo 'hi there'
hi there <- should be red

2 个答案:

答案 0 :(得分:1)

这是一个shell函数:

xtrace() {
  awk '
  BEGIN {
    d = "\47"; printf "\33[36m"
    while (++q < ARGC) {
      x = split(ARGV[q], y, d); y[1]
      for (z in y) {
        printf "%s%s", !x || y[z] ~ "[^[:alnum:]%+,./:=@_-]" ? d y[z] d : y[z],
        z < x ? "\\" d : ""
      }
      printf q == ARGC - 1 ? "\33[m\n" : FS
    }
  }
  ' "$@"
  "$@"
}

将它放在你的〜/ .profile或类似文件中,然后像这样运行:

$ xtrace echo alfa 'bravo charlie'
echo alfa 'bravo charlie'
alfa bravo charlie

该命令将以蓝色打印,然后输出命令 正常打印。

  

colored output

Source

答案 1 :(得分:0)

它不是完全你问的是什么,但终端有一个名为&#34; Marks&#34;的功能。默认情况下,它会自动标记窗口中的每个命令行。标记在窗口的边缘显示为微弱的方括号([,])。

您可以使用编辑&gt;中的项目在标记之间跳转导航菜单。使用这些菜单项的键盘快捷键最方便,例如⌘↑用于跳转到上一个标记。如果按住Shift键,则会更改为“选择到上一个标记”。这些可以更容易地找到命令输出的开头。