【好玩的编程】给你的朋友一个惊喜(*nix平台)
程序员文章站
2022-05-09 15:13:57
...
前言
圣诞节到了,身为单身狗保护协会的一员是不是应该关心一下身边的单身狗呢?
那么就在节日喜庆氛围而单身狗还打开电脑撸码之时,送他一份特别的惊喜吧。
效果如下:
正文
没错,我们要的效果就是 一句惊艳的祝福,然后一切回归正常,就像什么都没发生过~
整个操作可以分为3部分
1.绘图(就是准备好你的祝福啦)。
2.设置惊喜的开关。
3.清除操作痕迹。
绘图
这里因为要在终端上显示,所以我找到一个将字符转换为“画”的软件 Figlet,这个软件也有很多年的历史啦。
在Fedora 25上直接dn安装即可
$ sudo dnf install figlet
使用也很简单,比如我想输出kangkang,就直接
$ figlet kangkang
便绘制好输出在终端上了,当然你也可以进行重定向输出到文件里
当然啦,既然我们要绘图,就一定要画得好看。
我们可以通过-f
参数选择字体。
$ figlet -f bannner kangkang
figlet自带了一个预览字体的工具showfigfonts
,和一个查看本机figlet支持字体(和字符集?)的工具figlist
。
当然,官网上的字体更全,你可以在figlet官网上的字体展示 上好好挑挑。
选好一个你喜欢的,然后在官网的字体数据库 处下载。
用下载好的.flf
文件就可画出你想要的东东了。
设置开关 and 清除痕迹
我们希望的效果是ta能在特定日期收到祝福,所以要对时间进行判断
在~/.bashrc
的末尾添加一行
if [ `date --iso-8601` == "2017-12-24" ]; then alias ls="/home/kang/.Mygcc/gnak.sh";fi
这里便是用date进行判断,如果到指定日期则会将ls变成我们要执行的脚本,否则什么也不做.
让我们看看我们的惊喜脚本.
# !/bin/bash
# -"- coding: utf-8 -"-
key=1 #开关
today=`date --iso-8601`
if [ $key == 1 -a $today == "2017-12-24" ] #如果开关被设置,并且到了指定日期
then
clear #先清屏
cat /home/kang/.Mygcc/todela #输出我们准备好的画
sed -i '$d' /home/kang/.bashrc #删除之前对bashrc的修改
sed -i '3a key=0' /home/kang/.Mygcc/gnak.sh #将key是指为0,保证脚本只执行一次
else
ls --color=auto # 执行结束啦,我们的惊喜开关关上,变成了正常的ls
fi
这里的.Mygcc
存放我们的惊喜脚本和之前画好的图…emmm挺隐蔽的(这个名字是不是很隐蔽).