Colors

即使使用 –color 選項,watch(1) 也無法正確插入 tree(1) 顏色

  • September 13, 2018

我正在使用簡單的命令組合來“監視”我的文件系統更改:watch 和 tree。

除了我想要顏色卻買不到。

這是我認為應該起作用的:watch --color 'tree -C'哪種起作用,因為它給了我一些顏色,但與tree -C它本身不同。

這是一些螢幕截圖:

watch –color ’tree -C’輸出,一些顏色應用了

watch ’tree -C’輸出,表明 tree 確實發送了所有轉義碼

tree -C輸出,預期結果

罪魁禍首也可能在我的環境變數中,但如果我watch 'echo $LS_COLORS',我的 conf 就在那裡。

有任何想法嗎?:)

基本問題是使用不同**watchtree**資訊來獲取顏色:

  • 該**watch程序解釋用於指定影片屬性的標準 (ECMA-48) 轉義序列。這意味著8**種顏色,加上粗體、閃爍、下劃線、反向和斜體。它使用 (n)curses 顯示資訊,使結果依賴於終端數據庫
  • 該程序使用環境變數**tree模仿 GNU 。它使用環境變數(curses 和大多數其他終端應用程序用來辨識終端數據庫中的條目)來選擇一組定制的轉義序列,它們不一定與終端數據庫的描述有任何關係。lsLS_COLORSTERM**

通過一些工作,您可以使這些匹配,例如,通過生成適合**LS_COLORS給定終端條目的方式。顯然沒有人這樣做過。而且由於內容LS_COLORS不完整(僅涵蓋終端描述的一小部分:沒有功能鍵,沒有游標移動,沒有一般性),因此從LS_COLORS**.

如果**tree使用 256 色,watch可能無法理解這些程式碼(最近的更改針對 procps 解決了此問題的一部分,top但尚未適應watch**- 稍等一下)。 **watch**使用 (n)curses 管理螢幕,這使得有必要 (for watch) 將轉義碼轉換為 curses-calls。

進一步閱讀:

引用自:https://unix.stackexchange.com/questions/468885