전통적인 Unix 명령어들이 Rust, Go, Zig로 재작성된 모던 CLI 도구들이 2026년에 완전히 주류가 되었습니다. ls, cat, find, grep 등의 레거시 명령어 대비 수십 배 빠른 속도, 컬러 출력, 직관적인 인터페이스를 제공합니다. 이 글에서는 실무 개발자가 즉시 도입해야 할 핵심 CLI 도구들을 설치부터 활용법까지 상세히 다룹니다.

1. eza - ls의 완벽한 대체

eza(구 exa)는 ls를 대체하는 모던 파일 목록 도구입니다. Git 상태 표시, 아이콘, 트리 뷰 등을 기본 지원합니다.

# 설치
brew install eza          # macOS
sudo apt install eza      # Ubuntu/Debian
pacman -S eza             # Arch Linux

# 기본 사용
eza                       # 기본 목록
eza -la                   # 상세 목록 (권한, 크기, 날짜)
eza -la --icons           # 파일 타입별 아이콘 표시
eza --tree --level=3      # 트리 뷰 (3단계 깊이)
eza -la --git             # Git 상태 표시 (M, N, I 등)
eza -la --git-repos       # Git 저장소 상태 요약

# 정렬 옵션
eza -la --sort=modified   # 수정일 기준 정렬
eza -la --sort=size       # 파일 크기 기준
eza -la --sort=extension  # 확장자 기준

# 필터
eza -la --only-dirs       # 디렉토리만
eza -la --only-files      # 파일만
eza -la -I 'node_modules|.git'  # 특정 패턴 제외

# 셸 별칭 설정 (~/.zshrc)
alias ls='eza'
alias ll='eza -la --icons --git'
alias lt='eza --tree --level=2 --icons'

2. bat - cat의 구문 강조 버전

bat은 cat의 대체 도구로, 구문 강조, 줄 번호, Git diff 통합을 제공합니다.

# 설치
brew install bat

# 기본 사용
bat README.md             # 구문 강조 + 줄 번호
bat -l json data.txt      # 언어 수동 지정
bat --style=plain file.js # 줄 번호/테두리 없이
bat -A file.txt           # 보이지 않는 문자 표시

# 여러 파일 비교
bat --diff file1.js file2.js

# 범위 지정
bat --line-range 10:20 main.py  # 10~20번째 줄만

# 파이프라인에서 사용
curl -s https://api.example.com | bat -l json
docker logs my-app | bat -l log

# Git과 통합: 변경된 줄 하이라이트
git diff | bat
git show HEAD:src/main.js | bat -l js

# 테마 목록 확인 및 설정
bat --list-themes
export BAT_THEME="Catppuccin Mocha"

# 셸 별칭
alias cat='bat --paging=never'

3. fd - find의 직관적 대체

fd는 find보다 5배 이상 빠르며, .gitignore를 자동 인식합니다.

# 설치
brew install fd

# 기본 사용
fd                        # 현재 디렉토리의 모든 파일
fd query                  # 이름에 'query' 포함된 파일
fd -e js                  # .js 파일만 검색
fd -e ts -e tsx           # .ts와 .tsx 파일
fd -t d                   # 디렉토리만 검색
fd -t f                   # 파일만 검색

# 정규식 검색
fd '^test.*\.py$'         # test로 시작하는 .py 파일
fd -g '*.config.*'        # glob 패턴

# 숨김 파일 포함 / .gitignore 무시
fd -H query               # 숨김 파일 포함
fd -I query               # .gitignore 무시
fd -HI query              # 둘 다

# 특정 디렉토리 제외
fd -E node_modules -E .git query

# 결과에 명령 실행
fd -e jpg --exec convert {} {.}.webp   # jpg를 webp로 변환
fd -e ts --exec wc -l {}               # ts 파일별 줄 수

# 크기/시간 필터
fd --size +1m             # 1MB 이상 파일
fd --changed-within 1d    # 최근 24시간 변경 파일

4. ripgrep (rg) - grep의 초고속 대체

ripgrep은 가장 빠른 텍스트 검색 도구로, 대규모 코드베이스에서 필수입니다.

# 설치
brew install ripgrep

