작성일 댓글 남기기

모던 CLI 도구 추천 – 터미널 생산성을 2배로 높이는 필수 유틸 7선

모던 CLI 도구로 향상된 터미널 화면

터미널, 아직도 기본 명령어만 쓰고 계신가요?

개발자든 서버 관리자든, 터미널은 매일 쓰는 작업 공간입니다. ls로 파일 목록을 확인하고, cat으로 파일 내용을 읽고, find로 파일을 찾고, grep으로 텍스트를 검색하는 건 수십 년째 변하지 않는 루틴이죠. 하지만 이 전통적인 유닉스 명령어들은 1970~80년대에 설계된 것이라, 현대 개발 환경에서 아쉬운 부분이 많습니다. 출력이 단조롭고, 속도가 느리며, 사용자 친화적이지 않습니다.

최근 몇 년 사이 Rust와 Go 언어로 작성된 모던 CLI 도구들이 폭발적으로 늘어났습니다. 이 도구들은 기존 명령어와 동일한 역할을 하면서도 구문 강조, 퍼지 검색, Git 연동, 압도적 속도 향상 같은 현대적 기능을 제공합니다. 한 번 써보면 기본 명령어로 돌아가기 어려울 정도입니다.

이 글에서는 터미널 생산성을 실질적으로 높여주는 모던 CLI 도구 7가지를 소개합니다. 각 도구의 설치 방법, 핵심 사용법, 그리고 기존 명령어 대비 어떤 점이 좋은지를 구체적으로 다룹니다. WSL, macOS, Linux 어디서든 바로 적용할 수 있으니 하나씩 따라해 보세요.

기존 명령어와 모던 CLI 도구 비교표

1. bat – cat을 대체하는 구문 강조 파일 뷰어

기존 cat의 한계

cat 명령어는 파일 내용을 터미널에 그대로 출력합니다. 단순하고 빠르지만, 코드 파일을 읽을 때 구문 강조가 전혀 없어 가독성이 떨어집니다. 긴 파일은 스크롤이 순식간에 지나가 버리고, 줄 번호도 표시되지 않습니다.

bat이 해결하는 것

bat은 Rust로 작성된 cat의 현대적 대안입니다. 파일을 출력할 때 자동 구문 강조를 적용하고, 줄 번호를 표시하며, Git 변경 사항까지 좌측 여백에 시각적으로 보여줍니다. 200개 이상의 프로그래밍 언어 구문을 지원합니다.

설치 및 사용법

