2020-06-01 13:34:17 +02:00
< p align = "center" >
< img src = "doc/logo-header.svg" alt = "bat - a cat clone with wings" > < br >
< a href = "https://travis-ci.org/sharkdp/bat" > < img src = "https://travis-ci.org/sharkdp/bat.svg?branch=master" alt = "Build Status" > < / a >
< a href = "https://ci.appveyor.com/project/sharkdp/bat" > < img src = "https://ci.appveyor.com/api/projects/status/cptsmtbiwbnr2vhf/branch/master?svg=true" > < / a >
< 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 >
Клон утилиты < i > cat(1)< / i > с поддержкой выделения синтаксиса и Git
< / p >
< p align = "center" >
2020-06-03 19:11:52 +02:00
< a href = "#выделение-синтаксиса" > Ключевые возможности< / a > •
< a href = "#как-использовать" > Использование< / a > •
< a href = "#установка" > Установка< / a > •
< a href = "#кастомизация" > Кастомизация< / a > •
< a href = "#цели-и-альтернативы" > Цели и альтернативы < / a > •
Перевод [< a href = "https://github.com/chinanf-boy/bat-zh" > 中文< / a > ][< a href = "doc/README-ja.md" > 日本語< / a > ][< a href = "doc/README-ko.md" > 한국어< / a > ][< a href = "doc/README-ru.md" > Русский< / a > ]
2020-06-01 13:34:17 +02:00
< / p >
### Выделение синтаксиса
`bat` поддерживает выделение синтаксиса для огромного количества языков программирования и разметки:
![Пример выделения синтаксиса ](https://i.imgur.com/3FGy5tW.png )
### Интеграция с Git
2020-08-30 13:54:15 +02:00
`bat` использует `git` , чтобы показать изменения в коде
2020-06-01 13:34:17 +02:00
(смотрите на левый сайдбар):
![Пример интеграции с Git ](https://i.imgur.com/azUAzdx.png )
2020-06-25 07:51:38 +02:00
### Показать непечатаемые символы
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Вы можете использовать `-A` / `--show-all` флаг, чтобы показать символы, которые невозможно напечатать:
2020-06-01 13:34:17 +02:00
![Строка с неотображемыми символами ](https://i.imgur.com/X0orYY9.png )
### Автоматическое разделение текста
2020-06-25 07:56:12 +02:00
`bat` умеет перенаправлять вывод в `less` , если вывод не помещается на экране полностью.
2020-06-01 13:34:17 +02:00
### Объединение файлов
2020-06-25 07:52:00 +02:00
О ... Вы также можете объединять файлы :wink:. Когда
2020-06-25 07:56:01 +02:00
`bat` обнаружит неинтерактивный терминал (например, когда вы перенаправляете вывод в файл или процесс), он будет работать как утилита `cat` и выведет содержимое файлов как обычный текст (без подсветки синтаксиса).
2020-06-01 13:34:17 +02:00
## Как использовать
Вывести единственный файл в терминале
```bash
> bat README.md
```
Отобразить сразу несколько файлов в терминале
```bash
> bat src/*.rs
```
2020-08-30 13:54:15 +02:00
Читаем из stdin и определяем синтаксис автоматически (внимание: это делается по заглавной строке файла, например, `#!/bin/sh` )
2020-06-01 13:34:17 +02:00
```bash
> curl -s https://sh.rustup.rs | bat
```
2020-06-25 07:52:18 +02:00
Прочитать из stdin с явным указанием языка
2020-06-01 13:34:17 +02:00
```bash
> yaml2json .travis.yml | json_pp | bat -l json
```
Вывести и выделить неотображаемые символы
```bash
> bat -A /etc/hosts
```
2020-08-30 13:54:15 +02:00
Использование в качестве замены `cat`
2020-06-01 13:34:17 +02:00
```bash
bat > note.md # мгновенно создаем новый файл
bat header.md content.md footer.md > document.md
bat -n main.rs # показываем только количество строк
bat f - g # выводит 'f' в stdin, а потом 'g'.
```
### Интеграция с другими утилитами
#### `find` или `fd`
2020-08-30 13:54:15 +02:00
Вы можете использовать флаг `-exec` в `find` , чтобы посмотреть превью всех файлов в `bat`
2020-06-01 13:34:17 +02:00
```bash
find … -exec bat {} +
```
2020-08-30 13:54:15 +02:00
Если вы используете [`fd` ](https://github.com/sharkdp/fd ), применяйте для этого флаг `-X` /`--exec-batch`:
2020-06-01 13:34:17 +02: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 07:56:26 +02:00
`bat` может быть использован вместе с `tail -f` , чтобы выводить содержимое файла с подсветкой синтаксиса в реальном времени.
2020-06-01 13:34:17 +02:00
```bash
tail -f /var/log/pacman.log | bat --paging=never -l log
```
2020-06-25 07:56:43 +02:00
Заметьте, что мы должны отключить пэйджинг, чтобы это заработало. Мы также явно указали синтаксис (`-l log`), так как он не может быть автоматически определен в данном случае.
2020-06-01 13:34:17 +02:00
#### `git`
2020-08-30 13:54:15 +02:00
Вы можете использовать `bat` с `git show` , чтобы просмотреть старую версию файла с выделением синтаксиса:
2020-06-01 13:34:17 +02:00
```bash
git show v0.6.0:src/main.rs | bat -l rs
```
2020-06-01 14:05:55 +02:00
Обратите внимание, что выделение синтаксиса не работает в `git diff` на данный момент. Если вам это нужно, посмотрите [`delta` ](https://github.com/dandavison/delta ).
2020-06-01 13:34:17 +02:00
#### `xclip`
2020-08-30 13:54:15 +02:00
Нумерация стро и отображение изменений затрудняет копирование содержимого файлов в буфер обмена.
Чтобы спроваиться с этим, используйте флаг `-p` /`--plain` или просто перенаправьте стандартный вывод в `xclip` :
2020-06-01 13:34:17 +02:00
```bash
bat main.cpp | xclip
```
2020-08-30 13:54:15 +02:00
`bat` обнаружит перенаправление вывода и выведет обычный текст без выделения синтаксиса.
2020-06-01 13:34:17 +02:00
#### `man`
2020-06-01 14:05:55 +02:00
`bat` может быть использован в виде выделения цвета для `man` , для этого установите переменную окружения
`MANPAGER` :
2020-06-01 13:34:17 +02:00
```bash
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
man 2 select
```
2020-08-30 13:54:15 +02:00
Возможно вам понадобится также установить `MANROFFOPT="-c"` , если у вас есть проблемы с форматированием.
2020-06-01 13:34:17 +02:00
2020-06-23 16:45:24 +02:00
Если вы хотите сделать этой одной командой, вы можете использовать [`batman` ](https://github.com/eth-p/bat-extras/blob/master/doc/batman.md ).
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Обратите внимание, что [синтаксис manpage ](assets/syntaxes/02_Extra/Manpage.sublime-syntax ) разрабатывается в этом репозитории и все еще находится в разработке.
2020-06-01 13:34:17 +02:00
#### `prettier` / `shfmt` / `rustfmt`
2020-08-30 13:54:15 +02:00
[`Prettybat` ](https://github.com/eth-p/bat-extras/blob/master/doc/prettybat.md ) — скрипт, который форматирует код и выводит е г о с помощью `bat` .
2020-06-01 13:34:17 +02:00
2020-06-01 14:05:55 +02:00
## Установка
2020-06-01 13:34:17 +02:00
[![Packaging status ](https://repology.org/badge/vertical-allrepos/bat.svg )](https://repology.org/project/bat/versions)
2020-06-01 14:05:55 +02:00
### Ubuntu (с помощью `apt`)
*... и другие дистрибутивы основанные на Debian.*
2020-06-01 13:34:17 +02:00
2020-06-01 14:05:55 +02:00
`bat` есть в репозиториях [Ubuntu ](https://packages.ubuntu.com/eoan/bat ) и
2020-08-30 13:54:15 +02:00
[Debian ](https://packages.debian.org/sid/bat ) и доступен начиная с Ubuntu Eoan 19.10. Н а Debian `bat` пока что доступен только с нестабильной веткой "Sid".
2020-06-01 13:34:17 +02:00
2020-06-01 14:05:55 +02:00
Если ваша версия Ubuntu/Debian достаточно новая, вы можете установить `bat` так:
2020-06-01 13:34:17 +02:00
```bash
apt install bat
```
2020-08-30 13:54:15 +02:00
Если вы установили `bat` таким образом, то бинарный файл может быть установлен как `batcat` вместо `bat` (из-за [конфликта имени с другим пакетом ](https://github.com/sharkdp/bat/issues/982 )). Вы можете сделать симлинк или алиас `bat -> batcat` , чтобы предотвратить подобные проблемы и в других дистрибутивах.
2020-06-01 14:05:55 +02:00
2020-06-01 13:34:17 +02:00
``` bash
mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/bat
```
2020-06-23 16:45:24 +02:00
### Ubuntu (С помощью самого нового `.deb` пакета)
2020-06-01 14:05:55 +02:00
*... и другие дистрибутивы Linux основанные на Debian*
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Если пакет еще недоступен в вашем Ubuntu/Debian дистрибутиве или вы хотите установить самую последнюю версию `bat` , то вы можете скачать самый последний `deb` -пакет отсюда:
2020-06-01 14:05:55 +02:00
[release page ](https://github.com/sharkdp/bat/releases ) и установить так:
2020-06-01 13:34:17 +02:00
```bash
2020-11-24 21:06:50 +01:00
sudo dpkg -i bat_0.17.1_amd64.deb # измените архитектуру и версию
2020-06-01 13:34:17 +02:00
```
2020-06-01 14:05:55 +02:00
### Alpine Linux
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Вы можете установить [`bat` ](https://pkgs.alpinelinux.org/packages?name=bat ) из официальных источников:
2020-06-01 13:34:17 +02:00
```bash
apk add bat
```
2020-06-01 14:05:55 +02:00
### Arch Linux
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Вы можете установить [`bat` ](https://www.archlinux.org/packages/community/x86_64/bat/ ) из официального источника:
2020-06-01 13:34:17 +02:00
```bash
pacman -S bat
```
2020-06-01 14:05:55 +02:00
### Fedora
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Вы можете установить [`bat` ](https://koji.fedoraproject.org/koji/packageinfo?packageID=27506 ) из официального репозитория [Fedora Modular ](https://docs.fedoraproject.org/en-US/modularity/using-modules/ ).
2020-06-01 13:34:17 +02:00
```bash
dnf install bat
```
2020-06-01 14:05:55 +02:00
### Gentoo Linux
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Вы можете установить [`bat` ](https://packages.gentoo.org/packages/sys-apps/bat ) из официальных источников:
2020-06-01 13:34:17 +02:00
```bash
emerge sys-apps/bat
```
2020-06-01 14:05:55 +02:00
### Void Linux
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Вы можете установить `bat` с помощью `xbps-install` :
2020-06-01 13:34:17 +02:00
```bash
xbps-install -S bat
```
2020-06-01 14:05:55 +02:00
### FreeBSD
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Вы можете установить [`bat` ](https://www.freshports.org/textproc/bat ) с помощью `pkg` :
2020-06-01 13:34:17 +02:00
```bash
pkg install bat
```
2020-06-01 14:05:55 +02:00
или самому скомпилировать е г о :
2020-06-01 13:34:17 +02:00
```bash
cd /usr/ports/textproc/bat
make install
```
2020-06-01 14:05:55 +02:00
### С помощью nix
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Вы можете установить `bat` , используя [nix package manager ](https://nixos.org/nix ):
2020-06-01 13:34:17 +02:00
```bash
nix-env -i bat
```
2020-06-01 14:05:55 +02:00
### openSUSE
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Вы можете установить `bat` с помощью `zypper` :
2020-06-01 13:34:17 +02:00
```bash
zypper install bat
```
2020-08-30 13:54:15 +02:00
### macOS
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Вы можете установить `bat` с помощью [Homebrew ](http://braumeister.org/formula/bat ):
2020-06-01 13:34:17 +02:00
```bash
brew install bat
```
2020-08-30 13:54:15 +02:00
Или же установить е г о с помощью [MacPorts ](https://ports.macports.org/port/bat/summary ):
2020-06-01 13:34:17 +02:00
```bash
port install bat
```
2020-06-03 18:42:14 +02:00
### Windows
2020-06-01 13:34:17 +02:00
2020-06-23 16:45:24 +02:00
Есть несколько способов установить `bat` . Как только вы установили е г о , посмотрите на секцию ["Использование `bat` в Windows" ](#using-bat-on-windows ).
2020-06-01 13:34:17 +02:00
2020-06-01 14:05:55 +02:00
#### С помощью Chocolatey
2020-06-01 13:34:17 +02:00
2020-06-01 14:05:55 +02:00
Вы можете установить `bat` с помощью [Chocolatey ](https://chocolatey.org/packages/Bat ):
2020-06-01 13:34:17 +02:00
```bash
choco install bat
```
2020-06-03 18:42:14 +02:00
#### С помощью Scoop
2020-06-01 13:34:17 +02:00
2020-06-01 14:05:55 +02:00
Вы можете установить `bat` с помощью [scoop ](https://scoop.sh/ ):
2020-06-01 13:34:17 +02:00
```bash
scoop install bat
```
2020-06-01 14:05:55 +02:00
Для этого у вас должен быть установлен [Visual C++ Redistributable ](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads ).
2020-06-01 13:34:17 +02:00
2020-06-01 14:05:55 +02:00
#### Из заранее скомпилированных файлов:
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Их вы можете скачать на [странице релизов ](https://github.com/sharkdp/bat/releases ).
2020-06-01 13:34:17 +02:00
2020-06-01 14:05:55 +02:00
Для этого у вас должен быть установлен [Visual C++ Redistributable ](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads ).
2020-06-01 13:34:17 +02:00
2020-06-01 14:05:55 +02:00
### С помощью Docker
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Вы можете использовать [Docker image ](https://hub.docker.com/r/danlynn/bat/ ), чтобы запустить `bat` в контейнере:
2020-06-01 13:34:17 +02:00
```bash
docker pull danlynn/bat
alias bat='docker run -it --rm -e BAT_THEME -e BAT_STYLE -e BAT_TABS -v "$(pwd):/myapp" danlynn/bat'
```
2020-06-01 14:05:55 +02:00
### С помощью Ansible
2020-06-01 13:34:17 +02:00
2020-06-01 14:05:55 +02:00
Вы можете установить `bat` с [Ansible ](https://www.ansible.com/ ):
2020-06-01 13:34:17 +02:00
```bash
2020-06-01 14:05:55 +02:00
# Устанавливаем роль на устройстве
2020-06-01 13:34:17 +02:00
ansible-galaxy install aeimer.install_bat
```
```yaml
---
2020-06-01 14:05:55 +02:00
# Playbook для установки bat
2020-06-01 13:34:17 +02:00
- host: all
roles:
- aeimer.install_bat
```
- [Ansible Galaxy ](https://galaxy.ansible.com/aeimer/install_bat )
- [GitHub ](https://github.com/aeimer/ansible-install-bat )
2020-06-01 14:05:55 +02:00
Этот способ должен сработать с о следующими дистрибутивами:
2020-06-01 13:34:17 +02:00
- Debian/Ubuntu
2020-06-01 14:05:55 +02:00
- ARM (например Raspberry PI)
2020-06-01 13:34:17 +02:00
- Arch Linux
- Void Linux
- FreeBSD
2020-08-30 13:54:15 +02:00
- macOS
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
### Из скомпилированных файлов
2020-06-01 13:34:17 +02:00
2020-06-01 14:05:55 +02:00
Перейдите на [страницу релизов ](https://github.com/sharkdp/bat/releases ) для
2020-08-30 13:54:15 +02:00
скомпилированных файлов `bat` для различных платформ. Бинарные файлы с о статической связкой так же доступны: выбирайте архив с `musl` в имени.
2020-06-01 13:34:17 +02:00
2020-06-01 14:05:55 +02:00
### Из исходников
2020-06-01 13:34:17 +02:00
2021-01-09 00:23:11 +01:00
Если вы желаете установить `bat` из исходников, вам понадобится Rust 1.42 или выше. После этого используйте `cargo` , чтобы все скомпилировать:
2020-06-01 13:34:17 +02:00
```bash
cargo install --locked bat
```
2020-06-03 18:42:14 +02:00
## Кастомизация
2020-06-01 13:34:17 +02:00
2020-06-03 18:42:14 +02:00
### Темы для выделения текста
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02: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 13:34:17 +02:00
2020-06-23 16:45:24 +02:00
Если вы хотите просто просмотреть темы, используйте следующую команду (для этого вам понадобится [`fzf` ](https://github.com/junegunn/fzf )):
2020-06-01 13:34:17 +02:00
```bash
2020-06-03 18:42:14 +02:00
bat --list-themes | fzf --preview="bat --theme={} --color=always /путь/к/файлу"
2020-06-01 13:34:17 +02:00
```
2020-06-25 07:59:03 +02:00
`bat` отлично смотрится на темном фоне. Однако если ваш терминал использует светлую тему, то такие темы как `GitHub` или `OneHalfLight` будут смотреться куда лучше!
2020-06-25 07:59:21 +02:00
Вы также можете использовать новую тему, для этого перейдите [в раздел добавления тем ](https://github.com/sharkdp/bat#добавление-новых-тем ).
2020-06-01 13:34:17 +02:00
2020-06-03 18:42:14 +02:00
### Изменение внешнего вывода
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Вы можете использовать флаг `--style` , чтобы изменять внешний вид вывода в `bat` .
2020-06-03 18:42:14 +02:00
Например, вы можете использовать `--style=numbers,changes` , чтобы показать только количество строк и изменений в Git. Установите переменную окружения `BAT_STYLE` чтобы изменить это навсегда, или используйте [конфиг файл ](https://github.com/sharkdp/bat#configuration-file ) `bat` .
2020-06-01 13:34:17 +02:00
2020-06-03 18:42:14 +02:00
### Добавление новых синтаксисов
2020-06-01 13:34:17 +02:00
2020-06-03 18:42:14 +02:00
`bat` использует [`syntect` ](https://github.com/trishume/syntect/ ) для выделения синтаксиса. `syntect` может читать
[файл `.sublime-syntax` ](https://www.sublimetext.com/docs/3/syntax.html )
и темы. Чтобы добавить новый синтаксис, сделайте следующее:
2020-06-01 13:34:17 +02:00
2020-06-03 18:42:14 +02:00
Создайте каталог с синтаксисом:
2020-06-01 13:34:17 +02:00
```bash
mkdir -p "$(bat --config-dir)/syntaxes"
cd "$(bat --config-dir)/syntaxes"
2020-06-03 18:42:14 +02:00
# Разместите файлы '.sublime-syntax'
# в каталоге (или субкаталогах), например:
2020-06-01 13:34:17 +02:00
git clone https://github.com/tellnobody1/sublime-purescript-syntax
```
2020-08-30 13:54:15 +02:00
Теперь используйте следующую команду, чтобы превратить эти файлы в бинарный кеш:
2020-06-01 13:34:17 +02:00
```bash
bat cache --build
```
2020-06-25 07:59:34 +02:00
Теперь вы можете использовать `bat --list-languages` , чтобы проверить, доступны ли новые языки.
2020-06-01 13:34:17 +02:00
2020-06-25 08:00:06 +02:00
Если когда-нибудь вы заходите вернуться к настройкам по умолчанию, введите
2020-06-01 13:34:17 +02:00
```bash
bat cache --clear
```
2020-06-03 18:42:14 +02:00
### Добавление новых тем
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Это работает похожим образом, так же как и добавление новых тем выделения синтаксиса
2020-06-01 13:34:17 +02:00
2020-06-03 18:42:14 +02:00
В о -первых, создайте каталог с новыми темами для синтаксиса:
2020-06-01 13:34:17 +02:00
```bash
mkdir -p "$(bat --config-dir)/themes"
cd "$(bat --config-dir)/themes"
2020-06-03 18:42:14 +02:00
# Загрузите тему в формате '.tmTheme':
2020-06-01 13:34:17 +02:00
git clone https://github.com/greggb/sublime-snazzy
2020-06-03 18:42:14 +02:00
# Обновите кеш
2020-06-01 13:34:17 +02:00
bat cache --build
```
2020-08-30 13:54:15 +02:00
Теперь используйте `bat --list-themes` , чтобы проверить доступность новых тем.
2020-06-01 13:34:17 +02:00
2020-06-03 18:42:14 +02:00
### Использование другого пейджера.
2020-06-01 13:34:17 +02:00
2020-06-03 18:42:14 +02:00
`bat` использует пейджер, указанный в переменной окружения `PAGER` . Если она не задана, то используется `less` .
Если вы желаете использовать другой пейджер, вы можете либо изменить переменную `PAGER` , либо `BAT_PAGER` чтобы перезаписать то, что указано в `PAGER` .
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Чтобы передать дополнительные аргументы вашему пейджеру, перечислите их в этой переменной:
2020-06-01 13:34:17 +02:00
```bash
export BAT_PAGER="less -RF"
```
2020-08-30 13:54:15 +02:00
Так же вы можете использовать [файл конфигурации ](https://github.com/sharkdp/bat#configuration-file ) `bat` (флаг `--pager` ).
2020-06-01 13:34:17 +02:00
2020-06-25 08:00:26 +02:00
**Внимание**: По умолчанию пейджером является`less` (без каких-либо аргументов),
2020-06-03 18:42:14 +02:00
`bat` задаст следующие флаги для пейджера:
`-R` /`--RAW-CONTROL-CHARS`,
`-F` /`--quit-if-one-screen` и `-X` /`--no-init`. Последний флаг(`-X`) используется только для `less` , чья версия раньше 530.
2020-06-01 13:34:17 +02:00
2020-06-03 18:42:14 +02:00
Флаг `-R` нужен чтобы корректно воспроизвести ANSI цвета. Второй флаг (`-F`) говорит
2020-08-30 13:54:15 +02:00
`less` чтобы тот сразу же завершился, если размер вывода меньше чем вертикальный размер терминала.
2020-06-25 07:55:48 +02:00
Это удобно для небольших файлов, так как вам не надо каждый раз нажимать `q` , чтобы выйти из пейджера. Третий флаг (`-X`) нужен для того, чтобы исправить б а г с `--quit-if-one-screen` в старых версиях `less` . К сожалению, это блокирует возможность использования колеса мышки.
2020-06-01 13:34:17 +02:00
2020-06-03 18:42:14 +02:00
Если вы хотите все же е г о включить, вы можете добавить флаг `-R` .
2020-08-30 13:54:15 +02:00
Для `less` новее чем 530 оно должно работать из коробки.
2020-06-01 13:34:17 +02:00
2020-06-03 18:42:14 +02:00
### Темная тема
2020-06-01 13:34:17 +02:00
2020-06-03 18:42:14 +02:00
Если вы используете темный режим в macOS, возможно вы захотите чтобы `bat` использовал другую тему, основанную на теме вашей О С . Следующий сниппет использует тему `default` , когда у вас включен темный режим, и тему `GitHub` , когда включен светлый.
2020-06-01 13:34:17 +02:00
```bash
alias cat="bat --theme=\$(defaults read -globalDomain AppleInterfaceStyle & > /dev/null && echo default || echo GitHub)"
```
2020-06-03 19:07:33 +02:00
## Файл конфигурации
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
`bat` также может быть кастомизирован с помощью файла конфигурации. Е г о местоположение зависит от вашей О С : чтобы посмотреть е г о путь, введите
2020-06-01 13:34:17 +02:00
```
bat --config-file
```
2020-08-30 13:54:15 +02:00
Также вы можете установить переменную окружения `BAT_CONFIG_PATH` , чтобы изменить путь к файлу конфигурации.
2020-06-01 13:34:17 +02:00
```bash
export BAT_CONFIG_PATH="/path/to/bat.conf"
```
2020-08-30 13:54:15 +02:00
Файл конфигурации «по умолчанию» может быть создан с помощью флага `--generate-config-file` .
2020-06-01 13:34:17 +02:00
```bash
bat --generate-config-file
```
2020-06-03 19:07:33 +02:00
### Формат
2020-06-01 13:34:17 +02:00
2020-06-25 07:55:06 +02:00
Файл конфигурации - это всего лишь набор аргументов. Введите `bat --help` , чтобы просмотреть список всех возможных флагов и аргументов. Также вы можете закомментировать строку с помощью `#` .
2020-06-01 13:34:17 +02:00
2020-06-03 19:07:33 +02:00
Пример файла конфигурации:
2020-06-01 13:34:17 +02:00
```bash
2020-08-30 13:54:15 +02:00
# Установить тему "TwoDark"
2020-06-01 13:34:17 +02:00
--theme="TwoDark"
2020-08-30 13:54:15 +02:00
# Показывать количество строк, изменений в Git и заголовок файла
2020-06-01 13:34:17 +02:00
--style="numbers,changes,header"
2020-08-30 13:54:15 +02:00
# Использовать курсив (поддерживается не всеми терминалами)
2020-06-01 13:34:17 +02:00
--italic-text=always
2020-08-30 13:54:15 +02:00
# Использовать синтаксис C++ для всех .ino файлов
2020-06-01 13:34:17 +02:00
--map-syntax "*.ino:C++"
2020-08-30 13:54:15 +02:00
# Использовать синтаксик Git Ignore для всех файлов .ignore
2020-06-01 13:34:17 +02:00
--map-syntax ".ignore:Git Ignore"
```
2020-06-03 19:07:33 +02:00
## Использование `bat` в Windows
2020-06-01 13:34:17 +02:00
2020-06-25 07:55:28 +02:00
`bat` полностью работоспособен "из коробки", но для некоторых возможностей могут понадобиться дополнительные настройки.
2020-06-01 13:34:17 +02:00
2020-06-03 19:07:33 +02:00
### Пейджинг
2020-06-01 13:34:17 +02:00
2020-06-23 16:45:24 +02:00
Windows поддерживает только очень простой пейджер `more` . Вы можете скачать установщик для `less` [с е г о сайта ](http://www.greenwoodsoftware.com/less/download.html ) или [через Chocolatey ](https://chocolatey.org/packages/Less ). Чтобы е г о использовать, скопируйте исполняемый файл в ваш `PATH` или [используйте переменную окружения ](#Использование-другого-пейджера ). [Пакет из Chocolatey ](#windows ) установит все автоматически.
2020-06-01 13:34:17 +02:00
2020-06-03 19:07:33 +02:00
### Цвета
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Windows 10 поддерживает цвета и в `conhost.exe` (Command Prompt), и в PowerShell начиная с версии Windows
[v1511 ](https://ru.wikipedia.org/wiki/Windows_10#Обновления и поддержка ), так же как и в bash. Н а ранних версиях Windows вы можете использовать
2020-06-03 19:07:33 +02:00
[Cmder ](http://cmder.net/ ), в котором есть [ConEmu ](https://conemu.github.io/ ).
2020-06-01 13:34:17 +02:00
2020-06-23 16:45:24 +02:00
**Внимание:** Версия `less` в Git и MSYS2 воспроизводит цвета некорректно. Если у вас нет других пейджеров, мы можете отключить использование пейджеров с помощью флага `--paging=never`
2020-06-03 19:07:33 +02:00
или установить `BAT_PAGER` равным пустой строке.
2020-06-01 13:34:17 +02:00
### Cygwin
2020-08-30 13:54:15 +02:00
Из коробки `bat` не поддерживает пути в стиле Unix (`/cygdrive/*`). Когда указан абсолютный путь cygwin, `bat` выдаст следующую ошибку: `The system cannot find the path specified. (os error 3)`
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Она может быть решена добавлением следующей функции в `.bash_profile` :
2020-06-01 13:34:17 +02: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 19:07:33 +02:00
## Проблемы и их решение
2020-06-01 13:34:17 +02:00
2020-06-03 19:07:33 +02:00
### Терминалы и цвета
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
`bat` поддерживает терминалы *с * и *без* поддержки truecolor. Однако подсветка синтаксиса не оптимизирована для терминалов с 8-битными цветами, и рекомендуется использовать терминалы с поддержкой 24-битных цветов (`terminator`, `konsole` , `iTerm2` , ...).
2020-06-03 19:07:33 +02:00
Смотрите [эту статью ](https://gist.github.com/XVilka/8346728 ) для полного списка терминалов.
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Удостовертесь, что переменная `COLORTERM` равна `truecolor` или
2020-06-25 07:53:23 +02:00
`24bit` . Иначе `bat` не сможет определить поддержку 24-битных цветов (и будет использовать 8-битные).
2020-06-01 13:34:17 +02:00
2020-06-03 19:07:33 +02:00
### Текст и номера строк плохо видны
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Используйте другую тему (`bat --list-themes` выведет список всех установленных тем). Темы `OneHalfDark` и
2020-06-03 19:07:33 +02:00
`OneHalfLight` имеют более яркие номера строк и тексты.
2020-06-01 13:34:17 +02:00
2020-06-03 19:07:33 +02:00
### Кодировки файлов
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
`bat` поддерживает UTF-8 и UTF-16. Файлы в других кодировках, возможно, придётся перекодировать, так как кодировка может быть распознана неверно. Используйте `iconv` .
2020-06-03 19:07:33 +02:00
Пример: у вас есть PHP файл в кодировке Latin-1 (ISO-8859-1):
2020-06-01 13:34:17 +02:00
``` bash
iconv -f ISO-8859-1 -t UTF-8 my-file.php | bat
```
2020-08-30 13:54:15 +02:00
Внимание: вам может понадобится флаг `-l` /`--language`, если `bat` не сможет автоматически определить синтаксис.
2020-06-01 13:34:17 +02:00
2020-06-03 19:07:33 +02:00
## Разработка
2020-06-01 13:34:17 +02:00
```bash
2020-06-03 19:07:33 +02:00
# Рекурсивно клонирует все модули
2020-06-01 13:34:17 +02:00
git clone --recursive https://github.com/sharkdp/bat
2020-06-03 19:07:33 +02:00
# Компиляции в режиме разработки
2020-06-01 13:34:17 +02:00
cd bat
cargo build --bins
2020-06-03 19:07:33 +02:00
# Запуск тестов
2020-06-01 13:34:17 +02:00
cargo test
2020-06-03 19:07:33 +02:00
# Установка (релизная версия)
2020-06-01 13:34:17 +02:00
cargo install --locked
2020-08-30 13:54:15 +02:00
# Компилирование исполняего файла bat с другим синтаксисом и темами
2020-06-01 13:34:17 +02:00
bash assets/create.sh
cargo install --locked --force
```
2020-06-03 19:07:33 +02:00
## Разработчики
2020-06-01 13:34:17 +02:00
- [sharkdp ](https://github.com/sharkdp )
- [eth-p ](https://github.com/eth-p )
2020-06-03 19:11:52 +02:00
## Цели и альтернативы
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
Цели проекта `bat` :
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
- Красивая и продвинутая подсветка синтаксиса.
- Интеграция с Git.
- Полноценная замена `cat` .
- Дружелюбный интерфейс и аргументы.
2020-06-01 13:34:17 +02:00
2020-06-03 19:07:33 +02:00
Есть очень много альтернатив `bat` . Смотрите [этот документ ](doc/alternatives.md ) для сравнения.
2020-06-01 13:34:17 +02:00
2020-06-03 19:07:33 +02:00
## Лицензия
Copyright (c) 2018-2020 [Разработчики bat ](https://github.com/sharkdp/bat ).
2020-06-01 13:34:17 +02:00
2020-08-30 13:54:15 +02:00
`bat` распостраняется под лицензями MIT License и Apache License 2.0 (на выбор пользователя).
2020-06-01 13:34:17 +02:00
2020-06-03 19:07:33 +02:00
Смотрите [LICENSE-APACHE ](LICENSE-APACHE ) и [LICENSE-MIT ](LICENSE-MIT ) для более подробного ознакомления.