/엔지니어/Linux / Shell/현대적 CLI 도구 실전 — ripgrep·fd·f
Linux / Shell초급linuxmacosripgrepfdfzf

현대적 CLI 도구 실전 — ripgrep·fd·fzf·bat로 작업 속도 높이기

ripgrep(rg)·fd·fzf·bat를 grep·find·cat 같은 고전 도구와 비교하며 설치·기본 사용법·셸 통합을 설명합니다. 빠른 검색, 직관적 문법, 퍼지 파인더, 문법 강조 출력으로 터미널 작업 속도를 끌어올리는 실전 가이드입니다.

현대적 CLI 도구 란?

grep, find, cat은 수십 년간 터미널의 기본기였습니다. 여전히 강력하지만, 옵션이 까다롭고 대형 저장소에서는 느리며 출력도 투박합니다. 최근 Rust 등으로 다시 작성된 도구들은 같은 일을 더 빠르고, 더 합리적인 기본값으로, 더 보기 좋게 처리합니다.

고전 도구현대 대체핵심 차이
greprg (ripgrep)빠름, .gitignore 자동 존중, 재귀가 기본
findfd간결한 문법, 색상 출력, 빠른 탐색
catbat문법 강조, 줄 번호, Git 변경 표시
(없음)fzf대화형 퍼지 파인더 — 다른 명령과 결합

이들은 고전 도구를 "대체"하기보다, 일상 작업에서 손이 더 빨리 가는 보완재로 쓰는 것이 좋습니다.


설치

Bash
# macOS (Homebrew)
brew install ripgrep fd fzf bat

# Debian / Ubuntu
sudo apt install ripgrep fd-find bat
# fzf는 깃 클론 설치가 셸 통합까지 해줘 편리
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf && ~/.fzf/install

# Arch
sudo pacman -S ripgrep fd fzf bat

Debian/Ubuntu에서는 패키지 충돌 때문에 fdfdfind, batbatcat이라는 이름으로 설치됩니다. alias fd=fdfind, alias bat=batcat~/.bashrc에 추가해 두면 편합니다.


ripgrep (rg) — grep을 대체하는 코드 검색

rg는 디렉터리를 재귀적으로, .gitignore·.ignore·숨김 파일을 자동으로 제외하며 검색합니다. 그래서 별다른 옵션 없이도 코드베이스 검색에 바로 알맞습니다.

Bash
# grep 방식: 재귀 + 줄번호 + 색상을 일일이 지정
grep -rn --color "TODO" .

# rg 방식: 이 모든 게 기본값
rg TODO

자주 쓰는 옵션:

Bash
rg "fetchUser" -t js          # JavaScript 파일만 (-t 타입)
rg "error" -i                 # 대소문자 무시
rg "config" -g "*.yaml"       # glob으로 파일 한정
rg "deprecated" -l            # 매칭된 파일 이름만
rg "handler" -A 3 -B 1        # 매칭 줄 앞 1줄, 뒤 3줄 함께
rg "v\\d+\\.\\d+" -o          # 매칭 부분만 출력 (정규식)
rg --hidden --no-ignore "key" # 숨김 파일·무시 파일까지 포함
항목grepripgrep(rg)
재귀 검색-r 필요기본
.gitignore 존중안 함자동
속도보통매우 빠름(병렬)
파일 타입 필터없음-t js, -t py
기본 출력단색색상·줄번호

fd — find를 대체하는 파일 탐색

find는 표현력은 뛰어나지만 문법이 장황합니다. fd는 가장 흔한 사용 패턴을 짧고 직관적으로 만듭니다.

Bash
# find: 정형화된 장황한 문법
find . -type f -name "*.log"

# fd: 패턴만 적으면 됨 (부분 일치, 정규식)
fd "\\.log$"
fd config            # 이름에 config 포함된 항목

자주 쓰는 옵션:

Bash
fd -e log               # 확장자 log (-e)
fd -t f report         # 파일만 (-t f), 디렉터리는 -t d
fd -H secret            # 숨김 파일 포함 (-H)
fd -I node_modules      # .gitignore 무시하고 포함 (-I)
fd pattern src/         # 특정 디렉터리에서
fd -e tmp -x rm {}      # 매칭마다 명령 실행 (-x, find의 -exec 대응)
항목findfd
기본 문법-name, -type 명시패턴만
매칭정확/glob부분 일치·정규식
.gitignore무시 안 함자동 존중
출력단색색상 구분
명령 실행-exec ... \;-x / -X

