欢迎光临散文网 会员登陆 & 注册

[oeasy]python0036_牛说_cowsay_小动物说话_asciiart_figlet_lolcat_管道(祝大家新

2022-12-31 09:56 作者:oeasy  | 我要投稿

牛说(cowsay)

回忆上次内容

  • 上次我们研究了shell脚本的编程

  • 并且在shell中实现了

    • 循环语句

    • 延迟命令

    • 清屏命令

    • python命令

    • figlet命令

  • 还能整点什么呢?🤔

  • 还想要让小动物报时

cowsay

  • 首先要安装 cowsay

sudo apt install cowsay

  • 装完之后

    • cow 就可以 say 了吗?

  • 怎么say呢?

利用管道

  • 利用管道(pipe)来say

  • 如何与报时函数整合呢?

整合

  • 这如何和我们的报时程序整合呢?

#!usr/bin/python3import 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


      [oeasy]python0036_牛说_cowsay_小动物说话_asciiart_figlet_lolcat_管道(祝大家新的评论 (共 条)

      分享到微博请遵守国家法律