Новая серия — про утилиты, которые переписали классику GNU на Rust и где-то по пути добавили то, чего в оригинале никогда не было. Начинаем с самого используемого — ls. eza — форк давно заброшенного exa, который теперь живёт и развивается сам по себе.

Главное отличие от обычного ls -l — git-статус прямо в листинге, без отдельного git status:

eza -l --git

Изменённые файлы помечаются одним символом в отдельной колонке (новый, модифицированный, удалённый, переименованный), а для каталога целиком — --git-repos показывает, чистый он или есть незакоммиченное.

Дерево каталогов — через -T/--tree, с ограничением глубины -L:

eza --tree -L 2

Это тот же результат, которого раньше добивались через отдельный tree, только с теми же цветами и иконками, что и обычный листинг.

Иконки по типу файла включаются --icons (нужен Nerd Font в терминале, иначе вместо иконок — пустые квадраты или ?), а раскраска по типу работает из коробки без него — расширения .tar.gz, .py, каталоги и симлинки подсвечиваются по-разному без донастройки $LS_COLORS.

Из привычек после перехода с ls — алиас alias ls="eza" ломает скрипты, где парсится вывод ls построчно (формат колонок у eza всё же свой): для скриптов лучше оставить системный ls, a eza использовать только в интерактивной оболочке.

#rust #linux