LS, LSD или EXA?

По вчерашним следам изучения разных молоточков попали мне на стол еще две утилиты. Позиционирующиеся как современная замена ls
. Не то, что бы мне чего-то не хватает в встроенной туловине, но я решил критически отнестись к их существованию и отбросив скепсис полез их изучать. Ниже мои мысли по этому поводу.
Сразу скажу, что по моему мнению менять штатные инструменты нужно только в случае, если они удовлетворяют нескольким требованиям:
- Ставятся везде, где предстоит с ними работать
- Весят не драматически больше оригинала
- Имеют по максимуму совместимый api
- Решают задачу лучше, быстрее, эффективнее, удобнее и т.д.
Т.е. если мы получаем точно такой же инструмент но переписанный на другом ЯП - это бессмысленная замена. Обе убийцы ls
написаны кстати на Rust. Я в целом понимаю любовь разработчиков переписывать на Rust вообще всё, что плохо приколочено к полу. Но не уверен, что в данном случае вообще был в этом смысл.
Значит начнем с банального - вес:
exa почти метр толщиной и вероятно должна уметь что-то значимое на этот вес в сравнении с оригиналом и конкурентом иначе зачем на неё смотреть в целом решительно не ясно.
Тут надо пояснить, упиваться разницей в 600 килобайт я бы не стал, просто хочу держать в голове осознанное понимание зачем мне тратить дисковое пространство и переучивать себя на что-то новое. А то тут 600кб, там пару тысяч, сям пару десятков мегабайт и вот уже смотришь на Application support, а там 60 гигабайт хрен пойми чем занято. Копейка рубль, как говорится! ☝️
Теперь будем пытаться получить перечень того, чего никак нельзя сделать в ls
и что мне действительно может быть полезным и не заменимым. Сразу скажу, что всякие кастомные сортировки не интересны, также как и раскраски в цвета радуги и иконки. Поэтому как я не старался, но список получился не супер обширный:
- Древовидное представление
- Ограничение показа рекурсивного прохода по глубине
- Octal представление прав
- Индикация git статуса файла
В остальном все оставшиеся "фишки" выглядят как свистелки, которые возможно нужны для эстетического удовольствия, но никак не для работы. В моем случае как минимум.
Итак если сравнивать exa и lsd, то единственными плюсом exa будет показ git статуса файлов. Но вот насколько мне эта фича нужна - большой вопрос. И учитывая лишние и не понятно куда ушедшие для меня 600кб я решил остановиться на lsd. Ибо бахнуть git status мне не сложно, а при просмотре файлов я врятли буду обращать на это внимание. В общем сценарий я себе пока не придумал зачем мне это нужно вне IDE.
Мои zsh алиасы получились примерно следующими:
alias lt="lsd -l --permission=octal --date='+%Y-%m-%d %X' --group-directories-first --size=short --color=always --icon=never --tree --depth=2"
alias l="lsd -l --permission=octal --date='+%Y-%m-%d %X' --group-directories-first --size=short --color=always --icon=never"
Не знаю долго ли буду пользоваться этим всем и как часто в целом оно мне может быть полезным, но попробуемс и узнаемс. Некоторое время назад также был вдохновлен nnn, но он не продержался у меня и месяца, после чего я понял, что если хочется в терминальчике по файликам лазать удобно, то mc никто и ничто не заменит. Вот и к lsd и exa у меня вполне обоснованный скепсис пока что.