2013-01-31 13 views
3

試圖做的事:GNU化妝 - 確定是否stdout是終端

help: 
    @echo "you must $(call red_text,clean)" 

其中red_text被定義爲

red_text = $(shell tput setaf 1; echo -n "$1"; tput sgr0) 

這版畫「你必須清理」,其中「清潔」字樣被印在紅。

問題是什麼時候make的輸出被傳送(例如更少)。 在這種情況下,我不應該使用顏色,而是打印$ 1。

我需要更新red_text來處理這種情況。爲此,我想我可以使用類似$(shell [ -t 1 ] ..)的東西,但問題是stdout$(shell)永遠不是終端。

如何更改red來處理標準輸出不是終端的情況?

+0

檢查'tty'命令的退出狀態? – anishsane

+0

@anishsane這將與檢查[-t 1] – dimba

+1

有相同的問題在您的構建服務器中,此問題可能更容易解決:'FANCY?= 1',然後在需要非顏色輸出時調用'FANCY = 0 make' 。 – thiton

回答

0
if test -t 1 
then 
    echo terminal 
else 
    echo file 
fi 
+1

-1:OP已經說明了爲什麼[-t 1]在這種情況下不起作用。 – thiton

+0

@thiton,this: 'help:' 'if test -t 1;然後回顯終端; else echo文件; fi' 適合我。 – Ben

+0

@Ben:是否$(shell if [-t 1];然後echo終端; fi)'也可以工作嗎?操作規範聲明,它沒有,我強烈懷疑他是對的。 – thiton

1

完美的精神達到不在於沒有更多的補充,但是當有一無所有帶走(安東尼·德·聖艾修伯裏),不使用顏色由解決問題第一名!真的。它 有固有的問題。你對終端做出了一些假設,對於一些不好的用戶來說,在一天中會有錯誤。你遇到了這個交互式終端問題。你花時間解決一個問題,可以更好地花費編程功能而不是眼睛糖果。你請錯誤的一羣人,即色情上癮的人,不理睬色情挑戰的人,比如紅色/綠色的盲人用戶(其中​​有超過你和我估計的人)。

+1

完全同意你:) – dimba

+3

個人意見不是答案。顏色本身並不差 - 你改變狀態說明它們具有'_inherent problems_'更好 - 但有些事情在啓用顏色的情況下更簡單,比如gcc輸出的快速可視化處理(特別是*大量使用C++模板) 。 當然這是個人選擇,當然在用戶羣中會有不同的色彩感覺,但是'_eye candy_'對這些好處不屑一顧,而'_You請錯誤的人羣'是極化的,可能是視爲攻擊性的tbh。 – boycy

+1

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 –

相關問題