개발 도구

개발 생산성을 극대화하는 CLI 도구 모음: fzf, bat, exa, lazygit 심층 활용 가이드

강코의 코딩 일기 2026. 6. 19. 13:09
반응형

개발 생산성을 혁신할 fzf, bat, exa, lazygit 등 강력한 CLI 도구들을 소개합니다. 파일 검색부터 Git 관리까지, 터미널 활용 능력을 극대화하여 개발 워크플로우를 최적화하는 방법을 친근하게 알려드려요.

안녕하세요, 개발자 여러분! 매일같이 터미널과 씨름하며 코딩하고 계시죠? 혹시 아직도 ls, cat, grep 같은 기본 명령어들만 사용하고 계신가요? 물론 이 친구들도 훌륭하지만, 조금 더 스마트하고 빠르게, 그리고 훨씬 더 효율적으로 개발 작업을 할 수 있게 도와주는 특급 도우미들이 있다는 사실, 알고 계셨나요?

개발 생산성은 곧 시간이고, 시간은 곧 돈이잖아요! 터미널에서 보내는 시간을 단축하고, 더 많은 정보를 한눈에 파악하며, 복잡한 작업을 손쉽게 처리할 수 있다면 얼마나 좋을까요? 오늘은 여러분의 개발 워크플로우를 한 단계 업그레이드해 줄 강력한 CLI 도구 4인방, fzf, bat, exa, lazygit을 심층적으로 파헤쳐 볼 거예요. 이 도구들을 활용하면 터미널이 단순히 명령을 입력하는 공간을 넘어, 마치 마법처럼 느껴지는 생산성 극대화의 장으로 변모할 수 있답니다. 자, 그럼 함께 떠나볼까요?

개발 생산성을 극대화하는 CLI 도구 모음: fzf, bat, exa, lazygit 심층 활용 가이드 - hand, write, pen, notebook, journal, planner, writing, paper, pages, open notebook, notes, desk, person, work, working, writer, taking notes, write, journal, writing, writing, writing, writing, work, work, writer, writer, writer, writer, writer

Image by Pexels on Pixabay

1. 왜 개발자에게 CLI 도구가 중요할까요?

개발자에게 터미널은 단순한 텍스트 입력창이 아니라, 개발 환경의 심장과도 같은 곳이죠. 코드를 빌드하고, 서버에 접속하고, Git으로 버전을 관리하는 등 대부분의 핵심 작업이 터미널에서 이루어지기 마련인데요. 하지만 많은 분들이 여전히 기본적인 명령어에만 머물러, 터미널이 제공할 수 있는 진정한 생산성 잠재력을 충분히 활용하지 못하는 경우가 많아요.

수많은 파일 속에서 특정 코드를 찾아 헤매거나, Git 명령어를 일일이 타이핑하다 오타를 내거나, ls 명령어의 밋밋한 출력 때문에 필요한 정보를 놓친 경험, 다들 있으실 거예요. 이런 사소한 비효율들이 쌓이면 하루에도 엄청난 시간을 낭비하게 되거든요. 여기서 강력한 CLI 도구들이 빛을 발하는 거죠! 이 도구들은:

  • 속도 향상: 복잡한 작업을 최소한의 키 입력으로 빠르게 처리할 수 있게 해줍니다.
  • 정보 가독성 증대: 컬러링, 아이콘, Git 상태 표시 등을 통해 필요한 정보를 한눈에 파악하게 도와줍니다.
  • 오류 감소: 인터랙티브한 인터페이스나 자동 완성 기능으로 오타나 잘못된 명령어 입력을 줄여줍니다.
  • 워크플로우 최적화: 반복적인 작업을 자동화하고, 여러 도구를 유기적으로 연결하여 매끄러운 개발 흐름을 만들어줍니다.

결국, CLI 도구 활용 능력은 개발자의 역량을 가늠하는 중요한 척도가 될 수 있어요. 이제 본격적으로 개별 도구들을 만나러 가볼까요?

