Linux终端环境配置

很多同学私信问教程中的终端环境是怎么配置的,
因为后续的各种教程中我们也会经常使用到终端环境,
所以这里就手把手带着大家一起来配置一下。

1. 创建虚拟机

首先你需要有一台Linux系统的服务器,
可以是本地的虚拟机,也可以是云上的虚拟机,
本地虚拟机的话可以使用VirtualBox或者VMware Workstation等等这些虚拟机软件来安装一个Linux系统,
推荐一个轻量级的虚拟机管理软件Multipass,
它是由Ubuntu官方提供的,
只需要一个命令就可以非常方便的在本地创建一个虚拟机,
官方网址在这里:https://multipass.run/

Multipass常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 创建虚拟机
multipass launch --name harbor --cpus 4 --memory 8G --disk 100G

# 查看虚拟机
multipass list / multipass ls

# 进入虚拟机
multipass shell harbor

# 挂载目录
multipass mount ~/kubernetes/master harbor:~/master

# 退出虚拟机
exit

# 删除虚拟机
multipass delete harbor

# 清理虚拟机
multipass purge harbor

如果你想要有一个属于自己的云虚拟机用来搭建一些博客或者网站的话,
也可以使用亚马逊的AWS,它提供一个为期一年的免费套餐,
地址在这里:https://aws.amazon.com/cn/free/
大家可以自己注册一下。

2. 连接到虚拟机实例

如果是Mac或者Linux系统的话,
可以打开一个终端窗口,使用ssh命令来连接到虚拟机实例,

1
ssh -i ~/.ssh/id_rsa username@ip_address

其中-i后面加上的是你的私钥文件的路径,
username是用户名,ip_address是你的虚拟机实例的IP地址,
如果是云上的虚拟机的话这些信息都可以在虚拟机实例的控制台中找到。

如果是Windows系统的话,
推荐使用XShell来连接到虚拟机实例,
XShell的官方网址在这里:https://www.xshell.com/zh/xshell/
下载安装好之后,打开XShell
新建一个连接到虚拟机实例的会话,
名称随便填写,协议选择默认的SSH
端口号默认的22
然后在主机中填写虚拟机实例的IP地址,

然后点击左侧的用户身份验证,安装下面配置用户名和私钥文件的路径,

然后点击确定,连接就配置好了。

3. 配置终端环境

连接到虚拟机实例之后,我们就可以开始配置终端环境了,

3.1 安装依赖工具

首先我们需要安装一些必要的支持工具,
包括wget、git、curl和vim等等,

1
sudo apt install wget git curl vim -y

3.2 安装zsh

连接成功之后就可以开始配置终端环境了,
首先我们来把当前的shell切换成zsh,
ubuntu系统默认的shell是bash,
可以使用echo $SHELL命令来查看当前使用的shell
zsh是bash的一个替代品,
它的功能更加强大和丰富,
可以使用cat /etc/shells来查看支持的shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/usr/bin/zsh
/bin/zsh
/bin/ksh
/bin/rksh
/usr/bin/ksh
/usr/bin/rksh
/bin/csh
/bin/tcsh
/usr/bin/csh
/usr/bin/tcsh

如果结果中没有zsh的话就需要使用下面的命令来安装一下:

1
sudo apt install zsh -y

3.3 安装字体

终端的一些iconfont需要一些特殊字体才能完美显示,
推荐使用Nerd字体,官网:nerdfonts.com/
powerlevel10k主题推荐使用MesloLGS-Nerd字体,
一般在初次安装配置主题的时候会默认提示安装,
但是如果没有正常安装的话也可以使用下面的内容来手动安装一下:
MesloLGS字体ttf文件下载地址:

1
2
3
4
wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf &&
wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf &&
wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf &&
wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf

或者Mac也可以使用Homebrew来安装

1
2
3
4
5
6
7
# Mac homebrew
brew tap homebrew/cask-fonts &&
brew install --cask font-<FONT NAME>-nerd-font

e.g.
brew tap homebrew/cask-fonts
brew install --cask font-code-new-roman-nerd-font

安装完成之后再系统设置或者各个软件比如终端或者VSCode上把字体设置为MesloLGS NF就可以了。

如果是没有安装KDE或者Gnome图形界面的Linux的话,可以使用下面的命令来设置一下:

1
2
3
4
5
6
# Linux安装字体
sudo cp ttf/*.ttf /usr/share/fonts/truetype/
# 安装fontconfig
sudo apt install fontconfig
# 刷新字体缓存
fc-cache -fv

3.4 安装Oh-My-Zsh

执行下面的语句就可以安装了。

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

慢或者失败的小伙伴可以换成国内源:

1
wget https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh

下载之后给install.sh添加执行权限:

1
chmod +x install.sh

然后还需要修改一下远程仓库地址:
使用vim打开install.sh文件(vim install.sh)后,找到以下部分:

1
2
3
4
5
# Default settings
ZSH=${ZSH:-~/.oh-my-zsh}
REPO=${REPO:-ohmyzsh/ohmyzsh}
REMOTE=${REMOTE:-https://github.com/${REPO}.git}
BRANCH=${BRANCH:-master}

将中间两行修改为下面这样,使用gitee镜像:

1
2
REPO=${REPO:-mirrors/ohmyzsh}
REMOTE=${REMOTE:-https://gitee.com/${REPO}.git}

然后保存退出::wq
再执行一下,一般就应该安装好了。

将系统默认shell切换为zsh

1
2
3
4
5
# 切换默认shell
chsh -s $(which zsh)

# 确认
echo $SHELL

3.5 安装Zsh主题和插件

1
2
3
4
5
6
7
8
9
# powerlevel10k主题
git clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k
# zsh-autosuggestions自动提示插件
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# zsh-syntax-highlighting语法高亮插件
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

# 配置powerlevel10k
p10k configure

编辑~/.zshrc文件启用插件和主题

1
2
3
4
5
6
7
8
9
# 修改主题
ZSH_THEME="powerlevel10k/powerlevel10k"

# 启用插件
plugins=(
git
zsh-autosuggestions
zsh-syntax-highlighting
)