当前位置:首页>Linux>linux Oh My Zsh介绍

linux Oh My Zsh介绍

  • 2026-09-04 11:09:16
linux Oh My Zsh介绍

2026 kpi,好好吃早饭

一,什么是zsh

首先感谢网友提供的思路,让我能了解如此强大的工具,并设置成功讲一个笑话。

官网

https://ohmyz.sh/?spm=5176.28103460.0.0.6bf27551FsKVOv#install

Zsh 是一个功能强大、高度可定制的 Unix shell,它兼容 Bash,但提供了更多现代化特性:

  • 更智能的自动补全(支持 Git、Docker、kubectl 等)
  • 强大的插件和主题系统
  • 更好的历史命令搜索
  • 自动建议(像浏览器那样预测你下一步要输什么!)

简单说:Zsh = Bash + 超能力

二,安装

挂载本地镜像,可以离线安装,这里虚拟机我选择在线安装

sudo yum install zsh git wget  -ychsh -s $(which zsh)sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

想退回正常bash

可以随时切换回 Bash:chsh -s /bin/bash

验证安装

➜  ~ zsh --versionzsh 5.0.2 (x86_64-redhat-linux-gnu)

三,例子

1、选择开启主题agnoster,Oh My Zsh 的主题配置在 ~/.zshrc 文件中,通过修改 ZSH_THEME 变量即可切换。

1. 使用内置主题 agnoster

➜  ~ vim  ~/.zshrc#找到这一行ZSH_THEME="robbyrussell"#改为ZSH_THEME="agnoster"安装 Powerline 字体(解决乱码)# 克隆字体仓库git clone https://github.com/powerline/fonts.git --depth=1cd fonts./install.shcd ..rm -rf fonts#重新加载source ~/.zshrc

可以看到如下变化

2、配置完,先来试试讲一个笑话

准备函数

penguin() {  echo -e "\033[36m"  cat << 'EOF'    .--.   |o_o |   |:_/ |  //   \ \ (|     | )/'\_   _/`\\___)=(___/EOF  echo -e "\033[0m"  # 系统信息  echo "🐧 你好!当前系统: $(uname -s) $(uname -r)"  echo "🕒 运行时间: $(uptime -p | sed 's/up //')"  # 中文笑话数组(3个)  jokes=(    "程序员最讨厌康熙的哪个儿子?—— 胤禩(谐音:bug)"    "为什么程序员总在万圣节扮鬼?—— 因为他们擅长‘debug’(捉鬼)"    "两个程序员在餐厅吵架,为什么最后都沉默了?—— 因为遇到了‘死循环’"  )  # 随机选择笑话(优先用shuf,兼容性方案)  if command -v shuf &> /dev/null; then    random_joke=$(shuf -n1 <<< "$(printf "%s\n" "${jokes[@]}")")  else    random_joke=${jokes[$RANDOM % ${#jokes[@]}]}  fi  # 显示笑话(中文黄色高亮)  echo -e "\n🎯 今日技术梗:"  echo -e "\033[33m$random_joke\033[0m"}

编辑~/.zshrc

vi ~/.zshrc在最后贴上penguin() 函数保存后,重新加载source ~/.zshrc# 每次打开新终端时讲一个笑话(谨慎使用)# echo 'penguin' >> ~/.zshrc测试如下,直接运行penguin

查到还可以直接用api和插件方式,这里我只列举,暂不尝试了

3. 获取笑话 API(免费公开接口)用 https://official-joke-api.appspot.com/random_joke 这个免费接口。4. 在 ~/.zshrc 中添加自定义函数tuxjoke() {  # 获取随机笑话(setup + punchline)  local joke_json  joke_json=$(curl -s "https://official-joke-api.appspot.com/random_joke")  if [[ $? -ne 0 || -z "$joke_json" ]]; then    echo "🐧: 网络不好,我今天心情也不太好..."    return 1  fi  local setup=$(echo "$joke_json" | python3 -c "import sys, json; print(json.load(sys.stdin)['setup'])" 2>/dev/null)  local punchline=$(echo "$joke_json" | python3 -c "import sys, json; print(json.load(sys.stdin)['punchline'])" 2>/dev/null)  # 如果没有 python3,可用 jq(推荐安装)  # setup=$(echo "$joke_json" | jq -r '.setup')  # punchline=$(echo "$joke_json" | jq -r '.punchline')  local full_joke="$setup\n$punchline"  # 使用 cowsay + tux  if command -v cowsay &>/dev/null && [[ -f ~/.local/share/cows/tux.cow ]]; then    echo -e "$full_joke" | cowsay -f tux  else    # 备用:直接打印企鹅 + 笑话    cat << EOF   _______  /       \\ |  O   O  | |    ∆    |  $setup |  \\___/  |  $punchline 😄  \\_______/EOF  fi}

3、更好用的补全功能

1、systemctl 补全:服务名、单元类型# 输入 systemctl restart 后按 Tab,列出所有已安装的服务systemctl restart <TAB># 输入 systemctl enable --now 后按 Tab,补全服务名systemctl enable --now <TAB># 输入 systemctl status *.service 后按 Tab,补全 .service 单元systemctl status <TAB>.service2、ssh 补全:主机名(从 ~/.ssh/config 或 known_hosts)# 输入 ssh 后按 Tab,列出 ~/.ssh/config 中的 Host 条目ssh <TAB># 输入 ssh user@ 后按 Tab,补全已知主机名(从 known_hosts 解析)ssh user@<TAB>3、kill 补全:进程名/PID(通过 ps 解析)# 输入 kill -9 后按 Tab,列出所有进程名(按名称过滤)kill -9 <TAB># 输入 kill <PID> 后按 Tab,自动补全有效 PIDkill 123<TAB>  # 如果 123 是无效 PID,不会补全

自定义补全示例

Zsh 会自动加载 fpath 中目录下的补全函数(文件名格式为 _命令名)。步骤 1:创建补全目录mkdir -p ~/.zsh/completions步骤 2:将补全函数保存为文件,将 _mycmd 函数保存到 ~/.zsh/completions/_mycmd(文件名必须以 _ 开头,后接命令名):cat << 'EOF' > ~/.zsh/completions/_mycmd#compdef mycmd_arguments \  '--verbose[Enable verbose output]' \  '--quiet[Suppress output]'EOF注意:文件第一行必须是 #compdef 命令名(这里是 mycmd),表示这是该命令的补全函数。步骤 3:将目录添加到 fpath 并重新加载在 ~/.zshrc 中添加:fpath=(~/.zsh/completions $fpath)autoload -Uz compinit && compinit然后重新加载配置:source ~/.zshrc

验证

 ⚡ root@localhost  /opt  mycmd --   #按tab键则弹出提示--quiet    -- Suppress output--verbose  -- Enable verbose output

四,补充

1、学习资源推荐

  • 官方文档:Zsh User Guide
  • 交互式教程:zsh-learn
  • 配置生成器:p10k 配置向导
  • 社区配置参考:awesome-zsh-plugins

2、用好zsh的历程

入门:安装 Oh My Zsh + powerlevel10k + 基础插件进阶:替换为 zinit/zimfw,启用懒加载,集成 fzf/zoxide高手:自定义 prompt 函数,编写插件,优化启动性能极客:用 Zsh 写工具脚本(如日志分析、自动化部署)

五,总结

好了,篇幅有限,今日算是抛砖引玉,浅浅入门分享一下,再次感谢网友提供的思路。

最后的最后(Last but not least),欢迎交流:

关注公众号留言,或者在下方直接留言:

最新文章

随机文章