echo $SHELL、echo $0或chsh -l。还有更多方法:查看当前Linux使用的shellcat /etc/shellsyum install zsh (MacOS默认使用zsh)chsh -s [shell的二进制文件路径],如chsh -s /bin/zsh。切换后要重新打开shell才能生效(当前窗口不生效)Zsh是MacOS的默认shell
这是bash的补全,每次按tab都会刷一次提示,且不区分大小写。不论是补全路径还是命令都是这样
wushu@wushudeMacBook-Pro ~ $ ls
Applications Public
Desktop Sunlogin Files
Develop dump.rdb
Documents go
Downloads go1.18
wushu@wushudeMacBook-Pro ~ $ cd D#tab
Desktop/ Develop/ Documents/ Downloads/
wushu@wushudeMacBook-Pro ~ $ cd D#tab
Desktop/ Develop/ Documents/ Downloads/
wushu@wushudeMacBook-Pro ~ $ cd D
而zsh的补全,每次按tab,都会在当前行填充可行项
补全路径
wushu@wushudeMacBook-Pro ~ % cd D#tab。继续按tab会在当前行依次填充以下可行项
Desktop/ Develop/ Documents/ Downloads/
补全命令。补全命令名
wushu@wushudeMacBook-Pro / % ja#tab
jar jasper javac javah javapackager
jarsigner java javadoc javap javaws
补全参数、选项,减轻记忆负担。好像是通过插件拓展的,支持一些常用的命令(git、svn、tar等)
wushu@wushudeMacBook-Pro ~ % git #tab (注意git后面有个空格)
add -- add file contents to index
am -- apply patches from a mailbox
apply -- apply patch to files and/or to index
archimport -- import an Arch repository into git
archive -- create archive of files from named tree
bisect -- find, by binary search, change that introduced a bug
blame -- show what revision and author last modified each line
...
wushu@wushudeMacBook-Pro ~ % git a#tab
add -- add file contents to index
am -- apply patches from a mailbox
apply -- apply patch to files and/or to index
archimport -- import an Arch repository into git
archive -- create archive of files from named tree
wushu@wushudeMacBook-Pro ~ % ls -#tab
-1 -- single column output
-@ -- display extended attribute keys and sizes in long listing
-A -- list all except . and ..
-B -- print octal escapes for control characters
-C -- list entries in columns sorted vertically
-F -- append file type indicators
-G -- enable colorized output
...
补全变量名
wushu@wushudeMacBook-Pro ~ % echo $H#tab
HISTCHARS HOMEBREW_BOTTLE_DOMAIN histchars
HISTCMD HOMEBREW_CELLAR history
HISTFILE HOMEBREW_PREFIX historywords
HISTSIZE HOMEBREW_REPOSITORY
HOME HOST
和bash一样,zsh也通过“上下箭头”按键来查找历史命令。
但bash只是简单地按顺序显示历史命令,而zsh则会根据当前命令行已有的命令部分,匹配显示上一个相同前缀的命令。
例如有这两条历史命令,根据时间排序
cd Develop/ProjectsForCLion/cpp-study/build/
cd Documents/Adobe/
在bash和zsh中,命令行没有任何输入时,按↑键,会填充cd Documents/Adobe/
而当命令行有cd Dev时,按↑键,bash依然会填充cd Documents/Adobe/,但zsh会填充cd Develop/ProjectsForCLion/cpp-study/build/。显然zsh要更加灵活易用。
zsh 不仅支持普通 alias,还支持针对文件类型的 alias
alias -s zip='unzip'
alias -s tgz='tar -zxvf'
alias -s sh=vim
这样配置后,在zsh中
输入xx.sh,会自动用vim打开
输入xx.tgz,将执行tar -zxvf解压
输入xx.zip,将执行unzip解压
zsh 里面使用 bindkey 命令可以设置一系列热键,用来运行某一个 zsh 内部命令或者某个 shell 命令,谁规定终端只能敲字母呢?
我们还可以按热键,比如从网上下载了一个 tar 包解开后要稍微浏览一下里面的内容,用的最多的两条命令是啥呢?第一条是 ls 命令,每到一个子目录都要先按一下,还有就是 cd … 对吧,配置:
bindkey -s '\eo' 'cd ..\n' # 按下ALT+O 就执行 cd .. 命令
bindkey -s '\e;' 'ls -l\n' # 按下 ALT+; 就执行 ls -l 命令
shell编程(脚本)语法:zsh开发指南
zsh-autosuggestions:这个是自动建议插件,能够自动提示你需要的命令
zsh-syntax-highlighting:这个是代码高亮插件,能够使你的命令行各个命令清晰明了
zsh-theme-powerlevel10k 这个主题提供漂亮的提示符,可以显示当前路径、时间、命令执行成功与否,还能够支持 git 分支显示等等。
Oh My Zsh是一个令人愉快的、开源的、社区驱动的框架,用于管理您的 Zsh 配置。它捆绑了数千个有用的功能、助手、插件、主题和一些让你大喊wocao的东西… “哦,我的ZSH!”
使用Oh My Zsh,我们可以非常方便的启用/关闭插件、切换主题等等。

Oh My Zsh官网提供有一键安装命令。注意:安装成功后会覆写~/.zshrc文件,旧的~/.zshrc会备份到~/.zshrc.pre-oh-my-zsh,如果有自己写的东西(如环境变量)要手动添加过来。
官网提供的脚本国内很可能下载不到,可以用这个:
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安装完成后建议读一遍~/.zshrc的内容。
————
(MacOS安装时)提示两个目录的权限过多
[oh-my-zsh] Insecure completion-dependent directories detected:
drwxrwxr-x 3 wushu admin 96 2 10 2022 /usr/local/share/zsh
drwxrwxr-x 4 wushu admin 128 3 24 2022 /usr/local/share/zsh/site-functions
执行chmod 755 /usr/local/share/zsh /usr/local/share/zsh/site-functions即可。
————
zsh捆绑了很多插件和主题,并默认开启了一些
ls打印的文件名也有颜色了
tab后进入"选择模式",可以用方向键来选择可用项标准插件
标准插件即ohmyzsh自带的插件,都在$ZSH/plugins/目录下
见官方wiki-Plugins

第三方插件
自定义(第三方)插件也应该添加到$ZSH_CUSTOM/plugins/。
比如自动补全插件:zsh-autosuggestions,就需要自己下载并放到$ZSH_CUSTOM/plugins/
通常都可以使用git下载第三方插件,如自动补全插件:zsh-autosuggestions
使用git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions,该命令还指定了下载目录为$ZSH_CUSTOM/plugins/
然后在~/.zshrc中找到plugins=(git)这一行,修改为plugins=(git zsh-autosuggestions)即可启用此插件。
其它插件的下载和启用与此同理。
两个常用的插件:自动补全
zsh-autosuggestion、语法高亮zsh-syntax-highlighting
见官方wiki-Themes

我喜欢这个主题af-magic!