터미널 생산성 도구 7가지 — 작업 속도를 확 높여주는 CLI 모음

프로젝트 폴더에서 특정 문자열이 어디에 쓰였는지 찾느라 탐색기 검색창을 열고 몇 분씩 기다려 본 적이 있을 겁니다. 로그 파일을 메모장으로 열었다가 멈춰버린 적도요. 이런 작은 대기 시간은 하루에 열 번만 반복돼도 20~30분이 됩니다. 한 달이면 열 시간이 넘습니다. 터미널 생산성 도구는 이 대기 시간을 거의 0에 가깝게 줄여주는 명령줄 프로그램들입니다. 이 글에서는 설치 한 줄로 끝나고, 배우는 데 5분이면 충분하며, 설치 당일부터 체감되는 7가지를 정리합니다.

설치는 패키지 매니저로 한 번에

하나씩 홈페이지에서 받아 압축을 풀고 PATH에 넣는 방식은 권하지 않습니다. 업데이트할 때마다 같은 일을 반복해야 하기 때문입니다. 윈도우는 Scoop, 맥과 리눅스는 Homebrew를 쓰면 한 줄로 끝납니다.

# 윈도우 - Scoop이 없다면 먼저 설치
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

# 이 글에서 다루는 도구를 한 줄로
scoop install ripgrep fd bat fzf zoxide eza jq

# 맥 / 리눅스(Homebrew)
brew install ripgrep fd bat fzf zoxide eza jq

윈도우에서 Scoop 대신 winget을 쓰고 있다면 winget search ripgrep처럼 이름으로 검색해서 설치해도 됩니다. 다만 패키지 ID가 배포자마다 달라서, 여러 개를 한 번에 깔 때는 Scoop 쪽이 편합니다.

1. ripgrep(rg) — 코드베이스 전체 검색이 1초 안에 끝난다

가장 먼저 체감되는 도구입니다. 폴더 전체에서 문자열을 찾아주는데, .gitignore에 적힌 폴더와 바이너리 파일을 기본적으로 건너뜁니다. node_modules.venv 안을 헤매지 않으니 빠를 수밖에 없습니다.

# 현재 폴더 아래 전부에서 "API_KEY" 찾기
rg API_KEY

# 파일 종류를 좁혀서 (파이썬 파일만)
rg -t py "def process"

# 대소문자 무시 + 앞뒤 2줄까지 같이 보기
rg -i -C 2 "timeout"

# 찾은 "파일 이름"만 나열
rg -l "TODO"

# 매칭된 부분을 다른 문자열로 바꿔서 미리보기 (파일은 안 건드림)
rg "http://" --replace "https://"
ripgrep과 PowerShell Select-String 검색 속도 실측 비교
같은 4,299개 .py 파일에서 잰 결과입니다. 33.57초 → 0.13초, 약 250배 차이입니다.

IDE의 “전체 검색”과 뭐가 다르냐고 하면, 결과를 다른 명령으로 넘길 수 있다는 점이 다릅니다. rg -l "TODO"의 출력을 그대로 다음 명령의 입력으로 쓸 수 있어서, 찾는 것과 처리하는 것을 한 줄로 이어 붙일 수 있습니다.

2. fd — find 문법을 외울 필요가 없다

기존 findfind . -name "*.log" -type f처럼 매번 옵션을 떠올려야 합니다. fd는 그냥 찾을 이름만 적으면 됩니다. 역시 .gitignore와 숨김 파일을 기본으로 제외합니다.

# 이름에 report가 들어간 것 전부
fd report

# 확장자로 찾기
fd -e xlsx

# 30일 넘게 손대지 않은 로그 파일
fd -e log --changed-before 30d

# 찾은 파일을 전부 다른 폴더로 복사 (-x = 각 결과마다 실행)
fd -e png -x cp {} ./images/

# .gitignore에 걸린 것까지 포함해서 찾기
fd -H -I node_modules

마지막에 나온 -x 옵션이 특히 유용합니다. 찾은 파일마다 명령을 실행해주는데, 중괄호가 파일 경로 자리입니다. 파일 정리 스크립트를 따로 짜지 않아도 되는 경우가 많습니다.

3. fzf — 어떤 목록이든 몇 글자로 좁힌다

fzf는 “목록을 받아서 대화형으로 하나 고르게 해주는” 도구입니다. 특정 용도가 정해져 있지 않아서 처음엔 감이 안 오지만, 한 번 익히면 가장 자주 쓰게 됩니다.

# 파일을 골라서 VS Code로 열기
code $(fzf)

# 프로세스를 골라서 종료 (맥/리눅스)
ps aux | fzf | awk '{print $2}' | xargs kill

# 미리보기 창을 붙이면 고르기 전에 내용이 보인다
fzf --preview "bat --color=always {}"

진짜 효과는 명령어 히스토리 검색에서 나옵니다. 예전에 쳤던 긴 명령을 위쪽 화살표로 스무 번 올라가며 찾는 대신, 기억나는 단어 몇 글자만 치면 됩니다. bash와 zsh는 fzf 설치 시 Ctrl+R 단축키가 함께 잡히지만, 파워셸은 별도 모듈이 필요합니다.

# 파워셸에서 Ctrl+R(히스토리), Ctrl+T(파일) 단축키 쓰기
Install-Module -Name PSFzf -Scope CurrentUser

