Как мне самому раскрасить жесткие ссылки? Оказывается, на старом 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.
Сделайте это:
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.
Примечание: вызовы через command
предназначены для работы с потенциальными псевдонимами / функциями с теми же именами, что и инструменты, которые мы пытаемся здесь использовать.