为什么存档文件的名称不显示为红色

为什么存档文件的名称不显示为红色

我使用“ls”命令列出目录中的所有文件。但是,我发现存档文件的名称(例如“.tar.gz”)没有以红色显示。Ubuntu 的版本是 20.04。有人能帮帮我吗?

对了,我用的shell是fish shell。

答案1

GNU coreutils 实现ls一些内置颜色,但您可能熟悉使用 Ubuntu bash shell的存档文件(例如.tar、、、.tar.gz)的红色着色依赖于通过环境变量设置的值。根据您的描述,您似乎只看到了内置颜色。.tar.bz2.tgzLS_COLORS

在 bash 中ls别名ls --color=auto默认文件(从帐户创建时的目录~/.bashrc复制),并通过命令的输出在同一个文件中设置-如果存在,则可以选择使用自定义文件。/etc/skelLS_COLORSevaldircolors -b~/dircolors

在 fish shell 中情况略有不同。如果你通过 apt 从 Ubuntu 存储库安装了 fish,那么你应该发现它ls被定义为shell 函数/usr/share/fish/functions/ls.fish,从文件(由依赖包提供)导入fish-common。您可以使用内置functions命令查看该函数:

functions ls

您应该看到该函数调用了另一个函数,__fish_set_lscolors该函数执行与 .bashrc 等效的操作eval dircolors -b(尽管它使用与 csh 兼容的dircolors -c)。此函数首先检查是否LS_COLORS已设置,并且仅dircolors在尚未设置时才应用 。

因此,您只看到内置 ls 颜色的可能原因是:

  1. 您以其他方式安装和/或配置了 fish,因此ls未加载默认的 shell 函数

  2. 函数ls已加载,但未调用默认函数__fish_set_lscolors

  3. 您正在使用fish一个环境来调用导出一个LS_COLORS变量,而该变量并没有定义存档文件的红色(例如,是空的)。

相关内容