bat

bat

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/bat

Fedora, Red Hat, AlmaLinux:

sudo dnf install bat

Arch Linux, Manjaro:

sudo pacman -S bat

Alpine Linux:

apk add bat

Gentoo Linux:

emerge sys-apps/bat

Void Linux:

xbps-install -S bat

openSUSE:

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, так как загружает весь файл в память для парсинга и подсветки синтаксиса. Это может быть заметно при работе с очень большими файлами или в ресурсоограниченных средах.