学习安装配置和使用Oh My Zsh

Oh-My-Zsh
作者

陈琼

发布日期

2023年10月7日

什么是Zsh ?

在理解什么什么是Zsh之前,先理解什么是shell。Shell是连接用户和Linux内核的一种应用程序,从而让用户能更加高效、安全、低成本地使用Linux内核。而Z Shell就是其中一种Linux Shell程序,简称Zsh。

Mac OS 自带了一些Shell程序,包括:bash、csh、dash、ksh、sh、tcsh和zsh。

我们可以在Mac OS的Terminal中使用下面的命令查看Mac OS自带的shell程序

cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

我们可以看到输出结果显示的最后一个就是zsh,然后我们可以看看系统里目前安装的zsh版本是哪个版本。

zsh --version

zsh 5.9 (x86_64-apple-darwin22.0)

Zsh的功能很强大,但是它的配置过于复杂。也正因为如此,才有了Oh My Zsh的诞生。

什么是Oh My Zsh

下面是Oh My Zsh 官网给出的Oh My ZSH的解释。

Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh configuration. It comes bundled with thousands of helpful functions, helpers, plugins, themes, and a few things that make you shout…

Oh My ZSH 是基于ZSH命令行的扩张工具集,提供了丰富的扩展功能。安装Oh My Zsh的前提是安装ZSH,目前版本的Mac 系统默认自动安装了Zsh。

如何安装

可以通过curl和wget两种方式来安装。

curl安装命令

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

wget安装命令

sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

Oh My ZSH常用设置

Zsh的配置文件存在放在用户目录下的.zshrc文件中,如果我们想进行相关的配置的时候,只需要打开该配置文件,然后进行相应的修改即可。

配置主题

Oh My Zsh 有丰富的主题配置,我们可以在主题列表中选择相应的主题,并记住主题的名字。

我们在终端中打开前面提到的配置文件 .zshrc

open ~/.zshrc

如果你熟悉vim编辑器的话,可以用vim打开

vim ~/.zshrc

我们在该配置文件找到 ZSH_THEME 变量明,我们可以看到默认的主题名是robbyrussell,把该名字改成为我们自己想要的主题名称即可。

# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="robbyrussell"

命令别名

我们可以在.zshrc文件中配置alias,可以方便的为其他命令设置别名,可以提高命令的输入效率。

下面我们列出一些git相关的别名

alias g='git'

alias ga='git add'
alias gaa='git add --all'
alias gapa='git add --patch'

alias gb='git branch'
alias gba='git branch -a'
alias gbda='git branch --merged | command grep -vE "^(\*|\s*master\s*$)" | command xargs -n 1 git branch -d'
alias gbl='git blame -b -w'
alias gbnm='git branch --no-merged'
alias gbr='git branch --remote'
alias gbs='git bisect'
alias gbsb='git bisect bad'
alias gbsg='git bisect good'
alias gbsr='git bisect reset'
alias gbss='git bisect start'

alias gco="git checkout"
alias gc="git commit -m"
alias gd='git diff'
alias gf='git fetch'
alias gs="git status"
alias gsm="git summary"
alias gl="git log"
alias gm="git merge"
alias gpl="git pull"
alias gps="git push"
alias grv='git remote -v'
alias grb='git rebase'

我选择了自己最常用的一些命令设置了别名。

alias ga='git add'
alias gaa='git add --all'
alias gc="git commit -m"
alias gpl="git pull"
alias gps="git push"

配置插件

Oh My Zsh可以安装丰富的插件,从而实现各种各样的功能,我们在安装好插件之后,需要在.zshrc文件中进行配置,才会起作用,我们相应的插件名称放入plugins=后面的括号中,配置多个插件时,插件名称之间需用空格分开。

plugins=(git zsh-syntax-highlighting zsh-autosuggestions git-open autojump z)

常用方法

改变路径

Oh My Zsh 下,改变路径不再使用cd命令,而直接使用下面的方法即可。

命令 结果
文件夹/
.. 回到上一级目录
回到上两级目录
\ 回到电脑根目录
~ 回到用户根目录
- 回到上一次所在的目录

take命令

一个三合一命令,创建一个文件夹,并自动进入该文件夹

命令 结果
take 下载gzip文件(.gz,.bz2,.xz),并解压缩
take 从网络地址(http,ssh)克隆git repo
take<folder> 建并进入新文件夹
  • zsh_stats 命令会返回包含前20个命令及执行次数的一个列表

TAB键自动补全

Tab键自动补全是Oh My Zsh的一大特色,当我们输入一个命令只输入一半时,按下TAB键会自动显示所有可能相关的命令。

通配符查询

命令 结果
ls*.txt 列出该目录下所有扩展名为txt的文件
ls**/*.txt 列出该目录下(包括子目录)的所有txt文件
ls**/(READ)*.* 找出所有文件名以READ字符起始的文件
ls**/*(READ).* 找出所有文件名以READ字符结尾的的文件
ls**/*(READ)*.* 找出所有文件名中包含READ字符的文件
ls**/*(.) 只搜索文件
ls**/*(/) 只搜索文件夹

扩充文件名和路径

命令 结果
touch name–{1..4}.txt 创建文件name-1.txt,name-2.txt,name-3.txt,name-4.txt
touch name.{css, js, test.js} 创建具有不同扩展名的文件,name.css,name.js,name.test.js
cp folder/name.js{,.bak} 复制文件并添加扩展名.bak
diff folder/{new,old}/name.js 查看两个文件的不同
mkdir -p {source,build,man,help{/pages,/yelp,/images}} 创建完整的文件夹结构
wgethttp://site.com/folder%7B1,2%7D/pic%7B001,002%7D.jpg 下载多个文件

提取历史命令

  • !!,两个感叹号可以提取上次执行的命令
  • !2,感叹号加数字可以提取前n次执行过的命令

更改文件夹名称

mv命令可以执行两个功能, 一是更改文件名称, 二是移动文件或文件夹的位置。

可以通过下面的名称,更改文件或文件夹的名称。

mv oldname  newname

也可以更改文件或文件夹的位置

mv file_name  folder-location

创建目录

mkdir 命令用于创建目录

mkdir [-p] dirNmae

参数说明:

  • -p确保目录名称存在,不存在的就建一个。

实例

在工作目录下,建立一个名为website的子目录:

mkdir website

在工作目录下的notes目录中,建立一个名为t2的子目录。 若在当前目录下notes目录不存在,则建立一个notes目录。

mkdir -p notes/t2