개발 도구 & OS

Rust로 만든 CLI 도구 모음 — eza, bat, ripgrep 설치 가이드

by Freedancer 2026. 4. 8.

ls·cat·grep를 Rust 기반 CLI 도구 eza·bat·ripgrep으로 교체하면 컬러 출력·Git 연동·검색 속도 향상을 한 번에 얻을 수 있으며, 2026년 기준 설치부터 별칭 설정까지 10분이면 충분합니다.

 

매일 터미널에서 ls를 치고, cat으로 파일을 열고, grep으로 코드를 뒤지는 루틴 — 익숙하지만 솔직히 좀 심심합니다. 색상도 없고, Git 상태도 안 보이고, 검색 결과는 한눈에 들어오지 않죠. 그런데 이 세 가지 명령어를 Rust로 다시 만든 도구들이 있습니다. 설치 한 줄, 별칭 한 줄이면 터미널이 완전히 달라집니다.

이 글에서 다루는 세 도구는 eza(ls 대체), bat(cat 대체), ripgrep(grep 대체)입니다. 모두 Rust로 작성되어 실행이 빠르고, 기존 명령어와 인터페이스가 비슷해 학습 비용이 거의 없습니다. 그리고 한 가지 미리 알려드릴 점: 글 제목에 exa가 포함되어 있지만, exa는 2023년 6월 이후 개발이 중단되었습니다. 현재는 커뮤니티가 이어받아 만든 eza가 사실상 표준입니다. 이 글에서는 eza를 기준으로 안내하고, exa와의 차이도 함께 짚어드립니다.

cargo 설치법부터 Ubuntu/macOS 패키지 매니저 방법, 셸 별칭 설정, 그리고 세 도구를 조합해 쓰는 팁까지 단계별로 안내합니다. Rust를 처음 접하는 분도 따라올 수 있도록 구성했습니다.

📌 이 글에서 배울 수 있는 것

  1. exa가 중단되고 eza로 이어진 배경, 그리고 2026년 현재 권장 설치 방법
  2. eza·bat·ripgrep을 cargo 또는 apt/brew로 설치하고 셸 별칭으로 연결하는 방법
  3. 세 도구를 파이프로 조합해 터미널 워크플로를 한 단계 업그레이드하는 실전 팁

세 도구 한눈에 보기 — eza·bat·ripgrep

각 도구가 기존 명령어 대비 무엇을 추가로 제공하는지 먼저 정리합니다.

도구 대체 명령어 핵심 추가 기능 2026 최신 버전
eza ls 컬러 출력, Git 상태, 트리 뷰, 아이콘 0.23.4
bat cat 문법 강조, 줄 번호, Git diff 표시 0.26.1
ripgrep grep .gitignore 자동 적용, 재귀 검색, 컬러 하이라이트 15.1.0

세 도구 모두 Rust 100%로 작성되었으며, 기존 명령어와 대부분의 플래그가 호환됩니다. 셸 스크립트에서는 POSIX 호환성 때문에 기존 ls·cat·grep을 그대로 쓰는 것을 권장하고, 대화형 터미널 작업에서만 이 도구들로 전환하는 방식이 실용적입니다.

ls와 eza의 터미널 출력 결과를 나란히 비교한 화면

기존 ls 출력과 eza 출력을 나란히 비교한 스크린샷

exa는 왜 eza가 됐나?

exa는 Benjamin Sago가 2014년 Rust로 작성한 ls 대체 도구입니다. 한동안 개발자 커뮤니티에서 큰 인기를 끌었지만, 2023년 6월을 기점으로 저자와 연락이 닿지 않으면서 사실상 개발이 중단되었습니다. 이에 커뮤니티가 exa를 포크(fork)하여 만든 것이 eza입니다.

eza는 exa의 모든 기능을 그대로 이어받으면서 "Grid 버그" 수정, 하이퍼링크 지원, 마운트 포인트 세부 정보, SELinux 컨텍스트 출력, Git 저장소 상태, 밝은 터미널 색상 지원, 보안 패치 등 다수의 개선 사항을 추가했습니다. 2026년 현재 eza 0.23.4가 최신이며, Windows·macOS·Linux·BSD 모두 지원합니다.

⚠️ 주의: cargo install exa 또는 오래된 패키지 저장소에서 exa를 설치하면 보안 패치가 적용되지 않은 구버전이 설치될 수 있습니다. 2026년 기준 eza 사용을 권장합니다.

eza 설치 & 설정

