--colorオプションを使用しても、tree(1)の色がwatch(1)で正しく解釈されません。

--colorオプションを使用しても、tree(1)の色がwatch(1)で正しく解釈されません。

私はファイルシステムの変更を「監視」するためにwatchとtreeコマンドの単純な組み合わせを使用しています。
色が欲しいのに手に入らないから。

私が考えるのに効果があると思うのは次のとおりです。watch --color 'tree -C'色を提供するので効果がありますが、それ自体と同じではありませんtree -C

以下はいくつかのスクリーンショットです。
時計 - カラー「Tree-C」出力、いくつかの色を適用
「ツリーC」を見るツリーが実際にすべてのエスケープコードを送信したことを示す出力
ツリー-C出力、予想結果

犯人は私の環境変数にあるかもしれませんが、もしそれが私の場合、watch 'echo $LS_COLORS'私のconfはそこにあります。

どんなアイデアがありますか? :)

答え1

基本的な質問はwatchそしてtree色を取得するには、他の情報を使用してください。

  • これwatchビデオ属性を指定するためのプログラム解析標準(ECMA-48)エスケープシーケンス。これは意味する8色、太字、フラッシュ、下線、反転、イタリック体。 (n)呪いを使用して情報を表示するため、結果は端末データベースによって異なります。

  • これtreeGNUを模倣したプログラムls、使用LS_COLORS環境変数これは以下を使用します。TERM端末データベースの説明と必ずしも関連しないカスタムエスケープシーケンスセットを選択するための環境変数(cursesおよび他のほとんどの端末アプリケーションで端末データベースの項目を識別するために使用されます)。

一部のタスクでは、たとえば、適切な結果を生成して、これらの一致を作成できます。LS_COLORS特定の端末項目について。明らかに誰もこれをしなかった。そして内容のためLS_COLORS不完全(ターミナルの説明のほんの一部だけがダルーム:ファンクションキーなし、カーソル移動なし、汎用性なし)、開始する必要はありませんLS_COLORS

もしtree256色を使ってwatchコードを理解できない可能性があります(最近の変更でprocpsに関するいくつかの問題が解決されました)topしかし、まだ適応していません。watch- しばらくお待ちください。) watch(n)cursesを使って画面を管理します。watch)エスケープコードを呪い呼び出しに変換します。

追加資料:

関連情報