所以,这是一个特殊的情况:
$ 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
尽管类型相同,但仍以不同的颜色报告这些?
显然,
ls
依赖于环境变量$LS_COLORS
。这样做echo "$LS_COLORS" | grep --color sqlite
显示了一个带有 value 的条目*.sqlite=38;5;147
,这显然是前景色形式的256 色 ANSI 转义颜色代码。ESC[38;5;#m