# 아래 두 줄을 $PROFILE 파일에 넣어두면 매번 적용된다
Import-Module PSFzf
Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+t' -PSReadlineChordReverseHistory 'Ctrl+r'

4. zoxide — cd ../../ 를 그만 친다

한 번이라도 방문한 폴더를 기억해뒀다가, 폴더 이름 일부만으로 이동시켜 줍니다. 예를 들어 예전에 D:\projects\blog-backend에 들어간 적이 있다면 이후로는 어디에 있든 z backend 한 번이면 그 폴더로 갑니다. 초기 설정 한 줄만 셸 프로필에 넣어주면 됩니다.

# 파워셸: $PROFILE 에 추가
Invoke-Expression (& { (zoxide init powershell | Out-String) })

# bash: ~/.bashrc 에 추가
eval "$(zoxide init bash)"

# zsh: ~/.zshrc 에 추가
eval "$(zoxide init zsh)"

파워셸 프로필 파일 위치는 echo $PROFILE로 확인할 수 있습니다. 파일이 없으면 만들어야 합니다. 방문 기록이 쌓일수록 정확해지는 구조라, 설치 직후보다 일주일 뒤가 훨씬 편합니다.

5~7. bat, eza, jq — 출력이 읽히기 시작한다

나머지 셋은 “보여주는” 쪽입니다. batcat 대신 쓰는 파일 출력 도구로, 문법 강조와 줄 번호를 붙여줍니다. Git 저장소 안이라면 변경된 줄도 표시해 줍니다.

ezals 대체품입니다. eza -T --level=2로 폴더 구조를 트리로 보거나, eza -l --git으로 파일 목록과 Git 상태를 한 화면에서 볼 수 있습니다.

jq는 JSON을 다루는 도구입니다. API 응답을 확인할 때 브라우저에 붙여넣어 포맷팅할 필요가 없어집니다.

# 그냥 보기 좋게 정렬만
cat data.json | jq .

# 특정 필드만 뽑기
curl -s https://api.github.com/repos/BurntSushi/ripgrep | jq .stargazers_count

# 배열을 돌면서 두 필드만 표로
cat users.json | jq -r '.items[] | [.name, .email] | @tsv'

도구 한눈에 비교

도구대체 대상핵심 이득익히는 데 걸리는 시간
ripgrep (rg)grep, 탐색기 검색대형 폴더 검색이 수 초 → 1초 미만5분
fdfind옵션 없이 이름만으로 파일 찾기3분
fzf히스토리 스크롤, 수동 선택목록에서 고르는 모든 작업20분
zoxidecd경로 타이핑이 사실상 사라짐5분 (설정 필요)
batcat문법 강조, 줄 번호1분
ezals / dir트리 보기, Git 상태 표시3분
jq브라우저에 JSON 붙여넣기API 응답을 터미널에서 바로 확인30분

주의할 점

  • 기본 명령을 덮어쓰는 별칭(alias)은 미루세요. alias ls=eza처럼 걸어두면 편하지만, 남이 짠 스크립트나 문서의 명령이 예상과 다르게 동작할 수 있습니다. 최소 2주는 원래 이름으로 쓰면서 손에 익힌 뒤에 정하는 편이 안전합니다.
  • rg와 fd가 파일을 못 찾는다면 대부분 .gitignore 때문입니다. 무시된 파일까지 뒤지려면 -u(rg) 또는 -I(fd)를 붙이세요. “분명 있는데 안 나온다”의 열에 아홉은 이 경우입니다.
  • zoxide는 셸 프로필 설정을 빼먹으면 z 명령이 아예 없습니다. 설치만 하고 끝내는 실수가 가장 흔합니다. 프로필에 넣은 뒤 터미널을 새로 열어야 적용됩니다.
  • 파워셸에서 파이프 동작이 다를 수 있습니다. 파워셸은 텍스트가 아니라 객체를 파이프로 넘기기 때문에, 리눅스 예제의 awkxargs가 그대로 통하지 않습니다. Git Bash나 WSL에서 쓰거나 파워셸 문법으로 바꿔야 합니다.
  • 회사 PC라면 설치 정책을 먼저 확인하세요. Scoop은 관리자 권한 없이 사용자 폴더에 설치되지만, 보안 프로그램이 실행 파일 다운로드를 차단하는 환경도 있습니다.

마무리

일곱 개를 한꺼번에 익히려 하면 대부분 사흘 만에 원래 습관으로 돌아갑니다. 오늘은 ripgrep 하나만 설치해서, 뭔가 찾고 싶을 때마다 rg 찾을단어를 쳐보세요. 옵션도 외울 필요 없이 이것만으로 충분합니다. 이 하나가 손에 붙으면 나머지는 자연스럽게 따라옵니다.

  1. Scoop 또는 Homebrew로 ripgrep 설치
  2. 작업 중인 프로젝트 폴더에서 rg로 아무 단어나 검색해 보기
  3. 일주일 뒤 fzfzoxide 추가

다음 글에서는 업무용 AI 챗봇을 무료로 만드는 방법을 다룹니다. 사내 문서나 매뉴얼을 학습시켜 반복 질문에 대신 답하게 하는 구성을 단계별로 정리해 보겠습니다.

댓글 남기기