[oeasy]python0036_牛说_cowsay_小动物说话_asciiart_figlet_lolcat_管道(祝大家新
牛说(cowsay)
回忆上次内容
上次我们研究了shell脚本的编程
并且在shell中实现了
循环语句
延迟命令
清屏命令
python命令
figlet命令

还能整点什么呢?🤔
还想要让小动物报时
cowsay
首先要安装 cowsay
sudo apt install cowsay
装完之后
cow 就可以 say 了吗?

怎么say呢?
利用管道
利用管道(pipe)来say

如何与报时函数整合呢?
整合
这如何和我们的报时程序整合呢?
import time print(time.asctime())
一步一步来

figlet的结果再通过管道送cowsay

管道原理

然后尝试循环起来
把 cowsay 整合进来
把figlet的输出结果再送到cowsay -f moose -n
其实就是一步步通过管道流淌的过程
for a in {1..10}do clear python3 show_time.py | figlet |cowsay -f moose -n sleep 1sdone
看起来有点复杂
保留转义字符
\n
避免屏幕混乱
使用驼鹿
-f moose
-n

这确实有点亚文化😓
可以来点更亚的文化吗?😄
彩色效果
#安装彩色程序sudo apt install lolcat#实验echo oeasy | lolcat
这样就可以输出彩色效果了

这个可以!
真的很亚☺
可以再把报时整合进来吗?
整合报时

有的时候会因为宽度问题
感觉很乱
我想把时间简化为时分秒
整合时间
整合进入原来的loop.sh
循环中
清屏后
输出这个效果
再延时
for a in {1..100}do clear python3 sleep.py | figlet | cowsay -f moose -n | lolcat sleep 1s done
输出时间太长
其实我只想输出时分秒
搜索

这个就得修改最初的生成时间的源头
修改 show_time.py 文件
show_time.py
#!/usr/bin/python3import time localtime = time.strftime(' %H:%M:%S',time.localtime())print(localtime,end="")
这个东西应该如何理解呢?

具体理解
strftime 函数
str 是字符串 string 的意思
f 是 format
strftime 函数 把一个 time.localtime()
格式化为一个字符串

缺省参数就是当前时间

#!/usr/bin/python3import timeprint(time.strftime('%H:%M:%S'),end="")
格式如何理解呢?
理解格式
格式化成
%H:%M:%S
这个格式%H是小时
%M是分钟
%S是秒钟
中间用:分割
这个格式选取了三个时间元组项

试验走起来
直接运行 sh

这两个搭配起来确实可以运行了!
但是循环次数还是受限制
可以做一个永远循环的吗?
搜索

看起来是把
for i in {0..100}
换成
while true
替换效果

效果还行

更多效果
哈哈 火鸡turkey也能说话
也许我们也可以用fortune-zh
把偈语打到时钟旁边???

如果我想直接运行
loop.sh
呢?而不是
sh loop.sh
可以么?
直接运行
直接运行的话
loop.sh
没有执行权限给他提权
chmod 改变模式
u+x 给当前用户增加执行权限
chmod u+x loop.sh ./loop.sh
然后再运行

绿色说明可以运行了
不过前面还是需要当前路径
./
如果就想要
loop.sh
直接运行不要当前路径
./
呢?
设置路径
export PATH=$PATH:.
注意$的位置
前面的是
PATH
没有$后面的
$PATH
有$.(点)
指的是当前的路径
这样
就可以直接运行当前路径下的程序了
不用在程序前面加上
./
了不过如果关了当前的shell
还是不能直接运行
怎么办来着?🤔
~/.zshrc
编辑当前zsh的配置文件 ~/.zshrc
每次进入zsh都会执行这个配置文件的
这样重开一个shell
还是可以直接运行loop.sh
跳出循环可以用ctrl+c
把循环放到后台用ctrl+z
这就是我们之前都接触过的内容了!
啊~终于完成了
不容易!!!
可以自己做一个小动物吗?
还是先来总结一下吧!
总结
我们狂飙了一路
shell程序
从用 shell 直接运行 python 程序
到用 shell 循环运行 python 程序
shell中的循环体
把 python 的输出结果用管道交给了 figlet 程序
把 figlet 输出的结果用管道给了 cowsay
把 cowsay 的结果给了 lolcat
最后是提权直接运行shell程序
这一路真的好远啊
如果能用 python 直接调用 shell 中的命令就好了
那个时候 python 就成了胶水的主体
完成主循环、延迟等粘合的工作
用 shell 把 python 的粘了起来
分时输出的
python3 是脚本解释器
shell 也是脚本解释器
其实我们是在 shell 中利用 python3 的输出结果
不过这一路真的好绕
也许有一天可以做到
可以自己画一个小动物来报时吗?🤔
我们下次再说程序!👋
蓝桥->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython
视频->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy