[oeasy]python0036_牛说_cowsay_小动物说话_asciiart_figlet_lolcat_管道(祝大家新年快乐~)
牛说(cowsay)
回忆上次内容
- 上次我们研究了shell脚本的编程
- 并且在shell中实现了 - 循环语句
- 延迟命令
- 清屏命令
- python命令
- figlet命令
 
 
 编辑
编辑
- 还能整点什么呢?
- 还想要让小动物报时
cowsay
- 首先要安装 cowsay
sudo apt install cowsay
- 装完之后 - cow 就可以 say 了吗?
 
 
 编辑
编辑
- 怎么say呢?
利用管道
- 利用管道(pipe)来say
 
 编辑
编辑
- 如何与报时函数整合呢?
整合
- 这如何和我们的报时程序整合呢?
#!usr/bin/python3
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 1s
done
- 看起来有点复杂 - -f moose - 使用驼鹿
 
- -n - 保留转义字符\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/python3
import time
localtime = time.strftime(' %H:%M:%S',time.localtime())
print(localtime,end="")
- 这个东西应该如何理解呢?
 
 编辑
编辑
具体理解
- strftime 函数 - str 是字符串 string 的意思
- f 是 format
 
- strftime 函数 把一个 time.localtime() - 格式化为一个字符串
 
 
 编辑
编辑
- 缺省参数就是当前时间
 
 编辑
