Todos os arquivos com link físico podem ser mostrados em negrito, modificando o comando
LS_COLORS="*.tgz=01;31:mh=04" ls --color=auto foo.tgz
para
LS_COLORS="*.tgz=01;31:mh=04;01;31" ls --color=auto foo.tgz
A parte mh=
da variável LS_COLORS
refere-se a arquivos com link físico. Há uma tabela no ls
código fonte que não aparece na documentação:
enum indicator_no
{
C_LEFT, C_RIGHT, C_END, C_RESET, C_NORM, C_FILE, C_DIR, C_LINK,
C_FIFO, C_SOCK,
C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID,
C_STICKY, C_OTHER_WRITABLE, C_STICKY_OTHER_WRITABLE, C_CAP, C_MULTIHARDLINK,
C_CLR_TO_EOL
};
static const char *const indicator_name[]=
{
"lc", "rc", "ec", "rs", "no", "fi", "di", "ln", "pi", "so",
"bd", "cd", "mi", "or", "ex", "do", "su", "sg", "st",
"ow", "tw", "ca", "mh", "cl", NULL
};
e o 04
é o código SGR (selecione renderização gráfica) para sublinhado. Os 01
e 31
são negrito e vermelho , respectivamente. Ao adicioná-los à variável na parte de mh
, você pode colorir arquivos com link físico exatamente como outros arquivos (ou diferentes, se escolher números diferentes).
No entanto, o GNU ls
escolhe apenas um esquema para colorir cada arquivo. O cólon :
separa os esquemas. Após verificar categorias especiais, como hard-links (e links e diretórios simbólicos), o programa somente procura sufixos como tgz
quando nenhuma dessas categorias se aplica. Em o código-fonte , que é comentado
/* Check the file's suffix only if still classified as C_FILE. */
e depois de selecionar um esquema, ele faz exatamente isso, sem tentar combinar esquemas .