--colorなどを実行すると文字に色が着く。これはjqも同じで普通にコマンドを実行すると色が着く。pythonでこれらはansi-color-code付きで出力されているので色が着く。pythonでやってみるとこういう感じ。world")リダイレクトしたりパイプでつなげると色がなくなる。--colorはリダイレクトしたりパイプでつなげても色が残るのに対して、jqはリダイレクトすると色が消える。jqの出力をcatに渡してみる。この振る舞いはどうやっているんだろう?というのが今回の話。isatty正体はisattyでこれは渡されたファイルディスクリプタがターミナルから開かれているかどうか調べてくれるもの。実際jqなどのコードを覗いてみたら使われている箇所があった。manを見てみるとそれっぽいことが書かれている。error.pythonでもisattypythonにもisattyは存在していて、os.isatty()を使っても良いけれど。