Bug 245270

Summary: ls(1) man page describes LSCOLORS wrong
Product: Documentation Reporter: Andras Farkas <deepbluemistake>
Component: Manual PagesAssignee: Gordon Bergling <gbe>
Status: In Progress ---    
Severity: Affects Many People CC: doc, gbe, vvd
Priority: --- Keywords: patch
Version: Latest   
Hardware: Any   
OS: Any   
See Also: https://reviews.freebsd.org/D25961
Attachments:
Description Flags
diff to ls.1 none

Description Andras Farkas 2020-04-02 04:16:33 UTC
Created attachment 212969 [details]
diff to ls.1

The ls man page
https://www.freebsd.org/cgi/man.cgi?query=ls&apropos=0&sektion=0&manpath=FreeBSD+12.1-RELEASE+and+Ports&arch=default&format=html
https://github.com/freebsd/freebsd/blob/master/bin/ls/ls.1
describes the colors wrong.  I checked ls's code, and indeed it can and does use ANSI color, so the actual ANSI standard can be referenced for color names and behavior:
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
Especially since the man page also references ANSI in the LSCOLORS section.
Discovered this on 12.1-RELEASE-p3 but wrote and attached a patch for the ls.1 currently seen in the GitHub repository (presumably -current)

Important to note is that some terminals do not have separate colors for bold and non-bold text.  Some terminals do have separate colors, of course, but not all.

Semi-relatedly, and not dealt with in this patch or bug report:
LSCOLORS's format is deficient, anyway.  Setting it to bC, Bc, or BC provides the same output.  The colors struct in ls's print.c has bold-status, foreground color, and background color as three different items.  The LSCOLORS string should have them as three different characters too, rather than conflating boldness with one of the colors.  Hence I think bc should be 0bc and Bc, bC, and BC should be 1bc
Comment 1 VVD 2020-08-03 16:44:38 UTC
My experience.

* 12.1 amd64
* x11/konsole
* default TERM=xterm-256color

Without bold color:
$ export LSCOLORS=exfxcxdxbxegedabagacad
$ ls -G /
look same as with bold color for dirs:
$ export LSCOLORS=Exfxcxdxbxegedabagacad
$ ls -G /
but this output is correct with different color for dirs:
$ export TERM=xterm-16color
$ export LSCOLORS=Exfxcxdxbxegedabagacad
$ ls -G /

I tested different combinations of the colors for the dirs: ex, Ex, eX, EX, ea, Ea, eA, EA - look same with TERM=xterm-256color (my default background is black).
Background always isn't bold even with TERM=xterm-16color.

P.S. x11/konsole have option to draw bold colors as custom colors - Intence colors.