bat — cat을 대체하는 파일 뷰어

batcat처럼 파일을 출력하되 문법 강조, 줄 번호, Git 변경 표시를 더합니다. 출력이 화면보다 길면 자동으로 페이저(less)에 연결됩니다.

Bash
bat src/app.js              # 문법 강조 + 줄번호
bat -p log.txt              # plain 모드 (장식 없이, cat처럼)
bat -A config.txt           # 공백·탭 등 비표시 문자 표시
bat -r 10:30 server.log     # 10~30번째 줄만
bat -l yaml deploy.tpl      # 언어 강제 지정

파이프 안에서 색상을 강제로 유지하려면 --color=always를 씁니다.

Bash
rg -l "TODO" | xargs bat
항목catbat
문법 강조없음있음
줄 번호-n기본
Git diff 표시없음변경 줄 마커
페이징없음자동(less)
스크립트용 출력그대로-p로 동일하게

bat은 사람이 읽기 좋은 도구입니다. 스크립트나 파이프에서 순수 텍스트가 필요하면 -p(plain) 또는 그냥 cat을 쓰세요. 장식 문자가 섞이면 후속 처리가 깨질 수 있습니다.


fzf — 대화형 퍼지 파인더

fzf는 위 도구들과 성격이 다릅니다. 표준 입력으로 받은 목록을 대화형으로 좁혀가며(fuzzy) 선택하게 해 주는 만능 필터입니다. 다른 명령의 출력을 받아 결합할 때 진가를 발휘합니다.

Bash
# 파일을 골라 vim으로 열기
vim $(fzf)

# fd 결과를 fzf로 고르고 bat으로 미리보기
fd -t f | fzf --preview 'bat --color=always {}'

# git 브랜치 대화형 선택 후 체크아웃
git branch | fzf | xargs git checkout

# 프로세스 선택해서 종료
ps -ef | fzf | awk '{print $2}' | xargs kill

타이핑하면 부분 문자열이 흩어져 있어도 매칭되고, 방향키로 후보를 고른 뒤 Enter로 선택합니다.


셸 통합 — 진짜 속도가 나는 부분

fzf는 설치 스크립트가 셸 키바인딩과 자동완성을 등록해 줍니다. ~/.bashrc 또는 ~/.zshrc에 다음을 추가합니다.

Bash
# bash
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
# zsh
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

그러면 다음 키바인딩이 활성화됩니다.

동작
Ctrl-R명령 히스토리를 퍼지 검색
Ctrl-T현재 디렉터리 파일을 골라 명령줄에 삽입
Alt-C하위 디렉터리로 퍼지 cd

fzf의 파일 탐색 백엔드를 fd로 바꾸면 더 빠르고 .gitignore도 존중합니다.

Bash
export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_DEFAULT_OPTS="--height 40% --reverse --border"

자주 쓰는 함수 별칭 예:

Bash
# 코드에서 검색어를 입력하며 실시간으로 rg + 미리보기
rgf() {
  rg --line-number --no-heading --color=always "${1:-}" |
    fzf --ansi --preview 'bat --color=always {1} --highlight-line {2}'
}

함께 쓰는 워크플로우 예

Bash
# 1) "deprecated"가 들어간 파일을 찾아, 골라서, 강조 출력으로 확인
rg -l deprecated | fzf --preview 'bat --color=always {}'

# 2) 로그 디렉터리에서 .log 파일을 골라 마지막 부분만 보기
fd -e log /var/log | fzf | xargs tail -n 50

# 3) 함수 정의를 검색해 위치로 점프 (에디터 연동)
rg "function " -n | fzf

정리

도구대체 대상한 줄 요약
rggrep빠르고 .gitignore를 아는 재귀 검색
fdfind패턴만 적으면 되는 직관적 파일 탐색
batcat문법 강조·줄번호·Git 표시 뷰어
fzf모든 목록을 대화형으로 좁히는 퍼지 파인더

이 네 도구는 각각도 유용하지만, rg | fzf --preview bat처럼 파이프로 조합할 때 가장 강력합니다. 고전 도구를 버릴 필요는 없습니다. 스크립트의 호환성·이식성이 중요하면 grep/find/cat을, 사람이 직접 탐색하는 일상 작업에는 현대 도구를 쓰는 식으로 역할을 나누면 됩니다.

#ripgrep#fd#fzf#bat#cli#productivity
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

관련 공식 문서GNU/Linux man 페이지

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.