macOS에서는 brew install bat, Ubuntu에서는 sudo apt install bat(패키지명이 batcat인 경우 alias 설정 필요), Windows에서는 winget install sharkdp.bat 또는 scoop install bat으로 설치합니다.

  • bat README.md – 마크다운 파일을 구문 강조와 함께 출력
  • bat -n src/main.py – 줄 번호만 표시하고 헤더·그리드 생략
  • bat –diff file1.txt file2.txt – 두 파일의 차이를 색상으로 비교
  • bat -r 10:20 config.yml – 10~20번 줄만 출력
  • bat –theme=TwoDark src/*.js – 원하는 테마 지정하여 여러 파일 출력

특히 bat –list-themes로 내장 테마 목록을 확인할 수 있고, export BAT_THEME=”Dracula”처럼 쉘 설정에 기본 테마를 지정해두면 편리합니다. 파이프와도 잘 연동되어 curl -s https://example.com/data.json | bat -l json 같은 조합도 유용합니다.

2. eza – ls를 대체하는 파일 목록 도구

기존 ls의 한계

ls는 파일 목록을 텍스트로 나열합니다. ls -la로 상세 정보를 볼 수 있지만, 파일 종류 구분이 어렵고, Git 상태를 알 수 없으며, 트리 구조를 보려면 별도로 tree 명령을 설치해야 합니다.

eza가 해결하는 것

eza는 exa의 후속 프로젝트로, ls를 완전히 대체하는 모던 파일 목록 도구입니다. 파일 타입별 아이콘과 색상 구분, Git 상태 표시, 내장 트리 뷰, 하이퍼링크 지원까지 제공합니다. Nerd Font를 설치하면 아이콘이 더욱 풍부해집니다.

설치 및 사용법

brew install eza (macOS), sudo apt install eza (Ubuntu 22.10+), cargo install eza (Rust 환경)로 설치합니다.

  • eza -la –icons – 아이콘 포함 상세 목록 (ls -la 대체)
  • eza –tree –level=2 – 2단계 깊이 트리 구조 출력
  • eza -la –git – 각 파일의 Git 상태(수정/추가/무시) 표시
  • eza –sort=modified –reverse – 최근 수정순 정렬
  • eza –group-directories-first -la – 디렉토리를 상단에 모아서 표시

쉘 설정 파일(~/.bashrc 또는 ~/.zshrc)에 alias ls=”eza –icons –group-directories-first”를 추가하면, 기존 ls 명령어를 자연스럽게 eza로 대체할 수 있습니다. 특히 프로젝트 루트에서 eza –tree –git-ignore –level=3을 실행하면 .gitignore에 포함된 파일을 제외한 깔끔한 프로젝트 구조를 한눈에 볼 수 있어 매우 유용합니다.

모던 CLI 도구 간 연동 워크플로

3. fd – find를 대체하는 직관적 파일 검색 도구

기존 find의 한계

find는 강력하지만, 문법이 직관적이지 않습니다. find . -name “*.py” -type f처럼 옵션 순서와 따옴표 처리가 번거롭고, .git이나 node_modules 같은 불필요한 디렉토리까지 탐색해서 느립니다.

fd가 해결하는 것

fd는 Rust로 작성된 find의 간결한 대안입니다. 기본적으로 정규표현식을 지원하고, .gitignore를 자동 존중하며, 숨김 파일을 기본 제외합니다. 무엇보다 문법이 극도로 간결합니다. 대규모 프로젝트에서 find 대비 5~10배 빠른 속도를 보여줍니다.

설치 및 사용법

brew install fd, sudo apt install fd-find(Ubuntu에서는 fdfind로 설치되므로 alias 필요), scoop install fd로 설치합니다.

  • fd readme – 현재 디렉토리 아래에서 “readme” 포함 파일 검색
  • fd -e py – .py 확장자 파일만 검색
  • fd -e js -x wc -l – 모든 JS 파일의 줄 수를 한 번에 계산
  • fd -H -I .env – 숨김 파일(-H)과 .gitignore 무시 파일(-I) 포함 검색
  • fd -t d config – “config”가 포함된 디렉토리만 검색 (-t d = type directory)
  • fd ‘\.(jpg|png|gif)$’ – 정규표현식으로 이미지 파일 검색

fd는 -x(각 결과에 명령 실행)와 -X(모든 결과를 한꺼번에 명령에 전달) 옵션이 강력합니다. 예를 들어 fd -e tmp -x rm은 모든 .tmp 파일을 한 번에 삭제하고, fd -e md -X bat은 찾은 모든 마크다운 파일을 bat으로 한꺼번에 출력합니다.

4. ripgrep(rg) – grep을 대체하는 초고속 텍스트 검색

기존 grep의 한계

grep -r로 재귀 검색을 하면, 바이너리 파일·.git 디렉토리·node_modules까지 모두 뒤져서 느리고 노이즈가 많습니다. 대규모 코드베이스에서 특정 문자열을 찾을 때 체감 속도 차이가 큽니다.

ripgrep이 해결하는 것

ripgrep(rg)은 Andrew Galloway가 Rust로 만든 검색 도구입니다. .gitignore를 자동 존중하고, 바이너리 파일을 건너뛰며, 멀티스레드 병렬 검색으로 압도적 속도를 제공합니다. 리눅스 커널 소스(약 7천만 줄) 전체를 2초 안에 검색할 수 있을 정도입니다. VS Code의 내장 검색 엔진이 바로 ripgrep입니다.

설치 및 사용법

brew install ripgrep, sudo apt install ripgrep, scoop install ripgrep으로 설치합니다.

  • rg “TODO” – 현재 디렉토리 아래에서 TODO 문자열 검색
  • rg -i “error” –type py – 대소문자 무시(-i), Python 파일만 대상
  • rg -C 3 “function” – 일치 줄 위아래 3줄 컨텍스트 포함
  • rg –json “패턴” | jq – JSON 형식 출력으로 스크립트 연동
  • rg -l “deprecated” – 일치하는 파일 이름만 출력 (내용 생략)
  • rg “import.*React” -g ‘*.tsx’ – 글로브 패턴으로 대상 파일 필터링

ripgrep의 –type-add 옵션으로 커스텀 파일 타입을 정의할 수도 있습니다. rg –type-add ‘config:*.{yml,yaml,toml,json}’ –type config “database”처럼 설정 파일만 골라서 검색하는 식입니다. 대규모 모노레포에서 작업할 때 특히 생산성 차이가 극명하게 드러납니다.

5. fzf – 모든 것에 퍼지 검색을 더하는 인터랙티브 필터

fzf란?

fzf는 범용 커맨드라인 퍼지 파인더(fuzzy finder)입니다. 표준 입력으로 들어오는 모든 텍스트 목록에 대해 실시간 퍼지 검색 인터페이스를 제공합니다. 파일 찾기, 명령어 히스토리 검색, Git 브랜치 선택, 프로세스 종료 등 거의 모든 터미널 작업에 인터랙티브 검색을 붙일 수 있습니다.

설치 및 핵심 사용법

brew install fzf, sudo apt install fzf, scoop install fzf로 설치합니다. 설치 후 fzf –install(또는 해당 셸 설정 추가)을 실행하면 키 바인딩이 활성화됩니다.

  • Ctrl+R – 명령어 히스토리 퍼지 검색 (기본 reverse-search 대체)
  • Ctrl+T – 현재 디렉토리 파일을 퍼지 검색해서 경로 삽입
  • Alt+C – 디렉토리를 퍼지 검색해서 cd
  • fd | fzf – fd의 검색 결과를 fzf로 인터랙티브 필터링
  • rg -l “TODO” | fzf –preview ‘bat –color=always {}’ – TODO 포함 파일을 찾고, 미리보기까지 표시

fzf의 진정한 힘은 다른 도구와 조합할 때 나옵니다. 셸 설정에 다음과 같은 함수를 추가하면 워크플로가 완전히 달라집니다.

  • Git 브랜치 선택: git branch | fzf | xargs git checkout
  • Docker 컨테이너 로그: docker ps –format ‘{{.Names}}’ | fzf | xargs docker logs -f
  • 프로세스 종료: ps aux | fzf | awk ‘{print $2}’ | xargs kill

fzf는 –preview 옵션으로 선택 전 미리보기를 지원합니다. bat과 조합하면 파일을 선택하기 전에 구문 강조된 내용을 실시간으로 확인할 수 있어서, IDE의 파일 탐색기 못지않은 경험을 터미널에서 누릴 수 있습니다.

fzf 퍼지 검색 인터랙티브 화면

6. zoxide – cd를 대체하는 스마트 디렉토리 이동

기존 cd의 한계

프로젝트 디렉토리로 이동할 때 매번 cd ~/projects/company/backend/src/main 같은 긴 경로를 입력하는 건 번거롭습니다. cd –는 직전 디렉토리 하나만 기억하고, 히스토리 기능도 없습니다.

zoxide가 해결하는 것

zoxide는 방문 빈도와 최근성을 학습하는 스마트 cd입니다. z 명령어 하나로 전체 경로를 입력하지 않아도 원하는 디렉토리로 순간 이동할 수 있습니다. 예를 들어 ~/projects/my-blog 디렉토리에 자주 갔다면, 어느 위치에서든 z blog만 입력하면 해당 경로로 바로 이동합니다.

설치 및 사용법

brew install zoxide, sudo apt install zoxide, scoop install zoxide로 설치한 뒤, 셸 설정 파일에 초기화 코드를 추가합니다.

  • Bash: eval “$(zoxide init bash)” (~/.bashrc에 추가)
  • Zsh: eval “$(zoxide init zsh)” (~/.zshrc에 추가)
  • Fish: zoxide init fish | source (~/.config/fish/config.fish에 추가)
  • PowerShell: Invoke-Expression (& { (zoxide init powershell) })

주요 명령어는 다음과 같습니다.

  • z blog – “blog” 키워드가 포함된 가장 자주 방문한 디렉토리로 이동
  • z src main – 여러 키워드 조합으로 정확도 향상
  • zi – fzf와 연동된 인터랙티브 모드로 디렉토리 선택
  • zoxide query –list – 학습된 디렉토리 목록과 점수 확인
  • zoxide remove /old/path – 더 이상 존재하지 않는 경로 수동 제거

zoxide는 사용하면 할수록 정확도가 올라갑니다. 처음에는 기존 cd로 이동하면서 학습시키고, 며칠 지나면 z만으로 원하는 디렉토리에 즉시 도착하게 됩니다. 특히 여러 프로젝트를 오가는 개발자에게 하루에 수십 번의 타이핑을 절약해 줍니다.

7. delta – diff와 git diff를 대체하는 시각적 비교 도구

기존 diff의 한계

git diff의 기본 출력은 단색이거나 최소한의 빨강/초록 색상만 사용합니다. 변경된 코드의 맥락을 파악하기 어렵고, 줄 단위 비교라 한 줄 안에서 정확히 어떤 부분이 바뀌었는지 찾기 힘듭니다.

delta가 해결하는 것

delta는 Git과 diff의 출력을 구문 강조와 단어 단위 하이라이트로 변환하는 도구입니다. 줄이 바뀐 것뿐 아니라 줄 안에서 정확히 어떤 단어나 문자가 변경됐는지 색상으로 표시합니다. side-by-side 보기, 줄 번호, 탐색 기능까지 제공합니다.

설치 및 설정

brew install git-delta, sudo apt install delta, scoop install delta로 설치한 뒤, ~/.gitconfig에 다음 설정을 추가합니다.

  • [core] 섹션에 pager = delta
  • [interactive] 섹션에 diffFilter = delta –color-only
  • [delta] 섹션에 navigate = true, line-numbers = true, side-by-side = true

이렇게 설정하면 git diff, git log -p, git show 등 모든 Git diff 출력이 자동으로 delta를 통해 표시됩니다. 별도 명령어를 외울 필요 없이 기존 Git 워크플로 그대로 사용하면서 출력만 극적으로 개선됩니다.

  • git diff – 자동으로 delta 적용, 구문 강조 + 단어 단위 하이라이트
  • delta file1.py file2.py – Git 외부에서 두 파일 직접 비교
  • git log –oneline | delta – 로그 출력에도 적용 가능

코드 리뷰나 PR 전에 변경 사항을 확인할 때 delta의 가독성은 체감이 큽니다. IDE의 diff 뷰어에 익숙한 분들이 터미널에서도 비슷한 수준의 시각적 비교를 할 수 있게 됩니다.

모던 CLI 도구 통합 세팅 가이드

7가지 도구를 모두 설치했다면, 셸 설정 파일에 alias와 환경변수를 추가하여 기존 명령어를 자연스럽게 대체하는 것을 추천합니다. 아래는 ~/.bashrc 또는 ~/.zshrc에 추가할 통합 설정 예시입니다.

  • alias ls=”eza –icons –group-directories-first”
  • alias ll=”eza -la –icons –git”
  • alias tree=”eza –tree –icons”
  • alias cat=”bat –paging=never”
  • alias find=”fd”
  • alias grep=”rg”
  • export FZF_DEFAULT_COMMAND=’fd –type f –hidden –follow –exclude .git’
  • export BAT_THEME=”Catppuccin Mocha”

이렇게 설정하면 기존에 습관적으로 사용하던 ls, cat, find, grep 명령어가 모던 도구로 자동 전환됩니다. 근육 기억을 바꿀 필요 없이 그대로 타이핑하면 더 나은 결과를 얻을 수 있습니다.

모던 CLI 도구 통합 세팅 체크리스트

설치 한 줄 요약 (패키지 매니저별)

macOS(Homebrew)에서는 brew install bat eza fd ripgrep fzf zoxide git-delta 한 줄로 7가지 도구를 모두 설치할 수 있습니다. Ubuntu(apt)에서는 일부 패키지명이 다르므로 sudo apt install bat fd-find ripgrep fzf zoxide로 설치하고, eza와 delta는 별도 저장소 추가 또는 cargo install이 필요합니다. Windows에서는 scoop install bat eza fd ripgrep fzf zoxide delta로 한 번에 설치 가능합니다.

마무리 – 작은 도구가 큰 차이를 만든다

각각의 모던 CLI 도구는 기존 명령어 하나를 대체할 뿐이지만, 7가지를 함께 사용하면 터미널 경험이 완전히 달라집니다. 구문 강조로 코드를 즉시 읽고, 퍼지 검색으로 파일을 순식간에 찾고, 스마트 이동으로 디렉토리를 넘나들고, 시각적 diff로 변경 사항을 명확히 파악할 수 있습니다.

이 도구들의 공통점은 기존 워크플로를 깨지 않으면서 개선한다는 것입니다. alias를 설정하면 평소처럼 타이핑하면서도 더 좋은 결과를 얻습니다. 하루에 터미널을 수십 번, 수백 번 사용하는 개발자에게 매 명령어마다 절약되는 1~2초가 모이면 상당한 생산성 차이를 만듭니다.

꼭 7가지를 한꺼번에 도입할 필요는 없습니다. batfzf처럼 체감이 즉시 오는 도구부터 하나씩 써보세요. 한 번 익숙해지면 나머지 도구도 자연스럽게 추가하게 됩니다. 오래된 도구에 익숙한 것과 더 나은 도구를 거부하는 것은 다릅니다. 터미널도 진화합니다.

이미지는 Leonardo AI 로 생성되었습니다.

이미지는 Claude AI 로 생성되었습니다.