콘텐츠로 이동

Zoxide

빈도-최신성 알고리즘을 사용하여 사용 습관을 학습하고 셸 전반에서 빠른 디렉토리 탐색을 제공하는 더 스마트한 cd 명령.

명령어설명
brew install zoxidemacOS에서 Homebrew로 설치
cargo install zoxide --lockedcrates.io에서 설치
apt install zoxideDebian/Ubuntu에서 설치
pacman -S zoxideArch Linux에서 설치
dnf install zoxideFedora에서 설치
scoop install zoxideWindows에서 Scoop으로 설치
winget install ajeetdsouza.zoxideWindows에서 winget으로 설치
nix-env -i zoxideNixOS에서 설치
conda install -c conda-forge zoxideConda로 설치
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh셸 스크립트로 설치
명령어설명
eval "$(zoxide init bash)"Bash용 초기화 (.bashrc에 추가)
eval "$(zoxide init zsh)"Zsh용 초기화 (.zshrc에 추가)
zoxide init fish | sourceFish용 초기화 (config.fish에 추가)
Invoke-Expression (& { (zoxide init powershell) })PowerShell용 초기화
zoxide init nushell | save -f ~/.zoxide.nuNushell용 초기화
eval "$(zoxide init elvish)"Elvish용 초기화
eval (zoxide init xonsh)Xonsh용 초기화
# Bash — ~/.bashrc에 추가
eval "$(zoxide init bash)"

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

# Fish — ~/.config/fish/config.fish에 추가
zoxide init fish | source

# PowerShell — $PROFILE에 추가
Invoke-Expression (& { (zoxide init powershell | Out-String) })

# Nushell — env.nu에 추가
zoxide init nushell | save -f ~/.zoxide.nu
source ~/.zoxide.nu
명령어설명
z foo”foo”와 일치하는 최고 순위 디렉토리로 이동
z foo bar”foo”와 “bar” 모두 일치하는 디렉토리로 이동
z ~/projects정확한 경로로 이동 (cd처럼)
z ..상위 디렉토리로 이동
z -이전 디렉토리로 이동
z홈 디렉토리로 이동 (인수 없음)
zifzf를 사용한 대화형 선택
zi foo”foo”로 사전 필터링된 대화형 선택
z foo/하위 디렉토리로 이동 (후행 슬래시)
# 디렉토리를 방문하면 zoxide가 학습합니다
cd ~/projects/myapp          # zoxide에 이 경로 학습
cd ~/documents/reports       # zoxide에 이 경로 학습
cd /var/log/nginx            # zoxide에 이 경로 학습

# 나중에 부분 일치로 이동
z myapp                      # ~/projects/myapp로 이동
z reports                    # ~/documents/reports로 이동
z nginx                      # /var/log/nginx로 이동

# 여러 키워드로 매칭 범위 좁히기
z proj myapp                 # ~/projects/myapp에 정확히 매칭
z doc rep                    # ~/documents/reports에 매칭
명령어설명
z proj”proj”를 포함하는 모든 디렉토리 매칭
z proj rust”proj”와 “rust” 모두 포함하는 디렉토리 매칭
z /home/user/docs절대 경로 직접 사용
z docs/”docs”라는 하위 디렉토리 매칭 및 우선
키워드는 경로 구성요소에 매칭”proj”는 /home/user/projects에 매칭
마지막 키워드는 접두사 매칭 가능z prprojects에 매칭
여러 키워드는 AND 매칭모두 경로에 나타나야 함
매칭은 대소문자 구분 없음z PROJprojects에 매칭
개념설명
빈도-최신성 = 빈도 + 최신성얼마나 자주, 얼마나 최근에 방문했는지 기반 점수
최근 방문이 더 높은 점수오늘 방문한 디렉토리가 지난주보다 높은 점수
자주 방문하는 디렉토리가 더 높은 순위규칙적인 사용이 시간이 지남에 따라 점수 증가
점수는 시간이 지나면 감소사용하지 않는 디렉토리는 점차 순위 하락
데이터베이스가 낮은 점수 자동 정리오래되고 사용하지 않는 항목은 자동 제거
최대 항목 수는 _ZO_MAXAGE로 제어기본값: 10,000개 항목
명령어설명
zi추적된 모든 디렉토리로 fzf 열기
zi query쿼리로 사전 필터링된 fzf 열기
fzf에서 ↑ / ↓결과 탐색
fzf에서 Enter디렉토리 선택 및 이동
fzf에서 Escape선택 취소
fzf에서 입력하여 필터링결과 추가 좁히기
fzf가 설치되어 있어야 함대화형 모드를 위해 fzf 설치
fzf에서 Tab선택 토글 (다중 선택 모드)
# 추적된 모든 디렉토리로 대화형 퍼지 파인더 열기
zi

