たとえば、テキストをstdoutに出力し、色を使用するプログラムを作成している場合(エスケープシーケンスを介して)、出力が他のプログラム(less
、などgrep
)またはファイルに送信される場合は、色コードが混乱するため、これらの色を無効にします。出力。
Javaプロセスからそれを行うことは可能ですか?
次の方法で解決しました(ここで説明します):
System.console()Console
は、アプリケーションに接続されている端末がある場合はオブジェクトを返し、出力null
を他のアプリにパイプするかファイルに保存すると返されます。
したがって、簡単なチェックになります。
if (System.console() == null) {
// ... no console, print dull plaintext
} else {
// we have a console, now we can output colors as well
}
(Linux Mint 10 でテスト済み)