
想知道 ls 命令输出中的颜色是什么?它们从何而来,又该如何设置?本文将为您一一解答。
相信你一定使用过
ls命令来 列出目录的内容。在 Ubuntu 和许多其他发行版中,你将看到不同颜色的ls命令输出。如果你没有看到过,你可以这样获得如下所示的彩色输出:
ls --color=auto但是你有没有想过这些颜色在
ls命令输出中意味着什么?我将回答本文中的问题。如果你的终端默认情况下不显示它,我还将展示如何使用
ls命令获取彩色输出。Ubuntu 中 ls 命令中使用的颜色的含义
? ls 命令输出的颜色没有固定的标准。不同的终端和发行版使用不同的颜色编码,你也可以根据自己的喜好进行修改。换句话说,不要依赖颜色。
我在本节中使用默认的 Ubuntu 终端及其颜色配置文件。
当你 使用 ls 命令列出文件 时,它会使用不同的颜色来指示不同类型的文件。
大多数终端都会以不同的颜色显示可执行文件、链接、常规文件和目录,以便你可以轻松区分它们。
有些终端(例如 Ubuntu 中的默认终端)将其提升到一个新的水平,并为音乐文件、图像和视频添加更多颜色。
为了演示,我列出了来自不同目录的文件,这些文件在 Ubuntu 中用不同的颜色填充了我的终端窗口:
看起来很混乱? 让我一一为你解密吧!
? 再次强调,上述颜色数据基于终端的默认设置,如果更改调色板,将不会得到类似的结果。
但是如果你的终端不显示任何颜色怎么办? 好吧,这是有原因和解决方案的。
如果 ls 命令不显示彩色输出怎么办?
事情是这样的。默认情况下,
ls命令不应在输出中显示颜色。如果你使用--color=auto标志,它将显示颜色。ls --color=auto那么为什么
ls命令在 Ubuntu 和其他一些发行版中默认添加颜色呢? 这是因为你的发行版为ls命令设置了别名,以便在执行ls命令时使用--color=auto标志:alias
因此,如果
ls命令未显示彩色输出,则是因为默认情况下没有设置别名。现在,每当你使用
ls命令时,你都可以使用--color=auto标志。
但这不太方便。相反,你应该创建别名并将其添加到
.bashrc中,以便ls命令默认显示颜色。为 ls 创建一个永久别名来显示颜色
要创建永久别名,首先,使用以下命令打开
.bashrc文件:nano ~/.bashrcalias ls='ls --color=auto'完成后,保存更改并退出 nano 文本编辑器。
要使你刚刚所做的更改生效,请 源引 source
.bashrc文件:source ~/.bashrc就是这样! 从现在开始,你可以使用彩色输出。
ls 命令从哪里获取颜色?
现在有趣的部分来了。
ls命令的颜色在哪里定义? 答案是LS_COLORS环境变量。是的。这是名为
LS_COLORS的特殊环境变量,它定义ls命令使用的颜色。
这很好,但是谁定义了这个变量呢? 如果你想做出一些改变怎么办? 我也来回答一下这些问题。
实际上,你有一个专门的
dircolors命令来为ls命令设置颜色。不同的 Shell 有不同的颜色配置文件格式。这就是为什么在使用此命令时应指定 Shell。
如你所见,它定义了
LS_COLORS环境变量并将其导出,以便该变量可用于子 Shell。现在,如果你想使用它,你可以将其复制粘贴到你的
.bashrc文件或像这样重定向输出:dircolors -b >> .bashrc并 源引 source 该文件,以便效果立即可见。你只需要做一次。
理解颜色配置文件
LS_COLORS包含由冒号(:)分隔的键值对数据。如果该值有多个部分,则它们之间用分号(;)分隔。键通常是预定义的。值部分代表颜色。
因此,如果显示
ln=01;36,则表示对于符号链接,字体为粗体,颜色(36)为青色。
00为正常,01为粗体,4为下划线。31代表红色,32 代表绿色等。颜色代码遵循 ANSI 转义代码。另一个例子。
or=40;31;01表示链接到不存在的文件(键为or),使用黑色背景(颜色代码40)、红色(31)和粗体字体(代码01)。我认为顺序并不重要,因为代码不重叠。
31是前景色红色的代码,41是背景红色的颜色。因此,如果使用41,你就知道它用于背景颜色。使用 ls 命令执行更多操作
ls命令可以做更多的事情,为此,我们制作了有关如何使用ls命令的详细教程:Abhishek Prakash 提供资料。
(题图:MJ/4d0f1f66-259f-4671-a3a8-158f61a38b10)