⚙️ 준비물 & 소요 시간

  • 운영체제: Linux / macOS / Windows(WSL2)
  • Rust 툴체인(cargo 방식) 또는 apt·brew(패키지 방식)
  • 소요 시간: 약 2~5분

🕐 오늘 할 일 체크리스트

  • ☐ eza 설치 (cargo 또는 apt/brew)
  • ☐ bat 설치
  • ☐ ripgrep 설치
  • ☐ ~/.bashrc 또는 ~/.zshrc에 별칭 추가
  • source ~/.bashrc로 별칭 적용
  • ☐ 세 도구 조합 파이프라인 테스트

방법 A — cargo로 설치

cargo install eza

Rust 툴체인이 설치되어 있다면 위 한 줄로 끝납니다. Rust가 없다면 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh로 먼저 설치하세요. 컴파일에 1~3분 소요됩니다.

방법 B — 패키지 매니저로 설치

# Ubuntu / Debian
sudo apt install eza

# macOS (Homebrew)
brew install eza

Ubuntu의 경우 저장소 버전이 최신보다 뒤처질 수 있습니다. 최신 버전이 필요하다면 cargo 방식을 권장합니다.

eza 주요 사용법

# 기본 목록 (컬러 출력)
eza

# 숨김 파일 포함, 상세 보기
eza -la

# Git 상태 함께 표시
eza -la --git

# 트리 구조, 2단계까지
eza --tree --level=2

# 파일 타입 아이콘 표시 (Nerd Font 필요)
eza --icons

# 수정 시간 기준 정렬
eza -la --sort=modified

--icons 플래그는 Nerd Fonts(nerdfonts.com)가 설치된 터미널 폰트에서만 아이콘이 올바르게 표시됩니다. FiraCode Nerd Font나 JetBrainsMono Nerd Font가 인기 있는 선택입니다. 아이콘 없이도 나머지 기능은 모두 동작합니다.

bat 설치 & 설정

bat은 cat의 Rust 대체 도구입니다. 파일을 열면 문법 강조(syntax highlighting), 줄 번호, Git 변경 사항 표시가 자동으로 적용됩니다. 출력이 화면보다 길면 자동으로 페이저(less)가 열립니다. 2026년 기준 최신 버전은 0.26.1입니다.

설치

# cargo
cargo install bat

# Ubuntu / Debian
sudo apt install bat

# macOS
brew install bat

⚠️ Ubuntu 주의사항: apt로 설치하면 바이너리 이름이 bat이 아닌 batcat으로 설치됩니다. 별칭을 alias bat='batcat'으로 설정하거나, cargo로 설치하면 bat으로 바로 사용할 수 있습니다.

bat 주요 사용법

# 파일 열기 (문법 강조 + 줄 번호)
bat config.toml

# 페이지 없이 cat처럼 출력
bat --paging=never config.toml

# 특정 테마 적용
bat --theme="Catppuccin Mocha" main.rs

# 사용 가능한 테마 목록
bat --list-themes

# 언어 지정 (자동 감지 불가 시)
bat -l log app.log

# 비인쇄 문자 표시
bat -A config.toml

테마를 영구적으로 설정하려면 셸 설정 파일에 export BAT_THEME="Catppuccin Mocha"를 추가하세요. 매번 --theme를 입력할 필요가 없어집니다. 사용 가능한 테마는 bat --list-themes로 확인할 수 있으며, Dracula·Nord·OneHalfDark 등 수십 가지가 기본 포함되어 있습니다.

bat은 ripgrep과 함께 쓸 때 시너지가 큽니다. ripgrep으로 검색한 결과를 bat으로 미리보기하는 방법은 터미널 커스터마이징 도구 활용 가이드에서도 소개한 바 있습니다.

bat 명령으로 main.rs 파일을 열었을 때 문법 강조, 줄 번호, Git 변경 표시가 적용된 터미널 화면

bat으로 Rust 소스 파일을 열었을 때 문법 강조와 줄 번호가 표시된 터미널 화면

ripgrep 설치 & 설정

ripgrep(명령어: rg)은 grep의 Rust 대체 도구입니다. 재귀적으로 디렉터리를 검색하면서 .gitignore에 명시된 파일과 숨김 파일·바이너리 파일을 자동으로 제외합니다. 대규모 코드베이스에서 grep 대비 수십 배 빠른 속도를 보입니다. 2026년 기준 최신 버전은 15.1.0입니다.

설치

# cargo
cargo install ripgrep

# Ubuntu / Debian
sudo apt install ripgrep

# macOS
brew install ripgrep

ripgrep 주요 사용법

