哪些UNIX命令支持彩色输出?

11

我喜欢使用支持彩色输出的UNIX/bash命令。因此,我定义了一些别名,可以自动启用我知道支持此选项的命令的彩色输出。然而,我相信有数百个命令支持彩色输出 - 我想知道它们是什么。

在我的~/.bash_aliases文件中包含以下内容:

ls --color=auto
grep --color
phpunit --ansi

还有什么其他的命令支持彩色输出吗?是否有一个列出所有支持彩色输出命令的列表?或者更好的是,是否有一种命令可以在我的本地man页面中进行搜索并提取相应的命令名称。


1
严格来说,这些是GNU程序(据我所知)。正如我们所知道的:GNU不是Unix! - MighMoS
我猜你的意思是超过两种颜色? :-) - D A Vincent
5个回答

9

为什么不尝试以下方法:

man -K color

这应该在所有手册页(内容而非标题)中搜索单词"color"。

对于每个手册页,它会询问您是否要打开和查看页面:

$ man -K color
/usr/share/man/mann/Widget.n.gz? [ynq] y
/usr/share/man/mann/usual.n.gz? [ynq] y
/usr/share/man/mann/Toplevel.n.gz? [ynq] n
/usr/share/man/mann/itk.n.gz? [ynq] n
/usr/share/man/mann/Archetype.n.gz? [ynq] n
/usr/share/man/man8/squid.8.gz? [ynq] n
/usr/share/man/man7/Xprint.7.gz? [ynq]
/usr/share/man/man7/X.7.gz? [ynq]
/usr/share/man/man7/urxvt.7.gz? [ynq]
/usr/share/man/man7/term.7.gz? [ynq] q

$

在每个单独的 man 页面中,您可以使用正常的搜索方法(例如,/color<ENTER>)来查找文本。完成 man 页面后,只需退出即可继续搜索。


我的系统使用小写的k。但我通常使用apropos。 - Dennis Williamson
2
Dennis,我认为小写的k只搜索标题,而不是全文。 - paxdiablo

8
一个快速的谷歌搜索还揭示了grcgrcat,它们可以用于着色任意文本或命令。不确定它们的工作效果如何,但我肯定会尝试一下找到它们。

啊,我们来了。grc使用/etc/grc.conf文件根据其匹配的正则表达式对给定命令进行着色。我的(Ubuntu 8.10)/etc/grc.conf快速grep发现它目前支持:

[~]$ less /etc/grc.conf | grep '^#'
# anything to do with irc
# log file
# ping command
# traceroute command
# gcc command
# make command
# netstat command
# diff command
# last command
# ldap tools
# cvs command

但我相信你可以为其他你感兴趣的程序添加自己的颜色设置。

使用grc非常简单,只需在您想要着色的命令之前输入它(比如说diff):

grc diff foo.txt bar.txt

你可以使用alias diff='grc diff'来使默认的diff带有颜色。


grc有一个辅助脚本:grcat。以下是将所有大写字母标记为红色的示例。步骤1:设置配置文件:printf "regexp=[A-Z]\ncolours=red\n" > ~/.grc/red-caps。步骤2:使用它:echo Hello World | grcat red-caps - Peter.O
我使用 grcat 并且非常喜欢它。 - Sridhar Sarnobat

3

我非常喜欢给我的提示信息添加颜色,这样可以使其更加突出。有一篇关于这方面的有用文章可以在这里找到。


0
这个演示的Bash脚本可以在大多数终端中将目录颜色设置为红色 - 在xterms和Windows下的cygwin中肯定有效。您可以通过调整转义代码来适应颜色 - 可以在Google上搜索LS_COLOR以获取颜色代码列表:
#!/bin/bash

color_red()
{
    echo -e "\033[01;31m$1\033[00m"
}

for FILE in $*
do
    if test -d $FILE
    then
        color_red $FILE
    else
        echo $FILE
    fi
done

0

1
这两个链接对我来说都是失效的,有其他人可以检查一下吗? - paxdiablo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接