2020-06-01 14:34:17 +03:00
<p align="center">
2021-10-17 22:15:23 +03:00
<img src="logo-header.svg" alt="bat - a cat clone with wings"><br>
<a href="https://github.com/sharkdp/bat/actions?query=workflow%3ACICD"><img src="https://github.com/sharkdp/bat/workflows/CICD/badge.svg" alt="Build Status"></a>
2020-06-01 14:34:17 +03:00
<img src="https://img.shields.io/crates/l/bat.svg" alt="license">
<a href="https://crates.io/crates/bat"><img src="https://img.shields.io/crates/v/bat.svg?colorB=319e8c" alt="Version info"></a><br>
2024-12-17 13:49:23 +03:00
Клон утилиты <i>cat(1)</i> с поддержкой подсветки синтаксиса и Git
2020-06-01 14:34:17 +03:00
</p>
<p align="center">
2024-12-17 13:49:23 +03:00
<a href="#подсветка -синтаксиса">Ключевые возможности</a> •
2020-06-03 20:11:52 +03:00
<a href="#как -использовать">Использование</a> •
<a href="#установка ">Установка</a> •
<a href="#кастомизация ">Кастомизация</a> •
2021-10-17 22:15:23 +03:00
<a href="#цели -и-альтернативы">Цели и альтернативы </a><br>
2023-12-01 17:22:54 +00:00
[<a href="../README.md">English</a>]
2021-12-06 03:18:38 +08:00
[<a href="README-zh.md">中文</a>]
2021-10-17 22:15:23 +03:00
[<a href="README-ja.md">日本語</a>]
[<a href="README-ko.md">한국어</a>]
[Русский]
2020-06-01 14:34:17 +03:00
</p>
2024-12-17 13:49:23 +03:00
### Подсветка синтаксиса
2020-06-01 14:34:17 +03:00
2024-12-17 13:49:23 +03:00
`bat` поддерживает подсветку синтаксиса для огромного количества языков программирования и разметки:
2020-06-01 14:34:17 +03:00
2024-12-17 13:49:23 +03:00

2020-06-01 14:34:17 +03:00
### Интеграция с Git
2020-08-30 14:54:15 +03:00
`bat` использует `git` , чтобы показать изменения в коде
2020-06-01 14:34:17 +03:00
(смотрите на левый сайдбар):

2024-12-17 13:49:23 +03:00
### Показ непечатных символов
2020-06-01 14:34:17 +03:00
2024-12-17 13:49:23 +03:00
Вы можете использовать флаг `-A` / `--show-all` , чтобы показать непечатные символы:
2020-06-01 14:34:17 +03:00

