Новая серия — про утилиты, которые переписали классику 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
