본문 바로가기
C.W.K.
Stream
Lesson 01 of 08 · published

모던 대체품: bat, eza, fd, ripgrep, dust, duf

~13 min · bat, eza, fd, ripgrep, dust, duf

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

같은 일, 더 친절한 기본값

bat, eza, fd, ripgrep, dust와 duf는 고전 Unix 명령이 하던 일을 사람이 읽기 좋은 기본 출력으로 수행해. 목적은 비슷하지만 옵션과 출력 계약까지 호환되지는 않아. 대화형 탐색에서는 새 도구를 활용하고, 이식성과 안정된 출력이 필요한 스크립트에서는 원래 명령의 계약을 지켜.

각 도구가 맡는 일

  • batcat처럼 파일을 보여 주면서 구문 강조, 줄 번호와 페이지 단위 탐색을 더해.
  • ezals와 비슷한 목록에 색, Git 상태와 트리 보기를 더해.
  • fdfind보다 짧은 검색 문법을 제공하고 기본적으로 .gitignore의 제외 규칙을 따라.
  • ripgrep(rg)은 저장소 검색에 맞춘 정규식 검색기로, 제외 규칙을 따르고 바이너리 파일을 건너뛰어.
  • dustdu의 디스크 사용량을 정렬된 트리로 보여 줘.
  • dufdf의 마운트 정보를 읽기 쉬운 표로 보여 줘.

한 번에 설치

brew install bat eza fd ripgrep dust duf

자주 쓰게 될 rg와 fd

rg TODO --type py        # Python 파일의 모든 TODO
rg -l 'class Foo' src/    # 패턴이 든 파일명만 출력
rg -A 3 'def main'        # 일치한 줄 뒤의 세 줄도 출력
fd '\.test\.ts$'         # TypeScript 테스트 파일 찾기
fd -e jpg -x convert {} {.}.png   # 모든 jpg를 png로

이름을 덮어쓰기 전에 계약을 비교해

alias cat=bat처럼 원래 명령 이름을 바꾸면 옵션과 출력 차이가 보이지 않게 돼. 대화형 셸에서 별칭이 스크립트에 그대로 적용되지 않는 경우가 많더라도, 복사한 명령과 함수 안에서 혼란이 생겨. 새 이름 그대로 익혀 두면 어느 도구의 동작인지 분명해.

빠른 이유를 공정하게 비교해

ripgrep은 기본적으로 숨은 파일, ignore된 디렉터리, 바이너리 파일을 건너뛰어. grep과 속도를 비교하려면 검색 범위와 정규식 의미를 먼저 맞춰야 해. 더 적은 데이터를 읽은 결과와 같은 데이터를 더 빨리 처리한 결과는 다른 이야기야.

사람용 출력과 기계용 출력을 나눠

색, 아이콘, 표, 자동 pager는 사람이 읽을 때 훌륭하지만 파이프와 파서에는 잡음이 될 수 있어. 자동화에 넣기 전에는 색을 끄는 옵션, 기계가 안정적으로 읽을 수 있는 형식, 종료 상태를 확인해. 편한 기본값이 곧 안정된 프로토콜은 아니야.

Code

일상 ripgrep 레시피·bash
# Python 파일의 TODO와 앞뒤 두 줄 찾기
rg --type py -C 2 TODO
# 다음 xargs 단계에 넘길 파일명만 출력
rg -l 'class User' src/ | xargs wc -l
# 한 디렉터리에서 테스트 파일을 빼고 검색
rg --glob '!**/test_*.py' 'def authenticate'
fd 패턴·bash
fd config           # 이름에 config가 든 모든 파일과 디렉터리
fd -e md            # 확장자로 필터링
fd -t f -e log -d 2 # 깊이 2까지 .log 파일만 찾기

External links

Exercise

brew install bat eza fd ripgrep dust duf로 도구를 설치한 뒤 시험 저장소에서 각각 한 번씩 사용해. 대응하는 고전 도구와 검색 범위, 제외 규칙, 출력 형식과 종료 상태를 비교해 어떤 상황에 새 도구가 더 친절한지 적어 봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.