Bat vs Cat: Почему стоит перейти на современный просмотрщик файлов в Linux
Знакомая ситуация: вы открываете конфигурационный файл или длинный скрипт через стандартную команду 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-инженера.