4

やろうとしている:

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

ここで red_text は次のように定義されます

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

これにより、「きれいにする必要があります」と表示され、「きれい」という単語が赤で印刷されます。

問題は、make の出力が (less などに) パイプされる場合です。この場合、色を使用するのではなく、$1 を印刷する必要があります。

red_textケースを処理するために更新する必要があります。そのために、次のようなものを使用できると思い$(shell [ -t 1 ] ..)ましたが、問題は、の標準出力$(shell)が決して端末ではないことです。

stdoutが端末でないred場合の処理​​を変更するにはどうすればよいですか?

4

3 に答える 3

0
if test -t 1
then
    echo terminal
else
    echo file
fi
于 2013-01-31T12:51:17.890 に答える
0

完璧さの精神では、これ以上付け加えるものがなくなったときではなく、取り除くものがなくなったときに達成されます (アントワーヌ・ド・サン・テグジュペリ)では、そもそも色を使わないことで問題を解決してください! 本当。それには固有の問題があります。ある晴れた日、貧弱なユーザーにとっては間違っている端末について、あなたは仮定を立てます。このインタラクティブな端末の問題に遭遇します。目を楽しませる代わりに、クールな機能のプログラミングに費やすほうがよい問題の解決に時間を費やします。あなたは、間違ったグループの人々、つまり色覚異常者を喜ばせ、赤/緑盲のユーザーのような色覚障害者を無視します (その中には、あなたや私が見積もったよりも多くの人がいます)。

于 2013-01-31T16:43:17.587 に答える