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