终端永远都是折腾的主场之一。
每次在登陆阿里云的 ubuntu 时都会展示一段欢迎词,并且并且带有 Alibaba Cloud 的字样,于是就开始琢磨,这个欢迎词应该是有办法自定义的。
1 2 3 4 5 6 7 8 9
| Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-104-generic x86_64)
* Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage
Welcome to Alibaba Cloud Elastic Compute Service !
Last login: Fri May 13 11:27:32 2022 from xx.xx.xx.xx
|
针对每次登陆都展示相同的问候语,较为简单和通用的办法为修改 /etc/motd
这个文件,果不其然,查看其中的内容:
1 2
| ❯ cat motd Welcome to Alibaba Cloud Elastic Compute Service !
|
随机问候
先来看看几个效果图。
要实现这样的效果,需要用到3个组件:
其中,fortune 负责输出随机问候语,cowsay 用于套框和加入小动物形象,而 lolcat 负责对这些字符画着色。
先安装这些组件(此处为ubuntu的安装办法,其他发行版可以自行上网查找安装方法):
1 2 3 4 5 6
| sudo apt install fortune fortunes-zh
sudo apt install cowsay
sudo apt install lolcat
|
每个组件的作用
先来看看 fortune。fortune 用于输出随机的名言、诗词或者是一些程序文档。执行几次就能够明白:
1 2 3 4 5 6 7 8 9 10
| ❯ fortune 常羡人间琢玉郎,天应乞与点酥娘。尽道清歌传皓齿,风起,雪飞炎海变清凉。 万里归来颜愈少,微笑,笑时犹带岭梅香。试问岭南应不好,却道:此心安处是吾乡。 -- 苏轼《定风波》 ❯ fortune Nothing so needs reforming as other people's habits. -- Mark Twain ❯ fortune 白发悲花落,青云羡鸟飞。 -- 岑参《寄左省杜拾遗》
|
接着是 cowsay。cowsay 用于将输入的内容放到小动物的说话的框中,使其更加地有观赏性和趣味性。
1 2 3 4 5 6 7 8 9
| ❯ echo abcdefg | cowsay _________ < abcdefg > --------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
|
通过查看 cowsay 的 usage,可以看到,不光是有牛一种小动物,还有很多内置的形象可以使用,通过 -f
参数后加内置的形象即可使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ❯ cowsay -h cow{say,think} version 3.03, (c) 1999 Tony Monroe Usage: cowsay [-bdgpstwy] [-h] [-e eyes] [-f cowfile] [-l] [-n] [-T tongue] [-W wrapcolumn] [message] ❯ echo abcdefg | cowsay -f sheep _________ < abcdefg > --------- \ \ __ UooU\.'@@@@@@`. \__/(@@@@@@@@@@) (@@@@@@@@) `YY~~~~YY' || ||
|
而怎么能够知道内置了多少种小动物呢?其实每种小动物都是一个配置文件,并存在 /usr/share/cowsay/cows
中:
1 2 3 4 5 6 7 8 9 10 11 12 13
| ❯ ls /usr/share/cowsay/cows apt.cow elephant-in-snake.cow luke-koala.cow stimpy.cow bud-frogs.cow elephant.cow mech-and-cow.cow suse.cow bunny.cow eyes.cow milk.cow three-eyes.cow calvin.cow flaming-sheep.cow moofasa.cow turkey.cow cheese.cow fox.cow moose.cow turtle.cow cock.cow ghostbusters.cow pony-smaller.cow tux.cow cower.cow gnu.cow pony.cow unipony-smaller.cow daemon.cow hellokitty.cow ren.cow unipony.cow default.cow kangaroo.cow sheep.cow vader-koala.cow dragon-and-cow.cow kiss.cow skeleton.cow vader.cow dragon.cow koala.cow snowman.cow www.cow duck.cow kosh.cow stegosaurus.cow
|
如此一来,既然是随机问候,为什么不随机到底呢,索性小动物的形象也随机一下吧!
可以通过以下的 shell 指令获取到一个随机的小动物配置文件,并将其的名字作为参数传入 cowsay:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ❯ cow=`ls /usr/share/cowsay/cows | sort -R | tail -n 1` ❯ echo abcdefg | cowsay -f ${cow%\.*} _________ < abcdefg > --------- \ (__) \ /oo| \ (_"_)*+++++++++* //I#\\\\\\\\I\ I[I|I|||||I I ` I`I'///'' I I I I I I ~ ~ ~ ~ Scowleton
|
最后来看看 lolcat。lolcat 的作用就简单很多,就是对终端输出的字符进行彩虹色的着色:
整合后放入终端配置文件
经过以上的分析,我们可以通过管道符将以上三个软件组合起来使用,最终整合成这样一个流程:
1 2 3 4
| cow=`ls /usr/share/cowsay/cows | sort -R | tail -n 1`
fortune | cowsay -f ${cow%\.*} | lolcat
|
将其填到终端配置文件,比如 .bashrc 或者 .zshrc(我是用的是 zsh,所以是 .zshrc),然后在之后的每次启动终端,在终端读取这个配置文件的时候,就会执行到这个命令,从而输出问候语。