1 了解 Shell
1.1 Shell 是什么?
Shell(壳)是操作系统的用户界面,它允许用户与计算机进行交互并执行各种命令。Shell 接受用户输入的命令,并将其解释为操作系统能理解的指令,然后执行这些指令并返回相应的输出结果。
在类 Unix 操作系统中,常见的 Shell 包括 Bash(Bourne Again Shell)、Zsh(Z Shell)、Ksh(Korn Shell)等。每种 Shell 都有自己的特点和功能,用户可以根据自己的喜好和需求选择合适的 Shell 来使用。
Shell 的主要功能包括:
-
命令解释:接受用户输入的命令,并将其解释为操作系统能够执行的指令。
-
环境控制:管理用户的工作环境,包括环境变量、工作目录等。
-
脚本编程:Shell 脚本是一系列命令的集合,可以编写脚本来自动化执行一系列操作。
-
管道和重定向:Shell 允许将命令的输出作为另一个命令的输入,同时支持输出重定向到文件或其他设备。
-
通配符和通配符扩展:Shell 支持使用通配符来匹配文件名,并对通配符进行扩展以匹配多个文件。
1.2 常用 Shell 有哪些?
-
bsh: 原始的Unix shell(Bourne Shell),由Stephen Bourne开发,是许多现代shell的基础。
-
Bash: Bourne Shell的扩展版本,大多数Linux系统的默认shell,功能全面,适合脚本编程和交互式使用。
-
Fish: 用户友好的交互式shell,支持语法高亮、自动建议和现代化特性。
-
Csh: 最早的C语言风格shell,语法类似C语言,通常在一些旧版本的 Unix 系统中使用。
-
Tcsh: Csh的增强版,增加了命令行补全和历史替换等特性。
-
Ksh: 强大的KornShell,提供了命令历史、别名、作业控制和强大的脚本编程能力,广泛用于商业 Unix 系统和一些 Linux 发行版中。
-
Dash: 轻量级的Bourne Shell替代,专为快速启动和低内存使用而优化,通常作为系统脚本的默认shell。
-
Zsh: 高度可定制的shell,支持强大的补全功能、插件和主题,适合高级用户和开发者使用。
关系: Bourne Shell是原始的Unix shell,Bash是其后继者并添加了新功能;Fish、Csh和Tcsh是不同风格和功能的C语言衍生版本;Ksh是另一种流行的衍生版本;Dash是轻量级的Bourne Shell变体;Zsh则是Bourne Shell的现代化扩展。
2 了解 Zsh
2.1 Zsh 是什么?
Zsh(Z Shell)是一种功能强大的 Unix shell,它是 Bourne Shell 的现代化扩展,具有许多增强的功能和特性。Zsh 提供了比标准的 Bourne Shell(sh)和其衍生品 Bash 更多的定制选项和功能,使得它成为了许多 Unix 和类 Unix 系统用户的首选 Shell。
主要功能:
-
高级自动补全:Zsh 提供了强大的命令和文件名自动补全功能,可以根据用户的输入智能地匹配命令、文件名和参数。
-
丰富的插件支持:通过 Oh My Zsh 等框架,Zsh 可以轻松地安装各种插件,提供语法高亮、历史搜索、主题定制等功能。
-
强大的通配符扩展:Zsh 支持更多复杂的通配符模式,用于匹配文件名和路径,比如递归匹配、排除匹配等。
-
定制化程度高:Zsh 允许用户对其行为和外观进行高度定制,包括定制提示符、别名、函数等。
-
模块化:Zsh 是一个模块化的 Shell,它可以加载各种模块来扩展其功能,例如完成源码控制、网络传输等操作。
2.2 安装
在 macOS Catalina(10.15.7)和之后的版本中,默认 shell 已从 Bash 更改为 Zsh,因此新的 macOS 系统通常会推荐或默认使用 Zsh。如果使用的是较旧的 macOS 版本,需要手动安装。
1. 包管理器安装
- Ubuntu:使用 apt 包管理器进行安装,命令为
sudo apt install zsh
- Fedora:使用 dnf 包管理器进行安装,命令为
sudo dnf install zsh
- macOS:使用 Homebrew 包管理器进行安装,命令为
brew install zsh
2. 官网安装
👉 Zsh 官方网站
2.3 使用
查看系统安装的 Shell
cat /etc/shells
查看当前使用的 Shell
echo $SHELL
切换当前使用的 Shell
chsh -s /shell/path
其中 /shell/path
是要切换到的新 shell 的路径,例如 /bin/zsh
、/bin/bash
等。
3 Oh My Zsh
Oh My Zsh 是一款针对 zsh shell 的社区驱动的框架,提供了丰富的主题、插件和配置管理功能,让你可以轻松地定制和管理你的命令行环境。
3.1 安装
curl 命令
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
wget 命令
sh -c "$(wget -qO- https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
fetch 命令
sh -c "$(fetch -o - https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
上述地址安装失败,可替换为以下地址安装
https://github.com/ohmyzsh/ohmyzsh/tree/master/tools/install.sh
3.2 编辑配置文件
安装完成后,可以在终端中使用以下命令来打开 Oh My Zsh 配置文件进行编辑,~/.zshrc
为隐藏文件,使用快捷键 command + shit + .
显示/隐藏系统隐藏文件。
open ~/.zshrc
1. 修改主题
ZSH_THEME="random",主题选择
2. 兼容 Bash 环境变量
.bashrc
和 .zshrc
都是 shell 配置文件,它们分别用于 Bash 和 Zsh。如果想要在使用 Zsh 时也应用 Bash 的配置,可以在 .zshrc
文件中添加 source ~/.bashrc
来实现。当打开一个新的终端窗口或标签页时,也将应用相同的配置。
.bashrc
环境配置
# Java环境
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin
export CLASS_PATH=$JAVA_HOME/lib
# Gradle环境
export GRADLE_HOME=/usr/local/opt/gradle@7
export PATH=$PATH:$GRADLE_HOME/bin
# Flutter镜像(Pub get)
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export FLUTTER_GIT_URL=https://gitee.com/mirrors/Flutter.git
# Flutter环境
export FLUTTER_ROOT=/Users/admin/Desktop/Flutter/v2.0.3/Flutter
export PATH=$PATH:$FLUTTER_ROOT/bin
# Android环境
export ANDROID_HOME=/Users/admin/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/build-tools
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/cmdline-tools
# Pythod环境
export PYTHONPATH=/usr/local/lib/python3.9/site-packages:$PYTHONPATH
.zshrc
环境配置
...
ZSH_THEME="ys"
...
# 兼容 bash 相关环境变量
source ~/.bashrc
# 指令自动补全插件
source ~/.oh-my-zsh/custom/plugins/incr/incr*.zsh
3. 重载资源
在修改.zshrc
配置文件后,使用以下命令或者新建终端页面重新加载资源:
source ~/.zshrc
3.3 插件安装及使用
1. 安装插件
1. 使用 Homebrew 安装
brew install autojump
2. 使用 git 安装
Oh My Zsh 的插件目录位于 ~/.oh-my-zsh/plugins
。
cd ~/.oh-my-zsh/plugins/
git clone git://github.com/wting/autojump.git ~/.autojump
进入 autojump 目录,并运行安装脚本:
./install.py
2. 启用插件
编辑 .zshrc
配置文件,在 plugins
配置项中添加 autojump 插件,修改后需要重载资源
plugins=(
git
autojump
zsh-autosuggestions
zsh-syntax-highlighting
)
3.4 卸载
1. 运行以下命令来卸载 Oh My Zsh
uninstall_oh_my_zsh
2. 删除用户主目录下的 .oh-my-zsh
目录
rm -rf ~/.oh-my-zsh
3. 删除 .zshrc
配置文件