2. fzf: 터미널에서 빛보다 빠르게 파일 찾기

수많은 파일과 디렉토리 속에서 원하는 파일을 찾는 일, 정말 고역이죠? 특히 대규모 프로젝트에서는 더욱 그렇고요. findgrep 명령어도 좋지만, 결과를 실시간으로 보면서 직관적으로 필터링하고 싶을 때가 많잖아요? 이때 fzf가 여러분의 구원투수가 되어줄 거예요. fzf터미널용 퍼지 파인더(fuzzy finder)로, 사용자가 입력하는 키워드에 따라 후보 목록을 실시간으로 필터링해주는 강력한 도구입니다.

fzf 기본 사용법과 강력한 조합

fzf의 가장 큰 장점은 놀라운 속도유연성에 있어요. 설치하면 기본적으로 몇 가지 편리한 키 바인딩이 쉘(Bash, Zsh 등)에 추가되는데요, 특히 Ctrl+t, Ctrl+r, Alt+c는 꼭 기억해두세요!

  • fzf 단독 사용: 단순히 fzf를 입력하면 현재 디렉토리와 하위 디렉토리의 모든 파일과 디렉토리 목록이 뜨고, 입력하는 대로 실시간 필터링을 시작합니다. 방향키로 선택하고 Enter를 누르면 해당 경로가 터미널에 출력되죠.
  • Ctrl+t (파일/디렉토리 검색): 대부분의 쉘에서 기본으로 바인딩되어 있을 텐데요, Ctrl+t를 누르면 fzf가 실행되어 현재 디렉토리에서 파일을 검색하고 선택한 파일의 경로를 현재 명령줄에 삽입해줍니다. 예를 들어, vim <Ctrl+t> 한 다음 원하는 파일을 찾아서 선택하면 vim [선택된 파일 경로]가 되는 식이죠! 정말 편리하답니다.
  • Ctrl+r (쉘 히스토리 검색): 이 기능은 정말 혁신적이에요! Ctrl+r을 누르면 과거에 입력했던 명령어 목록을 fzf로 검색할 수 있어요. 잊어버린 긴 명령어를 다시 타이핑할 필요 없이, 몇 글자만 입력하면 바로 찾아낼 수 있답니다.
  • Alt+c (디렉토리 변경): 이 단축키는 cd 명령어의 강력한 대체재예요. Alt+c를 누르면 fzf가 디렉토리 목록을 보여주고, 선택한 디렉토리로 바로 이동시켜줍니다.

fzf는 다른 명령어들과 함께 사용할 때 그 진가가 더욱 발휘돼요. 예를 들어, find . -type f | fzf처럼 find의 결과를 fzf로 파이프(|) 연결하면, 특정 조건에 맞는 파일들 중에서 더 빠르게 원하는 파일을 찾을 수 있죠. grep -r "검색어" . | fzf와 같이 grep의 결과에 fzf를 적용하여 검색된 줄들을 인터랙티브하게 필터링하는 것도 가능합니다. 여러분의 파일 탐색 및 명령 이력 관리 방식이 완전히 바뀔 거예요!

# fzf 설치 (macOS 기준)
brew install fzf

# fzf 키 바인딩 및 자동 완성 설정 (설치 후 안내에 따라 실행)
$(brew --prefix)/opt/fzf/install

# 특정 디렉토리 내 파일 검색 후 vim으로 열기
vim $(find . -type f | fzf)

# Git 변경 파일 중 하나를 fzf로 선택하여 diff 보기
git diff $(git status --porcelain | fzf | awk '{print $2}')

이처럼 fzf터미널 내비게이션파일 검색에 혁신적인 속도와 편의성을 제공합니다. 한 번 써보면 다시는 예전으로 돌아갈 수 없을 걸요?

3. bat: cat 대신 쓰는 컬러풀하고 스마트한 파일 뷰어

