因此,情况是这样的:
$ 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
被着色为蓝色,ls
而foo.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
以前景颜色形式。