有没有办法在linux中只更改特定的目录颜色?

有没有办法在linux中只更改特定的目录颜色?,linux,bash,Linux,Bash,我只需要设置一个颜色,将只影响一个特定的目录,而不是全局 如果您在支持颜色的终端中使用Bash,并且希望在该目录中更改终端文本输出的默认颜色(特别是ls的输出),那么您可以做一件事 PROMPT\u命令变量可以设置为在打印提示之前执行命令。您可以使用它来检查当前目录并更改终端颜色(例如,通过为PS1变量分配一个包含用于选择颜色或回显所述特殊代码的不可显示特殊代码的提示) PROMPT\u命令记录在Bash手册中: 至于如何分配颜色,如果你感兴趣,你应该查一下 这个解决方案可能不是你想要的,可能会

我只需要设置一个颜色,将只影响一个特定的目录,而不是全局

如果您在支持颜色的终端中使用Bash,并且希望在该目录中更改终端文本输出的默认颜色(特别是ls的输出),那么您可以做一件事

PROMPT\u命令
变量可以设置为在打印提示之前执行命令。您可以使用它来检查当前目录并更改终端颜色(例如,通过为
PS1
变量分配一个包含用于选择颜色或回显所述特殊代码的不可显示特殊代码的提示)

PROMPT\u命令
记录在Bash手册中:

至于如何分配颜色,如果你感兴趣,你应该查一下

这个解决方案可能不是你想要的,可能会有副作用,一般来说,我不确定根据当前目录更改终端颜色是否有用。通常的解决方案是有一个提示,显示当前目录的路径(或者至少是路径的最后一部分)


我使用类似于上面的东西来改变文本颜色,这取决于我在哪台机器上执行Bash,因为我在多个终端窗口上从一台机器到另一台机器使用了很多
ssh
,颜色(在黑色背景上)是记住任何给定窗口连接到哪台机器的好方法。

目录没有“颜色”“没有。bash不知道
ls
为某个对象指定了什么颜色--这是
ls
命令的100%业务,它是一个完全独立的可执行文件,不是bash的一部分。现在,如果要过滤
ls
的输出,请更改给定目录的颜色,我们可能可以这样做——但这意味着每次运行
ls
,它将不仅仅是原始的
ls
命令,而是在它后面运行并更改其输出的过滤器。现在,如果您正在处理的是GNU
ls
,您可以将整个文件名作为
dircolors
数据库的扩展名。请参阅……但再次说明,ls被配置为“以不同的方式对待任何名为X的文件”,它并没有将元数据附加到文件-X上,表示无论文件名如何,它都应该获得特定的颜色。@CharlesDuffy-而不是4(足够长的注释)-一个有效答案?你的评论实际上回答了这个问题(不管事实如何,对于SO来说这不是一个好问题)