如何使用 eza 與 zoxide:現代 ls、智能 cd 與 shell 別名入門
裝好 eza 和 zoxide,用別名替代 ls、用 z 跳常去目錄。
终端里每天重复 ls -la 和 cd ../../../projects/foo,信息密度低又费脑。eza 用彩色列目录、Git 状态与树形视图替代传统 ls;zoxide 记住你常去的目录,用 z foo 模糊跳转,不必再背完整路径。
搜尋 eza 安裝 zoxide 智能 cd shell 別名 的人,通常要:在 macOS/Linux 装好两个 CLI、在 zsh/bash 里 init、用几条 alias 把 ls/ll 换成 eza。步骤以 GitHub eza-community/eza 与 ajeetdsouza/zoxide README 为准。
这对谁有用
多仓库的开发者
eza 的 --git 一眼看未跟踪文件;zoxide 在 ~/src/acme/web 与 ~/work/acme-api 之间跳目录不用 tab 补全到底。
刚换机器的人
把别名写进 ~/.zshrc,新终端自动有「现代 ls + 智能 cd」;zoxide 数据库在本地,可随 dotfiles 备份。
仍用默认 ls/cd 的人
不必一次改习惯:先装 eza 只当 ll,zoxide 与 cd 并存;确认稳定后再 alias cd='z'(可选)。
安装 eza 与 zoxide
- 1
macOS:Homebrew
brew install eza zoxide。装完新开终端,运行eza --version与zoxide --version。 - 2
Debian / Ubuntu
较新发行版可能提供
eza包;若无,按 eza README 用 cargo 或发布页二进制安装。zoxide 可用curl -sSf https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh(以 README 当前说明为准)或apt install zoxide(若仓库有)。 - 3
Fedora / Arch
常见路径:
sudo dnf install eza zoxide或sudo pacman -S eza zoxide。装完同样用--version验证。 - 4
启用 zoxide(必做)
在
~/.zshrc或~/.bashrc末尾加eval "$(zoxide init zsh)"或eval "$(zoxide init bash)",然后source该文件。fish 用zoxide init fish | source。
把 eza 当现代 ls 用
常用标志(详见 eza README):
eza -l --git --icons # 长列表 + Git 状态 + 图标(需终端字体)
eza -T --level=2 # 两层树形
eza -la --sort=modified # 按修改时间建议别名写在 rc 文件里,避免覆盖系统脚本对 ls 的依赖:
# ~/.zshrc 片段
alias ls='eza --icons'
alias ll='eza -la --git --icons'
alias lt='eza -T --level=2 --icons'zoxide:智能 cd 基础
- 1
先正常 cd 几次
zoxide 根据你访问过的路径打分。进入项目根几次后,
z 项目名片段才会准。 - 2
z与ziz web跳到最匹配的目录;zi打开交互选择(需 fzf 等,见 zoxide 文档)。 - 3
可选:alias cd
alias cd='z'会让所有cd走 zoxide;脚本里若依赖cd语义,请谨慎或只对交互 shell 启用。 - 4
查询与维护
zoxide query看排名;zoxide remove 路径删掉错误条目。数据库默认在用户目录,换机可导出/备份(见 FAQ)。
| 工具 | 替代习惯 | 典型命令 |
|---|---|---|
| eza | ls -la | ll、eza -T |
| zoxide | 长路径 cd | z foo、zi |
| alias | 重复打长参数 | alias ..='cd ..'(仍可用) |
zoxide 管目录跳转,不替代
find或 fzf 搜文件。历史命令仍用 Atuin/fzf;三者分工:eza 看当前夹、zoxide 跳常去夹、fzf 选文件或历史。
结对改 dotfiles 或对齐项目路径时,可从 wbroom 首页 开浏览器房间共享终端,见 建立與加入房間。
还想核对的问题
eza 和 exa 是什么关系?
eza 是 exa 的社区延续分支,目标仍是现代 ls。若系统仍装 exa,不要混用两个别名,只保留一个。
zoxide 在 SSH 远程机也要装吗?
是的,z 是本地 shell 函数,远程会话需要在远端安装 zoxide 并 init。各机数据库独立,除非你用同步方案(非默认)。
别名写在 zsh 还是 bash?
看你默认登录 shell:echo $SHELL。zsh 用 ~/.zshrc,bash 用 ~/.bashrc(macOS bash 登录 shell 可能读 ~/.bash_profile)。
和 autojump / fzf Alt+C 冲突吗?
autojump 与 zoxide 二选一即可。fzf 的 Alt+C 是临时选目录,zoxide 是学你常去的排名;可以同时保留,按键不同。