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