概念
- 终端:命令行交互界面。如:
- windows terminal、windterm、FinalShell。PowerShell。
- 控制台:一种特殊的终端。范围更广,既可以指硬件也可以指软件工具,常用于系统管理和监控。
- TTY:终端的文本输入输出接口。可以理解为就是终端。不深入了解😂。
- Shell:命令行解释器。如:
- Bash、Zsh、PowerShell、git bash。
- 终端通过TTY与Shell通信。
zsh安装
Bash是Linux系统内置的shell,提供了强大的命令行编辑、脚本编写和命令历史功能,广泛用于 Linux 和 macOS 系统中。是目前最流行的 Shell 之一。
而Zsh 是一个功能强大的 Shell,具有比 Bash 更多的特性,如更高级的自动补全、更强大的脚本能力和更丰富的配置选项,还提供了诸如共享历史、拼写校正、主题支持和插件系统等增强功能,使其成为高级用户和开发者的首选。
接下来介绍如何安装:
windows上安装
注意:windows上安装zsh是建立在git bash基础上的。
所以只有安装了git,我们才能在windows上使用zsh。
安装git:git官网。
个人体验:利用上面方法在windows上使用zsh,效果不是特别好,不知道是不是我电脑配置低的原因:每次利用git bash启动zsh都很慢。所以windows上我用的shell一直都是git bash。
下载zsh对应的windows版本,官方并没有提供,由MSYS2提供。(官方下载需要用包管理工具)
- MSYS2 是针对Windows 的软件分发和构建平台。
windows上如果没有包管理工具,只能去这里下载:
后续教程是以文件下载为例。
下载完成之后将压缩包解压,用rar就可以解压。
将解压的内容全部剪切到git的安装目录。
需要权限的话就授权(可能需要多次授权),重名的话直接覆盖。
打开
Git Bash
标签页或者直接右键打开Git bash
输入zsh
,出现下图则安装成功:暂时先不进行其他设置,直接输入
0
结束并生成.zshrc
配置文件即可。该文件在当前用户的家目录,win+r输入.回车进入就是。
由于现在没有安装
zsh
主题,可以这样区分bash
和zsh
,bash
的光标在第二行,zsh
的光标在同一行:
设置默认启动
每次打开
Git Bash
终端,你会发现默认还是Bash
,而不是Zsh
,可以通过编辑Bash
终端的配置文件.bashrc
来实现默认使用Zsh
,在Git Bash
终端中输入命令:1
vim ~/.bashrc
Vim
默认是命令模式,你可以直接用文本编辑器打开将配置内容粘贴进去:1 2 3
if [ -t 1 ]; then #1表示标准输出,用于判断标准输出是否连接到终端(tty),如果是,则执行 zsh 命令来切换为 Zsh Shell。 exec zsh fi
后面是vim的常用命令,
a、shift+insert、esc、+:wq
最后按回车键,保存退出注意:注释(#)调这三行代码,启动git bash时就不会启用zsh。
之后再打开
Git Bash
终端,默认就会使用Zsh
了。第一次可能有一个警告:大概是找不到~/bash_profile
等一些文件,可以忽略,以后不会再出现了。至此windows上安装zsh完成。
Linux上安装
准备:
查看当前 shell
1 2
echo $SHELL echo $0 # or
安装 zsh
CentOS:要管理员身份
1
yum install -y zsh
Ubuntu:
1
sudo apt install -y zsh
将zsh替换为默认shell
- 为 root 设置默认 shell
1
chsh -s /bin/zsh
返回结果如下,表示切换完成(下载安装 oh-my-zsh 成功后也会提示切换)
为特定用户设置默认 shell
1 2
sudo chsh -s /bin/zsh <username> # <username> 替换为实际用户名
- 在 CentOS 8 中可能报错 Command not found,执行
sudo dnf install util-linux-user
- 在 CentOS 8 中可能报错 Command not found,执行
重新登录shell之后,默认就是zsh
至此Linux安装zsh完成。
安装 Oh My Zsh
成功安装了zsh,还需要安装Oh My Zsh,它对zsh进行了扩展,这也是为什么要使用zsh了,而不是bash的原因。
注意:以下方法同适用于安装了zsh的环境,如Linux。
在安装好
Zsh
终端之后,看起来跟Bash
终端并无太大的区别,我们也没有进行设置。而Oh My Zsh
可以用于管理Zsh
配置。它捆绑了数千个有用的功能、助手、插件、主题等。在命令行输入命令并按回车执行:
1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
这条命令国内需要开代理,且模式为Tun终端才能访问。官方有提供国内的下载地址,失败多试几次。
1
sh -c "$(curl -fsSL https://install.ohmyz.sh/)"
还需要有curl以及git工具,我MinGW默认安装了curl命令,如果失败可以下载ohmyzsh安装脚本本地运行。
1
sh ./install.sh #离线安装,注意要进入脚本的下载位置
出现下图的内容就是安装成功了,如果出现错误,或长时间没有响应,多试几次即可:
最后一行的
ERROR
可以忽略,windows正常,Linux没有
配置 zsh
Zsh
的配置文件在用户的家目录,文件名是.zshrc
,编辑配置文件,可以对Zsh
进行一些定制化配置:1
vim ~/.zshrc
编辑并保存配置文件之后,并不会立即生效,可以关闭所有终端重新打开,或者使用命令让配置生效:
source可以替换成.
1 2
source ~/.zshrc . ~/.zshrc # or
配置主题
就是对.zshrc配置
Oh My Zsh
安装默之后,默认使用主题是robbyrussell
,可以修改.zshrc
配置中的ZSH_THEME
字段,所有可用主题可参考ohmyzsh官方主题页面,这里先配置一下我个人比较喜欢的主题:gentoo or eastwood or daveverwer or bira注意:
ZSH_THEME
只能修改为官方提供的主题名,然后重新加载.zshrc
文件,就能修改为指定的主题。- 官方提供的主题都保存在
~/.oh-my-zsh/themes
目录,你也可以自定义主题。
- 官方提供的主题都保存在
配置插件
通过使用插件,可以让
Zsh
的功能更加强大,Zsh
和Oh My Zsh
自带了一些实用的插件,也可以下载其他的插件。 如Zsh
自带Git
插件,可以在命令行显示Git
相关的信息,并提供了一些操作Git
的别名:1 2 3 4 5
gaa = git add --all gcmsg = git commit -m ga = git add gst = git status gp = git push
自动补全
zsh-autosuggestions
插件,可以在你历史指令中找到与你当前输入指令匹配的记录,并高亮显示,如果想直接使用,可以直接通过右方向键补全。 安装插件,在终端分别执行下面两条命令:官方zsh-autosuggestions1 2 3
cd ~/.oh-my-zsh/custom/plugins #指定了克隆的位置,就是什么切换的地方 git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
插件下载完成之后,编辑
~/.zshrc
配置文件,修改插件相关配置项:1
vim ~/.zshrc
插件下载完成之后,编辑
~/.zshrc
配置文件,修改插件相关配置项:1
vim ~/.zshrc
请注意,插件由空格(空格、制表符、换行符…)分隔。请勿在它们之间使用逗号,否则会损坏。
保存退出之后,记得使用命令
source ~/.zshrc
重载配置。该插件生效之后,在使用命令的时候,就会匹配我们使用的命令,右键可以直接补全:如果你不喜欢提示默认的浅灰色,可以在
~/.zshrc
中修改(没有配置项就添加),更多配置可以参考zsh-autosuggestions官方文档:1
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#9fc5e8"
目录跳转
Zsh
自带有一个插件z
,可以让我们在访问过的目录中快速跳转,将该插件配置到~/.zshrc
文件中即可使用:保存退出之后,重载配置,随意进入一些目录,之后再使用命令
z
就可以实现快速跳转,支持模糊匹配:或许相比于
z
,更多人会选择使用autojump
,如果是Mac
或者Linux
没什么问题,Windows
就不太建议折腾了。
其他插件
zsh-syntax-highlighting
:这个插件可以识别的shell
命令并高亮显示1
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-syntax-highlighting
zsh-completions:额外的自动补全功能,用于补充 zsh 中尚不支持的命令补全,该项目将在完善时合并到 zsh。
1
git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions
然后在
.zshrc
文件里面的source "$ZSH/oh-my-zsh.sh"
这一行前添加以下代码1
fpath+=${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions/src
Note: adding it as a regular Oh My ZSH! plugin will not work properly (see #603).
Incremental completion on zsh:增强的实时自动命令补全插件:Incremental completion on zsh
*该插件对性能似乎有一点点影响,请根据需要启用。*其实使用默认的自动补齐(tab)够用了。
作用如图:
配置别名
Zsh
的alias
配置项可以自定义命令别名,在使用一些比较复杂的命令时,使用别名可以提高效率,这里举例添加一个Git
日志的别名:1
alias gli="git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
注意等号两边不要有空格
Shell使用
在不同的终端中我们可以指定不同的Shell来使用。如:
- 在Linux安装zsh中我们就指定了Linux终端的默认Shell为zsh。
- 在稍后介绍的[Windows Terminal](#Windows Terminal)中,也会指定Windows Terminal终端的默认Shell为Git bash。
- 下面介绍在IDE终端中设置自己的Shell。
设置IDE终端的Shell为git bash
如果你按照上面的教程成功在windows上安装了zsh,那么设置Shell为git bash,也就是设置为zsh。
注意:没有安装zsh的情况下也能设置为git bash。优点:高亮、个人爱好。
这里以goland开发工具为例,jetBrains全系列差不多:
进入设置找到终端
Shell path为git安装路径里面的
bin\bash.exe
,注意不是git-bash注意:还需要为
bash.exe
命令指定启动参数--login -i
:图中没有加入,后期发现的问题。
意思是启动登录Shell,并且交互运行。
作用:这个环境下git bash不会出现乱码,文件、目录高亮。
最后应用即可。
其他类似的IDE配置差不多:
- vscode
vscode默认为git bash设置了启动参数,很方便。
Terminal使用
Windows Terminal
Windows Terminal可以理解为:是cmd窗口和PowerShell终端的增强版,它将windows环境下的终端(cmd、PowerShell)都集成在了一起。我们只需要指定对应的Shell(cmd、PowerShell、git bash),即可使用。官方文档。
主要特性:
- 多选项卡支持:
- 一个窗口管理多个Shell。
- 丰富的自定义选项:
- 提供了多种自定义选项,包括更改背景颜色、字体、透明度、主题等,允许用户根据个人喜好定制界面。
- 同一套配置应用于不同Shell。
- GPU 加速的文本渲染:
- 利用 DirectWrite 和 DirectX 提供 GPU 加速的文本渲染,确保快速、流畅的文本显示和滚动体验。
- 支持多种命令行工具和 Shell:
- 支持 PowerShell、CMD(Command Prompt)、Windows Subsystem for Linux(WSL)以及任何其他你喜欢的命令行工具。
- Unicode 和 UTF-8 字符支持:
- 完整支持 Unicode 和 UTF-8 字符集,包括 emoji 和复杂字符。
- JSON 配置文件:
- 使用 JSON 文件进行配置,允许用户灵活地定义设置,如启动命令、默认 Shell、外观等。
- 当然也提供了图形化界面修改配置(没有需要在Microsoft Store中升级到最新版)。
- 使用 JSON 文件进行配置,允许用户灵活地定义设置,如启动命令、默认 Shell、外观等。
- 可扩展性和第三方工具支持:
- 可以通过扩展和插件进一步增强功能,支持第三方工具集成。
安装
Win11系统自带Windows Terminal终端,并且从Windows 11 22H2 版本开始,Windows Terminal 将正式成为 Windows 11 的默认终端。
对于Win10系统需要额外安装,最低要求是Windows 10 2004(内部版本 19041)或更高版本。
安装方法:
- 推荐从Microsoft Store中下载安装。会自动更新。
- 如果无法从 Microsoft Store 安装 Windows Terminal,可以从github仓库的发布页面手动下载已发布的版本。
- 可以下载MSIX Bundle 文件,双击安装。这种方式不能指定安装位置。
- 或者根据自己的操作系统选择对应的压缩包,一般x64。
- 解压到哪里就安装到哪里,需要手动配置path环境变量,值为安装目录。
启动:在运行框中输入wt
,能正常启动,证明安装成功。
在安装成功之后,建议将Windows Terminal设置为默认的终端应用程序。由Windows决定,一般启动的也是wt。
修改默认Shell为Git Bash
可以根据自己的爱好判断是否修改。
每次打开
Windows Terminal
默认使用的是Windows PowerShell
,要改为默认使用Git Bash
,在设置里面进行设置即可。在更多选项中点击设置,或者右键标题栏空白处再点击设置。滚动到底部,点击添加新配置文件——新建空配置文件,然后填入你的git bash所在位置。示例:
注意:
指定的git bash是
bin
目录下的bash.exe。并且需要指定启动参数
--login -i
意思是启动登录Shell,并且交互运行。
作用:这个环境下git bash不会出现乱码,文件、目录高亮。
最后,在启动选项卡中设置
Git Bash
为默认终端并保存配置:
美化
我在windows环境下使用的Shell一般是git bash,可定制化并不高,配置的zsh也没有使用,不过对我来说够用了。
效果如下:
这里就不详细介绍如何实现的了,Windows Terminal都提供了图形化配置。
我遇到的问题:总结一下:Windows terminal集成git-bash,删除到头的时候窗口总是闪烁:
解决办法:新建一个~/.inputrc 文件,输入set bell-style none(可以什么都不写也起作用),保存;重启terminal,问题解决。
.inputrc
是控制命令行界面(终端)行为的配置文件。神奇的是我只要创建了这个空文件,Windows terminal的git bash,删除到头之后就不会闪烁了。
set bell-style none
:关闭终端提示音。set bell-style visible
:使用可见提示而不是声音。
set editing-mode vi
:将编辑模式设置为 Vi 模式。默认为: Emacs 模式。终端的编辑模式主要有vi和emacs两种模式,区别就是快捷键不同。
如果你会vim,强烈建议修改为vi模式。
推荐文章:vim-common-commands
修改之后在insert模式下Emacs模式的部分快捷键依然可以使用。
Emacs模式常用命令:
注意:不同终端部分快捷键可用。
- 光标移动:
Ctrl + A
:移动到行首Ctrl + E
:移动到行尾Ctrl + B
:向左移动一个字符Ctrl + F
:向右移动一个字符Alt + B
:向左移动一个词Alt + F
:向右移动一个词
- 文本编辑:
Ctrl + K
:删除从光标位置到行尾的文本Ctrl + U
:删除从光标位置到行首的文本Ctrl + W
:删除光标位置之前的一个词Alt + D
:删除光标位置之后的一个词Ctrl + Y
:粘贴(恢复)上次删除的文本
- 其他操作:
Ctrl + L
:清屏并重新显示当前行Ctrl + R
:搜索命令历史esc+backspace
:删除一个单词。ctrl+P
:上一条历史命令ctrl+n
:下一条历史命令ctrl+j
:回车
这里就不详细介绍控制终端行为的选项了。能配置终端的编辑模式、提示音、补缺行为、快捷键等。
此外如果你喜欢使用PowerShell也可以使用Oh My Posh美化它,跟前面介绍的Oh My Zsh差不多。
推荐文章:Oh My Posh | Windows Terminal 美化指南
WindTerm
WindTerm是一款跨平台的终端应用,同时也是 SSH/Telnet/Serial/Shell/Sftp 客户端。通常用于远程连接。类似于FinalShell,它有的功能,WindTerm同样支持,并且拥有更多的配色方案,直接上图:
安装
WindTerm是一款部分开源的软件,现目前(2024/5/28)仍存在部分小问题,不过不影响正常使用。
安装可以从github仓库的发布页面根据自己的操作系统手动下载已发布的版本。
使用
使用WindTerm也很简单,语言支持中文。花点时间就能学会。
WindTerm在windows环境下建议将默认的shell修改为git bash。个人爱好。
Windows Terminal和WindTerm两款终端应用都建议安装,各有各的优点和用图。不过我一般使用WindTerm多一点,因为Windows Terminal有的功能WindTerm都有,并且后者有更好的配色方案,支持文件传输,内置远程连接。
安装Windows Terminal主要是因为Windows Terminal集成了Win10的cmd、PowerShell终端。