Раскрасить жесткие ссылки в выводе ls?

Как я могу раскрасить жесткие ссылки самостоятельно? Получается на старом Ubuntu 10.04 у меня такое происходит по умолчанию (тоже самое .bashrc а также .profile в использовании), в то время как на более новой Ubuntu 12.04 это не так.

Это вывод на Ubuntu 10.04 (тот, который я желаю):

Наличие цветного выхода для жестко связанных файлов

И это вывод на Ubuntu 12.04:Отсутствует цветной вывод для жестко связанных файлов

Соответствующий файл .vimrc, тем не мение, .viminfo обычный файл с количеством ссылок 1, в отличие от .vimrc,

Конечно тот факт, что GNU coreutils использование страниц texinfo вместо man-страниц не упрощает работу. Я нашел это здесь, но это не относится к делу, которое я ищу.

TL; DR: как добиться раскрашивания жестко связанных (как в: количество ссылок> 1) файлов, как мне нравится в различных версиях Ubuntu.

2 ответа

Решение

Сделай это:

LS_COLORS="mh=44;37" ls -l

И вы можете редактировать свой ~/.profile изменить LS_COLORS соответственно.

Фон

Эта функция была включена по умолчанию в 2008 году и отключена по умолчанию в 2009 году. Каким-то образом остановка для Ubuntu 10.04 была как раз между этими моментами.

Используя Git-репозиторий coreutils, я вижу, что обязательство по возврату автоматической колоризации было с версии 7.5:

git tag --contains 0df338f6719ec2bcf1e1dea2d8b12dc66daf8a1e
v7.5
v7.6
[...]

В версиях до 7.1, кажется, нет поддерживаемой поддержки для этого:

git tag --contains 1e48b1fee5fa2ad2d1802771eafbfcddb38a24cb
v7.1
v7.2
[...]

Исходный файл multihardlink.sh, приведи меня к точному LS_COLORS значение, чтобы включить его снова.

Вы можете открыть LP Bug # 123423.

Основываясь на ответе gertvdijk, я придумал следующий фрагмент кода, который соответствует моим потребностям:

if [[ -e "/etc/debian_version" ]] && type dircolors > /dev/null 2>&1; then
    command dircolors|command grep -q 'hl=' && export LS_COLORS="ln=01;36:hl=00;36"
    command dircolors|command grep -q 'mh=' && export LS_COLORS="ln=01;36:mh=00;36"
fi

Изменить: мне действительно пришлось переписать фрагмент (см. Историю редактирования).

Получается что ls глотает вывод ошибки относительно LS_COLORS при обвязке. По крайней мере я не мог grep для этого, ни с 2>&1 ни без Отсюда и изменения. Мы проверяем на dircolors быть доступным. Если это так, ожидается вывод фрагмента кода оболочки (по умолчанию совместимой с оболочкой Bourne), который содержит значения по умолчанию для различных распознанных типов файлов. Итак, мы проверяем hl= или же mh= соответственно на выходе dircolors, Таким образом, мы можем определить, что ожидается от ls а также export LS_COLORS соответственно. Это может быть безопаснее grep за :hl= а также :mh= соответственно исключить возможность расширения файлов, заканчивающихся на hl или же mh и соответствует нашему состоянию.

Вышеуказанные цвета: светло-голубой на черном для мягких ссылок и более темный голубой по умолчанию для жестких ссылок.

Конечно, вы можете варьировать состояние верхнего уровня. В настоящее время я только устанавливаю его в Debian/Ubuntu, потому что у меня нет времени, чтобы протестировать его на более старых системах RHEL/CentOS.

NB: вызовы через command работать с потенциальными псевдонимами / функциями с теми же именами, что и инструменты, которые мы пытаемся использовать здесь.

Другие вопросы по тегам