<p align="center">
<img src="https://raw.githubusercontent.com/sharkdp/bat/HEAD/doc/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>
<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>
구문 강조 및 Git 통합 기능을 갖춘 cat 클론입니다.
</p>
<p align="center">
<a href="#syntax-highlighting">주요 기능</a> •
<a href="#how-to-use">사용 방법</a> •
<a href="#installation">설치</a> •
<a href="#customization">커스터마이징</a> •
<a href="#project-goals-and-alternatives">프로젝트 목표 및 대안</a><br>
[English]
[<a href="doc/README-zh.md">중국어</a>]
[<a href="doc/README-ja.md">일본어</a>]
[<a href="doc/README-ko.md">한국어</a>]
[<a href="doc/README-ru.md">러시아어</a>]</p>
구문 강조 (Syntax highlighting)
bat은 다수의 프로그래밍 및 마크업 언어에 대한 구문 강조를 지원합니다:
Syntax highlighting example
Git 통합 (Git integration)
bat은 git과 통신하여 인덱스 대비 수정 사항을 보여줍니다 (왼쪽 사이드바 참조):
Git integration example
비인쇄 문자 표시 (Show non-printable characters)
-A/--show-all 옵션을 사용하여 비인쇄 문자를 표시하고 강조할 수 있습니다:
Non-printable character example
자동 페이지 처리 (Automatic paging)
기본적으로 bat은 출력이 너무 커서 한 화면에 담기 어려울 경우 자체 출력을 페이저(예: less)로 파이프합니다. 만약 bat이 항상 cat처럼 작동하여(출력 내용을 절대 페이지 처리하지 않음) 사용하고 싶다면, 명령줄이나 설정 파일에서 --paging=never 옵션을 설정할 수 있습니다. 쉘 설정에서 cat을 bat으로 별칭 지정하려는 경우, 기본 동작을 유지하기 위해 alias cat='bat --paging=never'를 사용할 수 있습니다.
파일 연결 (File concatenation)
페이지 지정기(pager)를 설정했더라도, 여전히 bat을 사용하여 파일들을 연결할 수 있습니다 :wink:.
bat은 비대화형 터미널(즉, 다른 프로세스로 파이프하거나 파일로 리디렉션하는 경우)을 감지하면 --pager 옵션의 값에 관계없이 cat의 대체재 역할을 하여 일반 파일 내용을 출력합니다.
사용 방법
터미널에 단일 파일 표시하기
여러 파일 한 번에 표시하기
stdin에서 읽고 구문을 자동으로 결정하기 (참고: 하이라이팅은 일반적으로 #!/bin/sh와 같은 shebang을 통해 파일의 첫 줄에서 구문을 결정할 수 있는 경우에만 작동합니다)
curl -s https://sh.rustup.rs | bat
stdin에서 읽고 언어를 명시적으로 지정하기
yaml2json .travis.yml | json_pp | bat -l json
출력할 수 없는 문자(non-printable characters) 표시 및 하이라이팅:
cat 대체재로 사용하기:
bat > note.md # 새 파일 빠르게 생성
bat header.md content.md footer.md > document.md
...
다른 도구와의 통합
fzf
fzf의 미리보기(previewer)로 bat을 사용할 수 있습니다. 이를 위해 --color=always 옵션을 사용하여 색상화된 출력을 강제합니다. 또한 --line-range 옵션을 사용하여 긴 파일의 로드 시간을 제한할 수도 있습니다:
fzf --preview "bat --color=always --style=numbers --line-range=:500 {}"
더 자세한 내용은 fzf의 README를 참조하십시오.
find 또는 fd
find의 -exec 옵션을 사용하여 검색된 모든 결과를 bat으로 미리보기할 수 있습니다:
만약 fd를 사용한다면, 동일한 작업을 수행하기 위해 -X/--exec-batch 옵션을 사용할 수 있습니다:
ripgrep
batgrep을 사용하면, bat을 ripgrep 검색 결과의 프린터로 사용할 수 있습니다.
tail -f
bat은 tail -f와 결합하여 구문 강조(syntax highlighting)가 적용된 특정 파일을 지속적으로 모니터링할 수 있습니다.
tail -f /var/log/pacman.log | bat --paging=never -l log
이 기능을 사용하려면 페이지 매김(paging)을 비활성화해야 합니다. 또한, 이 경우 구문을 자동으로 감지할 수 없기 때문에 명시적으로 구문(-l log)을 지정했습니다.
git
bat은 git show와 결합하여 특정 파일의 이전 버전을 적절한 구문 강조로 볼 수 있게 해줍니다:
git show v0.6.0:src/main.rs | bat -l rs
git diff
bat은 git diff와 결합하여 코드 변경 주변의 라인들을 적절한 구문 강조로 볼 수 있게 해줍니다:
batdiff() {
git diff --name-only --relative --diff-filter=d -z | xargs -0 bat --diff
}
만약 이 기능을 별도의 도구로 사용하고 싶다면, bat-extras의 batdiff를 확인해 보세요.
Git 및 diff 작업에 대한 더 많은 지원을 원한다면, delta를 확인하세요.
xclip
bat 출력의 라인 번호와 Git 수정 마커는 파일 내용을 복사하기 어렵게 만들 수 있습니다. 이를 방지하려면 -p/--plain 옵션을 사용하여 bat을 호출하거나, 단순히 출력을 xclip으로 파이프하면 됩니다:
bat은 출력이 리디렉션되고 있음을 감지하고 순수한 파일 내용만 출력합니다.
man
bat은 환경 변수 MANPAGER를 설정하여 man의 색상화된 페이지 매김기(colorizing pager)로 사용될 수 있습니다:
export MANPAGER="bat -plman"
man 2 select
(일부 구형 Debian 또는 Ubuntu 버전에서는 실행 파일 이름이 bat 대신 batcat입니다.)
만약 이 기능을 새로운 명령어로 묶어 사용하고 싶다면, batman도 사용할 수 있습니다.
Manpage 문법은 이 저장소에서 개발되었으며 아직 작업이 더 필요합니다.
prettier / shfmt / rustfmt
prettybat 스크립트는 코드를 포맷하고 bat으로 출력하는 래퍼(wrapper)입니다.
--help 메시지 하이라이팅
bat을 사용하여 도움말 텍스트에 색상을 입힐 수 있습니다: $ cp --help | bat -plhelp
또한 이를 감싸는 래퍼를 사용할 수도 있습니다:
alias bathelp='bat --plain --language=help'
help() {
...
}
그러면 $ help cp 또는 $ help git commit을 실행할 수 있습니다.
만약 zsh를 사용한다면, -h와 --help를 완전히 덮어쓰는 전역 별칭(global aliases)도 사용할 수 있습니다:
alias -g -- -h='-h 2>&1 | bat --language=help --style=plain'
alias -g -- --help='--help 2>&1 | bat --language=help --style=plain'
fish의 경우, 약어(abbreviations)를 사용할 수 있습니다:
abbr -a --position anywhere -- --help '--help | bat -plhelp'
abbr -a --position anywhere -- -h '-h | bat -plhelp'
이 방법을 사용하면 cp --help을 계속 사용할 수 있으면서도 색상이 입혀진 도움말 페이지를 얻을 수 있습니다.
[!TIP]
이 약어들을 나중에 제거하려면 다음 명령어를 실행하세요:
abbr -e -- --help
abbr -e -- -h
> `--help`와 `-h`가 대시(-)로 시작하기 때문에, 앞에 붙는 `--`는 필수입니다. 그렇지 않으면 이 이름들이 `abbr` 자체의 플래그(flags)로 해석될 수 있습니다.
일부 경우에는 `-h`가 `--help`의 단축어가 아닐 수 있다는 점을 유념하세요 (예: `ls`). 만약 명령어 인수로 `-h`를 사용해야 하는 경우, 위에서 정의된 별칭을 무시하기 위해 해당 인수에 백슬래시(` ext{}`)를 붙여 이스케이프(escape)할 수 있습니다 (예: `ls ext{-h}`).
도움말 구문과 관련된 문제는 [이 저장소](https://github.com/victor-gp/cmd-help-sublime-syntax)에 보고해 주십시오.
## 설치
<!--
설치 지침은 다음을 충족해야 합니다:
* 널리 사용되는 시스템용이어야 함
* 명백하지 않아야 함
* 다소 공식적인 출처에서 와야 함
-->
[](https://repology.org/project/bat-cat/versions)
### Ubuntu (apt 사용 시)
*... 및 기타 Debian 기반 Linux 배포판.*
`bat`은 [Ubuntu 20.04 ("Focal")](https://packages.ubuntu.com/search?keywords=bat&exact=1)와 [Debian 2021년 8월 이후(Debian 11 - "Bullseye")](https://packages.debian.org/bullseye/bat)에서 사용할 수 있습니다.
Ubuntu 또는 Debian 설치 버전이 충분히 최신이라면 다음 명령을 실행하기만 하면 됩니다:
```bash
sudo apt install bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
주의사항: 일부 구형 Ubuntu/Debian 릴리스에서는 다른 패키지와의 이름 충돌(name clash with another package) 때문에 실행 파일이 bat 대신 batcat으로 설치됩니다. 최신 릴리스에서는 실행 파일이 bat으로 제공됩니다. 설치 후에도 bat --version이 작동하지 않으면 대신 batcat --version을 시도해 보세요. 이 문제를 방지하고 다른 배포판과 일관성을 유지하려면 bat -> batcat 심볼릭 링크(symlink) 또는 별칭(alias)을 설정할 수 있습니다:
mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/bat
batcat에 대한 bat용 예시 별칭은 다음과 같습니다:
Ubuntu (가장 최신 .deb 패키지 사용 시)
... 및 기타 Debian 기반 Linux 배포판.
패키지가 아직 귀하의 Ubuntu/Debian 설치에 승격되지 않았거나, bat의 가장 최신 릴리스를 원한다면 릴리스 페이지에서 최신 .deb 패키지를 다운로드하여 다음을 통해 설치하십시오:
sudo dpkg -i bat_0.18.3_amd64.deb
Alpine Linux
적절한 저장소(repository)가 활성화되어 있다면 공식 소스에서 bat 패키지를 설치할 수 있습니다:
Arch Linux
공식 소스에서 bat 패키지를 설치할 수 있습니다:
Fedora
공식 소스에서 bat 패키지를 설치할 수 있습니다:
Gentoo Linux
공식 소스에서 다음 패키지인 bat을 설치할 수 있습니다:
FreeBSD의 경우
pkg를 사용하여 미리 컴파일된 bat 패키지를 설치할 수 있습니다:
또는 FreeBSD ports에서 직접 빌드할 수도 있습니다:
cd /usr/ports/textproc/bat
make install
OpenBSD의 경우
pkg_add(1)를 사용하여 bat 패키지를 설치할 수 있습니다:
nix를 통해
nix package manager를 사용하여 bat을 설치할 수 있습니다:
openSUSE의 경우
zypper를 사용하여 bat을 설치할 수 있습니다:
snap 패키지를 통해
현재 권장되는 snap 패키지는 없습니다.
기존 패키지가 있을 수는 있지만, 공식적으로 지원되지 않으며 문제를 포함할 수 있습니다.
Homebrew를 통한 macOS (또는 Linux)
Homebrew를 사용하여 bat을 설치할 수 있습니다:
MacPorts를 통한 macOS
또는 MacPorts를 사용하여 bat을 설치할 수 있습니다:
Windows의 경우
Windows에서 bat을 설치하는 몇 가지 옵션이 있습니다. bat을 설치한 후에는 [
배포판 바이너리에서 설치하기:
scoop을 통해 bat를 설치할 수 있습니다.
사전 빌드된 바이너리에서 가져오기:
Release page에서 사전 빌드된 바이너리를 다운로드할 수 있습니다.
이 경우 Visual C++ Redistributable 패키지를 설치해야 합니다.
바이너리에서 가져오기
다양한 아키텍처용 bat의 사전 빌드 버전을 Release page에서 확인하세요. 또한, 파일 이름에 musl이 포함된 아카이브에서 정적으로 링크된 바이너리도 찾을 수 있습니다.