# 현재 디렉터리에서 "TODO" 재귀 검색
rg "TODO"

# 대소문자 구분 없이 검색
rg -i "error"

# 특정 파일 유형만 검색
rg "fn main" --type rust

# 매칭 전후 2줄 함께 출력
rg -C 2 "panic!"

# 숨김 파일도 포함해 검색
rg --hidden "secret"

# .gitignore 무시하고 검색
rg --no-ignore "deprecated"

# 검색 결과를 파일명만 출력
rg -l "TODO"

ripgrep은 스마트 케이스(smart case) 검색을 지원합니다. 패턴이 모두 소문자일 때는 대소문자를 구분하지 않고, 대문자가 하나라도 포함되면 정확히 일치하는 결과만 반환합니다. 별도 플래그 없이도 직관적으로 동작합니다.

💡 필자의 경험: Node.js 기반 프로젝트(node_modules 포함)에서 grep -r "useEffect"를 실행하면 수 초가 걸리지만, rg "useEffect"는 node_modules를 .gitignore로 자동 제외해 1초 미만에 결과를 반환합니다. 실무에서 체감 속도 차이가 가장 크게 느껴지는 상황입니다. (출처: ripgrep 공식 GitHub)

셸 별칭 설정 — .bashrc / .zshrc

세 도구를 설치한 뒤 기존 명령어 이름 그대로 쓰고 싶다면 셸 별칭(alias)을 설정합니다. ~/.bashrc(bash) 또는 ~/.zshrc(zsh) 파일 끝에 아래 내용을 추가하세요.

# eza (ls 대체)
alias ls='eza'
alias ll='eza -la --git'
alias lt='eza --tree --level=2'

# bat (cat 대체)
# Ubuntu apt 설치 시: alias bat='batcat'
alias cat='bat --paging=never'

# ripgrep (grep 대체)
alias grep='rg'

# 테마 설정 (선택)
export BAT_THEME="OneHalfDark"

저장 후 source ~/.bashrc(또는 source ~/.zshrc)를 실행하면 즉시 적용됩니다. 이후 터미널에서 ls를 치면 eza가, cat을 치면 bat이 실행됩니다.

💡 : 셸 스크립트 내부에서는 별칭이 적용되지 않습니다. alias ls='eza'를 설정해도 #!/bin/bash로 시작하는 스크립트 안에서 ls는 여전히 원래 ls입니다. 스크립트 호환성을 위해 원래 명령어를 사용하고 싶을 때는 명령어 앞에 역슬래시(\ls)를 붙이면 별칭을 우회할 수 있습니다.

세 도구 조합해서 쓰기

eza·bat·ripgrep은 각각 독립적으로도 훌륭하지만, 파이프(|)로 연결하면 강력한 워크플로를 만들 수 있습니다.

ripgrep + bat — 검색 결과를 문법 강조로 보기

# rg로 찾은 파일을 bat으로 미리보기
rg -l "TODO" | xargs bat

eza + ripgrep — Git 상태 확인 후 코드 검색

# Git에서 수정된 파일 목록 확인 후 해당 파일에서 패턴 검색
eza -la --git | grep " M "
rg "fixme" --type rust

fzf와 조합 — 퍼지 검색 미리보기

# fzf가 설치되어 있을 때: 파일 선택 + bat 미리보기
find . | fzf --preview 'bat --color=always {}'

fzf(퍼지 파인더)는 터미널 인터랙티브 필터링 도구로, bat과 함께 쓰면 파일 내용을 미리보며 선택할 수 있는 간이 파일 브라우저가 됩니다. sudo apt install fzf 또는 brew install fzf로 별도 설치가 필요합니다.

이 외에도 터미널 환경을 더 풍부하게 꾸밀 수 있는 도구들이 있습니다. weathr로 터미널에 실시간 날씨 애니메이션을 띄우는 방법은 weathr로 터미널에 비·눈·천둥 ASCII 애니메이션 띄우는 방법에서 소개했습니다.

자주 묻는 질문 (FAQ)

Q. exa와 eza 중 어느 것을 설치해야 하나요?

2026년 기준 eza를 설치하는 것을 권장합니다. exa는 2023년 6월 이후 개발이 중단되어 보안 패치나 새 기능 업데이트가 없습니다. eza는 exa의 후속 프로젝트로 모든 기능을 그대로 이어받으면서 다수의 버그 수정과 새 기능이 추가되었습니다.

Q. Ubuntu에서 bat이 batcat으로 설치됩니다. 왜 그런가요?