2024-12-17 13:49:23 +03:00
### Автоматический пейджинг терминала
2020-06-01 14:34:17 +03:00
2024-12-17 13:49:23 +03:00
`bat` умеет перенаправлять вывод в пейджер терминала (например, в `less` ), если вывод не помещается на экране полностью.
Если вы хотите, чтобы `bat` работал как `cat` всё время, вы можете установить опцию `--paging=never` в командной строке или в конфигурационном файле.
Если вы намерены использовать `bat` в качестве алиаса для `cat` , вы можете установить `alias cat='bat --paging=never'` , чтобы сохранить изначальное поведение.
2020-06-01 14:34:17 +03:00
### Объединение файлов
2020-06-25 08:52:00 +03:00
О... Вы также можете объединять файлы :wink:. Когда
2020-06-25 08:56:01 +03:00
`bat` обнаружит неинтерактивный терминал (например, когда вы перенаправляете вывод в файл или процесс), он будет работать как утилита `cat` и выведет содержимое файлов как обычный текст (без подсветки синтаксиса).
2020-06-01 14:34:17 +03:00
## Как использовать
Вывести единственный файл в терминале
```bash
> bat README.md
```
Отобразить сразу несколько файлов в терминале
```bash
> bat src/*.rs
```
2020-08-30 14:54:15 +03:00
Читаем из stdin и определяем синтаксис автоматически (внимание: это делается по заглавной строке файла, например, `#!/bin/sh` )
2020-06-01 14:34:17 +03:00
```bash
> curl -s https://sh.rustup.rs | bat
```
2020-06-25 08:52:18 +03:00
Прочитать из stdin с явным указанием языка
2020-06-01 14:34:17 +03:00
```bash
> yaml2json .travis.yml | json_pp | bat -l json
```
Вывести и выделить неотображаемые символы
```bash
> bat -A /etc/hosts
```
2020-08-30 14:54:15 +03:00
Использование в качестве замены `cat`
2020-06-01 14:34:17 +03:00
```bash
bat > note.md # мгновенно создаем новый файл
bat header.md content.md footer.md > document.md
bat -n main.rs # показываем только количество строк
2024-12-17 13:49:23 +03:00
bat f - g # выводит 'f', потом stdin, а потом 'g'.
2020-06-01 14:34:17 +03:00
```
### Интеграция с другими утилитами
2024-12-17 13:49:23 +03:00
#### `fzf`
Вы можете использовать `bat` как просмотрщик для [`fzf` ](https://github.com/junegunn/fzf ).
Чтобы это заработало, используйте опцию `--color=always` , чтобы вывод был всегда цветным.
Вы можете также использовать опцию `--line-range` , чтобы уменьшить время загрузки для больших файлов:
```bash
fzf --preview "bat --color=always --style=numbers --line-range=:500 {}"
```
Больше деталей смотрите в [`README` программы `fzf` ](https://github.com/junegunn/fzf#preview-window ).
2020-06-01 14:34:17 +03:00
#### `find` или `fd`
2020-08-30 14:54:15 +03:00
Вы можете использовать флаг `-exec` в `find` , чтобы посмотреть превью всех файлов в `bat`
2020-06-01 14:34:17 +03:00
```bash
find … -exec bat {} +
```
2020-08-30 14:54:15 +03:00
Если вы используете [`fd` ](https://github.com/sharkdp/fd ), применяйте для этого флаг `-X` /`--exec-batch` :
2020-06-01 14:34:17 +03:00
```bash
fd … -X bat
```
#### `ripgrep`
С помощью [`batgrep` ](https://github.com/eth-p/bat-extras/blob/master/doc/batgrep.md ), `bat` может быть использован для вывода результата запроса [`ripgrep` ](https://github.com/BurntSushi/ripgrep )
```bash
batgrep needle src/
```
#### `tail -f`
2020-06-25 08:56:26 +03:00
`bat` может быть использован вместе с `tail -f` , чтобы выводить содержимое файла с подсветкой синтаксиса в реальном времени.
2020-06-01 14:34:17 +03:00
```bash
tail -f /var/log/pacman.log | bat --paging= never -l log
```
2020-06-25 08:56:43 +03:00
Заметьте, что мы должны отключить пэйджинг, чтобы это заработало. Мы также явно указали синтаксис (`-l log` ), так как он не может быть автоматически определен в данном случае.
2020-06-01 14:34:17 +03:00
#### `git`
2024-12-17 13:49:23 +03:00
Вы можете использовать `bat` с `git show` , чтобы просмотреть старую версию файла с подсветкой синтаксиса:
2020-06-01 14:34:17 +03:00
```bash
git show v0.6.0:src/main.rs | bat -l rs
```
2024-12-17 13:49:23 +03:00
#### `git diff`
Вы можете использовать `bat` с `git diff` для просмотра строк кода вокруг изменений с подсветкой синтаксиса:
```bash
batdiff() {
2025-08-03 01:00:43 +08:00
git diff --name-only --relative --diff-filter= d -z | xargs -0 bat --diff
2024-12-17 13:49:23 +03:00
}
```
Если вы хотите использовать это как отдельную программу, посмотрите `batdiff` из [`bat-extras` ](https://github.com/eth-p/bat-extras ).
Если вам это нужна более полная поддержка для операций с git и diff, посмотрите [`delta` ](https://github.com/dandavison/delta ).
2020-06-01 14:34:17 +03:00
#### `xclip`
2023-06-04 17:58:08 +03:00
Нумерация строк и отображение изменений затрудняет копирование содержимого файлов в буфер обмена.
Чтобы справиться с этим, используйте флаг `-p` /`--plain` или просто перенаправьте стандартный вывод в `xclip` :
2020-06-01 14:34:17 +03:00
```bash
bat main.cpp | xclip
```
2024-12-17 13:49:23 +03:00
`bat` обнаружит перенаправление вывода и выведет обычный текст без подсветки синтаксиса.
2020-06-01 14:34:17 +03:00
#### `man`
2024-12-17 13:49:23 +03:00
`bat` может быть использован для раскрашивания вывода `man` , для этого установите переменную окружения
2020-06-01 15:05:55 +03:00
`MANPAGER` :
2020-06-01 14:34:17 +03:00
```bash
export MANPAGER = "sh -c 'col -bx | bat -l man -p'"
man 2 select
```
2024-12-17 13:49:23 +03:00
(замените `bat` на `batcat` , если у вас Debian или Ubuntu)
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Возможно вам понадобится также установить `MANROFFOPT="-c"` , если у вас есть проблемы с форматированием.
2020-06-01 14:34:17 +03:00
2020-06-23 17:45:24 +03:00
Если вы хотите сделать этой одной командой, вы можете использовать [`batman` ](https://github.com/eth-p/bat-extras/blob/master/doc/batman.md ).
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Обратите внимание, что [синтаксис manpage ](assets/syntaxes/02_Extra/Manpage.sublime-syntax ) разрабатывается в этом репозитории и все еще находится в разработке.
2020-06-01 14:34:17 +03:00
2024-12-17 13:49:23 +03:00
Также заметьте, что это [не заработает ](https://github.com/sharkdp/bat/issues/1145 ) с реализацией `man` через Mandocs.
2020-06-01 14:34:17 +03:00
#### `prettier` / `shfmt` / `rustfmt`
2020-08-30 14:54:15 +03:00
[`Prettybat` ](https://github.com/eth-p/bat-extras/blob/master/doc/prettybat.md ) — скрипт, который форматирует код и выводит его с помощью `bat` .
2020-06-01 14:34:17 +03:00
2024-12-17 13:49:23 +03:00
#### Подсветка сообщений `--help`
Вы можете использовать `bat` , чтобы подсвечивать текст справки комманд: `$ cp --help | bat -plhelp`
Вы можете сделать такую вспомогательную команду для этого:
```bash
# in your .bashrc/.zshrc/*rc
alias bathelp = 'bat --plain --language=help'
help() {
" $@ " --help 2>& 1 | bathelp
}
```
В этом случае, вы можете просто писать `$ help cp` или `$ help git commit` .
Если вы используете `zsh` , вы можете объявить глобальные алиасы для `-h` и `--help` :
```bash
alias -g -- -h= '-h 2>&1 | bat --language=help --style=plain'
alias -g -- --help= '--help 2>&1 | bat --language=help --style=plain'
```
В этом случае, вы можете продолжать использовать `cp --help` , но при этом получать подцвеченный вывод.
Обратите внимание, что не всегда опция `-h` является краткой формы опции `--help` (например, у `ls` ).
Пожалуйста, сообщайте о проблемах с подсветкой справки в [этот репозиторий ](https://github.com/victor-gp/cmd-help-sublime-syntax ).
2020-06-01 14:34:17 +03:00
2020-06-01 15:05:55 +03:00
## Установка
2020-06-01 14:34:17 +03:00
2023-11-13 09:47:25 +08:00
[](https://repology.org/project/bat-cat/versions)
2020-06-01 14:34:17 +03:00
2020-06-01 15:05:55 +03:00
### Ubuntu (с помощью `apt`)
*... и другие дистрибутивы основанные на Debian.*
2020-06-01 14:34:17 +03:00
2024-12-17 13:49:23 +03:00
`bat` доступен на [Ubuntu since 20.04 ("Focal") ](https://packages.ubuntu.com/search?keywords=bat&exact=1 ) и [Debian since August 2021 (Debian 11 - "Bullseye") ](https://packages.debian.org/bullseye/bat ).
2020-06-01 14:34:17 +03:00
2020-06-01 15:05:55 +03:00
Если ваша версия Ubuntu/Debian достаточно новая, вы можете установить `bat` так:
2020-06-01 14:34:17 +03:00
```bash
apt install bat
```
2020-08-30 14:54:15 +03:00
Если вы установили `bat` таким образом, то бинарный файл может быть установлен как `batcat` вместо `bat` (из-за [конфликта имени с другим пакетом ](https://github.com/sharkdp/bat/issues/982 )). Вы можете сделать симлинк или алиас `bat -> batcat` , чтобы предотвратить подобные проблемы и в других дистрибутивах.
2020-06-01 15:05:55 +03:00
2020-06-01 14:34:17 +03:00
``` bash
mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/bat
` ``
2020-06-23 17:45:24 +03:00
### Ubuntu (С помощью самого нового ` .deb` пакета)
2020-06-01 15:05:55 +03:00
*... и другие дистрибутивы Linux основанные на Debian*
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Если пакет еще недоступен в вашем Ubuntu/Debian дистрибутиве или вы хотите установить самую последнюю версию ` bat`, то вы можете скачать самый последний ` deb`-пакет отсюда:
2020-06-01 15:05:55 +03:00
[release page](https://github.com/sharkdp/bat/releases) и установить так:
2020-06-01 14:34:17 +03:00
` ``bash
2021-08-21 19:54:10 +02:00
sudo dpkg -i bat_0.18.3_amd64.deb # измените архитектуру и версию
2020-06-01 14:34:17 +03:00
` ``
2020-06-01 15:05:55 +03:00
### Alpine Linux
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Вы можете установить [` bat`](https://pkgs.alpinelinux.org/packages?name=bat) из официальных источников:
2020-06-01 14:34:17 +03:00
` ``bash
apk add bat
` ``
2020-06-01 15:05:55 +03:00
### Arch Linux
2020-06-01 14:34:17 +03:00
2023-12-01 20:26:35 +00:00
Вы можете установить [` bat`](https://www.archlinux.org/packages/extra/x86_64/bat/) из официального источника:
2020-06-01 14:34:17 +03:00
` ``bash
pacman -S bat
` ``
2020-06-01 15:05:55 +03:00
### Fedora
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Вы можете установить [` bat`](https://koji.fedoraproject.org/koji/packageinfo?packageID=27506) из официального репозитория [Fedora Modular](https://docs.fedoraproject.org/en-US/modularity/using-modules/).
2020-06-01 14:34:17 +03:00
` ``bash
dnf install bat
` ``
2020-06-01 15:05:55 +03:00
### Gentoo Linux
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Вы можете установить [` bat`](https://packages.gentoo.org/packages/sys-apps/bat) из официальных источников:
2020-06-01 14:34:17 +03:00
` ``bash
emerge sys-apps/bat
` ``
2020-06-01 15:05:55 +03:00
### Void Linux
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Вы можете установить ` bat` с помощью ` xbps-install`:
2020-06-01 14:34:17 +03:00
` ``bash
xbps-install -S bat
` ``
2020-06-01 15:05:55 +03:00
### FreeBSD
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Вы можете установить [` bat`](https://www.freshports.org/textproc/bat) с помощью ` pkg`:
2020-06-01 14:34:17 +03:00
` ``bash
pkg install bat
` ``
2020-06-01 15:05:55 +03:00
или самому скомпилировать его:
2020-06-01 14:34:17 +03:00
` ``bash
cd /usr/ports/textproc/bat
make install
` ``
2024-12-17 13:49:23 +03:00
### On OpenBSD
Вы можете установить ` bat` с помощью [` pkg_add(1)`](https://man.openbsd.org/pkg_add.1):
` ``bash
pkg_add bat
` ``
2020-06-01 15:05:55 +03:00
### С помощью nix
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Вы можете установить ` bat`, используя [nix package manager](https://nixos.org/nix):
2020-06-01 14:34:17 +03:00
` ``bash
nix-env -i bat
` ``
2024-12-17 13:49:23 +03:00
### Через flox
Вы можете установить ` bat` используя [Flox](https://flox.dev)
` ``bash
flox install bat
` ``
2020-06-01 15:05:55 +03:00
### openSUSE
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Вы можете установить ` bat` с помощью ` zypper`:
2020-06-01 14:34:17 +03:00
` ``bash
zypper install bat
` ``
2024-12-17 13:49:23 +03:00
### На macOS (или Linux) через Homebrew
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Вы можете установить ` bat` с помощью [Homebrew](http://braumeister.org/formula/bat):
2020-06-01 14:34:17 +03:00
` ``bash
brew install bat
` ``
2024-12-17 13:49:23 +03:00
### На macOS через MacPorts
2020-08-30 14:54:15 +03:00
Или же установить его с помощью [MacPorts](https://ports.macports.org/port/bat/summary):
2020-06-01 14:34:17 +03:00
` ``bash
port install bat
` ``
2020-06-03 19:42:14 +03:00
### Windows
2020-06-01 14:34:17 +03:00
2024-12-17 13:49:23 +03:00
Есть несколько способов установить ` bat`. Как только вы установили его, посмотрите на секцию ["Использование ` bat` в Windows"](#использование-bat-в-windows).
#### Пререквитизы
Вам нужно установить пакет [Visual C++ Redistributable](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads).
#### С помощью WinGet
Вы можете установить ` bat` через [WinGet](https://learn.microsoft.com/en-us/windows/package-manager/winget):
` ``bash
winget install sharkdp.bat
` ``
2020-06-01 14:34:17 +03:00
2020-06-01 15:05:55 +03:00
#### С помощью Chocolatey
2020-06-01 14:34:17 +03:00
2020-06-01 15:05:55 +03:00
Вы можете установить ` bat` с помощью [Chocolatey](https://chocolatey.org/packages/Bat):
2020-06-01 14:34:17 +03:00
` ``bash
choco install bat
` ``
2020-06-03 19:42:14 +03:00
#### С помощью Scoop
2020-06-01 14:34:17 +03:00
2020-06-01 15:05:55 +03:00
Вы можете установить ` bat` с помощью [scoop](https://scoop.sh/):
2020-06-01 14:34:17 +03:00
` ``bash
scoop install bat
` ``
2020-06-01 15:05:55 +03:00
#### Из заранее скомпилированных файлов:
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Их вы можете скачать на [странице релизов](https://github.com/sharkdp/bat/releases).
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
### Из скомпилированных файлов
2020-06-01 14:34:17 +03:00
2020-06-01 15:05:55 +03:00
Перейдите на [страницу релизов](https://github.com/sharkdp/bat/releases) для
2020-08-30 14:54:15 +03:00
скомпилированных файлов ` bat` для различных платформ. Бинарные файлы со статической связкой так же доступны: выбирайте архив с ` musl` в имени.
2020-06-01 14:34:17 +03:00
2020-06-01 15:05:55 +03:00
### Из исходников
2020-06-01 14:34:17 +03:00
2025-10-19 20:57:44 +03:00
Если вы желаете установить ` bat` из исходников, вам понадобится Rust 1.79.0 или выше. После этого используйте ` cargo`, чтобы всё скомпилировать:
2020-06-01 14:34:17 +03:00
` ``bash
cargo install --locked bat
` ``
2024-12-17 13:49:23 +03:00
Заметьте, что дополнительные файлы, такие как документация man и подсказки командной строки, не могут быть установлены таким способом.
Они будут сгенерированы командой ` cargo` должны быть доступны в папке сборки (в ` build`).
Подсказки командной строки также доступны при таком запуске:
` ``bash
bat --completion <shell>
# see --help for supported shells
` ``
2020-06-03 19:42:14 +03:00
## Кастомизация
2020-06-01 14:34:17 +03:00
2024-12-17 13:49:23 +03:00
### Темы для подсветки синтаксиса
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Используйте ` bat --list-themes`, чтобы вывести список всех доступных тем. Для выбора темы ` TwoDark` используйте ` bat` с флагом
` --theme=TwoDark` или выставьте переменную окружения ` BAT_THEME` в ` TwoDark`. Используйте ` export BAT_THEME="TwoDark"` в конфигурационном файле вашей оболочки, чтобы изменить ее навсегда. Или же используйте [конфигурационный файл](https://github.com/sharkdp/bat#configuration-file) ` bat`.
2020-06-01 14:34:17 +03:00
2020-06-23 17:45:24 +03:00
Если вы хотите просто просмотреть темы, используйте следующую команду (для этого вам понадобится [` fzf`](https://github.com/junegunn/fzf)):
2020-06-01 14:34:17 +03:00
` ``bash
2020-06-03 19:42:14 +03:00
bat --list-themes | fzf --preview="bat --theme={} --color=always /путь/к/файлу"
2020-06-01 14:34:17 +03:00
` ``
2020-06-25 08:59:03 +03:00
` bat` отлично смотрится на темном фоне. Однако если ваш терминал использует светлую тему, то такие темы как ` GitHub` или ` OneHalfLight` будут смотреться куда лучше!
2020-06-25 08:59:21 +03:00
Вы также можете использовать новую тему, для этого перейдите [в раздел добавления тем](https://github.com/sharkdp/bat#добавление-новых-тем).
2020-06-01 14:34:17 +03:00
2020-06-03 19:42:14 +03:00
### Изменение внешнего вывода
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Вы можете использовать флаг ` --style`, чтобы изменять внешний вид вывода в ` bat`.
2020-06-03 19:42:14 +03:00
Например, вы можете использовать ` --style=numbers,changes`, чтобы показать только количество строк и изменений в Git. Установите переменную окружения ` BAT_STYLE` чтобы изменить это навсегда, или используйте [конфиг файл](https://github.com/sharkdp/bat#configuration-file) ` bat`.
2020-06-01 14:34:17 +03:00
2020-06-03 19:42:14 +03:00
### Добавление новых синтаксисов
2020-06-01 14:34:17 +03:00
2024-12-17 13:49:23 +03:00
` bat` использует [` syntect`](https://github.com/trishume/syntect/) для подсветки синтаксиса. ` syntect` может читать
2020-06-03 19:42:14 +03:00
[файл ` .sublime-syntax`](https://www.sublimetext.com/docs/3/syntax.html)
и темы. Чтобы добавить новый синтаксис, сделайте следующее:
2020-06-01 14:34:17 +03:00
2020-06-03 19:42:14 +03:00
Создайте каталог с синтаксисом:
2020-06-01 14:34:17 +03:00
` ``bash
mkdir -p "$(bat --config-dir)/syntaxes"
cd "$(bat --config-dir)/syntaxes"
2020-06-03 19:42:14 +03:00
# Разместите файлы '.sublime-syntax'
# в каталоге (или субкаталогах), например:
2020-06-01 14:34:17 +03:00
git clone https://github.com/tellnobody1/sublime-purescript-syntax
` ``
2020-08-30 14:54:15 +03:00
Теперь используйте следующую команду, чтобы превратить эти файлы в бинарный кеш:
2020-06-01 14:34:17 +03:00
` ``bash
bat cache --build
` ``
2020-06-25 08:59:34 +03:00
Теперь вы можете использовать ` bat --list-languages`, чтобы проверить, доступны ли новые языки.
2020-06-01 14:34:17 +03:00
2020-06-25 09:00:06 +03:00
Если когда-нибудь вы заходите вернуться к настройкам по умолчанию, введите
2020-06-01 14:34:17 +03:00
` ``bash
bat cache --clear
` ``
2020-06-03 19:42:14 +03:00
### Добавление новых тем
2020-06-01 14:34:17 +03:00
2024-12-17 13:49:23 +03:00
Это работает похожим образом, так же как и добавление новых тем подсветки синтаксиса
2020-06-01 14:34:17 +03:00
2020-06-03 19:42:14 +03:00
Во-первых, создайте каталог с новыми темами для синтаксиса:
2020-06-01 14:34:17 +03:00
` ``bash
mkdir -p "$(bat --config-dir)/themes"
cd "$(bat --config-dir)/themes"
2020-06-03 19:42:14 +03:00
# Загрузите тему в формате '.tmTheme':
2020-06-01 14:34:17 +03:00
git clone https://github.com/greggb/sublime-snazzy
2020-06-03 19:42:14 +03:00
# Обновите кеш
2020-06-01 14:34:17 +03:00
bat cache --build
` ``
2020-08-30 14:54:15 +03:00
Теперь используйте ` bat --list-themes`, чтобы проверить доступность новых тем.
2020-06-01 14:34:17 +03:00
2020-06-03 19:42:14 +03:00
### Использование другого пейджера.
2020-06-01 14:34:17 +03:00
2020-06-03 19:42:14 +03:00
` bat` использует пейджер, указанный в переменной окружения ` PAGER`. Если она не задана, то используется ` less`.
Если вы желаете использовать другой пейджер, вы можете либо изменить переменную ` PAGER`, либо ` BAT_PAGER` чтобы перезаписать то, что указано в ` PAGER`.
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Чтобы передать дополнительные аргументы вашему пейджеру, перечислите их в этой переменной:
2020-06-01 14:34:17 +03:00
` ``bash
export BAT_PAGER="less -RF"
` ``
2020-08-30 14:54:15 +03:00
Так же вы можете использовать [файл конфигурации](https://github.com/sharkdp/bat#configuration-file) ` bat` (флаг ` --pager`).
2020-06-01 14:34:17 +03:00
2020-06-25 09:00:26 +03:00
**Внимание**: По умолчанию пейджером является` less` (без каких-либо аргументов),
2020-06-03 19:42:14 +03:00
` bat` задаст следующие флаги для пейджера:
` -R`/` --RAW-CONTROL-CHARS`,
` -F`/` --quit-if-one-screen` и ` -X`/` --no-init`. Последний флаг(` -X`) используется только для ` less`, чья версия раньше 530.
2020-06-01 14:34:17 +03:00
2021-08-21 10:25:26 +00:00
Флаг ` -R` нужен чтобы корректно воспроизвести ANSI цвета. Второй флаг (` -F`) говорит
2020-08-30 14:54:15 +03:00
` less` чтобы тот сразу же завершился, если размер вывода меньше чем вертикальный размер терминала.
2020-06-25 08:55:48 +03:00
Это удобно для небольших файлов, так как вам не надо каждый раз нажимать ` q`, чтобы выйти из пейджера. Третий флаг (` -X`) нужен для того, чтобы исправить баг с ` --quit-if-one-screen` в старых версиях ` less`. К сожалению, это блокирует возможность использования колеса мышки.
2020-06-01 14:34:17 +03:00
2021-08-21 10:25:26 +00:00
Если вы хотите все же его включить, вы можете добавить флаг ` -R`.
2020-08-30 14:54:15 +03:00
Для ` less` новее чем 530 оно должно работать из коробки.
2020-06-01 14:34:17 +03:00
2020-06-03 19:42:14 +03:00
### Темная тема
2020-06-01 14:34:17 +03:00
2020-06-03 19:42:14 +03:00
Если вы используете темный режим в macOS, возможно вы захотите чтобы ` bat` использовал другую тему, основанную на теме вашей ОС. Следующий сниппет использует тему ` default`, когда у вас включен темный режим, и тему ` GitHub`, когда включен светлый.
2020-06-01 14:34:17 +03:00
` ``bash
alias cat="bat --theme=\$(defaults read -globalDomain AppleInterfaceStyle &> /dev/null && echo default || echo GitHub)"
` ``
2020-06-03 20:07:33 +03:00
## Файл конфигурации
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
` bat` также может быть кастомизирован с помощью файла конфигурации. Его местоположение зависит от вашей ОС: чтобы посмотреть его путь, введите
2020-06-01 14:34:17 +03:00
` ``
bat --config-file
` ``
2020-08-30 14:54:15 +03:00
Также вы можете установить переменную окружения ` BAT_CONFIG_PATH`, чтобы изменить путь к файлу конфигурации.
2020-06-01 14:34:17 +03:00
` ``bash
export BAT_CONFIG_PATH="/path/to/bat.conf"
` ``
2020-08-30 14:54:15 +03:00
Файл конфигурации «по умолчанию» может быть создан с помощью флага ` --generate-config-file`.
2020-06-01 14:34:17 +03:00
` ``bash
bat --generate-config-file
` ``
2020-06-03 20:07:33 +03:00
### Формат
2020-06-01 14:34:17 +03:00
2020-06-25 08:55:06 +03:00
Файл конфигурации - это всего лишь набор аргументов. Введите ` bat --help`, чтобы просмотреть список всех возможных флагов и аргументов. Также вы можете закомментировать строку с помощью ` #`.
2020-06-01 14:34:17 +03:00
2020-06-03 20:07:33 +03:00
Пример файла конфигурации:
2020-06-01 14:34:17 +03:00
` ``bash
2020-08-30 14:54:15 +03:00
# Установить тему "TwoDark"
2020-06-01 14:34:17 +03:00
--theme="TwoDark"
2020-08-30 14:54:15 +03:00
# Показывать количество строк, изменений в Git и заголовок файла
2020-06-01 14:34:17 +03:00
--style="numbers,changes,header"
2020-08-30 14:54:15 +03:00
# Использовать курсив (поддерживается не всеми терминалами)
2020-06-01 14:34:17 +03:00
--italic-text=always
2021-09-07 12:00:44 +08:00
# Использовать синтаксис C++ для всех Arduino .ino файлов
2020-06-01 14:34:17 +03:00
--map-syntax "*.ino:C++"
2023-06-04 17:58:08 +03:00
# Использовать синтаксис Git Ignore для всех файлов .ignore
2020-06-01 14:34:17 +03:00
--map-syntax ".ignore:Git Ignore"
` ``
2020-06-03 20:07:33 +03:00
## Использование ` bat` в Windows
2020-06-01 14:34:17 +03:00
2020-06-25 08:55:28 +03:00
` bat` полностью работоспособен "из коробки", но для некоторых возможностей могут понадобиться дополнительные настройки.
2020-06-01 14:34:17 +03:00
2020-06-03 20:07:33 +03:00
### Пейджинг
2020-06-01 14:34:17 +03:00
2020-06-23 17:45:24 +03:00
Windows поддерживает только очень простой пейджер ` more`. Вы можете скачать установщик для ` less` [с его сайта](http://www.greenwoodsoftware.com/less/download.html) или [через Chocolatey](https://chocolatey.org/packages/Less). Чтобы его использовать, скопируйте исполняемый файл в ваш ` PATH` или [используйте переменную окружения](#Использование-другого-пейджера). [Пакет из Chocolatey](#windows) установит все автоматически.
2020-06-01 14:34:17 +03:00
2020-06-03 20:07:33 +03:00
### Цвета
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Windows 10 поддерживает цвета и в ` conhost.exe` (Command Prompt), и в PowerShell начиная с версии Windows
2021-08-21 10:25:26 +00:00
[v1511](https://ru.wikipedia.org/wiki/Windows_10#Обновления и поддержка), так же как и в bash. На ранних версиях Windows вы можете использовать
2020-06-03 20:07:33 +03:00
[Cmder](http://cmder.net/), в котором есть [ConEmu](https://conemu.github.io/).
2020-06-01 14:34:17 +03:00
2020-06-23 17:45:24 +03:00
**Внимание:** Версия ` less` в Git и MSYS2 воспроизводит цвета некорректно. Если у вас нет других пейджеров, мы можете отключить использование пейджеров с помощью флага ` --paging=never`
2020-06-03 20:07:33 +03:00
или установить ` BAT_PAGER` равным пустой строке.
2020-06-01 14:34:17 +03:00
### Cygwin
2020-08-30 14:54:15 +03:00
Из коробки ` bat` не поддерживает пути в стиле Unix (` /cygdrive/*`). Когда указан абсолютный путь cygwin, ` bat` выдаст следующую ошибку: ` The system cannot find the path specified. (os error 3)`
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Она может быть решена добавлением следующей функции в ` .bash_profile`:
2020-06-01 14:34:17 +03:00
` ``bash
bat() {
local index
local args=("$@")
for index in $(seq 0 ${#args[@]}) ; do
case "${args[index]}" in
-*) continue;;
*) [ -e "${args[index]}" ] && args[index]="$(cygpath --windows "${args[index]}")";;
esac
done
command bat "${args[@]}"
}
` ``
2020-06-03 20:07:33 +03:00
## Проблемы и их решение
2020-06-01 14:34:17 +03:00
2020-06-03 20:07:33 +03:00
### Терминалы и цвета
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
` bat` поддерживает терминалы *с* и *без* поддержки truecolor. Однако подсветка синтаксиса не оптимизирована для терминалов с 8-битными цветами, и рекомендуется использовать терминалы с поддержкой 24-битных цветов (` terminator`, ` konsole`, ` iTerm2`, ...).
2020-06-03 20:07:33 +03:00
Смотрите [эту статью](https://gist.github.com/XVilka/8346728) для полного списка терминалов.
2020-06-01 14:34:17 +03:00
2023-06-04 17:58:08 +03:00
Удостоверьтесь, что переменная ` COLORTERM` равна ` truecolor` или
2020-06-25 08:53:23 +03:00
` 24bit`. Иначе ` bat` не сможет определить поддержку 24-битных цветов (и будет использовать 8-битные).
2020-06-01 14:34:17 +03:00
2020-06-03 20:07:33 +03:00
### Текст и номера строк плохо видны
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Используйте другую тему (` bat --list-themes` выведет список всех установленных тем). Темы ` OneHalfDark` и
2020-06-03 20:07:33 +03:00
` OneHalfLight` имеют более яркие номера строк и тексты.
2020-06-01 14:34:17 +03:00
2020-06-03 20:07:33 +03:00
### Кодировки файлов
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
` bat` поддерживает UTF-8 и UTF-16. Файлы в других кодировках, возможно, придётся перекодировать, так как кодировка может быть распознана неверно. Используйте ` iconv`.
2020-06-03 20:07:33 +03:00
Пример: у вас есть PHP файл в кодировке Latin-1 (ISO-8859-1):
2020-06-01 14:34:17 +03:00
` `` bash
iconv -f ISO-8859-1 -t UTF-8 my-file.php | bat
` ``
2023-06-04 17:58:08 +03:00
Внимание: вам может понадобиться флаг ` -l`/` --language`, если ` bat` не сможет автоматически определить синтаксис.
2020-06-01 14:34:17 +03:00
2020-06-03 20:07:33 +03:00
## Разработка
2020-06-01 14:34:17 +03:00
` ``bash
2020-06-03 20:07:33 +03:00
# Рекурсивно клонирует все модули
2020-06-01 14:34:17 +03:00
git clone --recursive https://github.com/sharkdp/bat
2020-06-03 20:07:33 +03:00
# Компиляции в режиме разработки
2020-06-01 14:34:17 +03:00
cd bat
cargo build --bins
2020-06-03 20:07:33 +03:00
# Запуск тестов
2020-06-01 14:34:17 +03:00
cargo test
2020-06-03 20:07:33 +03:00
# Установка (релизная версия)
2020-06-01 14:34:17 +03:00
cargo install --locked
2023-06-04 17:58:08 +03:00
# Компилирование исполняемого файла bat с другим синтаксисом и темами
2020-06-01 14:34:17 +03:00
bash assets/create.sh
cargo install --locked --force
` ``
2020-06-03 20:07:33 +03:00
## Разработчики
2020-06-01 14:34:17 +03:00
- [sharkdp](https://github.com/sharkdp)
- [eth-p](https://github.com/eth-p)
2020-06-03 20:11:52 +03:00
## Цели и альтернативы
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
Цели проекта ` bat`:
2020-06-01 14:34:17 +03:00
2020-08-30 14:54:15 +03:00
- Красивая и продвинутая подсветка синтаксиса.
- Интеграция с Git.
- Полноценная замена ` cat`.
- Дружелюбный интерфейс и аргументы.
2020-06-01 14:34:17 +03:00
2020-06-03 20:07:33 +03:00
Есть очень много альтернатив ` bat`. Смотрите [этот документ](doc/alternatives.md) для сравнения.
2020-06-01 14:34:17 +03:00
2020-06-03 20:07:33 +03:00
## Лицензия
2024-12-17 13:49:23 +03:00
Copyright (c) 2018-2024 [Разработчики bat](https://github.com/sharkdp/bat).
2020-06-01 14:34:17 +03:00
2023-06-04 17:58:08 +03:00
` bat` распространяется под лицензиями MIT License и Apache License 2.0 (на выбор пользователя).
2020-06-01 14:34:17 +03:00
2020-06-03 20:07:33 +03:00
Смотрите [LICENSE-APACHE ](LICENSE-APACHE ) и [LICENSE-MIT ](LICENSE-MIT ) для более подробного ознакомления.