Linux终端美化
一、先明确几个概念
这些概念本身有着非常浓厚的历史气息,随着时代的发展,他们的含义也在发生改变,它们有些已经失去了最初的含义,但是它们的名字却被保留了下来。
控制台(Console)
控制台(Console)是物理设备,用于输入输出,它直接连接在计算机上,是计算机系统的一部分。计算机输出的信息会显示在控制台上,例如BIOS的输出,内核的输出。
终端(Terminal)
终端(Terminal)也是一台物理设备,只用于输入输出,本身没有强大的计算能力。一台计算机只有一个控制台,在计算资源紧张的时代,人们想共享一台计算机,可以通过终端连接到计算机上,将指令输入终端,终端传送给计算机,计算机完成指令后,将输出传送给终端,终端将结果显示给用户。
虚拟控制台(Virtual Console),虚拟终端(Virtual Terminal)
虚拟控制台(Virtual Console)和虚拟终端是一样的。我们只有一台终端(物理设备),这是我们与计算机之间的用户接口。假如有一天,我们想拥有多个用户接口,那么,一方面我们可以增加终端数目(物理设备),另一方面,还可以在同一台终端(物理设备)上虚拟出多个终端,它们之间互相不影响,至少看起来互相不影响。这些终端就是虚拟终端。
我们按下Ctrl+Alt+Fx时,会进入第x个虚拟终端,一共有六个(几个都有可能)虚拟终端,其中第1个虚拟终端,就是我们默认使用的图形用户界面。
终端模拟器(Terminal Emulator)
我们知道,终端是一种物理设备,而终端模拟器(Terminal Emulator),是一个程序,这些程序用来模拟物理终端。图形用户界面中的终端模拟器一般称为终端窗口(Terminal Window),我们在Ubuntu下打开的gnome-terminal就属于此类。
tty
tty的全称是TeleTYpewriter,这就是早期的终端(物理设备),它们用于向计算机发送数据,并将计算机的返回结果打印出来。显示器出现后,终端不再将结果打印出来,而是显示在显示器上。但是tty的名字还是保留了下来。
我们按下Ctrl+Alt+F2时,会进入第2个虚拟终端,你可以看到屏幕上方显示的tty2。
shell
shell 和之前说的几个概念截然不同,之前的几个概念都是与计算机的输入输出相关的,而shell是和内核相关的。内核为上层的应用提供了很多服务,shell在内核的上层,在应用程序的下层。例如,你写了一个 hello world 程序,你并不用显式地创建一个进程来运行你的程序,你把写好的程序交给shell就行了,由shell负责为你的程序创建进程。
我们在终端模拟器中输入命令时,终端模拟器本身并不解释执行这些命令,它只负责输入输出,真正解释执行这些命令的,是shell。
我们平时使用的sh, bash, csh是shell的不同实现
二、为什么要用ZSH
命令行是程序员的最爱,默认的 bash shell 虽然功能已经很强大,但显得太朴素了,也不够智能,远远谈不上酷炫,虽然已经远远将 windows 的 cmd 甩开几百条街。但对于极客来说,bash 还是太弱了,长得也难看。
zsh 的功能比 bash 强大很多,但配置过于复杂,起初只有极客才在用。后来,有个穷极无聊的程序员可能是实在看不下去广大猿友一直只能使用单调的 bash, 于是他创建了一个名为 oh-my-zsh 的开源项目…
自此,只需要简单的安装配置,小白程序员们都可以用上高档大气上档次,狂拽炫酷吊炸天的 oh-my-zsh
三、zsh的安装与配置
1、查看系统当前使用的shell
——————————————————–
pipci@T440p:~$ echo $SHELL
/bin/bash
pipci@T440p:~$
——————————————————–
2、安装zsh
——————————————————–
pipci@T440p:~$ sudo apt install zsh ##安装
pipci@T440p:~$ zsh –version ##查看是否安装成功
zsh 5.8 (x86_64-ubuntu-linux-gnu)
——————————————————–
3、设置为终端默认 shell:
——————————————————–
pipci@T440p:~$ chsh -s $(which zsh)
Password:
pipci@T440p:~$ echo $SHELL ##这时候命令行还是提示bash,重启就好了,注销也应该可以
/bin/bash
——————————————————–
4、konsole配置 ##因为我用的时Kubuntu所以终端默认时用的konsole
5、重新打开konsole
会有这个提示,缺少.zshrc文件,这个不同担心,安装完Oh-My-Zsh
zsh 本身的配置十分复杂,因此一般不直接对其进行配置,而是使用第三方框架进行设置。
当前最受欢迎的 zsh 配置管理框架为:Oh-My-Zsh
1、 安装Oh-My-Zsh 安装有如下方法:
——————————————————–
# 使用 curl
~$ sh -c “$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)”
# 或者使用 wget
~$ sh -c “$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)”
# 或者手动进行安装
~$ curl -Lo install.sh https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
~$ sh install.sh
——————————————————–
Oh-My-Zsh 常用配置
当安装完成 Oh-My-Zsh 后,会发现创建了~/.zshrc文件,这就是 zsh 的配置文件。
Oh-My-Zsh 为 zsh 提供了很多的主题(Theme)和 插件(Plugin)配置。
——————————————————–
2、主题(Theme)外观样子:zsh 主题是一个可以更改控制台的 zsh 脚本。一个主题可以做很多事情,比如,控制台自动更新当前 git 仓库的状态,或者显示每秒更新的一个时钟…最主要的还是界面的样式,
要使用 主题,首先需要使能该功能,方法如下:
在~/.zshrc文件中,设置 ZSH_THEME 选择为要使用的具体主题名,比如:
——————————————————–
ZSH_THEME=agnoster
——————————————————–
如上就是让 zsh 启用agnoster主题,更改后需要执行 source ~/.zshrc 命令才会生效
更多其他主题,请参考:zsh Themes 网站里提供的多种选择。
注:如果不想使用主题,直接设置:ZSH_THEME=””
3、插件(Plugin)功能扩展:zsh 插件,简单来说,就是 zsh 可以解释执行的一段 shell 脚本。因此,一个插件可以简单地执行一些命令,也可以提供对特定命令和函数的补全功能。
要使用 插件,首先需要使能插件功能,方法如下:
在~/.zshrc文件中,添加如下内容:
plugins=(
git
z
cp
zsh-autosuggestions
zsh-syntax-highlighting
)
如上括号里就是添加的插件,更多其他插件,请参考:zsh Plugins网站里提供的多种选择。
推荐的效率插件
git
这个是装好oh-my-zsh就默认已经开启的,定义了有关 git 的 alias。常用的有
gaa = git add –all
gcmsg = git commit -m
ga = git add
gst = git status
gp = git push
——————————————————–
z
这个是oh-my-zsh默认就装好的,需要自己开启。还有一个autojump的插件和z功能差不多,autojump需要单独装,
如果z插件历史记录太多,并且有一些不是自己想要的,可以删除
z -x 不要的路径
无需cd, 方便的实现目录间快速跳转
z是oh-my-zsh默认就装好的,会记录输入过的路径名,z+某个目录直接跳转到该目录
直接使用 z 路径名 即可
——————————————————–
cp
提供一个 cpv 命令,这个命令使用 rsync 实现带进度条的复制功能。
——————————————————–
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
——————————————————–
4、这里推荐一个主题:powerlevel10k,安装方法如下:
首先下载到 on-my-zsh 的本地目录
——————————————————–
~$ git clone –depth=1 https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k
——————————————————–
~$ ~/.zshrc 设置如下内容
——————————————————–
ZSH_THEME=”powerlevel10k/powerlevel10k”
——————————————————–
安装Nerd Fonts字体
方式一:
——————————————————–
~$ git clone https://github.com/ryanoasis/nerd-fonts.git –depth 1
~$ cd nerd-fonts
~$ ./install.sh
~$ cd ..
~$ rm -rf nerd-fonts
安装完后,终端客户端需要选择名字带 nerd fonts 的字体
——————————————————–
上述方式非常不友好,完全下载,整个包有1G,主要取决外网的速度
方式二:
——————————————————–
~$ mkdir -p ~/.local/share/fonts
~$ cd ~/.local/share/fonts && curl -fLo “Droid Sans Mono for Powerline Nerd Font Complete.otf” https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DroidSansMono/complete/Droid%20Sans%20Mono%20Nerd%20Font%20Complete.otf
生成字体信息缓存
——————————————————–
~$ fc-cache -vf ~/.local/share/fonts/
——————————————————–
查看是否安装成功
——————————————————–
~$ fc-list | grep -i droid
~$ /home/kylin/.local/share/fonts/Droid Sans Mono for Powerline Nerd Font Complete.otf: DroidSansMonoForPowerline Nerd Font:style=Book
——————————————————–
也可以安装MesloLGS字体
——————————————————–
直接双击下载的文件,选择安装,然后在设置终端字体为MesloLGS NF即可。
——————————————————–
5、通过执行p10k configure命令来配置 powerlevel10k,在执行该命令之前,建议先安装上面的字体否则有些图标不能正常显示:
——————————————————–
~$ source .zshrc ##让powerlevel10k主题生效,首次执行完会出现下面的提示,让你通过向导配置这个主题,以后也可以通过p10k configure命令从新配置
配置到这一步,如果没有合适的字体会出现下面的界面
选择合适的字体后可以清楚的显示图标
具体的配置根据自己的喜好一步步配置就好了
5、一些小技巧
给history命令增加时间
.zshrc中加入以下行
——————————————————–
$ vim ~/.zshrc
HIST_STAMPS=”yyyy-mm-dd”
source ~/.zshrc
——————————————————–
五、上面的配置是在普通用户下安装oh my zsh 的,如果切换到root是没有改变的,如果想让root也有同意的界面
上面的操作要在root下从新来一遍
参考:https://blog.csdn.net/u012811805/article/details/109975333
https://www.jianshu.com/p/b8a80dd59414
https://www.cnblogs.com/hongdada/p/14031915.html
https://segmentfault.com/a/1190000039860436?utm_source=sf-similar-article
https://learnku.com/articles/32793
https://zhuanlan.zhihu.com/p/58073103
https://blog.csdn.net/qierkang/article/details/85941316
https://blog.csdn.net/czg13548930186/article/details/72858289/
https://zh.opensuse.org/SDB:Zsh
https://harttle.land/2016/10/25/install-oh-my-zsh-locally.html