[#]: subject: "Colors in ls Command Output: What do They Mean?" [#]: via: "https://itsfoss.com/ls-color-output/" [#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/" [#]: collector: "lkxed" [#]: translator: "geekpi" [#]: reviewer: "wxy" [#]: publisher: "wxy" [#]: url: "https://linux.cn/article-16108-1.html" ls 命令输出的颜色:它们意味着什么? ====== ![][0] > 想知道 ls 命令输出中的颜色是什么?它们从何而来,又该如何设置?本文将为您一一解答。 相信你一定使用过 `ls` 命令来 [列出目录的内容][1]。在 Ubuntu 和许多其他发行版中,你将看到不同颜色的 `ls` 命令输出。 如果你没有看到过,你可以这样获得如下所示的彩色输出: ``` ls --color=auto ``` 但是你有没有想过这些颜色在 `ls` 命令输出中意味着什么? 我将回答本文中的问题。**如果你的终端默认情况下不显示它,我还将展示如何使用 `ls` 命令获取彩色输出**。 ### Ubuntu 中 ls 命令中使用的颜色的含义 > 🚧 ls 命令输出的颜色没有固定的标准。不同的终端和发行版使用不同的颜色编码,你也可以根据自己的喜好进行修改。换句话说,不要依赖颜色。 **我在本节中使用默认的 Ubuntu 终端及其颜色配置文件。** 当你 [使用 ls 命令列出文件][2] 时,它会使用不同的颜色来指示不同类型的文件。 大多数终端都会以不同的颜色显示可执行文件、链接、常规文件和目录,以便你可以轻松区分它们。 有些终端(例如 Ubuntu 中的默认终端)将其提升到一个新的水平,并为音乐文件、图像和视频添加更多颜色。 为了演示,我列出了来自不同目录的文件,这些文件在 Ubuntu 中用不同的颜色填充了我的终端窗口: ![different colors used by the ls command][3] 看起来很混乱? 让我一一为你解密吧! | 颜色 | 描述 | | :- | :- | | **粗体蓝色** | 目录 | | **无色** | 文件或硬链接 | | **粗体青色** | 指向文件的符号链接。| | **粗体绿色** | 可执行文件(`.sh` 扩展名的脚本) | | **粗体红色** | 归档文件(主要是 tarball 或 zip 文件) | | **洋红色** | 表示图像和视频文件 | | **青色** | 音频文件 | | **黄色配黑色背景** | 管道文件(称为 FIFO) | | **粗体红色配黑色背景** | 损坏的符号链接 | | **无色(白色)配红色背景** | 表示设置用户 ID 文件 | | **黑色配黄色背景** | 表示设置组 ID 文件 | | **白色与蓝色背景** | 显示粘滞位目录 | | **蓝色配绿色背景** | 指向其他可写目录 | | **黑色配绿色背景** | 当目录同时具有粘滞位和其他可写目录的特征时 | > 📋 再次强调,上述颜色数据基于终端的默认设置,如果更改调色板,将不会得到类似的结果。 但是如果你的终端不显示任何颜色怎么办? 好吧,这是有原因和解决方案的。 ### 如果 ls 命令不显示彩色输出怎么办? 事情是这样的。默认情况下,`ls` 命令不应在输出中显示颜色。如果你使用 `--color=auto` 标志,它将显示颜色。 ``` ls --color=auto ``` 那么为什么 `ls` 命令在 Ubuntu 和其他一些发行版中默认添加颜色呢? 这是因为你的发行版为 `ls` 命令设置了别名,以便在执行 `ls` 命令时使用 `--color=auto` 标志: ``` alias ``` ![][4] 因此,如果 `ls` 命令未显示彩色输出,则是因为默认情况下没有设置别名。 现在,每当你使用 `ls` 命令时,你都可以使用 `--color=auto` 标志。 ![Use --color=auto flag with the ls command to get the colored output][5] 但这不太方便。相反,你应该创建别名并将其添加到 `.bashrc` 中,以便 `ls` 命令默认显示颜色。 #### 为 ls 创建一个永久别名来显示颜色 要创建永久别名,首先,使用以下命令打开 `.bashrc` 文件: ``` nano ~/.bashrc ``` 使用 `Alt + /` [跳到文件末尾][6] 并 [粘贴如下行到终端][7]: ``` alias ls='ls --color=auto' ``` 完成后,[保存更改并退出 nano][8] 文本编辑器。 要使你刚刚所做的更改生效,请 源引source `.bashrc` 文件: ``` source ~/.bashrc ``` 就是这样! 从现在开始,你可以使用彩色输出。 ### ls 命令从哪里获取颜色? 现在有趣的部分来了。`ls` 命令的颜色在哪里定义? 答案是 `LS_COLORS` 环境变量。 是的。这是名为 `LS_COLORS` 的特殊环境变量,它定义 `ls` 命令使用的颜色。 ![Value of the LS_COLORS env variable in Ubuntu][9] 这很好,但是谁定义了这个变量呢? 如果你想做出一些改变怎么办? 我也来回答一下这些问题。 实际上,你有一个专门的 `dircolors` 命令来为 `ls` 命令设置颜色。 不同的 Shell 有不同的颜色配置文件格式。这就是为什么在使用此命令时应指定 Shell。 ![dircolors command output for bash][10] 如你所见,它定义了 `LS_COLORS` 环境变量并将其导出,以便该变量可用于子 Shell。 现在,如果你想使用它,你可以将其复制粘贴到你的 `.bashrc` 文件或像这样重定向输出: ``` dircolors -b >> .bashrc ``` 并 源引source 该文件,以便效果立即可见。你只需要做一次。 #### 理解颜色配置文件 `LS_COLORS` 包含由冒号(`:`)分隔的键值对数据。如果该值有多个部分,则它们之间用分号(`;`)分隔。 键通常是预定义的。值部分代表颜色。 因此,如果显示 `ln=01;36`,则表示对于符号链接,字体为粗体,颜色(`36`)为青色。 `00` 为正常,`01` 为粗体,`4` 为下划线。`31` 代表红色,32 代表绿色等。颜色代码遵循 [ANSI 转义代码][11]。 另一个例子。`or=40;31;01` 表示链接到不存在的文件(键为 `or`),使用黑色背景(颜色代码 `40`)、红色(`31`)和粗体字体(代码 `01`)。 我认为顺序并不重要,因为代码不重叠。`31` 是前景色红色的代码,`41` 是背景红色的颜色。因此,如果使用 `41`,你就知道它用于背景颜色。 ### 使用 ls 命令执行更多操作 `ls` 命令可以做更多的事情,为此,我们制作了有关如何使用 `ls` 命令的详细教程: > **[在 Linux 中使用 ls 命令][11a]** Abhishek Prakash 提供资料。 *(题图:MJ/4d0f1f66-259f-4671-a3a8-158f61a38b10)* -------------------------------------------------------------------------------- via: https://itsfoss.com/ls-color-output/ 作者:[Sagar Sharma][a] 选题:[lkxed][b] 译者:[geekpi](https://github.com/geekpi) 校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]: https://itsfoss.com/author/sagar/ [b]: https://github.com/lkxed/ [1]: https://itsfoss.com/list-directory-content/ [2]: https://itsfoss.com/ls-command/ [3]: https://itsfoss.com/content/images/2023/07/meaning-of-different-colors-shown-when-ls-command-is-used-2.png [4]: https://itsfoss.com/content/images/2023/07/reason-behind-ls-uses-colors-by-default-3.png [5]: https://itsfoss.com/content/images/2023/07/Use----color-auto-flag-with-the-ls-command-to-get-the-colored-output.png [6]: https://linuxhandbook.com/beginning-end-file-nano/ [7]: https://itsfoss.com/copy-paste-linux-terminal/ [8]: https://linuxhandbook.com/nano-save-exit/ [9]: https://itsfoss.com/content/images/2023/07/ls_colors-env-variable.png [10]: https://itsfoss.com/content/images/2023/07/dircolors-command-output.png [11]: https://en.wikipedia.org/wiki/ANSI_escape_code [11a]: https://itsfoss.com/ls-command/ [0]: https://img.linux.net.cn/data/attachment/album/202308/19/093739lmsxp2psmxxuq9ki.jpg