navi-interactive-cheatsheet-tool

리눅스 사용자라면 이런 경험 한 번쯤 있으시죠? 분명 저 명령어로 해결할 수 있다는 건 알겠는데, 막상 구체적인 옵션이 떠오르지 않는다거나. 아니면 복잡한 ffmpeg나 kubectl 명령어를 쓸 때마다 브라우저를 열어 문법을 검색한다거나.

오늘 소개할 navi는 이런 문제를 깔끔하게 해결해 줄 인터랙티브 명령줄 치트시트 도구입니다.

navi는 Rust로 작성된 인터랙티브 치트시트 도구입니다. 터미널에서 직접 명령어 예시를 찾아보고 실행할 수 있어서, 현재 작업 환경을 떠날 필요가 없습니다.

핵심 기능

  • 🚀 인터랙티브 검색: 퍼지 검색(fuzzy search)으로 필요한 명령어를 빠르게 찾음
  • 📝 변수 치환: 명령어 파라미터를 동적으로 입력할 수 있어 수동 편집이 불필요
  • 🎨 높은 커스터마이징: 색상, 폰트, 레이아웃을 자유롭게 설정
  • 📦 커뮤니티 주도: 자주 쓰는 도구의 치트시트가 기본 포함되며, 커뮤니티 자료도 import 가능
  • 🔌 Shell 통합: Bash, Zsh, Fish 등 주요 Shell 지원

tldr 대신 navi를 선택해야 하는 이유

tldr도 널리 알려진 명령줄 치트시트 도구죠. 그런데 navi는 뭐가 다를까요?

기능 tldr navi
인터랙션 방식 정적 표시 인터랙티브 선택
변수 치환 ❌ 미지원 ✅ 동적 입력 지원
커스텀 치트시트 제한적 완전 커스터마이징
명령어 실행 수동 복사·붙여넣기 직접 실행 가능
검색 경험 기본 퍼지 검색

한 마디로: tldr은 명령어 문법을 빠르게 확인할 때 좋고, navi는 명령어를 실제로 실행할 때 더 적합합니다.

방법 1: 패키지 매니저 사용 (권장)

Fedora/RHEL/CentOS:

BASH
sudo dnf install navi

Ubuntu/Debian (저장소 추가 필요):

BASH
sudo add-apt-repository universe
sudo apt update
sudo apt install navi

Arch Linux:

BASH
sudo pacman -S navi

macOS (Homebrew):

BASH
brew install navi

방법 2: Cargo 사용 (Rust 패키지 매니저)

Rust가 이미 설치되어 있다면:

BASH
cargo install navi

방법 3: 바이너리 파일 다운로드

GitHub Releases에서 사전 컴파일된 바이너리를 다운로드합니다:

BASH
# 최신 버전 다운로드 (예: v2.23.0)
wget https://github.com/denisidoro/navi/releases/download/v2.23.0/navi-v2.23.0-x86_64-unknown-linux-musl.tar.gz

# 압축 해제
tar -xzf navi-v2.23.0-x86_64-unknown-linux-musl.tar.gz

# 시스템 경로로 이동
sudo mv navi /usr/local/bin/

Shell 통합 설정

설치가 끝나면 Shell 설정 파일에 통합 코드를 추가해야 합니다.

Bash

~/.bashrc를 열고 다음을 추가:

BASH
eval "$(navi widget bash)"

Zsh

~/.zshrc를 열고 다음을 추가:

BASH
eval "$(navi widget zsh)"

Fish

~/.config/fish/config.fish를 열고 다음을 추가:

FISH
navi widget fish | source

설정 완료 후 Shell을 다시 로드합니다:

BASH
source ~/.bashrc  # 또는 ~/.zshrc

기본 사용법

1. 명령어 검색

가장 간단한 방법은 그냥 검색하는 것입니다:

BASH
navi

인터랙티브 화면이 열리고, 키워드를 입력해 명령어를 검색할 수 있습니다. 예를 들어 git을 입력하면 Git 관련 치트시트가 모두 표시됩니다.

2. 위젯 사용 (권장)

Shell 통합을 설정하면 단축키로 navi를 호출할 수 있습니다:

  • Bash/Zsh: Ctrl + G
  • Fish: Ctrl + G

단축키를 누르면 검색 화면이 나타나고, 명령어를 선택하면 바로 명령줄에 채워집니다.

3. 특정 도구의 치트시트 보기

BASH
navi --query git
navi --query docker
navi --query kubectl

4. 명령어 실행

navi 화면에서 명령어를 선택한 후:

  • Enter 누르기: 명령어를 Shell에 채움
  • Ctrl + Y 누르기: 명령어를 바로 실행
  • Esc 누르기: 취소

커스텀 치트시트

navi의 진짜 강점은 완전 커스터마이징 가능한 치트시트입니다.

개인 치트시트 만들기

~/.config/navi/ 디렉토리에 .cheat 파일을 만듭니다:

BASH
mkdir -p ~/.config/navi
vim ~/.config/navi/my_tools.cheat

치트시트 형식

CHEAT
# 제목
% git 자주 쓰는 명령어

# 명령어 설명
$ 현재 브랜치 상태 확인
git status

# 변수 포함 명령어
$ 지정 브랜치로 전환
git checkout <branch>

# 주석이 있는 변수
$ 새 브랜치 생성 및 전환
git checkout -b <branch>
%% branch: 새 브랜치 이름

# 여러 변수
$ 코드 커밋
git commit -m "<message>"
%% message: 커밋 메시지

# 기본값이 있는 변수
$ 브랜치 푸시
git push <remote> <branch>
%% remote: 기본값 origin
%% branch: 현재 브랜치명