编辑
#!/usr/bin/python3
import time
print(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程序
- 这一路真的好远啊 - python3 是脚本解释器
- shell 也是脚本解释器
- 其实我们是在 shell 中利用 python3 的输出结果 - 用 shell 把 python 的粘了起来
- 分时输出的
 
- 不过这一路真的好绕 - 如果能用 python 直接调用 shell 中的命令就好了
- 那个时候 python 就成了胶水的主体
- 完成主循环、延迟等粘合的工作
 
- 也许有一天可以做到
 
- 可以自己画一个小动物来报时吗?
- 我们下次再说程序!
- 蓝桥->oeasy 教您玩转 python_Python - 蓝桥云课
- github->GitHub - overmind1980/oeasy-python-tutorial: 良心的 Python 教程,面向零基础初学者简明易懂的 Python3 入门基础课程。在linux+vim生产力环境下,从浅入深,从简单程序学到网络爬虫。可以配合蓝桥云上实验环境操作。
- gitee->oeasy教您玩转python教程: 面向零基础初学者的简明易懂的 Python3 入门课程,对没有编程经验的同学也非常友好。在vim下从浅入深,逐步学习。从基础入门学习到爬虫。
- 视频->[oeasy]教您玩转python零基础学python入门教程(合集)_哔哩哔哩_bilibili 作者:oeasy
[oeasy]python0036_牛说_cowsay_小动物说话_asciiart_figlet_lolcat_管道(祝大家新年快乐~)的更多相关文章
- 通过CSS实现小动物
		此例演示的是通过CSS实现动物头像,效果如下: 好了,上代码: html代码: <html> <head> <meta charset="utf-8" ... 
- Linux轻松一下——cowsay命令,让动物说话
		Linux动物说话命令 使用方法 安装命令:sudo apt-get install cowsay 使用命令:cowsay hello 查看可选动物 cowsay -l 使用其他动物 cowsay - ... 
- zzulioj--1801--xue姐的小动物(水题)
		1801: xue姐的小动物 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 594 Solved: 168 SubmitStatusWeb Boar ... 
- 牛客练习赛 小D的剑阵 解题报告
		小D的剑阵 题意链接: https://ac.nowcoder.com/acm/contest/369/F 来源:牛客网 现在你有 \(n\) 把灵剑,其中选择第i把灵剑会得到的 \(w_i\) 攻击 ... 
- 牛客练习赛 小A与任务 解题报告
		小A与任务 链接: https://ac.nowcoder.com/acm/contest/369/B 来源:牛客网 题目描述 小A手头有 \(n\) 份任务,他可以以任意顺序完成这些任务,只有完成当 ... 
- 牛客练习赛 小A与最大子段和 解题报告
		小A与最大子段和 题意 在一个序列 \(\{a\}\) 里找到一个非空子段 \(\{b\}\), 满足 \(\sum\limits_{i=1}^{|b|}b_i\times i\) 最大 \(n\le ... 
- 牛客练习赛 小D的Lemon 解题报告
		小D的Lemon 题意 已知 \[ g(x)=\left\{\begin{matrix} 1&,x=1\\ \sum_{i=1}^qk_i&,otherwise \end{matrix ... 
- 【牛客】小w的魔术扑克 (并查集??  树状数组)
		题目描述 小w喜欢打牌,某天小w与dogenya在一起玩扑克牌,这种扑克牌的面值都在1到n,原本扑克牌只有一面,而小w手中的扑克牌是双面的魔术扑克(正反两面均有数字,可以随时进行切换),小w这个人就准 ... 
- 牛客网小a的旅行计划
		地址:https://ac.nowcoder.com/acm/contest/223/B 此题是一道套公式题目,不难,ans=(pow(4,n+1)-4*pow(3,n+1)+6*pow(2,n+1) ... 
- matlab初试牛刀__小练习
		% T1 % 最好还是设 h=2 D=1 clear,clc; h=2;D=1; x=-2*D:0.01:2*D; y=h*(x>D)+h/D.*x.*(abs(x)<=D)-h*(x&l ... 
随机推荐
- Stenciljs 学习之搭建项目
			框架介绍 stenciljs 是用于构建可重用.可扩展的设计系统的工具链.生成在每个浏览器中运行的小型.超快且 100% 基于标准的 Web Component. 更对介绍请参考官方网站 创建项目 使 ... 
- 大数据之Hadoop中HDFS的故障排除
			NameNode故障处理 1)需求 NameNode进程挂了并且存储的数据也丢失了 2)故障模拟 (1)kill -9 NameNode进程 kill -9 19886 (2)删除NameNode储存 ... 
- Halcon无法连接Basler相机及图像不稳定的解决办法
			情况一:出现检测图片接口可以检测到GigE接口,但连接时显示不能初始化. 解决办法:这种首先确保相机网口连接稳定,并在Basler的自带驱动软件Pylon中将TriggerMode改为Off(Halc ... 
- HTML——select下拉选择标签
			select的基本语法: <select> <option></option> </select> 例子: <p>籍贯: <selec ... 
- Django——form组件之循环生成标签
			from django.contrib import admin from django.urls import path from app01.views import index urlpatte ... 
- vue-cli3 项目路由 history 模式部署到 nginx 服务器
			1.项目修改vue.config.js增加 publicPath: '/' 2.nginx配置 location / {#访问前端页面 root /data/dist;#vue项目存放路径 index ... 
- 一文搞懂 MySQL 日志
			前言 MySQL 的日志记录了运行的各种信息,是 MySQL 事务.性能.数据容灾.异常排查等的基础.本文将介绍 MySQL 一些关键日志的作用和原理. MySQL InnoDB 引擎重要的三个日志: ... 
- grafan+cadvisor+prometheus监控docker
			grafan+cadvisor+prometheus监控docker: 运行cadvisor: docker run \ --volume=/:/rootfs:ro \ --volume=/var/r ... 
- Bi-encoder vs Cross encoder?
			本文永久地址:https://wanger-sjtu.github.io/encoder-cross-bi/ Bi-encoder和Cross-encoder是在自然语言理解任务模型的两种不同方法,在 ... 
- .NET C# 程序自动更新组件
			引言 本来博主想偷懒使用AutoUpdater.NET组件,但由于博主项目有些特殊性和它的功能过于多,于是博主自己实现一个轻量级独立自动更新组件,可稍作修改集成到大家自己项目中,比如:WPF/Winf ... 
