在 linux 终端中输出彩色命令后,我的命令行变色了

My command line gets colored after I output a colored command in linux terminal

我想使用 shell 脚本为 ping 命令输出着色。但在这个过程中,我最终让我的命令行也变色了。有什么方法可以让我的输出只有颜色吗?

这是我的 bash 脚本:

#!/bin/bash
num=1
for((i=1; i <= ""; i++))
do
    echo "$(tput setaf "$num")Hello $i"
    ((num=num + 1))
done

请看这个例子:

颜色设置后需要重新设置。使用 tput,这可以使用 tput sgr0(删除所有属性)来完成。示例:

#!/bin/bash
num=1
for((i=1; i <= ""; i++))
do
echo "$(tput setaf "$num")Hello $i$(tput sgr0)"
((num=num + 1))
done

将颜色设置想象成标记,您的终端仿真器就是显示标记文本的东西。它不知道程序输出的开始和结束位置,因为它接收的只是连续的文本流(以及 "markup" 的控制代码)。根据您的提示配置(参见 echo $PS1),您的提示可能有也可能没有设置颜色的标记。如果没有,则没有任何内容可以覆盖程序输出给出的颜色标记,因此,提示符将获得程序上次设置的任何颜色。

(注意:我的 bash 不支持您在 for 循环条件中使用的任何语法。我只是更改了相关部分。)