Zsh 技巧和窍门
在 unix/linux 操作系统环境中,我们会经常讨论 shell、终端和命令行接口。Bash 可能是最有名的 shell,但在 Mac 电脑中,Zsh 可能是最为流行的 shell 了。
什么是 Zsh?
Zsh 也被称为 z Shell,它扩展了 Bourne Shell (sh)的功能,提供了更新的特性以及对插件和主题的更多支持。从 2019 年的 MacOS Catalina 开始,Zsh 成为 Mac 电脑中默认的登录和交互式 shell。
安装 Zsh
安装 Oh My Zsh 前提条件:必须已安装 zsh
Mac
在 Mac 电脑上,你可以使用 Homebrew 来安装 Zsh。brew install zsh
Linux(Ubuntu)
# 1. 安装zsh
sudo apt-get install zsh
# 2. 确认是否安装成功
zsh --version
# 3. 设置zsh为默认shell
sudo chsh -s (which zsh)
# 4. 注销重新登录
复制代码
Linux(Centos)
# 1. 安装zsh
sudo yum install zsh
# 2. 确认是否安装成功
zsh --version
# 3. 设置zsh为默认shell
sudo chsh -s (which zsh)
# 4. 注销重新登录
# 查看系统当前 shell
cat /etc/shells
复制代码
通过 yum 安装的 zsh 的版本是 5.0.2 的,而很多主题都要用到更高版本的 zsh,需要高版本可以使用源码安装
首先卸载 zsh
然后编译吧
sudo yum update -y
sudo yum install -y git make ncurses-devel gcc autoconf man
git clone -b zsh-5.7.1 https://github.com/zsh-users/zsh.git /tmp/zsh
cd /tmp/zsh
./Util/preconfig
./configure
sudo make -j 20 install.bin install.modules install.fns
复制代码
设置成默认 shell
command -v zsh | sudo tee -a /etc/shells
sudo chsh -s /usr/local/bin/zsh
复制代码
当安装完 Zsh 后,你也可以安装最流行的 Zsh 插件,oh-my-Zsh
,这个插件有很多内置插件和主题,使用如下安装脚本:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
复制代码
手动安装
1.1 卸载低版本
# 卸载当前版本
sudo yum remove zsh
复制代码
1.2 下载源码
# 下载
wget https://sourceforge.net/projects/zsh/files/zsh/5.8/zsh-5.8.tar.xz/download
# 解压
tar xvf zsh-5.8.tar.xz
复制代码
1.3 编译安装
# 安装编译工具
yum install gcc perl-ExtUtils-MakeMaker
yum install ncurses-devel
# 进入源码目录
cd zsh-5.8
# 执行配置
# 默认安装在:/usr/local/bin/zsh
./configure
# 编译和安装
make && make install
# 添加信息
vim /etc/shells
# 在最后一行加上:/usr/local/bin/zsh
复制代码
1.4 验证结果
# 切换shell
chsh -s /usr/local/bin/zsh
# 查看版本信息
zsh --version
# zsh 5.8 (x86_64-pc-linux-gnu)
复制代码
Zsh 基本命令
6 个鲜为人知的 Zsh 技巧和窍门
take
命令
这个命令是 mkdir 和 cd 两个命令的组合。也可以根据需要生成中间目录。
指定命令查看历史
输入指定命令,再按向上箭头,可循环遍历以该命令开头的历史记录
zmv
用 zmv 重命名大量文件。首先,运行 autoload zmv
来安装 zmv
。然后执行如下命令:
zmv '(*).(jpg|jpeg)' 'demo-1.2'
复制代码
zcalc
在命令行中打开计算器,首先,运行 autoload zcalc
来安装 zcalc
。然后就可以执行 zcalc
命令。
Ctrl-q
当你输入了一条长的命令,发现需要在其之前先执行一条命令时,就可以按 Ctrl-q
暂存当前命令,然后输入另外一条命令,当另外这条命令执行结束后,会自动重新填充好暂存的命令。
ctrl-x-e
当你输入了一条很长的命令,发现命令中间有地方输入错误时,可以按 ctrl-x-e
将该命令拷贝到编辑器中进行编辑,编辑完后,保存退出即可。
好用的插件
要启用 zsh 的插件, 在~/.zshrc 中设置:
plugins=(git autojump last-working-dir tmux tmuxinator web-search fancy-ctrl-z themes)
复制代码
autojump
last-working-dir
tmux
tmuxinator
web-search
fancy-ctrl-z
安装 oh-my-zsh
curl 安装
GitHub:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
复制代码
Gitee ( 国内镜像 )
sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"
复制代码
wget 安装
GitHub:
sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
复制代码
Gitee ( 国内镜像 )
sh -c "$(wget -O- https://gitee.com/pocmon/mirrors/raw/master/tools/install.sh)"
复制代码
[root@master]/fly/k8s/shell/ohmyzsh# ./install.sh
Cloning Oh My Zsh...
remote: Enumerating objects: 1280, done.
remote: Counting objects: 100% (1280/1280), done.
remote: Compressing objects: 100% (1236/1236), done.
remote: Total 1280 (delta 24), reused 1230 (delta 24), pack-reused 0
Receiving objects: 100% (1280/1280), 1.06 MiB | 1.23 MiB/s, done.
Resolving deltas: 100% (24/24), done.
From https://github.com/ohmyzsh/ohmyzsh
* [new branch] master -> origin/master
Branch master set up to track remote branch master from origin.
Already on 'master'
/fly/k8s/shell/ohmyzsh
Looking for an existing zsh config...
Found ~/.zshrc. Backing up to /root/.zshrc.pre-oh-my-zsh
Using the Oh My Zsh template file and adding it to ~/.zshrc.
__ __
____ / /_ ____ ___ __ __ ____ _____/ /_
/ __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \
/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / /
\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/
/____/ ....is now installed!
Before you scream Oh My Zsh! look over the `.zshrc` file to select plugins, themes, and options.
• Follow us on Twitter: https://twitter.com/ohmyzsh
• Join our Discord community: https://discord.gg/ohmyzsh
• Get stickers, t-shirts, coffee mugs and more: https://shop.planetargon.com/collections/oh-my-zsh
复制代码
升级 oh-my-zsh
要升级 oh-my-zsh, 终端输入:
获取更新
默认情况下,系统会提示您每 2 周检查一次更新。在 Oh My Zsh 加载之前~/.zshrc
,您可以通过在文件中添加一行来选择其他更新模式:
自动更新无确认提示:
zstyle ':omz:update' mode auto
复制代码
如果有可用更新,请每隔几天提供一次提醒:
zstyle ':omz:update' mode reminder
复制代码
要完全禁用自动更新:
zstyle ':omz:update' mode disabled
复制代码
注意:您可以使用以下设置控制 Oh My Zsh 检查更新的频率:
# This will check for updates every 7 days
zstyle ':omz:update' frequency 7
# This will check for updates every time you open the terminal (not recommended)
zstyle ':omz:update' frequency 0
复制代码
手动更新
如果您想随时更新(也许有人刚刚发布了一个新插件而您不想等待一周?)您只需要运行:
卸载 Oh My Zsh
Oh My Zsh 并不适合所有人。我们会想念你,但我们想让分手变得轻松。
如果要卸载oh-my-zsh
,只需从命令行运行uninstall_oh_my_zsh
。它将自行删除并恢复您以前的bash
或zsh
配置。
使用 Oh My Zsh
插件
Oh My Zsh 附带大量插件供您使用。您可以查看插件目录和/或wiki以查看当前可用的内容。
启用插件
一旦您发现一个(或多个)您想与 Oh My Zsh 一起使用的插件,您需要在.zshrc
文件中启用它们。您将在您的$HOME
目录中找到 zshrc 文件。用你最喜欢的文本编辑器打开它,你会看到一个列出你想要加载的所有插件的地方。
例如,这可能开始看起来像这样:
plugins=(
git
bundler
dotenv
macos
rake
rbenv
ruby
)
复制代码
请注意,插件由空格分隔(空格、制表符、新行...)。不要在它们之间使用逗号,否则会中断。
使用插件
每个内置插件都包含一个 README,用于记录它。此自述文件应显示该特定插件中包含的别名(如果插件添加了任何别名)和额外的好东西。
主题
我们会承认的。在 Oh My Zsh 世界的早期,我们可能有点太高兴了。我们现在捆绑了超过 150 个主题。他们中的大多数人在 wiki 上都有截图(我们正在努力更新这个!)。去看一下!
选择主题
Robby 的主题是默认主题。这不是最花哨的。这不是最简单的。这是正确的(对他来说)。
找到要使用的主题后,您需要编辑该~/.zshrc
文件。您将在其中看到一个环境变量(全部大写),如下所示:
要使用不同的主题,只需更改值以匹配所需主题的名称。例如:
ZSH_THEME="agnoster" # (this is one of the fancy ones)
# see https://github.com/ohmyzsh/ohmyzsh/wiki/Themes#agnoster
复制代码
注意:许多主题需要安装电力线字体或书呆子字体才能正确呈现。没有它们,这些主题将呈现奇怪的提示符号
打开一个新的终端窗口,您的提示应如下所示:
如果您没有找到适合您需求的主题,请查看 wiki 了解更多主题。
如果你觉得很烦,你可以让电脑在你每次打开一个新的终端窗口时为你随机选择一个。
ZSH_THEME="random" # (...please let it be pie... please be some pie..)
复制代码
如果您想从您最喜欢的主题列表中选择随机主题:
ZSH_THEME_RANDOM_CANDIDATES=(
"robbyrussell"
"agnoster"
)
复制代码
如果您只知道不喜欢哪些主题,则可以将它们类似地添加到忽略列表中:
ZSH_THEME_RANDOM_IGNORED=(pygmalion tjkirch_mod)
复制代码
异常问题
1. 卸载 zsh 后无法登陆 root 账户的解决方案
#在终端中输入
sudo vim /etc/passwd
#将第一行
root:x:0:0:root:/root:/bin/zsh
#改为
root:x:0:0:root:/root:/bin/bash
# 将最后一行
username:x:1000:1000:username,,,:/home/username:/username/local/bin/zsh
# 改为
username:x:1000:1000:username,,,:/home/username:/username/local/bin/bash
# 保存就可以登录root了
复制代码
参考链接:
zsh
ohmyzsh更新
ohmyzsh插件清单
评论