lsd — переписанный на Rust вариант ls с иконками, цветами, деревом каталогов и настраиваемым выводом. Он не пытается быть универсальной заменой всех утилит: задача одна — сделать просмотр каталогов быстрым и читаемым. Ниже — установка, настройка, шрифты для иконок и типичные проблемы.

Зачем менять ls

Обычный ls выводит имена в несколько колонок и раскрашивает их по типу файла. Этого достаточно, пока не приходится разбирать большой каталог: права, размеры, даты и владельцы в длинном формате читаются тяжело, а дерево приходится собирать через find. lsd добавляет иконки по типу файла, человекочитаемые размеры, относительные даты и встроенное дерево.

  • Иконки для типов файлов и расширений.
  • Древовидный вывод с ограничением глубины.
  • Гибкая настройка через YAML без пересборки.
  • Цветовые темы и подсветка прав.
  • Совместимость с ключами ls.

Есть и ограничения: lsd не показывает статус Git, не выводит расширенные атрибуты. Для поиска по имени и размеру по-прежнему нужны find и fd.

Установка

В свежих Debian и Ubuntu пакет есть в официальном репозитории. Версия может отставать от upstream, но конфигурация и основные ключи совпадают.

sudo apt update
sudo apt install lsd
lsd --version

В Fedora пакет ставится через dnf, в Arch — через pacman. Если в репозитории версии нет или нужна свежая, lsd собирают из исходников: для этого нужен Rust и компонент Cargo.

cargo install lsd
lsd --help | head -n 20

При сборке из исходников бинарник попадает в ~/.cargo/bin. Этот каталог должен быть в PATH, иначе оболочка продолжит запускать старую версию. Проверить, какой файл будет выполнен, можно командой type -a lsd.

Основные ключи

lsd принимает большинство привычных флагов: -l для длинного формата, -a для скрытых файлов, -h для человекочитаемых размеров. Собственные возможности включают дерево, сортировку и управление иконками.

lsd -la
lsd -l --tree --depth 2
lsd -l --date=relative --size=short
lsd --tree --depth 3 --ignore-glob "*node_modules*"

Ключ --depth ограничивает глубину дерева, иначе вывод на большом проекте может занять весь экран. --ignore-glob исключает каталоги вроде node_modules, а шаблон можно расширить символами подстановки. Для длинного формата полезен --total-size, который считает размер каталогов, но на больших деревьях это заметно медленнее обычного вывода.

Если иконки мешают или терминал их не поддерживает, их отключают флагом --icon=never. Цвета отключают через --color=never, а для скриптов и пайпов удобен --classic, который приближает вывод к обычному ls без лишнего оформления.

Алиасы и замена ls

Полностью заменять ls не обязательно: в скриптах лучше оставить системную утилиту, а в интерактивной оболочке — добавить алиасы. Так поведение скриптов не зависит от версии lsd и его конфигурации.

alias ls='lsd'
alias ll='lsd -l'
alias la='lsd -la'
alias lt='lsd --tree --depth 2'

Строки добавляют в ~/.bashrc или ~/.zshrc. Для fish синтаксис другой: там используется alias ls lsd или функция abbr. После правки файл перечитывают командой source ~/.bashrc либо открывают новый терминал.

В скриптах и Makefile лучше вызывать lsd явно, а не через алиас: алиасы не работают в неинтерактивных оболочках, и результат будет отличаться от ожидаемого. Если нужен парсируемый вывод, lsd не лучший выбор — для этого существуют find -print0 и stat.

Конфигурация

Настройки хранятся в ~/.config/lsd/config.yaml. Файл создают вручную: при первом запуске lsd использует значения по умолчанию и не генерирует конфиг. Формат — обычный YAML, поэтому важны отступы и отсутствие табов.

classic: false
icons:
  theme: fancy
  separator: " "
layout: grid
size: short
date: relative
permission: rwx
total-size: false
sorting:
  column: name
  order: asc

Параметр layout принимает значения grid, tree и oneline. size: short выводит размеры вида 4.2K, а date: relative — «2 hours ago». Для точных дат вместо relative указывают строку формата, например date: "+%Y-%m-%d %H:%M". Значение permission: rwx показывает права буквами, octal — цифрами.

Проверить, что конфигурация применилась, можно запуском с явным указанием файла. Если YAML содержит ошибку, lsd обычно падает с сообщением о парсинге — в нём указана строка, с которой стоит начать разбор.

lsd --config-file ~/.config/lsd/config.yaml
lsd -l --permission=octal
lsd -l --date="+%Y-%m-%d"

Иконки и шрифты

Иконки рисуются символами из Nerd Font — патченных шрифтов, в которых есть глифы для файлов, языков и устройств. Без такого шрифта вместо иконок видны квадраты или вопросительные знаки. Шрифт ставят в пользовательский каталог и обновляют кэш.

mkdir -p ~/.local/share/fonts
cp JetBrainsMonoNerdFont-Regular.ttf ~/.local/share/fonts/
fc-cache -fv
fc-list | grep -i "nerd"

После установки шрифт выбирают в настройках терминала. В GNOME Terminal, Konsole и Alacritty это делается в профиле; в tmux и SSH-клиентах шрифт должен быть настроен на стороне терминала, а не на сервере. Если иконки появились, но «съехали» по ширине, помогает моноширинный вариант Nerd Font, а не пропорциональный.

Тему иконок можно сменить в конфигурации. Если нужного набора нет, lsd использует встроенный. Отдельный файл icons.yaml позволяет переопределить символ для конкретного расширения, но для большинства задач достаточно стандартной темы.

Диагностика

Самая частая проблема — квадраты вместо иконок, и почти всегда это шрифт. Вторая — «команда не найдена» после установки из Cargo: каталог ~/.cargo/bin не добавлен в PATH. Третья — синтаксическая ошибка в YAML, из-за которой lsd не запускается.

type -a lsd
echo "$PATH" | tr ':' '\n' | grep cargo
lsd --icon=never
lsd --color=never -l

Если вывод отличается от ожидаемого в tmux, проверяют TERM и поддержку 256 цветов. Внутри контейнера или по SSH иконки могут не отображаться из-за шрифта на клиенте, а не из-за настроек сервера.

При обновлении lsd старый конфиг может содержать ключи, которых больше нет. Лишние параметры обычно игнорируются, но если поведение изменилось, конфиг временно переименовывают и сравнивают вывод с настройками по умолчанию.

Итог

lsd — аккуратная замена ls для интерактивной работы: иконки, дерево и YAML-конфигурация без сложной настройки. Ставится он из репозитория или через Cargo, требует Nerd Font для иконок и не мешает скриптам, если не подменять системную утилиту глобально. Начинать стоит с алиасов и минимального конфига, а дерево и подсчёт размеров включать по необходимости.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте