2014-03-13 36 views
7

我想写两种颜色的文本文件,具体取决于输出。我使用echo -e命令,我会在控制台颜色进行打印时,像这样:如何写颜色的文本文件

RETURNED=$? 
if [ $RETURNED == 0 ] 
    then 
     echo -e "\e[1;32mffmpeg -t $DURACION -f x11grab -s $RESOLUCION -r ${FPS[j]} -b:v $BR -i :0.0 -y $NOMBRE\e[0m" >> file.txt 

fi 

的想法是:如果命令的工作,然后写一个绿色的线,否则使用红色。但是,我没有在文本文件中获取任何彩色线条。

+2

你如何显示文件? –

+0

当我只运行回声时,我看到绿色的文字。即使当我将回声重定向到像你这样的文件时,我也会捕获该文件,但我仍然看到文本呈绿色。 –

+0

打开文件的文字处理器是否支持彩色文本? – myusuf

回答

6

你试过less -R file.txt?这应该显示你的颜色(至少适用于我)。

如果你想这是由非外壳应用程序支持的颜色编码你最好的选择可能是输出HTML,例如:

printf '<code style="color: %s;">%s</code>' "green" "ffmpeg -t $DURACION -f x11grab -s $RESOLUCION -r ${FPS[j]} -b:v $BR -i :0.0 -y $NOMBRE" >> file.html 
+0

谢谢,是有用的,至少我可以检查它。但是,如果我用例如Sublime文本打开它,它不起作用。正如jkbkot所说,颜色是由终端解释的,那么是否有另一个命令允许我用纺织品编写颜色? – yhabib

+1

'少了-R'完成了这项工作, – user1314742

1

尝试printf,而不是echo -e - 后者似乎不工作在所有平台上(至少不是在OSX上)使用ANSI转义序列。

printf "\e[1;32mffmpeg -t $DURACION -f x11grab -s $RESOLUCION -r ${FPS[j]}\ 
-b:v $BR -i :0.0 -y $NOMBRE\n\e[0m" >> file.txt 

请注意\n在结束转义序列之前打印换行符。