Раскрасить жесткие ссылки в выводе 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 работать с потенциальными псевдонимами / функциями с теми же именами, что и инструменты, которые мы пытаемся использовать здесь.