我使用“ls”命令列出目录中的所有文件。但是,我发现存档文件的名称(例如“.tar.gz”)没有以红色显示。Ubuntu 的版本是 20.04。有人能帮帮我吗?
对了,我用的shell是fish shell。
答案1
GNU coreutils 实现ls
有一些内置颜色,但您可能熟悉使用 Ubuntu bash shell的存档文件(例如.tar
、、、.tar.gz
)的红色着色依赖于通过环境变量设置的值。根据您的描述,您似乎只看到了内置颜色。.tar.bz2
.tgz
LS_COLORS
在 bash 中ls
,别名到ls --color=auto
默认文件(从帐户创建时的目录~/.bashrc
复制),并通过命令的输出在同一个文件中设置-如果存在,则可以选择使用自定义文件。/etc/skel
LS_COLORS
eval
dircolors -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 颜色的可能原因是:
您以其他方式安装和/或配置了 fish,因此
ls
未加载默认的 shell 函数函数
ls
已加载,但未调用默认函数__fish_set_lscolors
您正在使用
fish
一个环境来调用导出一个LS_COLORS
变量,而该变量并没有定义存档文件的红色(例如,是空的)。