Wie ändere ich mithilfe von Dircolors die Farbe meiner Subversion-Ordner?

7

Unten finden Sie ein Beispiel meiner Dircolors-Datei. Ich möchte, dass Subversion-Ordner (.svn) farbig sind, aber ich denke, der Erweiterungsabschnitt gilt nur für Dateinamen.

Wie setze ich Farben für Verzeichnisse mit bestimmten Namen?

NORMAL 00   # global default, although everything should be something.
FILE   00   # normal file
DIR    35   # directory
LINK   01;36    # symbolic link
FIFO   40;33    # pipe
SOCK   01;35    # socket
BLK    40;33;01 # block device driver
CHR    40;33;01 # character device driver

# This is for files with execute permission:
EXEC 01;32

# List any file extensions like '.gz' or '.tar' that you would like ls
# to colorize below. Put the extension, a space, and the color init string.
# (and any comments you want to add after a '#')
*~    01;33;41 # stuff we hate to find laying around (flashing red)
.svn  37
.cmd  01;32 # executables (bright green)
.exe  01;32
.com  01;32
.btm  01;32
Roy Rico
quelle
Welches Betriebssystem? Dircolors sind mir nicht vertraut.
Chris Seite
Diese Antwort stackoverflow.com/a/11288821/754997 verwendet ein Perl-Skript, um die Ausgabe von ls einzufärben . Sie verwenden dann dieses Skript anstelle von ls.
Chris Seite

Antworten:

5

Ich habe einen Weg gefunden:

diff --git a/src/ls.c b/src/ls.c
index 680a7c3..d316eb6 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -4226,7 +4226,7 @@ print_color_indicator (const struct fileinfo *f, bool symlink_target)

   /* Check the file's suffix only if still classified as C_FILE.  */
   ext = NULL;
-  if (type == C_FILE)
+  if (type == C_FILE || type == C_DIR)
     {
       /* Test if NAME has a recognized suffix.  */

Geben Sie hier die Bildbeschreibung ein

Stéphane Gimenez
quelle
Beachten Sie, dass ohne Änderung des lsQuellcodes das, wonach Sie fragen, nicht möglich ist. (Siehe den ersten Kommentar /* … */oben.)
Stéphane Gimenez
Vielen Dank, ich denke, ich werde den Quellcode nicht ändern (ich habe nicht diese Zugriffsebene auf den Maschinen bei der Arbeit.
Roy Rico
1
@ Roy: Nichts hindert dich daran, deine eigenen zu kompilieren lsund in deinen PATH zu legen. Ganz einfach: git clone git://git.sv.gnu.org/coreutils, bearbeiten eine Zeile src/ls.c, ./bootstrap, ./configure, make, cp src/ls ~/bin, und du bist :-) getan
Stéphane Gimenez