正文:
zsh 是一种类似于 bash、sh、csh 等命令行解释器的 Unix shell。它是一种交互式的 shell,用户可以在终端中输入命令并与操作系统进行交互。zsh 最初是为了扩展 bash 的功能而创建的,但现在已经成为了一种非常受欢迎的 shell。
与 bash 相比,zsh 有许多优点,包括以下几个方面:
1. 自动补全:zsh 的自动补全功能比 bash 更强大。它可以根据当前光标位置和历史记录,自动推测出用户想输入的命令或参数,极大地提高了操作效率。
2. 主题和插件:zsh 具有丰富的主题和插件库,用户可以通过这些扩展来改善其外观和功能。
3. 强大的别名:zsh 支持复杂的别名,这些别名可以包含参数、条件和内嵌命令。
4. 可定制性:zsh 允许用户自定义其外观、行为和键绑定,以满足个人偏好和需求。
5. 强大的历史命令:zsh 的历史命令比 bash 更强大,可以实现更高级的搜索和过滤功能。
1、安装
运行如下命令即可安装。
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
如果你的网络不好,可能无法下载以上命令。毕竟,这些命令是从 GitHub 上获取的。这种情况下,你可以在一台可以访问脚本的机器上将内容复制到一个新建的脚本中,然后进行安装。
2.配置
所有的配置修改后都需要执行:
source ~/.zshrc
其他配置
为了更好的使用 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 可以查看命令运行的时间。
修改主题
zsh 有很多主题可选择,主题链接:https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
选择 ~/.zshrc 文件,修改主题名称即可。
#ZSH_THEME="robbyrussell"
ZSH_THEME="agnoster"
这里可能报错:
在 ~/.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~'
}
添加插件
插件列表: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-autosuggestions
zsh-syntax-highlighting
docker
z
per-directory-history
colored-man-pages
)
命令别名
以下是我的重命名,请根据自己需要进行设置。
# 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
转载请注明:汇站网 » Zsh 安装与配置,是一项重要的任务