기본 cat 명령어는 파일 내용을 터미널에 출력하는 가장 기본적인 도구죠. 하지만 코드를 보거나 설정 파일을 확인할 때, 밋밋한 텍스트만으로는 가독성이 떨어져 불편했던 경험 다들 있으실 거예요. 바로 이때 bat이 등장합니다! batcat 명령어의 기능을 훨씬 뛰어넘는 고급 파일 뷰어예요. 코드 하이라이팅, 줄 번호 표시, Git 통합 등 개발자를 위한 다양한 편의 기능을 제공한답니다.

코드 하이라이팅과 Git 통합으로 가독성 UP

bat의 핵심 기능은 코드 하이라이팅이에요. 수많은 프로그래밍 언어의 문법을 자동으로 인식하고, 해당 언어에 맞는 컬러링을 적용해서 코드를 훨씬 쉽게 읽을 수 있게 해줍니다. cat으로 보면 그저 검은 글씨의 향연이었던 코드가 bat을 통하면 마치 IDE에서 보는 것처럼 화려하고 명확해지는 거죠!

여기에 줄 번호 표시 기능까지 더해져 특정 줄을 참조하거나 디버깅할 때 아주 유용하고요. 단순히 파일 내용을 보여주는 것을 넘어, 파일의 Git 상태까지 표시해주는 기능은 정말 압권이에요. Git으로 관리되는 파일의 경우, 변경되거나 추가된 줄을 왼쪽에 녹색/빨간색으로 표시해주어 어떤 부분이 수정되었는지 한눈에 파악할 수 있답니다. git diff 명령어를 보지 않고도 파일 내용과 변경 사항을 동시에 볼 수 있다니, 정말 스마트하죠?

또한, bat은 여러 파일을 한 번에 열람할 때도 유용해요. 각 파일의 시작 부분에 파일명을 명확히 표시해주고, 페이지네이션(less와 유사) 기능도 내장하고 있어서 긴 파일도 부담 없이 볼 수 있습니다. 여러분의 터미널 파일 열람 경험을 완전히 바꿔줄 거예요!

# bat 설치 (macOS 기준)
brew install bat

# 기본 사용법 (cat 대신 사용)
bat my_script.py
bat /etc/nginx/nginx.conf

# 여러 파일 동시에 보기
bat file1.js file2.css

# 특정 테마 적용 (bat --list-themes로 테마 목록 확인 가능)
bat --theme="GitHub" README.md

catbat의 차이를 한눈에 비교해볼까요?

특징 cat bat
코드 하이라이팅 ✅ (다양한 언어 지원)
줄 번호 표시
Git 변경 사항 표시
페이지네이션 ✅ (긴 파일도 편리하게)
기본 사용성 매우 간단 cat과 유사, 추가 기능 제공

이 표를 보시면 bat이 얼마나 강력한지 확 와닿으시죠? cat 대신 bat을 기본으로 사용하도록 쉘 alias를 설정해두시면 정말 편할 거예요. alias cat='bat' 이렇게 말이죠!

개발 생산성을 극대화하는 CLI 도구 모음: fzf, bat, exa, lazygit 심층 활용 가이드 - penknife, pocket knife, blade, serrated, folding, locking, cutting, sharp, cut, weapon, pocketknife, camping, slice, dangerous, spyderco, blue camping, penknife, penknife, penknife, pocket knife, pocket knife, pocket knife, pocket knife, pocket knife, blade, pocketknife, pocketknife, camping, camping, camping, spyderco, spyderco

Image by stevepb on Pixabay

4. exa: ls의 한계를 뛰어넘는 현대적인 파일 나열 도구

터미널에서 디렉토리 내용을 확인하는 ls 명령어는 정말 유구한 역사를 자랑하죠. 하지만 이 친구, 너무 오래되다 보니 아쉬운 점이 많아요. 밋밋한 색상, 부족한 정보, 그리고 무엇보다 시각적인 직관성이 떨어진다는 단점이 있죠. 이제 ls의 시대는 가고, exa의 시대가 왔습니다! exals를 대체하는 현대적이고 기능이 풍부한 파일 나열 도구예요.

파일 타입 아이콘과 Git 상태 표시로 시각적 정보 강화