# "project"를 포함하는 디렉토리로 사전 필터링
zi project

# fzf의 출력 형식은 점수를 보여줍니다:
#   3.50   /home/user/projects/myapp
#   2.10   /home/user/projects/api
#   1.20   /var/www/project-site
명령어설명
eval "$(zoxide init bash --cmd cd)"Bash에서 cd를 zoxide로 대체
eval "$(zoxide init zsh --cmd cd)"Zsh에서 cd를 zoxide로 대체
--cmd cdcd 명령을 대체cd가 zoxide를 사용 (cd, cdi)
--cmd jjji를 생성사용자 정의 명령 이름 사용
기본값으로 zzi 생성표준 zoxide 명령
명령어설명
--hook pwd디렉토리 변경 시 데이터베이스 업데이트 (기본값)
--hook prompt모든 프롬프트에서 데이터베이스 업데이트
--hook none자동 추적 비활성화
# Bash에서 cd를 zoxide로 대체
eval "$(zoxide init bash --cmd cd)"
# 이제 'cd'가 zoxide를 사용, 'cdi'가 대화형 모드 열기

# 사용자 정의 명령 이름 사용
eval "$(zoxide init zsh --cmd j)"
# 이제 'j foo'로 이동, 'ji'로 대화형 모드 열기

# fzf와 결합하여 향상된 경험
export _ZO_FZF_OPTS="--height 40% --reverse --border"
명령어설명
zoxide query foo이동하지 않고 최적 매칭 표시
zoxide query foo --list점수와 함께 모든 매칭 나열
zoxide query foo --score빈도-최신성 점수와 함께 매칭 표시
zoxide query --all전체 데이터베이스 나열
zoxide query --all --score점수와 함께 데이터베이스 나열
zoxide query --exclude /path결과에서 특정 경로 제외
zoxide query --list | head -20상위 20개 디렉토리
명령어설명
zoxide add /path/to/dir수동으로 디렉토리를 데이터베이스에 추가
zoxide remove /path/to/dir데이터베이스에서 디렉토리 제거
zoxide edit$EDITOR에서 데이터베이스 열기 (대화형)
데이터베이스 위치: $_ZO_DATA_DIR/db.zo기본 데이터베이스 위치
# zoxide가 무엇에 매칭할지 확인
zoxide query project --list --score
# 출력:
#    12.00  /home/user/projects/webapp
#     8.50  /home/user/projects/api
#     3.20  /home/user/old-project

# 새 머신에 대해 수동으로 데이터베이스 시드
zoxide add ~/projects/webapp
zoxide add ~/projects/api
zoxide add ~/.config/nvim

# 오래된 항목 제거 (삭제된 디렉토리)
zoxide query --all | while read -r dir; do
  [ -d "$dir" ] || zoxide remove "$dir"
done

# 백업을 위해 데이터베이스 내보내기
zoxide query --all --score > zoxide-backup.txt
명령어설명
zoxide import --from z path/to/.zz.sh 데이터베이스에서 가져오기
zoxide import --from autojump path/to/autojump.txtautojump 데이터베이스에서 가져오기
zoxide import --merge --from z path/to/.z병합 가져오기 (기존 항목 유지)
zoxide import --from z --merge ~/.z일반적인 z.sh 가져오기
# z.sh에서 마이그레이션 (가장 일반적)
zoxide import --from z ~/.z

# autojump에서 마이그레이션
zoxide import --from autojump ~/.local/share/autojump/autojump.txt