Ubuntu/Debian 저장소에는 bacula-console-qt라는 패키지가 bat이라는 이름을 이미 사용하고 있어, 이름 충돌을 피하기 위해 batcat으로 설치됩니다. alias bat='batcat'을 셸 설정 파일에 추가하거나, cargo install bat으로 설치하면 bat 명령어로 바로 사용할 수 있습니다.

Q. ripgrep이 .gitignore에 없는 파일도 건너뛰는 경우가 있어요.

ripgrep은 기본적으로 숨김 파일(점으로 시작하는 파일·폴더)과 바이너리 파일도 건너뜁니다. 숨김 파일까지 검색하려면 --hidden 플래그를, .gitignore 규칙을 무시하려면 --no-ignore 플래그를 추가하세요. 두 플래그를 함께 쓰면 rg --hidden --no-ignore "pattern"이 됩니다.

Q. 셸 스크립트 안에서 eza·bat·rg를 써도 되나요?

기능적으로는 사용 가능하지만 권장하지 않습니다. eza·bat·rg는 대화형 터미널 용도에 최적화되어 있고, POSIX 표준을 완전히 따르지 않아 스크립트 호환성 문제가 생길 수 있습니다. 셸 스크립트에서는 ls·cat·grep 원본을 사용하고, 별칭은 대화형 세션에서만 적용되도록 설정하는 것이 실무적입니다.

Q. eza --icons를 쓰면 깨진 네모가 나와요.

Nerd Fonts가 설치된 폰트를 터미널에서 사용 중이어야 아이콘이 올바르게 표시됩니다. nerdfonts.com에서 FiraCode Nerd Font 또는 JetBrainsMono Nerd Font를 설치한 뒤, 터미널 에뮬레이터 설정에서 해당 폰트로 변경하세요. 아이콘 없이 eza를 쓰려면 --icons 플래그를 빼면 됩니다.

Q. Windows에서도 사용할 수 있나요?

eza와 ripgrep은 Windows를 공식 지원합니다. bat도 Windows에서 동작합니다. 다만 WSL2(Windows Subsystem for Linux) 환경에서 사용하면 Linux와 동일한 경험을 얻을 수 있어 WSL2를 권장합니다. 네이티브 Windows에서 사용할 경우 일부 기능(Git 연동, 색상 표시 등)이 터미널 에뮬레이터에 따라 다르게 동작할 수 있습니다.

Q. 세 도구를 한 번에 설치하는 방법이 있나요?

Ubuntu/Debian에서는 sudo apt install eza bat ripgrep 한 줄로 설치할 수 있습니다. macOS에서는 brew install eza bat ripgrep이 동일하게 동작합니다. cargo를 선호한다면 cargo install eza bat ripgrep을 한 줄로 실행하면 세 개가 순서대로 설치됩니다.

Q. alias cat='bat'을 설정하면 부작용이 생기지 않나요?

대부분의 상황에서 문제없습니다. bat은 파이프나 리다이렉션을 감지하면 자동으로 순수 텍스트 모드로 전환되어 cat처럼 동작합니다. 다만 페이징이 불편하다면 alias cat='bat --paging=never'로 설정하는 것을 권장합니다. 원본 cat이 필요할 때는 \cat으로 별칭을 우회할 수 있습니다.

 

 

마무리 — 터미널을 한 단계 업그레이드하는 가장 쉬운 방법

eza·bat·ripgrep은 기존 명령어와 인터페이스가 거의 동일해서 학습 부담 없이 바로 쓸 수 있습니다. 설치 한 줄, 별칭 세 줄이면 터미널이 컬러풀하고 빠른 환경으로 바뀝니다. exa를 이미 쓰고 계신 분이라면 cargo install eza로 교체하는 것을 권장합니다. 개발이 중단된 도구보다 활발히 유지되는 eza가 보안과 안정성 면에서 낫습니다.

💬 세 도구 중 가장 먼저 써보고 싶은 것은 무엇인가요? 또는 이미 쓰고 계신 분은 어떤 점이 가장 마음에 드셨는지 댓글로 알려주세요.
🔖 나중에 설치하려는 분은 이 글을 북마크해 두시면 편리합니다.
📤 터미널 환경을 개선하고 싶은 개발자 동료에게 이 글을 공유해 주세요.

ℹ️ 이 블로그는 Google 애드센스를 통해 광고 수익을 얻을 수 있습니다. 자세한 내용은 개인정보처리방침을 참고하세요.

※ 이 글은 2026-04-08 기준으로 작성되었습니다. 최신 정보는 공식 사이트에서 확인하세요.