exa의 가장 눈에 띄는 특징은 바로 강력한 시각적 정보 제공 능력이에요. 기본적으로 파일과 디렉토리를 색상으로 구분해주지만, 여기에 파일 타입별 아이콘까지 추가할 수 있어서 어떤 종류의 파일인지 한눈에 파악하기가 훨씬 쉬워집니다. 예를 들어, Python 파일 옆에는 🐍 아이콘이, JavaScript 파일 옆에는 🟨 아이콘이 표시되는 식이죠. (물론 아이콘이 보이려면 Nerd Font와 같은 특정 폰트가 터미널에 설정되어 있어야 해요!)

뿐만 아니라, exa는 파일의 Git 상태까지 표시해줍니다. Git으로 관리되는 디렉토리에서 exa -l --git 명령어를 사용하면, 각 파일이 스테이징 되었는지, 수정되었는지, 추적되지 않았는지 등을 색상과 기호로 명확하게 보여줘요. git status를 따로 입력할 필요 없이 파일 목록을 보면서 동시에 Git 상태를 파악할 수 있는 거죠. 버전 관리 작업이 훨씬 직관적이고 빨라진답니다.

또한, exa트리 뷰(tree view) 기능도 지원해요. exa --tree -L 2처럼 사용하면 특정 깊이까지 디렉토리 구조를 나무 형태로 보여주어 프로젝트의 전체적인 구조를 파악하는 데 아주 유용하죠. ls -l로는 볼 수 없었던 상세한 파일 정보(권한, 소유자, 그룹, 수정 시간 등)도 더 깔끔하고 가독성 좋게 보여준답니다. exa는 단순한 파일 나열을 넘어, 여러분의 디렉토리 탐색 경험을 완전히 바꿔줄 거예요!

# exa 설치 (macOS 기준)
brew install exa

# 기본 사용법 (ls -l과 유사)
exa -l

# Git 상태와 아이콘 표시 (아이콘은 Nerd Font 필요)
exa -l --git --icons

# 트리 뷰로 디렉토리 구조 보기 (2단계 깊이까지)
exa --tree -L 2

# ls 대신 exa 사용하도록 alias 설정
alias ls='exa'
alias ll='exa -l'
alias la='exa -la'

lsexa의 주요 차이점을 비교해볼까요?

특징 ls exa
색상 구분 제한적 (파일/디렉토리) 풍부한 색상 (파일 타입, 권한 등)
파일 타입 아이콘 ✅ (Nerd Font 필요)
Git 변경 사항 표시 ✅ (--git 옵션)
트리 뷰 ✅ (--tree 옵션)
가독성 낮음 매우 높음

exa는 단순히 ls의 대체제가 아니라, 터미널 내비게이션을 위한 강력한 정보 허브라고 할 수 있습니다. 꼭 사용해보세요!

5. lazygit: 터미널에서 Git을 마우스 없이 편하게!

Git은 현대 개발의 필수 도구이지만, 복잡한 명령어나 스테이징/커밋/브랜치 관리 등 GUI 도구 없이는 다소 번거롭게 느껴질 때가 많죠? 터미널에서 git status, git add, git commit, git branch 등을 반복적으로 입력하다 보면 시간도 오래 걸리고 실수할 확률도 높아지고요. 이때 lazygit이 여러분의 Git 워크플로우를 혁신적으로 바꿔줄 거예요! lazygit터미널 기반의 Git GUI 클라이언트로, 마우스 없이 키보드만으로 대부분의 Git 작업을 직관적으로 처리할 수 있게 해줍니다.

직관적인 UI로 Git 워크플로우 간소화

lazygit을 실행하면 터미널 전체를 사용하는 인터랙티브한 UI가 나타납니다. 왼쪽 패널에는 파일 상태, 브랜치 목록, 커밋 히스토리 등이 깔끔하게 정리되어 있고요, 오른쪽 패널에서는 선택한 파일의 변경 사항(diff)이나 커밋 메시지 등을 상세하게 볼 수 있어요. 이 모든 정보가 한 화면에 표시되니, git status, git diff, git log 등을 번갈아 가며 입력할 필요가 없답니다.

