diff --git a/bin/ls/ls.1 b/bin/ls/ls.1 index 1cb3395918c5..37ed1df4f5d3 100644 --- a/bin/ls/ls.1 +++ b/bin/ls/ls.1 @@ -43,7 +43,7 @@ .Nd list directory contents .Sh SYNOPSIS .Nm ls -.Op Fl ABCFGHLPRTWabcdfgiklnoqrstu1 +.Op Fl ABCFHLPRTWabcdfgiklnoqrstu1 .Op Ar file ... .Sh DESCRIPTION For each operand that names a @@ -91,29 +91,8 @@ a percent sign (%) after each whiteout, and a vertical bar (|) after each that is a .Tn FIFO . .It Fl G -Use -.Tn ANSI -color sequences to distinguish file types. -See -.Ev LSCOLORS -below. -In addition to those mentioned above in -.Fl F , -some extra attributes (setuid bit set, etc.) are also displayed. -The colorization is dependent on a terminal type with the proper -.Xr termcap 5 -capabilities. -The default -.Dq cons25 -console has the proper capabilities, -however if you want to display the colors in an -.Xr xterm 1 -for example, -you need to set your -.Ev TERM -variable to -.Dq xterm-color . -Other terminal types may require similar adjustments. +This flag has been depricated. Please use the +.Ev CLICOLOR environment variable instead. .It Fl H Symbolic links on the command line are followed. This option is assumed if none of the @@ -393,6 +372,33 @@ is set, the block counts (see .Fl s ) will be displayed in units of that size block. +.It Ev CLICOLOR +Use +.Tn ANSI +color sequences to distinguish file types. +See +.Ev LSCOLORS +below. +In addition to the file types mentioned in the +.Fl F +option some extra attributes (setuid bit set, etc.) are also displayed. +The colorization is dependent on a terminal type with the proper +.Xr termcap 5 +capabilities. +The default +.Dq cons25 +console has the proper capabilities, +however if you want to display the colors in an +.Xr xterm 1 +for example, +you need to set your +.Ev TERM +variable to +.Dq xterm-color . +Other terminal types may require similar adjustments. +.It Ev CLICOLOR_FORCE +Color sequences are normally disabled if the output isn't directed to +a color capable terminal. This can be overridden by setting this flag. .It Ev COLUMNS If this variable contains a string representing a decimal integer, it is used as the @@ -414,9 +420,8 @@ See for more information. .It Ev LSCOLORS The value of this variable describes what color to use for which -attribute when the color output -.Pq Fl G -is specified. +attribute when colors are enabled with +.Ev CLICOLOR. This string is a concatenation of pairs of the format .Sy fb , where @@ -494,8 +499,8 @@ in order: inode, block count, number of links, user name, group name, flags, file size, file name. .It Ev TERM The -.Fl G -option depends on a terminal type with color capabilities. +.Ev CLICOLOR +functionality depends on a terminal type with color capabilities. .It Ev TZ The timezone to use when displaying dates. See diff --git a/bin/ls/ls.c b/bin/ls/ls.c index 4b48ef93a90a..87cea2390d1c 100644 --- a/bin/ls/ls.c +++ b/bin/ls/ls.c @@ -202,23 +202,11 @@ main(argc, argv) fts_options |= FTS_COMFOLLOW; break; case 'G': - if (isatty(STDOUT_FILENO)) #ifdef COLORLS - if (tgetent(termcapbuf, getenv("TERM")) == 1) { - ansi_fgcol = tgetstr("AF", &bp); - ansi_bgcol = tgetstr("AB", &bp); - - /* To switch colours off use 'op' if - * available, otherwise use 'oc', or - * don't do colours at all. */ - ansi_coloff = tgetstr("op", &bp); - if (!ansi_coloff) - ansi_coloff = tgetstr("oc", &bp); - if (ansi_fgcol && ansi_bgcol && ansi_coloff) - f_color = 1; - } + (void)fprintf(stderr, "The -G flag is depricated, please define CLICOLOR instead.\n"); + setenv("CLICOLOR", "", 1); #else - (void)fprintf(stderr, "Color support not compiled in.\n"); + (void)fprintf(stderr, "Color support not compiled in.\n"); #endif break; case 'L': @@ -295,6 +283,23 @@ main(argc, argv) argv += optind; #ifdef COLORLS + /* Enabling of colours is conditional on the environment. */ + if (getenv("CLICOLOR") && + (isatty(STDOUT_FILENO) || getenv("CLICOLOR_FORCE"))) + if (tgetent(termcapbuf, getenv("TERM")) == 1) { + ansi_fgcol = tgetstr("AF", &bp); + ansi_bgcol = tgetstr("AB", &bp); + + /* To switch colours off use 'op' if + * available, otherwise use 'oc', or + * don't do colours at all. */ + ansi_coloff = tgetstr("op", &bp); + if (!ansi_coloff) + ansi_coloff = tgetstr("oc", &bp); + if (ansi_fgcol && ansi_bgcol && ansi_coloff) + f_color = 1; + } + if (f_color) { /* * We can't put tabs and color sequences together: