我正在使用简单的命令组合来“监视”我的文件系统更改:watch 和 tree。
除了我想要颜色却买不到。
这是我认为应该起作用的:watch --color 'tree -C'
哪种起作用,因为它给了我一些颜色,但与tree -C
它本身不同。
这是一些屏幕截图:
watch --color 'tree -C'输出,一些颜色应用了
watch 'tree -C'输出,表明 tree 确实发送了所有转义码
tree -C输出,预期结果
罪魁祸首也可能在我的环境变量中,但如果我watch 'echo $LS_COLORS'
,我的 conf 就在那里。
有任何想法吗?:)
基本问题是使用不同
watch
的tree
信息来获取颜色:该
watch
程序解释用于指定视频属性的标准 (ECMA-48) 转义序列。这意味着8种颜色,加上粗体、闪烁、下划线、反向和斜体。它使用 (n)curses 显示信息,使结果依赖于终端数据库该程序使用环境变量
tree
模仿 GNU 。它使用环境变量(curses 和大多数其他终端应用程序用来识别终端数据库中的条目)来选择一组定制的转义序列,它们不一定与终端数据库的描述有任何关系。ls
LS_COLORS
TERM
通过一些工作,您可以使这些匹配,例如,通过生成适合
LS_COLORS
给定终端条目的方式。显然没有人这样做过。而且由于内容LS_COLORS
不完整(仅涵盖终端描述的一小部分:没有功能键,没有光标移动,没有一般性),因此从LS_COLORS
.如果
tree
使用 256 色,watch
可能无法理解这些代码(最近的更改针对 procps 解决了此问题的一部分,top
但尚未适应watch
- 稍等一下)。watch
使用 (n)curses 管理屏幕,这使得有必要 (forwatch
) 将转义码转换为 curses-calls。进一步阅读: