...
bat (최신식 cat)
파일의 내용물을 표시할때 cat 명령어를 자주 쓸 것이다.
하지만 무미건조한 텍스트만 나열만 해 가독성이나 효율성이 좋지 않다.
최신식 명령어인 bat 은 cat 대신 사용할 수 있는 명령어로, 문법 강조(syntax highlight), git 통합, 자동 페이징 등 다양한 기능을 갖고 있다.
마치 리눅스 터미널에 텍스트 에디터를 띄워 보여줄 정도의 퀄리티를 자랑한다.
bat 설치
$ sudo apt install bat # 우분투
$ ln -s /usr/bin/batcat ~/.local/bin/bat # batcat을 bat으로 바꿔주는 명령어. 이걸 안해주면 batcat으로 사용해야한다.
우분투로 위의 apt 패키지 인스톨러로 설치하게 되면, 다른 명령어의 충돌때문에 bat 대신 batcat 으로 명령어를 사용해야 한다.
만일 bat으로 명령어를 사용하고 싶다면, ln -s /usr/bin/batcat ~/.local/bin/bat 명령을 통해 bat으로 사용자설정이 가능하다.
CentOS는 패키지 매니저를 지원하지 않기 때문에, 아래 링크에서 컴파일된 바이너리를 다운 받아서 사용하면 된다.
bat 사용법
파일의 확장자에 맞게 소스코드가 하이라이팅되어 표시되게 된다.
또한 less 와 같은 페이저(pager)기능도 가지고 있어, 행수가 긴 파일을 넘겨주면 자동으로 페이저모드로 열린다.
$ bat <파일명>
$ bat --help # 옵션 전체 보기
OPTIONS:
-l, --language <language>
Explicitly set the language for syntax highlighting. The language can be specified as a
name (like 'C++' or 'LaTeX') or possible file extension (like 'cpp', 'hpp' or 'md'). Use
'--list-languages' to show all supported language names and file extensions.
-L, --list-languages
Display a list of supported languages for syntax highlighting.
-m, --map-syntax <from:to>...
Map a file extension or file name to an existing syntax. For example, to highlight
*.conf files with the INI syntax, use '-m conf:ini'. To highlight files named
'.myignore' with the Git Ignore syntax, use '-m .myignore:gitignore'.
-p, --plain
Only show plain style, no decorations. This is an alias for '--style=plain'. When '-p'
is used twice ('-pp'), it also disables automatic paging (alias for '--style=plain
--pager=never').
-n, --number
Only show line numbers, no other decorations. This is an alias for '--style=numbers'
-A, --show-all
Show non-printable characters like space, tab or newline. This option can also be used
to print binary files. Use '--tabs' to control the width of the tab-placeholders.
-r, --line-range <N:M>...
Only print the specified range of lines for each file. For example:
'--line-range 30:40' prints lines 30 to 40
'--line-range :40' prints lines 1 to 40
'--line-range 40:' prints lines 40 to the end of the file
-H, --highlight-line <N>...
Highlight the N-th line with a different background color
-u, --unbuffered
This option exists for POSIX-compliance reasons ('u' is for 'unbuffered'). The output is
always unbuffered - this option is simply ignored.
-V, --version
Show version information.
cat 과 bat 명령어 출력 차이
[일반 cat 명령어]
[bat 명령어]
파일 여러개 출력
$ bat 파일1 파일2
$ bat domains.txt hosts
행 지정하여 출력
$ bat --line-range 13:24 topprocs.sh # 13행 ~ 24행 만 출력
$ bat --line-range 35:42 <파일명> # 35~42행만 표시
$ bat --line-range :20 <파일명> # 1~20행
$ bat --line-range 20: <파일명> # 20행에서 EOF까지 표시
언어 하이라이트(구문강조) 색깔 변경
bat은 출력하는 언어 파일에 대해 다양한 하이라이트 기능을 제공한다.
$ bat --list-themes # 지원하는 하이라이트 종류 표시
만일 이중에서 마음에 드는 하이라이트를 골라 출력하고 싶다면, bat 환경변수에 하이라이트명을 등록해주면 된다.
$ bat --theme GitHub testAWK1.sh # 깃헙 하이라이트를 적용하고 코드 출력
언어 구문강조 표시
만일 확장자 .py인 파이썬 파일을 구문강조하여 터미널에 표시하고 싶다면, 앞에 Python이라고 명시해주어야 한다.
$ bat -l Python setup.py
터미널 기호 조합
앞서 말했듯이, bat은 cat의 업그레이드 판이다.
따라서 기존의 cat 사용법처럼 와일드카드 문자도 쓸수 있으며, 입출력 재지정, 파이프 문법 조합 역시 그대로 사용이 가능하다.
$ bat *.md # 와일드카드 사용
$ bat header.md content.md footer.md > document.md # 입출력 재지정 조삽
$ ls -l | bat # 파이프 조합
tail 과 bat 명령 조합 (로그 파일 보기)
tail 만 사용하는것 보다 가독성 좋게 로그를 출력한다.
$ tail -f /var/log/nginx/server.log | bat --paging=never -l log
명령어와 옵션이 길어서 치기 힘드면 쉘 스크립트로 만들어 활용하는 것도 좋은 방법이다.
function bat_tail {
tail -f "$@" | bat --paging=never -l log
}
bat_tail /var/log/nginx/error.log
이외의 모던 리눅스 명령어 모음
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.