本人将为新人介绍常用的 Shell
配置和工具,帮助提升命令行效率。本文将涵盖 Zsh
、Oh My Zsh
、Zoxide
、FZF
和 Ripgrep
等工具的安装和配置和简单教学。
1 Zsh 安装和配置
你可能已经习惯了 Linux
默认的 Bash Shell
,但现在是时候考虑升级到 Zsh 了。Zsh
提供了许多 Bash
不具备的强大功能,例如:
- 更强大的自动补全:
Zsh
的自动补全功能非常智能,可以补全命令、文件路径、选项、甚至是 Git 分支等,大大减少你的输入量。 - 命令历史共享:在多个
Zsh
会话中共享命令历史,方便你随时查找和重复执行之前的命令。 - 主题和插件支持:通过各种主题美化你的终端界面,并通过插件扩展
Zsh
的功能,使其更加强大。
1.1 如何安装 Zsh
根据你的操作系统,安装 Zsh 的方法略有不同:
- macOS: Zsh 通常已经预装。你可以通过运行
zsh --version
来检查。如果未安装,可以使用 Homebrew:1
brew install zsh
- Ubuntu/Debian:
1
2sudo apt update
sudo apt install zsh - Fedora/RHEL:
1
sudo dnf install zsh
1.2 设置 Zsh 为默认 Shell
安装完成后,你需要将 Zsh 设置为你的默认 Shell:
1 | chsh -s $(which zsh) |
然后,你需要退出当前终端会话并重新登录,或者重新打开终端,Zsh 就会生效。
如果你选择安装后续的
Oh My Zsh
, 你可以跳过此步骤, 因为Oh My Zsh
会自动将Zsh
设置为默认Shell
。
2 Oh My Zsh:Zsh 配置框架
Oh My Zsh 是一个开源的、社区驱动的 Zsh 配置框架,它使得管理 Zsh 配置变得异常简单。它包含了数百个有用的函数、助手、主题和插件,可以帮助你快速构建一个功能强大的 Shell
环境。
官网: Oh My Zsh
2.1 安装 Oh My Zsh
安装 Oh My Zsh 非常简单,只需执行以下命令:
1 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" |
根据脚本的提升选择性按y
或n
进行配置即可, 通常全部默认选y
即可
2.2 强大的插件系统
Oh My Zsh
的核心优势之一在于其丰富的插件生态。你可以在 ~/.zshrc
文件中配置要启用的插件。找到 plugins=(git)
这一行,然后添加你需要的插件。
以下是一些常用且推荐的插件:
- git: 提供了大量的 Git 别名和辅助函数,极大提高了 Git 操作的效率。
- zsh-autosuggestions: 根据你的历史命令自动建议命令,按右箭头键即可补全。
- 安装:
1
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
- 启用: 在
~/.zshrc
中添加zsh-autosuggestions
到plugins
数组。
- 安装:
- zsh-syntax-highlighting: 为命令提供语法高亮,让你的命令更易读,并能及时发现输入错误。
- 安装:
1
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
- 启用: 在
~/.zshrc
中添加zsh-syntax-highlighting
到plugins
数组。
- 安装:
配置示例:
1 | # ~/.zshrc |
修改 ~/.zshrc
后,记得运行 source ~/.zshrc
来使更改生效。
2.3 Zsh 默认主题概览
上图显示的是 Zsh
默认主题。可以看到, 其相比较传统的bash
提供了更多有用的信息和功能:
- 在安装
git
插件后, 当你处于git
仓库目录时,zsh
会自动将在prompt
中显示当前分支名。 zsh
提供丰富的智能不全, 比如安装git
插件后, 可以补全git
的子命令- 该默认主题箭头的颜色表达了上一个命令的执行状态:
- 绿色表示上一个命令成功执行
- 红色表示上一个命令执行失败
更多的插件请参考 Oh My Zsh 插件列表
3 Zoxide:更智能的目录切换
你是否厌倦了在命令行中频繁地 cd
到深层目录?Zoxide 是一个更智能的 cd
命令替代品,它会记住你访问过的目录,并允许你通过模糊匹配快速切换。
3.1 安装 Zoxide
- macOS (Homebrew):
1
brew install zoxide
- Ubuntu/Debian:
1
sudo apt install zoxide
- 其他方式: 请参考 Zoxide 的 GitHub 仓库获取更详细的安装指南。
3.2 配置 Zoxide
安装完成后,你需要将 Zoxide 的初始化脚本添加到你的 Shell 配置文件中(对于 Zsh 是 ~/.zshrc
)。在 ~/.zshrc
文件的末尾添加以下行:
1 | # ~/.zshrc |
然后运行 source ~/.zshrc
。
3.3 如何使用 Zoxide
现在,你可以直接输入目录名的部分或模糊匹配来切换目录,例如:
z myproj
:切换到你最近访问过的名为myproj
的目录。z code
:切换到包含code
关键字的目录。zi
:启动交互式选择界面,通过模糊匹配选择要切换的目录。
4 FZF:命令行模糊查找利器
FZF(Fuzzy Finder)是一个通用的命令行模糊查找器,它可以与各种命令结合使用,实现快速、交互式的列表过滤和选择。无论是文件、历史命令、Git 分支,FZF 都能让你轻松找到所需。
4.1 安装 FZF
- macOS (Homebrew):
1
brew install fzf
- Linux (推荐 Git 克隆):在安装过程中,它会询问你是否将 FZF 的键绑定和自动补全添加到你的 Shell 配置中,请选择
1
2git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/instally
。
4.2 FZF 的常用场景
文件查找:
1
vim $(fzf) # 使用 fzf 查找文件并用 vim 打开
历史命令搜索: 按下
Ctrl + R
(在 Zsh 中默认已配置),然后输入关键词进行历史命令的模糊搜索。进程查找:
1
ps aux | fzf # 查找并过滤进程
历史命令搜索:
fzf
可以搜索历史命令,只需按下Ctrl + R
(在 Zsh 中默认已配置),然后输入关键词进行历史命令的模糊搜索。例如:
5 Ripgrep:极速文件内容搜索
Ripgrep 是一个极速的行式搜索工具,它递归地在当前目录中搜索正则表达式模式。它比 grep
更快,并且默认会忽略 .gitignore
中的文件,极大提高了搜索效率。
5.1 安装 Ripgrep
- macOS (Homebrew):
1
brew install ripgrep
- Ubuntu/Debian:
1
sudo apt install ripgrep
- Fedora/RHEL:
1
sudo dnf install ripgrep
5.2 如何使用 Ripgrep
Ripgrep 的基本用法与 grep
类似,但速度更快且功能更强大。
- 搜索文件内容:
1
rg "your_pattern" # 在当前目录递归搜索 "your_pattern"
- 显示行号:
1
rg -n "your_pattern"
- 只搜索特定类型文件:
1
rg "your_pattern" -t js # 只搜索 JavaScript 文件
- 不区分大小写:
1
rg -i "your_pattern"
5.3 Ripgrep 与 Grep 的不同之处及默认行为
Ripgrep 在设计上旨在提供比传统 grep
更优越的体验。除了速度上的显著优势外,它还有一些默认行为与 grep
不同,这些差异通常能更好地满足现代开发的需求:
- 默认忽略
.gitignore
文件: Ripgrep 会自动读取当前目录及其父目录中的.gitignore
文件,并忽略其中指定的文件和目录。这意味着在搜索代码仓库时,您不必担心搜索到编译生成的文件、依赖包目录(如node_modules
)或其他无关文件,从而使搜索结果更加聚焦和准确。如果您需要搜索被.gitignore
忽略的文件,可以使用-u
或--unrestricted
选项:1
rg -u "your_pattern" # 搜索所有文件,包括被 .gitignore 忽略的
- 默认忽略隐藏文件和二进制文件: Ripgrep 默认情况下会跳过隐藏文件(以
.
开头的文件和目录)以及被识别为二进制的文件。这可以避免在搜索结果中出现大量无关的二进制数据,并提高搜索效率。 - 智能识别文件类型: Ripgrep 能够智能地识别多种文件类型(例如
js
、py
、md
等),并支持按文件类型进行过滤搜索,这比grep
更为方便。