# 기본 사용
rg "pattern"              # 현재 디렉토리에서 검색
rg -i "pattern"           # 대소문자 무시
rg -w "word"              # 단어 단위 매칭
rg -l "pattern"           # 매칭되는 파일명만 출력
rg -c "pattern"           # 파일별 매칭 횟수

# 컨텍스트
rg -C 3 "TODO"            # 전후 3줄 포함
rg -A 5 "function"        # 뒤 5줄 포함
rg -B 2 "error"           # 앞 2줄 포함

# 파일 타입 필터
rg -t js "import"         # JS 파일에서만 검색
rg -T test "function"     # 테스트 파일 제외
rg -g '*.py' "def"        # glob 패턴으로 필터
rg -g '!*.min.js' "query" # 특정 패턴 제외

# 치환 (미리보기)
rg "old_name" -r "new_name"      # 치환 결과 미리보기
rg "v([0-9]+)" -r 'version $1'  # 캡처 그룹 사용

# JSON 출력
rg --json "pattern" | jq '.data.lines.text'

# 멀티라인 검색
rg -U 'function.*\{[\s\S]*?return' # 여러 줄에 걸친 패턴

5. fzf - 범용 퍼지 파인더

fzf는 모든 텍스트 입력에 대화형 퍼지 검색을 추가하는 만능 도구입니다.

# 설치
brew install fzf
$(brew --prefix)/opt/fzf/install  # 셸 통합 설치

# 기본 사용
fzf                       # 파일 검색
cat file.txt | fzf         # 줄 단위 검색
history | fzf              # 명령어 히스토리 검색

# 셸 통합 (설치 후 자동)
# Ctrl+R: 명령어 히스토리 퍼지 검색
# Ctrl+T: 파일 퍼지 검색하여 명령줄에 삽입
# Alt+C: 디렉토리 퍼지 검색하여 cd

# 미리보기 창 활성화
fzf --preview 'bat --color=always {}'
fzf --preview 'bat --style=numbers --color=always --line-range :50 {}'

# Git 브랜치 선택
git branch | fzf | xargs git checkout

# 프로세스 킬
ps aux | fzf | awk '{print $2}' | xargs kill

# 환경 변수 (~/.zshrc)
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
export FZF_DEFAULT_OPTS='--height 40% --layout=reverse --border'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_ALT_C_COMMAND='fd --type d --hidden --follow --exclude .git'

6. zoxide - 스마트 cd

zoxide는 방문 빈도를 학습하여 디렉토리 이동을 자동화합니다.

# 설치
brew install zoxide

# 셸 초기화 (~/.zshrc)
eval "$(zoxide init zsh)"

# 사용
z projects         # ~/projects로 이동 (학습된 경로)
z cla              # ~/projects/claude-channel로 이동 (부분 매칭)
z proj cla         # 여러 키워드 조합
zi                 # 대화형 선택 (fzf 통합)

# 경로 목록 확인
zoxide query -ls   # 학습된 경로와 점수 표시

7. delta - Git diff 시각화

# 설치
brew install git-delta

# Git 설정 (~/.gitconfig)
[core]
    pager = delta
[interactive]
    diffFilter = delta --color-only
[delta]
    navigate = true
    light = false
    side-by-side = true
    line-numbers = true
    syntax-theme = "Catppuccin Mocha"

# 사용: git diff가 자동으로 delta를 사용
git diff
git log -p
git show HEAD
git diff --staged

전체 설치 원라이너

# macOS (Homebrew)
brew install eza bat fd ripgrep fzf zoxide git-delta starship

# Ubuntu/Debian
sudo apt install eza bat fd-find ripgrep fzf zoxide git-delta

# 셸 설정 (~/.zshrc) 최종
alias ls='eza'
alias ll='eza -la --icons --git'
alias lt='eza --tree --level=2 --icons'
alias cat='bat --paging=never'
alias find='fd'
alias grep='rg'
eval "$(zoxide init zsh)"
eval "$(fzf --zsh)"
eval "$(starship init zsh)"

모던 CLI 도구는 단순히 보기 좋은 것을 넘어, 실제 작업 속도를 크게 향상시킵니다. 특히 ripgrep의 검색 속도, fd의 직관적인 문법, fzf의 대화형 검색은 한 번 사용하면 레거시 명령어로 돌아갈 수 없을 만큼 생산성 차이가 큽니다. 오늘 바로 설치해서 사용해보기를 강력히 권장합니다.