惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

马浩飞丨博客

ROS实现多机话题通信 Cloudflare R2 个人图床 Isaac Sim 机械臂逆运动学控制 ROS2_Rviz2显示URDF模型 ROS2基本命令总结 Isaac Sim 仿真环境使用简介 Ubuntu设置定时任务 审稿意见撰写流程 Ubuntu 固定USB设备端口名(ttyUSB0->自定义) Git+Github的代码备份与多设备同步 【设备使用】法奥意威 FR5 机械臂 Python 控制 Python识别图片中文字和数字_easyocr 【设备使用】omega.7主手配置与使用方法 【论文笔记】ACT 使用低成本硬件的双手操作模仿学习 HDF5数据文件格式 【仿真实验】robomimic项目复现 【课程笔记】Stanford CS25 V2 - Robotics and Imitation Learning Ubuntu与Window双主机共用一套键鼠 Windows与Ubuntu双系统绑定同一个蓝牙设备(无需重新配对)
使用zsh创建更高效的shell环境
马浩飞 · 2024-11-30 · via 马浩飞丨博客

由于各个发行版的系统默认 shell 都是 bash,所以对 bash 的熟悉度是最高的。

例如 bash/python 脚本开头的 !#/bin/bash,经常用到的命令 source ~/.bashrc 等等。

zsh 是一个为交互式使用而设计的 兼容 bash 的 shell,尽管它也是一个强大的脚本语言。Bash、 ksh 和 tcsh 的许多有用特性都被合并到 zsh 中; 还添加了许多原始特性。

相较 bash 具有以下优点:

  • Tab 补全功能强大。命令、命令参数、文件路径均可以补全。
  • 插件丰富。快速输入以前使用过的命令、快速跳转文件夹、显示系统负载这些都可以通过插件实现。
  • 主题丰富。
  • 可定制性高。

很重要的一点,zsh 完全兼容 bash,如果你的 bash 脚本开头是以 !#/bin/bash 的话,在 zsh 下还是完全兼容 bash 的。

查看系统可以使用的 shell:

1
cat /etc/shells

安装 zsh

1
sudo apt-get install zsh

重新检查系统可以使用的 shell,发现多出了 zsh:

1
cat /etc/shells
1
2
3
4
5
6
7
8
9
10
11
12
$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/bin/zsh
/usr/bin/zsh

查看当前的默认 shell:

1
echo $SHELL

image.png

修改默认 shell:分别修改用户和 root 用户的终端。

1
2
sudo chsh -s /bin/zsh
chsh -s /bin/zsh

重启系统,打开终端,初次启动 zsh 会进入配置界面,输入 0 可以跳过

image.png

安装 Oh My ZSH!

zsh 由于配置过于复杂门槛较高,大神开发了 oh my zsh 极大降低了使用门槛。

1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

image.png

配置主题:powerlevel10k

参考:https://github.com/romkatv/powerlevel10k

(0) 安装字体

下载以下文件:

打开【Terminal->Preferences】,选择配置文件,设置自定义字体为 MesloLGS NF Regular

(1) 安装主题

下载代码库:

1
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

(2) 设置主题

打开 ~/.zshrc ,找到 ZSH_THEME 所在的行,并将其值更改为 "powerlevel10k/powerlevel10k"

1
vim ~/.zshrc
1
ZSH_THEME="powerlevel10k/powerlevel10k"

最后,执行 source ~/.zshrc 配置生效,这时会提示对主题进行配置,按照提示进行即可。

安装插件

(0) oh-my-zsh 内置命令补全

默认 oh-my-zsh 命令自动补全功能如下:

  • 自动列出目录:输入 cd 按 tab 键,目录将自动列出,在按 tab 可以切换
  • 自动目录名简写补全:要访问 /usr/local/bin 这个长路径,只需要 cd /u/l/b 按 tab 键自动补全
  • 自动大小写更正:要访问 Desktop 文件夹,只需要 cd de 按 tab 键自动补全,或者查看 README.md,只需要 cat rea 自动更正补全
  • 自动命令补全:输入 kubectl 按 tab 键即可看到可用命令
  • 自动补全命令参数:输入 kill 按 tab 键会自动显示出进程的 process id

(1) zsh-completions: 额外命令补全

额外的自动补全功能,补充 zsh 中尚不支持的命令补全

安装:

1
git clone --depth=1 https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions

添加以下内容到 ~/.zshrcsource "$ZSH/oh-my-zsh.sh" 之前。

1
fpath+=${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions/src

开启新的 Shell 或执行 source ~/.zshrc 使配置生效。

(2) zsh-autosuggestions: 根据历史命令补全

作用是根据历史输入命令的记录即时的提示(建议补全),然后按右 键即可补全。

安装:

1
git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-autosuggestions

编辑 ~/.zshrc,找到 plugins=(git) 这一行,修改为:

1
plugins=( git zsh-autosuggestions )

开启新的 Shell 或执行 source ~/.zshrc 使配置生效。

(3) zsh-syntax-highlighting: 语法高亮

作用:命令错误会显示红色,直到你输入正确才会变绿色,另外路径正确会显示下划线。

安装:

1
git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

编辑 ~/.zshrc,以下部分添加插件的名字

1
plugins=( git zsh-autosuggestions zsh-syntax-highlighting)

开启新的 Shell 或执行 source ~/.zshrc 使配置生效。

(4) z: 文件夹跳转

z 是一个文件夹快捷跳转插件,对于曾经跳转过的目录,只需要输入最终目标文件夹名称,就可以快速跳转,避免再输入长串路径,提高切换文件夹的效率。

由于 oh-my-zsh 内置了 z 插件,所以只需要在 .zshrc 中,把 z 加入插件列表

1
plugins=( git zsh-autosuggestions zsh-syntax-highlighting z)

使用示例:

1
2
3
# 任意位置下使用命令
z grasp_ros_ws
# 直接跳转至以前曾进入过的文件夹~/Programs/Grasp/6D_Grasp/grasp_ros_ws

image.png

参考:

  1. ohmyzsh
  2. powerlevel10k
  3. zsh-completions
  4. zsh-autosuggestions
  5. zsh-syntax-highlighting
  6. 为为为什么. Linux ZSH 更便捷的 shell 环境
  7. sysin. Linux Zsh 使用 oh-my-zsh 打造高效便捷的 shell 环境