24 марта 2025 г.

Полезные CLI-инструменты

Небольшая подборка CLI-инструментов, которые помогают мне каждый день

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

fish

Github - https://github.com/fish-shell/fish-shell

Моя любимая оболочка командной строки - fish. По сравнению с более традиционными bash и zsh предоставляет богатый функционал из коробки и дружелюбную пользователю конфигурацию:

  • автодополнение команд на основе истории - спасает, когда нужно часто вводить похожие команды
  • подсветка синтаксиса команд - с одной стороны мелочь, но помогает быстрее понимать есть опечатка в веденной команде или нет
  • интеграция с git
  • и многое другое…

ripgrep

Github: https://github.com/BurntSushi/ripgrep

ripgrep - инструмент для рекурсивного поиска заданной строки. Фактически, это аналог grep с некоторыми преимуществами: он более быстрый, печатает приятный глазу вывод результатов поиска, а также имеет удобную конфигурацию по умолчанию (наприемр, ripgrep по умолчанию игнорирует файлы из .gitignore). Примеры:

# поиск функции `create_user` в файлах типа `.py`
rg "def create_user" -tpy

# поиск ошибок в логах docker-контейнеров
docker compose logs | rg "error" -i

zoxide

Github: https://github.com/ajeetdsouza/zoxide

zoxide - более умная замена команде cd, которая запоминает посещенные вами папки и позволяет прыгать между ними, вводя лишь название папок (а не полный путь). Примеры:

# перемещает в ~/Projects/js/blog
$ z blog
# перемешаяет в ~
$ z

entr

Github: https://github.com/eradman/entr

entr помогает запускать нужные команды при изменение файлов. Например, если я хочу запускать линтер mypy каждый раз, когда изменяется любой .py файл в папке ./src, я могу воспользоваться следующей командой:

$ ls ./src/**/*.py | entr mypy ./src