lazygit의 가장 큰 장점은 직관적인 키 바인딩으로 거의 모든 Git 작업을 처리할 수 있다는 거예요. 예를 들어:

  • 파일 목록에서 spacebar를 누르면 해당 파일을 스테이징/언스테이징할 수 있어요.
  • c를 누르면 커밋 메시지를 입력하는 창이 뜨고요.
  • 브랜치 패널에서 n을 누르면 새 브랜치를 생성하고, spacebar로 체크아웃할 수 있습니다.
  • 커밋 히스토리에서 s를 누르면 스쿼시(squash)나 리베이스(rebase) 같은 복잡한 작업도 쉽게 시작할 수 있어요.

이처럼 lazygitGit의 복잡성을 크게 줄여주면서도 강력한 기능은 그대로 유지합니다. rebase -i 같은 고급 기능도 시각적인 인터페이스 덕분에 훨씬 쉽게 접근하고 사용할 수 있게 되죠. Git 초보자에게는 학습의 부담을 덜어주고, 숙련된 개발자에게는 작업 속도를 비약적으로 향상시켜주는 마법 같은 도구라고 할 수 있어요. 더 이상 GUI 도구와 터미널을 오갈 필요 없이, 오직 터미널 안에서 Git 워크플로우를 완벽하게 제어할 수 있게 된답니다!

# lazygit 설치 (macOS 기준)
brew install lazygit

# lazygit 실행
lazygit

# Git alias 설정 (g를 입력하면 lazygit 실행)
git config --global alias.g lazygit

일반 Git CLI와 lazygit의 경험을 비교해볼까요?

특징 Git CLI lazygit
인터페이스 텍스트 기반, 비주얼 피드백 적음 인터랙티브 터미널 UI
작업 속도 명령어 입력/출력 반복으로 느림 키보드 단축키로 매우 빠름
정보 파악 여러 명령어로 분산된 정보 한 화면에 통합된 Git 상태
복잡한 작업 (rebase 등) 수동 편집, 오류 가능성 높음 시각적 가이드, 쉬운 조작
학습 곡선 높음 (명령어 암기 필요) 낮음 (직관적인 UI)

lazygit은 Git을 사용하는 모든 개발자에게 강력히 추천하는 도구입니다. 한 번 사용해보면 그 편리함에 푹 빠지게 될 거예요!

개발 생산성을 극대화하는 CLI 도구 모음: fzf, bat, exa, lazygit 심층 활용 가이드 - dandruff, tool shed, hut, agriculture, utility building, wooden boards, grasslands, dandruff, dandruff, tool shed, hut, hut, hut, hut, hut, utility building, utility building

Image by adege on Pixabay

6. 이 도구들을 함께 활용하는 시너지 효과

각각의 도구도 강력하지만, 이 네 가지 CLI 도구를 함께 활용하면 그 시너지 효과는 상상 이상입니다. 마치 잘 조율된 오케스트라처럼 여러분의 개발 워크플로우를 매끄럽고 효율적으로 만들어 줄 거예요. 한 가지 시나리오를 통해 어떻게 활용되는지 살펴볼까요?

