Bat — это утилита командной строки в Linux, которая служит современной альтернативой традиционной команде cat. Она расширяет её функциональность за счёт подсветки синтаксиса, интеграции с Git, нумерации строк и автоматической постраничной прокрутки. Bat особенно полезен разработчикам и системным администраторам при работе с кодом и конфигурационными файлами.
Основные особенности
- Подсветка синтаксиса. Поддерживает множество языков программирования и разметки.
- Нумерация строк. Отображает номера строк по умолчанию, что упрощает навигацию.
- Интеграция с Git. Показывает аннотации изменений для файлов, отслеживаемых Git (добавленные, изменённые или удалённые строки).
- Автоматическая постраничная прокрутка. Если содержимое файла не помещается на экране, bat использует пейджер (по умолчанию
less) для прокрутки. - Отображение непечатаемых символов. С опцией
-Aможно видеть пробелы, табуляции, переносы строк и другие специальные символы. - Тематизация. Доступны различные темы подсветки синтаксиса.
Установка в разные дистрибутивы Linux
Debian/Ubuntu:
sudo apt install batВ некоторых случаях может использоваться команда batcat из-за конфликта с другим пакетом. Чтобы сделать алиас bat, выполните:
mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/batFedora, Red Hat, AlmaLinux:
sudo dnf install batArch Linux, Manjaro:
sudo pacman -S batAlpine Linux:
apk add batGentoo Linux:
emerge sys-apps/batVoid Linux:
xbps-install -S batopenSUSE:
zypper install batПримеры использования
Просмотр содержимого файла с подсветкой синтаксиса:bat filename Например: bat script.py автоматически применит подсветку для Python.
Просмотр нескольких файлов одновременно:bat file1 file2 Например:
bat /etc/hosts test.txtОтображение определённого диапазона строк:bat --line-range range_from:range_to filename Например:
bat --line-range 2:4 /etc/hosts выведет строки с 2 по 4.
Нумерация строк:bat -n filename Например:
bat -n zigzag.py. Установка темы подсветки синтаксиса (временно):bat --theme=theme_name filename Например: bat --theme=ansi zigzag.py.
Просмотр непечатаемых символов:
bat -A filenameИнтеграция с Git (просмотр изменений):
bat --diff filename Показывает различия с версией в Git: удалённые строки отмечаются -, добавленные — +.
Просмотр файла из конкретного коммита Git:
git show commit_hash:path/to/file | bat -l language Замените commit_hash на нужный хеш коммита, path/to/file — на путь к файлу, language — на соответствующий язык.
Использование с другими инструментами (например, с fzf для интерактивного поиска файлов):
fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}'Создание нового файла:bat > filename Например:
bat > hello.txtДополнительные возможности
- Список поддерживаемых языков:
bat --list-languages. - Список доступных тем:
bat --list-themes. - Постоянная настройка темы (добавьте в
~/.bashrcили/etc/bash.bashrc):export BAT_THEME="theme_name". - Изменение пейджера (по умолчанию
less): установите переменную окруженияPAGERилиBAT_PAGER.
Bat требует больше системных ресурсов, чем cat, так как загружает весь файл в память для парсинга и подсветки синтаксиса. Это может быть заметно при работе с очень большими файлами или в ресурсоограниченных средах.