2016-11-13 4 views

Répondre

1

L'explication est donnée dans la sortie de dircolors -p, par exemple,

screenshot with dircolors -p

Bien sûr dircolors ne colorent pas sa sortie. J'ai utilisé ce script:

#!/usr/bin/perl -w 

use strict; 

our $comment = "\e[31m"; 
our $reset = "\e[K\e[m"; 

our @data; 

open my $fh, "dircolors -p|" or die "cannot read from dircolors"; 
@data = <$fh>; 
close $fh; 

printf "\e[H\e[2J"; 

for my $n (0 .. $#data) { 
    chomp $data[$n]; 
    if ($data[$n] =~ /^\s*#/) { 
     printf "%s%s%s\n", $comment, $data[$n], $reset; 
    } 
    elsif ($data[$n] =~ /^\s*TERM\s/) { 
     printf "%s\n", $data[$n]; 
    } 
    elsif ($data[$n] =~ /^\s*[^\s]+\s+\d+(;\d+)?\s*(#.*)?$/) { 
     my $code = $data[$n]; 
     $code =~ s/^\s*[^\s]+\s+//; 
     $code =~ s/\s.*//; 
     my $data = $data[$n]; 
     $data =~ s/(#.*)$/$comment$1$reset/; 
     $data =~ s/^(\s*)([^\s]+)(\s+)/$1\e[${code}m$2\e[m$3/; 
     printf "%s\n", $data; 
    } 
    else { 
     printf "%s\n", $data[$n]; 
    } 
} 

1; 

Pour se débarrasser de l'arrière-plan, vous pouvez changer les permissions du répertoire, ou utilisez une autre base de données pour définir votre variable d'environnement LS_COLORS. Le dircolors documentation est l'endroit où aller.