我有一个perl脚本,可以生成输出并显示在网页中(在Nagios中)。
所以从输出中,我想在脚本输出以及网页中以粗体显示特定的行(称为标题)
我正尝试在下方使用它-它在命令行中显示粗体(Heading1),但在Nagios网页中却不显示。
use Term::ANSIColor qw(:constants);
$Term::ANSIColor::AUTORESET = 1;
sub display
{
print BOLD ("Heading1:\n");
}
可以在网页中看到它显示,其后跟数字,但不大胆。
[1mHeading1:
答案 0 :(得分:3)
网页和终端创建效果(例如颜色和样式)的方式非常不同。 Web使用HTML,一种带有标签和样式表的标记语言。终端使用控制代码和转义序列。您无法生成任何一个输出都可以同时使用。
但是,您可以生成HTML输出,并在控制台上进行操作时通过控制台的HTML渲染器通过管道输出。另外,您可以为所需的样式(如粗体)创建一组函数,并根据目标是否为终端来使它们产生不同的输出。您可以使用-t STDOUT
测试STDOUT是否为终端。
答案 1 :(得分:2)
Term :: ANSIColor允许您更改打印到终端的文本的外观(通过命令行界面CLI)。 网页是简单的文本文档,只要您使用有效的HTML / CSS / JavaScript代码,浏览器就会呈现 。
要打印HTML中的粗体文本,您应该打印以下内容:
print "<b>This text is bold</b> <br>\n";
其中 b 标记为粗体,而 br 是换行符( ie 等效于命令中的\n
行上下文)。该代码段旨在阐明HTML标签的工作方式(有关更多信息,请参见https://www.w3schools.com/html/html_intro.asp)。
我同意TFBW,您可以在下游使用HTML-rendere,或者,如果您想要更多的控制权,同时产生良好的HTML代码,则可以为此使用一些Perl模块(https://metacpan.org/search?size=20&q=html)。
最后,我个人只对自己运行的脚本使用Term :: ANSIColor,因为看到滚动文本可能会混淆一些颜色,这些颜色会驱动不同的信息。生成(通常是动态的)网页的脚本通常会将其文本写入日志文件,从而使颜色的用处不大,并且可能难以阅读。