시나리오: 특정 기능 개발 중 버그를 발견하고 수정하는 과정

  1. 문제 발생 및 파일 찾기: 특정 기능에서 버그가 발생했어요. 어떤 파일에서 문제가 발생했는지 정확히 모르겠을 때, find . -name "*buggy_feature*" | fzf 명령어로 관련 파일을 빠르게 찾습니다.
  2. 코드 내용 확인: fzf로 찾은 파일을 bat으로 열어봅니다. bat $(fzf). bat의 코드 하이라이팅과 줄 번호 덕분에 코드의 가독성이 뛰어나고, 혹시 Git 변경 사항이 있다면 어떤 부분이 수정되었는지도 한눈에 파악할 수 있죠.
  3. 주변 파일 탐색: 버그 수정에 필요한 다른 관련 파일이 있는지 확인하기 위해, exa로 현재 디렉토리와 주변 디렉토리의 파일 목록을 봅니다. exa -l --git --icons. 파일 타입 아이콘과 Git 상태 표시 덕분에 필요한 정보를 시각적으로 빠르게 스캔할 수 있어요. 혹시 특정 디렉토리 구조가 궁금하면 exa --tree -L 2로 파악하고요.
  4. 수정 및 Git 관리: 버그를 수정하고 파일을 저장합니다. 이제 lazygit을 실행해서 변경 사항을 확인하고 커밋할 차례예요. lazygit을 열면 수정된 파일 목록이 한눈에 들어오고, spacebar로 파일을 스테이징하고 c를 눌러 커밋 메시지를 작성하면 끝! 만약 여러 커밋을 합치거나 브랜치를 전환해야 한다면, lazygit의 직관적인 UI를 통해 손쉽게 처리할 수 있습니다.

어떠세요? 이 모든 과정이 터미널 안에서 최소한의 키 입력최대한의 정보 가독성을 유지하며 진행되는 것을 볼 수 있죠? fzf로 파일을 검색하고, bat으로 내용을 확인하고, exa로 주변 환경을 살피고, 마지막으로 lazygit으로 Git 작업을 마무리하는 이 일련의 과정은 여러분의 개발 생산성을 비약적으로 향상시켜 줄 거예요. 마치 강력한 슈퍼히어로 팀처럼, 이 도구들은 서로를 보완하며 여러분의 터미널 활용 능력을 극대화해줍니다.

7. 결론: 당신의 개발 생산성, CLI 도구로 한 단계 도약하세요!

지금까지 fzf, bat, exa, lazygit이라는 네 가지 강력한 CLI 도구들을 자세히 살펴봤습니다. 이 도구들은 단순히 편리함을 넘어, 여러분의 개발 워크플로우를 근본적으로 개선하고 생산성을 극대화할 수 있는 잠재력을 가지고 있어요.

  • fzf로 수많은 파일 속에서 빛의 속도로 원하는 것을 찾아내고,
  • bat으로 코드를 IDE처럼 화려하고 가독성 좋게 열람하며,
  • exals보다 훨씬 풍부한 정보와 시각적 즐거움을 얻고,
  • lazygit으로 복잡한 Git 작업을 마우스 없이 손쉽게 처리할 수 있게 되죠.

이 도구들을 여러분의 터미널 환경에 통합하는 데 처음에는 약간의 시간과 노력이 필요할 수도 있어요. 하지만 일단 익숙해지고 나면, 이전에 어떻게 개발했는지 기억조차 나지 않을 정도로 혁신적인 경험을 선사할 겁니다. 개발자라면 누구나 탐낼 만한 궁극의 생산성 향상 비법이라고 할 수 있죠.

오늘 소개해드린 도구들이 여러분의 개발 생활에 새로운 활력을 불어넣기를 바랍니다. 지금 바로 설치하고, 여러분의 터미널을 더욱 강력하게 만들어 보세요! 혹시 이 외에도 여러분이 애용하는 CLI 생산성 도구가 있다면, 댓글로 공유해주세요. 다른 개발자들에게도 큰 도움이 될 거예요. 그럼, 즐거운 코딩하세요!

📌 함께 읽으면 좋은 글

  • [개발 도구] VS Code 확장 프로그램 활용 가이드: 개발 생산성 극대화 필수 플러그인 추천
  • [개발 도구] 원격 개발 환경 구축 마스터: VS Code Remote와 JetBrains Gateway 활용 전략
  • [기술 리뷰] 백엔드 프레임워크 선택 가이드: Spring Boot, Django, Go(Gin) 비교 분석

이 글이 도움이 되셨다면 공감(♥)댓글로 응원해 주세요!
궁금한 점이나 다루었으면 하는 주제가 있다면 댓글로 남겨주세요.

반응형