什么是 Z shell ?
Z Shell(简称Zsh)和Bourne-Again SHell(简称Bash)都是Unix/Linux操作系统中的两种主要的Shell,它们都是用于与操作系统进行交互并执行命令的程序。虽然两者都属于shell范畴,但Zsh在设计和功能上是对Bash的一个扩展和增强。
Z Shell(Zsh):
- 增强的功能:Zsh基于Bash,并在此基础上增加了很多高级特性,比如更智能的命令补全系统,它可以自动补全命令及其参数,甚至包括函数、别名和历史记录中的命令片段。
- 高度可定制:Zsh允许用户深度定制其工作环境,例如,可通过Oh My Zsh这样的项目轻松配置和美化命令提示符、加载插件和主题。
- 语法糖:Zsh提供了更多的便利语法,例如内联通配符扩展、更灵活的变量替换规则以及一些额外的控制结构。
- 便捷性:Zsh在用户体验上有更多优化,比如自动纠正命令或路径的拼写错误。
- 配置文件:Zsh的主要配置文件是
~/.zshrc
,在登录shell中会读取.zprofile
。
本文主要介绍zsh的安装。
安装配置zsh
- 安装zsh
# yum 安装 zsh
[root@huawei1 ~]# yum update -y
[root@huawei1 ~]# yum install zsh -y
# 设置 zsh 为默认shell
[root@huawei1 ~]# usermod -s /bin/zsh root
有些操作系统可能使用
chsh -s /bin/zsh
将当前登录的用户shell设置为zsh,若要将其他用户shell设置为zsh,则只需加上username即可。
- 配置shell
zsh 相关配置文件
这些配置文件位置通常在
~/
、/etc/
或者/etc/zsh/
目录下
-
zshrc
:这是Zsh的主要配置文件,它会在每次启动一个新的交互式shell时被读取。在这个文件中,你可以设置环境变量、别名、函数、shell选项、主题以及其他个性化设置。例如,你可以在这里加载插件、自定义命令提示符和定义各种shell行为。 -
zshenv
:这个文件在任何情况下都会被调用,无论是交互式shell还是非交互式shell。它用于设置全局环境变量和基本配置,通常用来做最小化的初始化设置,因为它会被所有的Zsh实例执行。 -
zprofile
:在登录shell中会被读取一次,通常用于设置那些只应在登录shell中执行的命令或变量,比如设定PATH环境变量、加载全局别名等。 -
zlogin
:与zprofile类似。 -
zlogout
:当用户退出登录shell时,这个文件中的命令会被执行,通常用于清理环境、执行登出后的脚本任务等。 -
zshrc
:系统级别的全局配置文件,影响所有用户。用户在个人的~/.zshrc中可以覆盖这些设置。
[root@huawei1 ~]# cat >> /etc/zshrc <<-EOF
autoload -U colors && colors
PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$fg[pink]%}$%b "
EOF
autoload -U colors && colors
autoload
是Zsh的一个特性,它允许在首次使用某个函数或命令时动态加载(而不是在启动shell时一次性加载所有功能)。这里的-U
参数表示“更新”模式,即如果函数已经被定义过,仍然尝试重新加载。colors
是一个启用Zsh内建色彩支持的函数,用于在提示符和其他输出中使用ANSI转义码来设置文本颜色和样式。
PS1="%B%{ f g [ r e d ] fg[red]%}[%{ fg[red]fg[yellow]%}%n%{ f g [ g r e e n ] fg[green]%}@%{ fg[green]fg[blue]%}%M %{ f g [ m a g e n t a ] fg[magenta]%}%~%{ fg[magenta]fg[red]%}]%{ f g [ p i n k ] fg[pink]%} fg[pink]%b "
PS1
是Zsh的主提示符环境变量,用于定义命令行提示符的格式。- 这段字符串描述了一个复杂的命令行提示符结构,其中包含了颜色和样式控制:
%B
开启粗体(Bold)样式%{$fg[red]%}
设置前景色为红色[
开始括号,此处未显示颜色,但仍保持红色前景色%{$fg[yellow]%}%n
将用户名(%n)显示为黄色%{$fg[green]%}@
符号 “@” 显示为绿色%{$fg[blue]%}%M
主机名(%M)显示为蓝色%{$fg[magenta]%}%~
当前工作目录的简化形式(%~)显示为洋红色%{$fg[red]%}]
结束括号,并恢复到红色前景色%{$fg[pink]%}$
表示命令提示符,通常是一个美元符号,这里显示为粉色%b
关闭所有字形属性(如粗体、斜体等)
所以,整个提示符看起来大致类似于 红色[ 黄体用户名 绿色@ 蓝色主机名 洋红色路径 红色] 粉色$
的格式,并且各个部分都有相应的颜色。这种提示符设计旨在帮助用户快速识别当前的工作环境和位置,增加了命令行界面的可视性和可读性。
修改前:
修改后:
安装框架oh-my-zsh
目前网络上有很多用于管理 zsh 配置的框架,像Oh-my-zsh、Prezto、Zinit 、Antigen等等。其中,Oh My Zsh 深受用户欢迎。它配备了许多默认功能,改善您的命令行体验,如自动完成、插件、主题、语法高亮、alias 别名、自定义提示和历史命令管理。
安装命令
通常访问(可访问github)
Method | Command |
---|---|
curl | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" |
wget | sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" |
fetch | sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" |
国内或者印度
Method | Command |
---|---|
curl | sh -c "$(curl -fsSL https://install.ohmyz.sh/)" |
wget | sh -c "$(wget -O- https://install.ohmyz.sh/)" |
fetch | sh -c "$(fetch -o - https://install.ohmyz.sh/)" |
安装 oh-my-zsh成功后,oh-my-zsh 会覆盖原来自定义提示。$HOME 目录下将会有一个名为
.oh-my-zsh
目录。
配置zsh
# 下载自动补齐、高亮插件
cd .oh-my-zsh/plugins
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
git clone https://github.com/zsh-users/zsh-autosuggestions.git
# vim ~/.zshrc
# 添加插件
plugins=(golang git zsh-autosuggestions fast-syntax-highlighting)
setopt autocd
# 添加原来的自定义配置
autoload -U colors && colors
PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$fg[pink]%}$%b "
重新打开一个新的窗口即可。
问题反馈
若对文中有任何的疑问,或者需要帮助可以通过以下方式进行反馈
-
直接进行评论或者单独私聊
-
发送邮件到:mr_xuansu@163.com
更多内容请关注微信公众号:萱蘇的运维日常