2016-04-02 33 views
0

我(生成文件系)建立系统输出诊断的相当量,并且我希望它们上色,如在解释this question(优选使用tput setaftput sgr0)。但是,编辑我系统中所有分层Makefile的所有字符串将是一项压倒性的和非实际的任务(如果我将来改变主意,那么再次撤消它将是另一项艰巨的任务)。自定义“回声”(用于彩色文本)在生成文件

理想情况下,我想要有像my_warning_echo,my_error_echo等的自定义结构,与echo的语法完全相同。

例如,语法应该是my_warning_echo "some text message",并且执行的结果是输出@echo "$$(tput setaf 3)some text message$$(tput sgr0)(double $$是因为这将在Makefile中使用)。

主要问题是关闭tput sgr0(否则我可以使用一个包含@echo "$$(tput setaf 3)的宏)。

我也可以编写一个采用一个参数(文本消息)的shell函数,但是该语法需要在消息的开始和结尾处添加括号。

是否有任何方法可以让我保持与标准echo相同的语法?

解决方案依赖于GNU化妆就可以了(我喜欢尽可能的标准,但我的编译系统已经使用了GNU对make的扩展,所以......)

+0

这个问题还不清楚。标准回声当然在[POSIX]中(http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html)。 –

回答

1

有什么方法,它能够让我保持与标准回声相同的语法?

当然。编写一个shell脚本。例如,对于my_error_echo,也许是这样的:

#!/bin/sh 

tput setaf 1 
echo "[email protected]" 
tput sgr0 

确保你把脚本某处你$PATH AMD使其可执行文件,你可以使用它就像echo命令。

+0

简单,很适合我的构建系统,因为它有一个辅助脚本的目录。 – cesss