2014-03-13 70 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在結束轉義序列之前打印換行符。