Как скачивать файлы из GitHub без бесконечных клонов
Знакомая ситуация: вам нужен один конфиг или папка с примерами из огромного репозитория на 5 ГБ. Обычно приходится либо делать git clone --depth 1 (что всё равно тянет лишнее), либо идти в браузер и вручную сохранять файлы. Недавно я наткнулся на инструмент, который решает эту мелкую, но раздражающую проблему прямо в терминале.
Проект называется ghgrab. Это небольшая утилита на Rust, которая превращает GitHub в некое подобие файлового менеджера. Вы просто даете ей ссылку на репозиторий, а она открывает интерактивный интерфейс (TUI), где можно побродить по папкам и забрать только то, что нужно.

Зачем это в консоли
Казалось бы, есть веб-интерфейс GitHub. Но ghgrab выигрывает за счет скорости и фокуса. Если вы и так живете в терминале, переключаться в браузер, искать кнопку «Download» для конкретного файла (которой часто нет для отдельных папок без сторонних расширений) — это лишние движения.
Инструмент написан на Rust с использованием библиотек tokio и ratatui. Это значит, что интерфейс не тормозит, а запросы к API отрабатывают максимально быстро.
Что умеет ghgrab
Главная фишка — это интерактивность. Вы запускаете команду, и перед вами дерево файлов. Но есть и несколько неочевидных функций, которые делают утилиту полезнее обычного curl.
Выборочная загрузка и поиск
Внутри интерфейса работает fuzzy search. Если репозиторий раздут, вы просто нажимаете / и печатаете часть имени файла. Нашли нужные конфиги? Отметили их пробелом и скачали пачкой. Это гораздо удобнее, чем копировать пути вручную.
Предпросмотр кода
Перед тем как тянуть файл к себе, его можно быстро глянуть прямо в терминале. Нажимаете p, и открывается превью. Помогает, когда в репозитории десять похожих .yaml файлов и вы не помните, какой именно актуальный.
Работа с релизами
Это, пожалуй, самая практичная часть. Вместо того чтобы лезть в раздел Releases, выискивать там нужный .tar.gz под свою архитектуру (x86_64, arm64, linux, macos...), можно использовать команду:
ghgrab rel sharkdp/bat --extract --bin-path ~/.local/bin
Утилита сама определит вашу ОС, найдет подходящий бинарник в последнем релизе, скачает его, распакует и положит в папку с исполняемыми файлами. По сути, это такой универсальный установщик для софта, который распространяется через GitHub Releases.
Поиск репозиториев
Если вы не помните точный URL, можно просто вбить ключевое слово. ghgrab умеет искать сами проекты, фильтровать их по звездам или языку программирования. Нашли нужный — нажали Enter и сразу перешли к просмотру его содержимого.
Как начать пользоваться
Разработчик позаботился о том, чтобы инструмент было легко поставить в любую среду. Если у вас есть Rust, то стандартно:
cargo install ghgrab
Для тех, кто предпочитает Node.js или Python, есть пакеты в NPM и PyPI. Даже для пользователей Arch Linux завезли пакет в AUR (ghgrab-bin).
После установки просто введите ghgrab или добавьте ссылку на конкретный проект:
ghgrab https://github.com/rust-lang/rust
Кстати, если вы планируете качать много и часто, лучше прописать GitHub Token в конфиг. Без него вы быстро упретесь в лимиты GitHub API по количеству запросов. Делается это одной командой: ghgrab config set token ВАШ_ТОКЕН.
Кому это пригодится
Я вижу два основных сценария. Первый — когда вы часто копаетесь в чужом коде ради примеров или конфигов. Второй — автоматизация. У ghgrab есть режим agent, который отдает данные в JSON. Это удобно для скриптов, где нужно проверить структуру репозитория или вытянуть конкретные артефакты без использования тяжелого git-клиента.
Проект еще молодой, звезд не так много (около 750), но он уже выглядит как законченный инструмент, который просто делает свою работу. Если вам надоело клонировать гигабайты ради пары файлов, попробуйте — это экономит и время, и место на диске.
