zsh 终端
推荐使用 zsh 终端替代 bash
bash
apt install zsh -y
bash
# 切换到 zsh
zsh
# 切换到 bash
bash
bash
usermod -s /bin/zsh www
usermod -s /bin/zsh root
安装 ohmyzsh
下面我们使用 ohmyzsh 美化 zsh 界面以及增强 zsh 功能
bash
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
bash
sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
bash
proxychains wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh
chmod +x install.sh
proxychains ./install.sh
ohmyzsh 插件
oh-my-zsh 默认只开启了内置的 git 插件
bash
# ~/.zshrc
# z实现目录间快速跳转
plugins=(git z)
bash
apt install zsh-syntax-highlighting zsh-autosuggestions -y
bash
# ~/.zshrc
. /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
. /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
自定义主题样式
自定义的样式更加简洁
bash
# ~/.zshrc
# 注释掉
# ZSH_THEME="robbyrussell"
# 增加代码
PROMPT="%(?:%{$fg_bold[green]%}%n@%m ➜ :%{$fg_bold[red]%}➜ )"
PROMPT+='%{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"
修改主机名
上述我们对 zshrc 增加了 %m
主机名显示,这主要是为了解决 linux 桌面下登陆其它服务器时更容易区分是本机还是服务器
通过 hostnamectl
指令可以手动修改主机名
bash
# 修改主机名,需要重启才能生效
hostnamectl set-hostname <更短的主机名>
通配符不支持问题
zsh 默认不支持通配符,需要增加一条语句
bash
# ~/.zshrc
setopt no_nomatch
字体支持
oh-my-zsh
的主题有一些特殊的图标,需要安装特殊字体支持,这里推荐安装 Nerd Fonts 系列的 MesloLGM NF 字体
TIP
如果宿主机通过 xshell 远程链接的话,只需要在宿主机上安装 MesloLGM NF
字体,并在 xshell 上选择使用 MesloLGM NF
字体即可
如果你是安装在本地电脑上,则需要 GUI 支持(即必须安装桌面),然后对使用的终端软件,设置字体即可,配置上类似于 [oh-my-posh]
完整案例
bash
# ~/.zshrc
source ${HOME}/.profile
export ZSH="$HOME/.oh-my-zsh"
plugins=(git z)
source $ZSH/oh-my-zsh.sh
. /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
. /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# PROMPT="%(?:%{$fg_bold[green]%}%n@%m ➜ :%{$fg_bold[red]%}➜ )"
PROMPT="%(?:%{$fg_bold[green]%}%n ➜ :%{$fg_bold[red]%}➜ )"
PROMPT+='%{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"
alias bat='batcat'
alias cls='clear'
setopt no_nomatch
alias l="eza"
alias lt="eza -ahTF --level=2"
alias lt3="eza -ahTF --level=3"
alias lt4="eza -ahTF --level=4"
alias lt5="eza -ahTF --level=5"
PATH=${PATH}:/usr/sbin:/usr/local/sbin:sbin
# PATH=${PATH}:/server/nginx/sbin
# PATH=${PATH}:/server/postgres/bin
# PATH=${PATH}:/server/php/84/bin:/server/php/84/sbin
# PATH=${PATH}:/server/node/bin
# PATH=${PATH}:/server/mysql/bin
# PATH=${PATH}:/server/redis/bin
# PATH=${PATH}:/server/sqlite/bin
export PATH
问题修复
1. oh-my-zsh 自动补全,tab 时,前面会多两个字符,并且无法删除
因为 ~/.profile
里将语音设为最简单的 C
导致的
bash
# 修改 ~/.profile 文件
# 方式一:将结尾的两行注释掉,并使用 dpkg-reconfigure locales 将默认LANG设为 zh_CN.UTF-8
# LANG=C
# LANGUAGE=C
# 方式二:将结尾的 LANGUAGE 注释掉,将 LANG 设为 zh_CN.UTF-8
LANG=zh_CN.UTF-8
# LANGUAGE=C
bash
# 重启或使用如下语法
source ~/.profile
source ~/.zshrc