为什么 ls 会将两个本来相似的文件以不同的颜色显示?

为什么 ls 会将两个本来相似的文件以不同的颜色显示?

因此,情况是这样的:

$ ls -l foo.sqlite foo.ssqlite
-rw-r--r-- 1 xie xie 8192 Jan 22 19:25 foo.sqlite
-rw-r--r-- 1 xie xie 8192 Jan 23 11:48 foo.ssqlite

在输出中,foo.sqlite被着色为蓝色,lsfoo.ssqlite被着色为红色/粉色。权限相同,类型相同:

$ file foo.sqlite foo.ssqlite
foo.sqlite:  SQLite 3.x database, last written using SQLite version 3026000
foo.ssqlite: SQLite 3.x database, last written using SQLite version 3023001

唯一明显的区别是,一个是foo.sqlite由 Perl 脚本创建的,而另一个是由 Python 脚本创建的,然而这并不能解释不同的颜色,好像将ls它们识别为两种不同的文件类型。那么问题是,为什么ls尽管类型相同,但报告的颜色却不同?

答案1

显然,ls依赖于环境变量$LS_COLORS。这样做echo "$LS_COLORS" | grep --color sqlite会显示一个值为的条目*.sqlite=38;5;147,这显然是256 色 ANSI 转义颜色代码ESC[38;5;#m以前景颜色形式。

相关内容