Все жестко связанные файлы можно выделить полужирным красным цветом, изменив команду
LS_COLORS="*.tgz=01;31:mh=04" ls --color=auto foo.tgz
на
LS_COLORS="*.tgz=01;31:mh=04;01;31" ls --color=auto foo.tgz
. Часть mh =
переменной LS_COLORS
ссылается на к файлам с жесткой связью. В исходном коде ls
есть таблица, которой нет в документации:
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
};
, а 04
- это код SGR (выбор графического представления) для подчеркивания. 01
и 31
выделены жирным и красным соответственно. Добавляя их в переменную в части для mh
, вы можете раскрашивать жестко связанные файлы точно так же, как другие файлы (или иначе, если вы выберете другие числа).
Однако GNU ls
выбирает только одну схему для раскраски каждого файла. Двоеточие :
разделяет схемы. После проверки специальных категорий, таких как жесткие ссылки (а также символические ссылки и каталоги), программа только ищет суффиксы, такие как tgz
, когда ни одна из этих категорий не подходит. В исходный код , который комментируется
/* Check the file's suffix only if still classified as C_FILE. */
, и как только он выбрал схему, он выполняет только эту, , не пытаясь объединить схемы .