# 기존 데이터베이스와 병합 (덮어쓰지 않음)
zoxide import --merge --from z ~/.z

# 가져오기 후 확인
zoxide query --all --score | head -20
명령어설명
export _ZO_DATA_DIR="$HOME/.local/share/zoxide"데이터베이스 디렉토리 설정
export _ZO_ECHO=1이동 전 매칭된 디렉토리 출력
export _ZO_EXCLUDE_DIRS="/tmp/*:/private/*"추적에서 디렉토리 제외
export _ZO_FZF_OPTS="--height 40%"zi용 사용자 정의 fzf 옵션
export _ZO_MAXAGE=10000최대 데이터베이스 항목 설정
export _ZO_RESOLVE_SYMLINKS=1저장 전 심볼릭 링크 해석
# ~/.bashrc 또는 ~/.zshrc — 전체 zoxide 설정

# 사용자 정의 데이터 디렉토리 설정
export _ZO_DATA_DIR="$HOME/.local/share/zoxide"

# 이동 전 매칭된 디렉토리 출력
export _ZO_ECHO=1

# 임시 및 시스템 디렉토리 제외
export _ZO_EXCLUDE_DIRS="$HOME:$HOME/Downloads:/tmp/*:/private/*"

# 대화형 모드의 fzf 외관 사용자 정의
export _ZO_FZF_OPTS="
  --height 40%
  --layout reverse
  --border rounded
  --preview 'ls -la {2..}'
  --preview-window right:40%
"

# 정리 전 최대 항목 수 (기본값: 10000)
export _ZO_MAXAGE=10000

# 심볼릭 링크를 정규 경로로 해석
export _ZO_RESOLVE_SYMLINKS=1

# zoxide 초기화 (exports 이후에 실행해야 함)
eval "$(zoxide init zsh)"
명령어설명
z <Tab>추적된 디렉토리에서 자동완성
z foo<Tab>일치하는 디렉토리 완성
zoxide init을 통한 Bash 자동완성셸 초기화 시 자동
zoxide init을 통한 Zsh 자동완성셸 초기화 시 자동
zoxide init을 통한 Fish 자동완성셸 초기화 시 자동
  1. zoxide가 자연스럽게 학습하도록 하기 — 평소처럼 셸을 사용하면 zoxide가 사용 습관에서 데이터베이스를 구축합니다. 모든 디렉토리를 수동으로 시드하려고 하지 마세요.

  2. 정확도를 위해 두 키워드 사용 — 여러 디렉토리가 매칭되면 두 번째 키워드를 추가하세요: z proj apiz api 단독보다 더 정확합니다.

  3. 하위 디렉토리에 후행 슬래시 사용z foo/는 “foo”라는 이름의 현재 디렉토리 하위 디렉토리를 우선하고, z foo는 전체 데이터베이스를 검색합니다.

  4. 최대 학습을 위해 cd 대체 — 모든 디렉토리 변경이 zoxide에 반영되도록 셸 초기화에 --cmd cd를 사용하세요. z를 사용할 때만이 아닙니다.

  5. 제외 항목 일찍 설정 — 결과를 오염시키는 임시 디렉토리, 빌드 폴더, node_modules 경로를 건너뛰도록 _ZO_EXCLUDE_DIRS를 설정하세요.

  6. 애매한 이동에 zi 사용 — 어떤 디렉토리가 매칭될지 확실하지 않을 때 zi(대화형)를 사용하여 후보를 미리 보고 선택하세요.

  7. 기존 데이터 마이그레이션z.sh, autojump, 또는 fasd에서 전환할 때 zoxide import로 데이터베이스를 가져와 준비된 캐시로 시작하세요.

  8. 오래된 항목 정리 — 삭제된 디렉토리의 항목을 주기적으로 zoxide edit 또는 정리 스크립트를 사용하여 제거하여 결과의 관련성을 유지하세요.

  9. 데이터베이스 백업 — OS 재설치 또는 머신 마이그레이션 전에 zoxide query --all --score로 내보내기하세요.

  10. fzf 외관 사용자 정의 — 대화형 선택기에서 디렉토리 내용을 표시하려면 _ZO_FZF_OPTS--preview 'ls {2..}'를 설정하세요.