如何显示bash支持的所有颜色?

如何显示bash支持的所有颜色?,bash,Bash,一天,我输入了命令 echo "\033[32mHELLOBASE\033[m" 在侏儒bash外壳中。航站楼给我看了一根绿色的海洛巴什线。 我觉得这很有趣。根据我的经验和一些测试,我可以改变 数字32从0到47。接下来我编写了以下代码 for i in {0..48};do echo \033[$imHELLOBASH\[033m done 当然,它不起作用,否则我不能在这里!那么,如何改进上述代码的功能呢?让我们用正确的方法来实现这一点——使用tput命令在我们的termcap(

一天,我输入了命令

echo "\033[32mHELLOBASE\033[m"
在侏儒bash外壳中。航站楼给我看了一根绿色的海洛巴什线。 我觉得这很有趣。根据我的经验和一些测试,我可以改变 数字32从0到47。接下来我编写了以下代码

for i in {0..48};do
    echo \033[$imHELLOBASH\[033m
done

当然,它不起作用,否则我不能在这里!那么,如何改进上述代码的功能呢?

让我们用正确的方法来实现这一点——使用
tput
命令在我们的
termcap
(或者,对于现代系统,
termfo
)数据库中查找颜色代码:

for ((i=0; i<=48; i++)); do
  tput setaf "$i"
  echo HELLOBASH
done
……需要

${i}mHELLOBASH

…为了避免shell试图查找和扩展名为
imHELLOBASH
的变量,而不是名为
i

的变量,它与bash关系不大,与终端驱动程序关系更大。与其尝试使用控制字符,我建议您使用
tput
,例如:

i=1
while (( $i < 10 ))
do
    tput setaf $i
    echo "This is $i"
   (( i++ ))
done
i=1
而($i<10))
做
tput setaf$i
echo“这是$i”
((i++)
完成

Bash根本不以本机方式显示颜色——您的终端会这样做。如果您想查找您的终端可以支持和不能支持的内容,那么
tput
命令将查找正确的颜色代码……您现在使用的代码仅适用于某些终端,而在其他终端上,这些代码将是垃圾代码。使用
tput
意味着您始终拥有当前使用的终端类型的正确代码…请参阅
termcap
termfo
?我认为这取决于实施情况,取决于你们的系统有多现代化。这些天,是的,它将是terminfo。我认为,
termcap
在20世纪80年代末消失了,我对诅咒日子的记忆有点动摇。你到底是从哪里搞到这个节目的?我敢打赌,你得吹掉很多灰尘:-)
${i}mHELLOBASH
i=1
while (( $i < 10 ))
do
    tput setaf $i
    echo "This is $i"
   (( i++ ))
done