변수 유형

navi는 다양한 변수 유형을 지원합니다:

CHEAT
# 텍스트 입력
%% name: 이름을 입력하세요

# 기본값 포함
%% port: 기본값 8080

# 선택 목록
%% method: 기본값 GET, 선택 가능 GET POST PUT DELETE

# 명령어 결과를 옵션으로 사용
%% branch: 명령어 git branch --format='%(refname:short)', 백틱으로 감쌈

실전 예시: Docker 치트시트

CHEAT
% Docker 자주 쓰는 작업

$ 실행 중인 컨테이너 확인
docker ps

$ 모든 컨테이너 확인 (중지된 것 포함)
docker ps -a

$ 컨테이너 시작
docker start <container>
%% container: 명령어 docker ps -a --format '{{.Names}}'

$ 컨테이너 중지
docker stop <container>
%% container: 명령어 docker ps --format '{{.Names}}'

$ 컨테이너 삭제
docker rm <container>
%% container: 명령어 docker ps -a --format '{{.Names}}'

$ 컨테이너 로그 확인
docker logs -f <container>
%% container: 명령어 docker ps --format '{{.Names}}'

$ 컨테이너 진입
docker exec -it <container> <shell>
%% container: 명령어 docker ps --format '{{.Names}}'
%% shell: 기본값 /bin/bash, 선택 가능 /bin/bash /bin/sh

커뮤니티 치트시트 가져오기

navi 커뮤니티에서 다양한 도구의 치트시트를 관리하고 있어, 바로 가져다 쓸 수 있습니다.

BASH
# 사용 가능한 치트시트 저장소 탐색
navi repo add denisidoro/navi

# 또는 수동 추가
navi repo add https://github.com/denisidoro/cheats

추천 치트시트 저장소

고급 팁

1. 태그로 명령어 분류

CHEAT
% 시스템 관리
tags: system

$ 디스크 사용량 확인
df -h

$ 메모리 사용량 확인
free -h

% Git 작업
tags: git, version-control

$ 커밋 히스토리 확인
git log --oneline

2. 조건부 변수

CHEAT
$ 환경별 배포
deploy <environment>
%% environment: 선택 가능 dev staging production
%% 만약 environment = production: echo "⚠️  프로덕션 환경 배포입니다. 확인하세요!"

3. 외부 스크립트 호출

CHEAT
$ 데이터베이스 백업
./scripts/backup.sh <database>
%% database: 명령어 mysql -e "SHOW DATABASES;" | tail -n +2

4. 커스텀 컬러 테마

~/.config/navi/config.yaml을 편집:

YAML
style:
  tag:
    color: blue
    width: 20
  comment:
    color: yellow
  snippet:
    color: green

실제 활용 사례

사례 1: 복잡한 명령어 빠르게 실행

Docker 자원을 주기적으로 정리해야 한다면? 치트시트를 하나 만드세요:

CHEAT
% Docker 정리

$ 중지된 모든 컨테이너 삭제
docker container prune -f

$ 사용하지 않는 이미지 삭제
docker image prune -f

$ 사용하지 않는 모든 자원 삭제
docker system prune -f

이제 Ctrl + G를 누르고 "docker 정리"를 검색하면, 원클릭으로 실행됩니다.

사례 2: 팀 협업 표준화

팀에서 자주 쓰는 작업을 치트시트로 만들어 공유 저장소에 올리세요:

BASH
# 팀 저장소
git clone https://github.com/your-team/team-navi-cheats.git ~/.config/navi/team

# config.yaml에 추가
paths:
  - ~/.config/navi/team

새 멤버가 합류하면 즉시 표준화된 작업 매뉴얼을 갖게 됩니다.

사례 3: 새 도구 학습

Kubernetes를 배울 때 kubectl 치트시트를 import하세요:

BASH
navi repo add https://github.com/sv222/kubectl-autocompletion-navi

배우면서 바로 활용, 빠르게 익힐 수 있습니다.

자주 묻는 질문

Q: navi와 Fish Shell의 autospawn이 충돌하면?

A: Fish 설정에서 로드 순서를 조정해 navi 위젯이 마지막에 로드되도록 합니다.

Q: 커스텀 치트시트는 어떻게 백업하나요?

A: ~/.config/navi/ 디렉토리를 버전 관리에 올리세요:

BASH
cd ~/.config/navi
git init
git add .
git commit -m "Initial navi cheatsheets"
# 프라이빗 저장소에 푸시

Q: 중국어가 깨져 보이는데요?

A: 터미널과 폰트가 중국어를 지원하는지 확인하거나, config.yaml에서 설정하세요:

YAML
terminal:
  font: "Noto Sans Mono CJK SC"

정리

navi는 명령줄 작업 효율을 눈에 띄게 높여주는 도구입니다. 특히 이런 분들에게 추천합니다:

  • ✅ 복잡한 명령어를 자주 쓰는 개발자
  • ✅ 여러 도구 사이를 빠르게 전환해야 하는 올라운더
  • ✅ 팀 작업을 표준화하고 싶은 테크 리드
  • ✅ 새로운 도구를 배우는 입문자

프로젝트 정보: - GitHub: https://github.com/denisidoro/navi - 언어: Rust - Stars: 16,400+ - 라이선스: Apache-2.0

navi 설정에 30분 투자하면, 앞으로 매일 명령어 검색에 쓰던 10분을 절약할 수 있습니다. 확실한 투자죠!


관련 글: - tldr-pages/tldr - 단순화된 man pages - cheat.sh - 설치 없이 쓸 수 있는 온라인 치트시트 - fzf - 범용 퍼지 파인더, navi와 함께 쓰기 좋음