$ printf '\e[0;31m color test\n'; /bin/ls
color test
filea fileb filec filed filee filef fileg fileh
将以红色打印文件列表。
或者,如果 ls 不需要更改颜色,则将保留最后一种颜色:
$ mkdir t1; cd t1; touch file{a..h}
$ printf '\e[0;31m color test\n'; /bin/ls --color -l
color test
total 0
-rw-r--r-- 1 user user 0 Feb 23 01:16 filea
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileb
-rw-r--r-- 1 user user 0 Feb 23 01:16 filec
-rw-r--r-- 1 user user 0 Feb 23 01:16 filed
-rw-r--r-- 1 user user 0 Feb 23 01:16 filee
-rw-r--r-- 1 user user 0 Feb 23 01:16 filef
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileg
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileh
$ printf '\e[0;31m color test\n'; /bin/ls --color -la
color test
total 8
drwxr-xr-x 2 user user 4096 Feb 23 01:16 .
drwxr-x--- 7 user user 4096 Feb 23 01:15 ..
-rw-r--r-- 1 user user 0 Feb 23 01:16 filea
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileb
-rw-r--r-- 1 user user 0 Feb 23 01:16 filec
-rw-r--r-- 1 user user 0 Feb 23 01:16 filed
-rw-r--r-- 1 user user 0 Feb 23 01:16 filee
-rw-r--r-- 1 user user 0 Feb 23 01:16 filef
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileg
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileh
看起来您的提示字符串 (
$PS1
) 正在为字符设置粗体属性以使颜色更好,而不是取消设置。的输出ls
不知道这一点,并且不设置粗体。所以在 的第一个颜色输出之后ls
,一切看起来都变暗了。ls 的整个输出将以最后一种活动颜色打印。如果
ls
没有颜色调用:将以红色打印文件列表。
或者,如果 ls 不需要更改颜色,则将保留最后一种颜色:
尽管如此,一切都是红色的。
但是,一旦
ls
需要设置颜色(然后将颜色重置为控制台使用的默认颜色),此后使用的颜色将是控制台默认值。前三行(直到蓝点)以红色打印。