Zsh 安装与配置
共计 3684 个字符,预计需要花费 10 分钟才能阅读完成。
一、简介
zsh是一种Unix shell,类似于bash、sh、csh等命令行解释器。它是一种交互式的shell,可以让用户在终端中输入命令并与操作系统进行交互。zsh最初是为了扩展bash的功能而创建的,但现在已经成为了一种很受欢迎的 shell。
与 bash 相比,zsh 有许多优点,其中包括:
- 自动补全:zsh 的自动补全功能比 bash 更强大。它可以根据当前光标位置和历史记录,自动推测出用户想输入的命令或参数,极大地提高了操作效率。
- 主题和插件:zsh 具有丰富的主题和插件库,用户可以通过这些扩展来改善其外观和功能。
- 强大的别名:zsh 支持复杂的别名,这些别名可以包含参数、条件和内嵌命令。
- 可定制性:zsh 允许用户自定义其外观、行为和键绑定,以满足个人偏好和需求。
- 强大的历史命令:zsh 的历史命令比 bash 更强大,可以实现更高级的搜索和过滤功能。
二、安装
运行如下命令即可安装。
apt install git zsh -y
刚安装的 zsh 是极其朴素的,并且功能也比较弱。所以需要安装 oh-my-zsh,它提供了一套预配置的 Zsh 配置文件、主题和插件,这样可以轻松地定制和管理 zsh。
# 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)"
# 卸载
# uninstall_oh_my_zsh
以上命令选择一条运行进行安装 zsh,如果网络不好可能无法下载,毕竟是 github,这个时候找一台可以访问脚本的机器把内容复制到新建的脚本,再进行安装也是可以的。
三、配置
所有的配置修改后都需要执行:
source ~/.zshrc
1. 其他配置
为了更好的使用 zsh 的功能,准备将历史记录的条数增大一点,编辑 ~/.zshrc
文件,添加如下内容。
# 修改zcompdump生成的文件目录
source /etc/profile
export ZSH_COMPDUMP=$ZSH/cache/.zcompdump-$HOST
# 记录历史命令的文件
HISTFILE=~/.history
# 内存中记录历史命令条数
HISTSIZE=10000
# 历史文件中保存的历史命令数
SAVEHIST=10000
# 不同的终端会话历史命令合并到同一历史文件
setopt appendhistory
# 在source $ZSH/oh-my-zsh.sh之前配置升级相关内容
# 始终回复否从不升级,可以通过 omz update 进行更新
DISABLE_AUTO_UPDATE=true
# 始终回复是并自动升级
#DISABLE_UPDATE_PROMPT=true
使用 history -f
可以查看命令运行的时间。
2. 修改主题
zsh 有很多主题可选择,主题链接:https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
选择 ~/.zshrc
文件,修改主题名称即可。
#ZSH_THEME="robbyrussell"
ZSH_THEME="agnoster"
这里可能报错:
(anon):12: character not in range
在 ~/.zshrc
文件添加如下内容即可:
export LC_ALL=C.UTF-8
export LANGUAGE=C.UTF-8
export LANG=C.UTF-8
此外,可能还需要修改命令行的用户名或主机名。
全部隐藏
prompt_context(){}
只隐藏主机
prompt_context() {
if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
prompt_segment black default "%(!.%{%F{yellow}%}.)$USER"
fi
}
只隐藏用户名
prompt_context() {
if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
prompt_segment black default "%(!.%{%F{yellow}%}.)$HOST"
fi
}
还可以限制显示的目录数,比如最大只显示三个:
prompt_dir() {
prompt_segment blue $CURRENT_FG '%3~'
}
3. 添加插件
插件列表:https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins-Overview
这里只安装比较重要的两个插件:
- zsh-autosuggestions插件:根据已经输入的命令,自动显示可能的补全建议
- zsh-syntax-highlighting插件:高亮显示命令行语句
# 安装 zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# 安装 zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
然后编辑 ~/.zshrc
文件,找到 plugins 选项:
plugins=(
zsh-syntax-highlighting
docker
z
colored-man-pages
)
4. 命令别名
以下是我的重命名,请根据自己需要进行设置。
# systemctl
alias syse='sudo systemctl enable --now'
alias sysd='sudo systemctl disable --now'
alias sysr='sudo systemctl restart'
alias syss='sudo systemctl status'
# tmux
alias tl='tmux ls'
alias tlw='tmux list-windows'
alias tlp='tmux list-panes'
alias tka='tmux kill-server'
alias tks='tmux kill-session'
alias ta='tmux a -t dev || tmux new -t dev'
# docker
alias dp='docker ps'
alias dr='docker restart'
alias dl='docker logs'
alias dlf='docker logs -f'
alias dei='docker exec -it'
alias din='docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}"'
alias runlike='docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike -p'
# 清理相关
alias dsd='docker system df'
alias dcp='docker container prune'
alias dvp='docker volume prune'
alias dip='docker image prune'
alias dsp='docker system prune'
alias dspa='docker system prune -a'
# other
alias dh='du -h ./ -d 1' # 查看当前目录占用
alias psg='ps aux | grep'
alias ng='netstat -autnp | grep'
alias wget='wget -c' # 支持断点续传
alias now='date "+%Y-%m-%d %H:%M:%S"' # 查看并格式化当前时间
alias size='f(){ du -sh $1* | sort -hr; }; f' # 查看文件/目录大小 - size /
alias sek='f(){ find / -name $1; }; f' # 在根目录查找文件 - sek test
alias sekc='f(){ find ./ -name $1; }; f' # 在当前目录查找文件 - sekc test
alias ipe='curl ipinfo.io/ip' # 查看当前公网ip
5. 清理无关文件
# 删除历史记录文件
rm -f .zsh_history
# 删除zcompdump文件
rm -f .zcompdump*
提醒:本文发布于369天前,文中所关联的信息可能已发生改变,请知悉!
Tips:清朝云网络工作室