bat/doc/README-ru.md

28 KiB
Raw Blame History

bat - a cat clone with wings
Build Status license Version info
Клон утилиты cat(1) с поддержкой выделения синтаксиса и Git

Ключевые возможностиИспользованиеУстановкаКастомизацияЦели и альтернативы • Перевод [中文][日本語][한국어][Русский]

Выделение синтаксиса

bat поддерживает выделение синтаксиса для огромного количества языков программирования и разметки:

Пример выделения синтаксиса

Интеграция с Git

bat использует git чтобы показать изменения в коде (смотрите на левый сайдбар):

Пример интеграции с Git

Показать непечатаемые символы

Вы можете использовать -A / --show-all флаг чтобы показать символы, которые невозможно напечатать:

Строка с неотображемыми символами

Автоматическое разделение текста

bat умеет траслировать вывод в less если он слишком большой, чтобы уместится на экране полностью

Объединение файлов

О... Вы также можете объединять файлы 😉. Когда bat обнаруживает неинтерактивный терминал (например когда вы направляете вывод в файл или в процесс), bat будет работать как cat и откатится к выводу это файла как обычного текста (без поддержки синтаксиса)

Как использовать

Вывести единственный файл в терминале

> bat README.md

Отобразить сразу несколько файлов в терминале

> bat src/*.rs

Читаем из stdin и определяем синтаксис автоматически (внимание, это работает, читая заглавную строку файла, например #!/bin/sh )

> curl -s https://sh.rustup.rs | bat

Прочитать из stdin с явным указанием языка

> yaml2json .travis.yml | json_pp | bat -l json

Вывести и выделить неотображаемые символы

> bat -A /etc/hosts

Использование как замена cat

bat > note.md  # мгновенно создаем новый файл

bat header.md content.md footer.md > document.md

bat -n main.rs  # показываем только количество строк

bat f - g  # выводит 'f' в stdin, а потом 'g'.

Интеграция с другими утилитами

find или fd

Вы можете использовать флаг -exec в find чтобы посмотреть превью всех файлов в bat

find … -exec bat {} +

Если вы используете fd, вы вполне можете использоваль флаг -X/--exec-batch чтобы сделать тоже самое:

fd … -X bat

ripgrep

С помощью batgrep, bat может быть использован для вывода результата запроса ripgrep

batgrep needle src/

tail -f

bat может быть использован вместе с tail -f чтобы просматривать файл вместе с выделением синтаксиса

tail -f /var/log/pacman.log | bat --paging=never -l log

Заметьте, что мы отключаем пэйджинг чтобы это заработало. Мы так-же указываем синтаксис (-l log), так как он не может быть определен в данном случае.

git

Вы можете использовать bat с git show чтобы просмотреть старую версию файла с выделением синтаксиса:

git show v0.6.0:src/main.rs | bat -l rs

Обратите внимание, что выделение синтаксиса не работает в git diff на данный момент. Если вам это нужно, посмотрите delta.

xclip

Количество строк и просмотр изменений в bat может сделать копирование содержания файла немного сложной. Чтобы предотвратить это, используйте флаг -p/--plain или просто перевести вывод в xclip:

bat main.cpp | xclip

bat обнаружит, что вывод будет переведен, и выведет обычный текст без выделения синтаксиса.

man

bat может быть использован в виде выделения цвета для man, для этого установите переменную окружения MANPAGER:

export MANPAGER="sh -c 'col -bx | bat -l man -p'"
man 2 select

Возможно вам понадобится также установить MANROFFOPT="-c" если у вас есть проблемы с форматированием.

Если вы хотите сделать этой одной командой, вы можете использовать batman.

Обратите внимание, что синтаксис manpage разрабатывается в этом репозитории, и все еще находится в разработке.

prettier / shfmt / rustfmt

Prettybat это скрипт, который форматирует код и выводит его с помощью bat.

Установка

Packaging status

Ubuntu (с помощью apt)

... и другие дистрибутивы основанные на Debian.

bat есть в репозиториях Ubuntu и Debian, и доступен начиная с Ubuntu Eoan 19.10. На Debian bat пока-что доступен только с нестабильной веткой "Sid"

Если ваша версия Ubuntu/Debian достаточно новая, вы можете установить bat так:

apt install bat

Если вы установили bat таким образом, то бинарный файл может быть установлен как batcat заместо bat (из-за конфликта имени с другим пакетом). Вы можете сделать симлинк или алиас bat -> batcat чтобы предотвратить проблемы которые могут произойти с другими дистрибутивами.

mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/bat

Ubuntu (С помощью самого нового .deb пакета)

... и другие дистрибутивы Linux основанные на Debian

Если пакет еще не был предоставлен в вашем Ubuntu/Debian дистрибутиве или вы хотите самую последнюю версия bat, вы можете скачать самый последний deb пакет отсюда: release page и установить так:

sudo dpkg -i bat_0.15.4_amd64.deb  # измените архитектуру и версию

Alpine Linux

Вы можете установить bat из оффициальных источников:

apk add bat

Arch Linux

Вы можете установить bat из оффициального источника:

pacman -S bat

Fedora

Вы можете установить bat из оффициального репозитория Fedora Modular.

dnf install bat

Gentoo Linux

Вы можете установить bat из оффициальных источников:

emerge sys-apps/bat

Void Linux

Вы можете установить bat с помощью xbps-install:

xbps-install -S bat

FreeBSD

Вы можете установить bat с помощью pkg:

pkg install bat

или самому скомпилировать его:

cd /usr/ports/textproc/bat
make install

С помощью nix

Вы можете установить bat используя nix package manager:

nix-env -i bat

openSUSE

Вы можете установитьbat с помощью zypper:

zypper install bat

On macOS

Вы можете установитьbat с помощью Homebrew:

brew install bat

Или-же установить его с помощью MacPorts:

port install bat

Windows

Есть несколько способов установить bat. Как только вы установили его, посмотрите на секцию "Использование bat в Windows".

С помощью Chocolatey

Вы можете установить bat с помощью Chocolatey:

choco install bat

С помощью Scoop

Вы можете установить bat с помощью scoop:

scoop install bat

Для этого у вас должен быть установлен Visual C++ Redistributable.

Из заранее скомпилированных файлов:

Их вы можете скачать на странице релизов,

Для этого у вас должен быть установлен Visual C++ Redistributable.

С помощью Docker

Вы можете использовать Docker image чтобы запустить bat в контейнере:

docker pull danlynn/bat
alias bat='docker run -it --rm -e BAT_THEME -e BAT_STYLE -e BAT_TABS -v "$(pwd):/myapp" danlynn/bat'

С помощью Ansible

Вы можете установить bat с Ansible:

# Устанавливаем роль на устройстве
ansible-galaxy install aeimer.install_bat
---
# Playbook для установки bat
- host: all
  roles:
    - aeimer.install_bat

Этот способ должен сработать со следующими дистрибутивами:

  • Debian/Ubuntu
  • ARM (например Raspberry PI)
  • Arch Linux
  • Void Linux
  • FreeBSD
  • MacOS

С помощью бинарников

Перейдите на страницу релизов для скомпилированных файлов bat для различных платформ. Бинарные файлы со статической связкой так-же доступны - выбирайте архив с musl в имени.

Из исходников

Если вы желаете установить bat из исходников, вам понадобится Rust 1.40 или выше. После этого, вы должны использовать cargo чтобы все скомпилировать:

cargo install --locked bat

Кастомизация

Темы для выделения текста

Используйте bat --list-themes чтобы вывести список всех доступных тем. Для выбора темы TwoDark, используйте bat с флагом --theme=TwoDark или поставьте переменную окружения BAT_THEME равной TwoDark. Используйте export BAT_THEME="TwoDark" в стартап файле вашей оболочки, чтобы изменить ее навсегда. Или же, используйте конфиг файл bat.

Если вы хотите просто просмотреть темы, используйте следующую команду (для этого вам понадобится fzf):

bat --list-themes | fzf --preview="bat --theme={} --color=always /путь/к/файлу"

bat отлично смотрится на темном фоне. Однако, если ваш терминал использует светлую тему, такие темы как GitHub или OneHalfLight будут смотреться куда лучше! Вы так-же можете использовать новую тему, для этого перейдите в раздел добавления тем.

Изменение внешнего вывода

Вы можете использовать флаг --style чтобы изменять внешний вид вывода в bat. Например, вы можете использовать --style=numbers,changes, чтобы показать только количество строк и изменений в Git. Установите переменную окружения BAT_STYLE чтобы изменить это навсегда, или используйте конфиг файл bat.

Добавление новых синтаксисов

bat использует syntect для выделения синтаксиса. syntect может читать файл .sublime-syntax и темы. Чтобы добавить новый синтаксис, сделайте следующее:

Создайте каталог с синтаксисом:

mkdir -p "$(bat --config-dir)/syntaxes"
cd "$(bat --config-dir)/syntaxes"

# Разместите файлы '.sublime-syntax'
# в каталоге (или субкаталогах), например:
git clone https://github.com/tellnobody1/sublime-purescript-syntax

Теперь, используйте следующую команду, чтобы превратить эти файлы в бинарный кеш:

bat cache --build

Теперь, вы можете использовать bat --list-languages чтобы проверить, доступны ли новые языки.

Если когда-нибудь вы заходите вернуться к настройкам по-умолчанию, введите

bat cache --clear

Добавление новых тем

Это работает похожим образом, так-же как и добавление новых тем выделения синтаксиса

Во-первых, создайте каталог с новыми темами для синтаксиса:

mkdir -p "$(bat --config-dir)/themes"
cd "$(bat --config-dir)/themes"

# Загрузите тему в формате '.tmTheme':
git clone https://github.com/greggb/sublime-snazzy

# Обновите кеш
bat cache --build

Теперь, используйте bat --list-themes чтобы проверить доступность новых тем.

Использование другого пейджера.

bat использует пейджер, указанный в переменной окружения PAGER. Если она не задана, то используется less. Если вы желаете использовать другой пейджер, вы можете либо изменить переменную PAGER, либо BAT_PAGER чтобы перезаписать то, что указано в PAGER.

Чтобы передать какие-то аргументы в ваш пейджер, вы так-же можете их поставить в этих переменных:

export BAT_PAGER="less -RF"

Так-же вы можете использовать файл конфигурации bat для изменения. (флаг --pager).

Внимание: По умолчанию, пейджером являетсяless (без каких либо аргументов), bat задаст следующие флаги для пейджера: -R/--RAW-CONTROL-CHARS, -F/--quit-if-one-screen и -X/--no-init. Последний флаг(-X) используется только для less, чья версия раньше 530.

Флаг -R нужен чтобы корректно воспроизвести ANSI цвета. Второй флаг (-F) говорит less чтобы тот сразу-же завершился, если размер вывода меньше чем вертикальный размер терминала. Это удобно для небольших файлов, т.к вам не надо каждый раз нажимать q чтобы выйти из пейджера. Третий флаг (-X) нужен чтобы исправить баг с --quit-if-one-screen в старых версиях less. К сожалению, это так-же блокирует возможность использования колеса мышки.

Если вы хотите все же его включить, вы можете добавить флаг -R. Для less новее чем 530, оно должно работать из коробки.

Темная тема

Если вы используете темный режим в macOS, возможно вы захотите чтобы bat использовал другую тему, основанную на теме вашей ОС. Следующий сниппет использует тему default, когда у вас включен темный режим, и тему GitHub, когда включен светлый.

alias cat="bat --theme=\$(defaults read -globalDomain AppleInterfaceStyle &> /dev/null && echo default || echo GitHub)"

Файл конфигурации

bat так-же может быть кастомизирован с помощью файла конфигурации. Его местоположение зависит от вашей ОС, чтобы посмотреть его путь, введите

bat --config-file

Так-же вы можете установить переменную окружения BAT_CONFIG_PATH чтобы изменить путь к файлу конфигурации.

export BAT_CONFIG_PATH="/path/to/bat.conf"

Файл конфигурации по-умолчанию может быть создан с помощью флага --generate-config-file.

bat --generate-config-file

Формат

Файл конфигурации - это всего лишь набор аргументов. Введите bat --help чтобы просмотреть список всех возможных флагов и аргументов. Так-же, вы можете закомментировать строчку с помощью #.

Пример файла конфигурации:

# Устанавливает тему "TwoDark"
--theme="TwoDark"

# Показывает количество строк, изменений в Git и заголовок файла
--style="numbers,changes,header"

# Использует наклонный текст (не все терминалы поддерживаеются)
--italic-text=always

# Использует синтаксис C++ для всех .ino файлов
--map-syntax "*.ino:C++"

# Использует синтаксик Git Ignore для всех файлов .ignore
--map-syntax ".ignore:Git Ignore"

Использование bat в Windows

bat в основном работает полностью из-коробки, но несколько возможностей нуждаются в настройке.

Пейджинг

Windows поддерживает только очень простой пейджер more. Вы можете скачать установщик для less с его сайта или через Chocolatey. Чтобы его использовать, скопируйте исполняемый файл в ваш PATH или используйте переменную окружения. Пакет из Chocolatey установит все автоматически.

Цвета

Windows 10 поддерживает цвета и вconhost.exe (Command Prompt) и в PowerShell начиная с версии Windows [v1511](https://ru.wikipedia.org/wiki/Windows_10#Обновления и поддержка), так-же как и в bash. На ранних версиях Windows, вы можете использовать Cmder, в котором есть ConEmu.

Внимание: Версия less в Git и MSYS2 воспроизводит цвета некорректно. Если у вас нет других пейджеров, мы можете отключить использование пейджеров с помощью флага --paging=never или установить BAT_PAGER равным пустой строке.

Cygwin

bat не поддерижвает нативно пути в стиле Unix (/cygdrive/*). Когда указан абсолютный путь cygwin, bat выдаст следующую ошибку: The system cannot find the path specified. (os error 3)

Она может быть решена, добавлением следующей функции в .bash_profile:

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[@]}"
}

Проблемы и их решение

Терминалы и цвета

bat поддерживает терминалы с и без поддержки truecolor. Однако,цвета в выделении синтаксиса не оптимизированы к 8-ми битным цветам и рекомендуется использовать терминалы с поддержкой 24-ых битных цветов (terminator, konsole, iTerm2, ...). Смотрите эту статью для полного списка терминалов.

Удостовертесь, что переменная COLORTERM равнаtruecolor или 24bit. Иначе, bat не сможет определить поддержку 24-битных цветов(и будет использовать 8-битные).

Текст и номера строк плохо видны

Используйте другую тему (смотрите bat --list-themes чтобы увидеть все темы). Темы OneHalfDark и OneHalfLight имеют более яркие номера строк и тексты.

Кодировки файлов

bat поддерживает UTF-8 и UTF-16. Для другой кодировки, вам возможно будет нужно перекодировать их, так как кодировка может быть распознана не верно. Используйте iconv. Пример: у вас есть PHP файл в кодировке Latin-1 (ISO-8859-1):

iconv -f ISO-8859-1 -t UTF-8 my-file.php | bat

Внимание: вам может понадобится флаг -l/--language если синтаксис не смог быть авто-определен bat.

Разработка

# Рекурсивно клонирует все модули
git clone --recursive https://github.com/sharkdp/bat

# Компиляции в режиме разработки
cd bat
cargo build --bins

# Запуск тестов
cargo test

# Установка (релизная версия)
cargo install --locked

#Компилирование исполняего файла bat с другим синтаксисом и темами
bash assets/create.sh
cargo install --locked --force

Разработчики

Цели и альтернативы

bat старается добится:

  • Красивый, продвинутый синтаксис.
  • Интеграция с Git
  • Быть заменой cat
  • Предлагать дружелюбный интерфейс и аргументы.

Есть очень много альтернатив bat. Смотрите этот документ для сравнения.

Лицензия

Copyright (c) 2018-2020 Разработчики bat.

bat распостраняется под лицензями MIT License и Apache License 2.0.

Смотрите LICENSE-APACHE и LICENSE-MIT для более подробного ознакомления.