malikov.tech

LS, LSD или EXA?

Cover Image for LS, LSD или EXA?

По вчерашним следам изучения разных молоточков попали мне на стол еще две утилиты. Позиционирующиеся как современная замена ls. Не то, что бы мне чего-то не хватает в встроенной туловине, но я решил критически отнестись к их существованию и отбросив скепсис полез их изучать. Ниже мои мысли по этому поводу.

Сразу скажу, что по моему мнению менять штатные инструменты нужно только в случае, если они удовлетворяют нескольким требованиям:

  1. Ставятся везде, где предстоит с ними работать
  2. Весят не драматически больше оригинала
  3. Имеют по максимуму совместимый api
  4. Решают задачу лучше, быстрее, эффективнее, удобнее и т.д.

Т.е. если мы получаем точно такой же инструмент но переписанный на другом ЯП - это бессмысленная замена. Обе убийцы ls написаны кстати на Rust. Я в целом понимаю любовь разработчиков переписывать на Rust вообще всё, что плохо приколочено к полу. Но не уверен, что в данном случае вообще был в этом смысл.

Значит начнем с банального - вес:

  • ls - 183K

  • exa - 923K

  • lsd - 135K

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 у меня вполне обоснованный скепсис пока что.