Знакомая ситуация: вы открываете конфигурационный файл или длинный скрипт через стандартную команду cat, и перед глазами оказывается бесконечная «стена» серого текста. В таком выводе сложно ориентироваться: синтаксис сливается, номера строк отсутствуют, а изменения в логике трудно отследить без специальных инструментов. Приходится либо открывать файл в полноценном редакторе, либо городить конструкции с утилитами вроде highlight.

bat — это современная альтернатива классическому просмотрщику файлов, написанная на Rust. Это не просто замена, а мощный терминальный инструмент с «душой». Он предлагает автоматическую подсветку синтаксиса для более чем 200 языков, отображает номера строк и, что особенно ценно, интегрируется с Git, наглядно показывая изменения в файле еще до коммита. Кроме того, bat умеет самостоятельно обрабатывать длинные файлы через встроенный пейджер, избавляя от необходимости вручную вызывать less.

Установка

Инструмент доступен в официальных репозиториях большинства популярных дистрибутивов.

Для систем на базе Ubuntu или Debian:

sudo apt install bat

Для Arch Linux:

sudo pacman -S bat

Для macOS (через Homebrew):

brew install bat

Важное примечание: в некоторых дистрибутивах исполняемый файл может называться batcat. Чтобы использовать привычное имя, рекомендуется создать алиас.

Базовое использование

Использовать bat так же просто, как и его предшественника, но результат выглядит гораздо информативнее.

Просмотр конфигурации nginx с подсветкой и Git-метками:

bat /etc/nginx/nginx.conf

Обычный просмотр скрипта с нумерацией строк:

bat main.py

Сравнение изменений в файле (красивый аналог git diff):

bat --diff main.py

Преимущества и недостатки

Плюсы:

  • Подсветка синтаксиса: Позволяет мгновенно отличить комментарии от рабочего кода, а IP-адреса в логах — от меток времени.
  • Интеграция с Git: Утилита видит изменения относительно последнего коммита и помечает добавленные или удаленные строки прямо на полях.
  • Умный вывод: bat не забивает терминал тысячами строк, а автоматически включает прокрутку через встроенный пейджер.
  • Чистое копирование: При выделении текста мышкой в терминале номера строк и декоративные элементы не попадают в буфер обмена — вы копируете только чистый код.

Минусы:

  • По умолчанию отсутствует в стандартной поставке многих ОС.
  • В некоторых системах требует настройки алиаса из-за названия batcat.
  • Потребляет чуть больше ресурсов, чем минималистичный cat.

Киллер-фичи

1. Замена cat и less в одном флаконе

Для чтения огромных логов больше не нужно комбинировать команды:

bat /var/log/long-ass-log.txt

Используйте стрелки для навигации и клавишу q для выхода.

2. Техническое копирование в пайплайнах

Чтобы передать «чистый» текст файла в буфер обмена, используйте флаг --plain:

bat main.py --plain | xclip -sel clip

3. Исследование возможностей

Просмотреть список всех поддерживаемых языков или получить справку по управлению можно командами:

bat --list-languages
bat --help

Полезный лайфхак

Чтобы bat окончательно заменил старую утилиту в вашей повседневной работе, добавьте в конфигурационный файл .bashrc или .zshrc следующую строку:

alias cat='bat'

Примечание: в системных скриптах автоматизации лучше по-прежнему использовать оригинальный cat для обеспечения предсказуемости вывода.

Теперь вместо серого текста вы получаете наглядный дашборд. Вы сразу видите состояние файла, структуру кода и правки коллег, что значительно ускоряет работу системного администратора и DevOps-инженера.