牛说(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

编辑

  • 这就是我们之前都接触过的内容了!

    • 啊~终于完成了
    • 不容易!!!
    • 可以自己做一个小动物吗?
  • 还是先来总结一下吧!

总结

[oeasy]python0036_牛说_cowsay_小动物说话_asciiart_figlet_lolcat_管道(祝大家新年快乐~)的更多相关文章

  1. 通过CSS实现小动物

    此例演示的是通过CSS实现动物头像,效果如下: 好了,上代码: html代码: <html> <head> <meta charset="utf-8" ...

  2. Linux轻松一下——cowsay命令,让动物说话

    Linux动物说话命令 使用方法 安装命令:sudo apt-get install cowsay 使用命令:cowsay hello 查看可选动物 cowsay -l 使用其他动物 cowsay - ...

  3. zzulioj--1801--xue姐的小动物(水题)

    1801: xue姐的小动物 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 594  Solved: 168 SubmitStatusWeb Boar ...

  4. 牛客练习赛 小D的剑阵 解题报告

    小D的剑阵 题意链接: https://ac.nowcoder.com/acm/contest/369/F 来源:牛客网 现在你有 \(n\) 把灵剑,其中选择第i把灵剑会得到的 \(w_i\) 攻击 ...

  5. 牛客练习赛 小A与任务 解题报告

    小A与任务 链接: https://ac.nowcoder.com/acm/contest/369/B 来源:牛客网 题目描述 小A手头有 \(n\) 份任务,他可以以任意顺序完成这些任务,只有完成当 ...

  6. 牛客练习赛 小A与最大子段和 解题报告

    小A与最大子段和 题意 在一个序列 \(\{a\}\) 里找到一个非空子段 \(\{b\}\), 满足 \(\sum\limits_{i=1}^{|b|}b_i\times i\) 最大 \(n\le ...

  7. 牛客练习赛 小D的Lemon 解题报告

    小D的Lemon 题意 已知 \[ g(x)=\left\{\begin{matrix} 1&,x=1\\ \sum_{i=1}^qk_i&,otherwise \end{matrix ...

  8. 【牛客】小w的魔术扑克 (并查集?? 树状数组)

    题目描述 小w喜欢打牌,某天小w与dogenya在一起玩扑克牌,这种扑克牌的面值都在1到n,原本扑克牌只有一面,而小w手中的扑克牌是双面的魔术扑克(正反两面均有数字,可以随时进行切换),小w这个人就准 ...

  9. 牛客网小a的旅行计划

    地址:https://ac.nowcoder.com/acm/contest/223/B 此题是一道套公式题目,不难,ans=(pow(4,n+1)-4*pow(3,n+1)+6*pow(2,n+1) ...

  10. 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 ...

随机推荐

  1. vue多页面应用

    多页面应用本身和单页面应用没什么差别,无非是多了几个入口点. 入口点多的话,还可以写个函数扫描路径取添加入口点. 比较让人好奇的是路径的问题.我们要开发的时候要体现目录层级接口,所以入口文件是一层套一 ...

  2. go高并发之路——缓存击穿

    缓存击穿,Redis中的某个热点key不存在或者过期,但是此时有大量的用户访问该key.比如xxx直播间优惠券抢购.xxx商品活动,这时候大量用户会在某个时间点一同访问该热点事件.但是可能由于某种原因 ...

  3. go高并发之路——启航

    工作7年有余了,B端和C端业务都做过不少,打算整理分享一些自己在实际工作中所遇到的高并发的场景和解决方案,也是对自己本人职业生涯中的一些经验的总结和感悟.与其他博文略有不同的是,这些基本上都是自己实际 ...

  4. docker镜像仓库管理Harbor

    一 部署Harbor 前提: Harbor需要运行在docker上面,所以首先需要在harbor部署机器上面自行部署docker和docker-compose docker-compose安装命令如下 ...

  5. dubbo~javax.validation和jakarta.validation的介绍与排雷

    javax.validation和jakarta.validation都是用于Java中进行数据验证(validation)的相关API,它们提供了一套标准的验证框架,用于验证Java对象的属性是否符 ...

  6. c# IdHelper生成唯一的雪花Id

    为什么使用雪花ID 在以前的项目中,最常见的两种主键类型是自增Id和UUID,在比较这两种ID之前首先要搞明白一个问题,就是为什么主键有序比无序查询效率要快,因为自增Id和UUID之间最大的不同点就在 ...

  7. vue指令 常用指令 v-cloak指令

    指令(Directives)就是vue给html标签提供的一些自定义属性,这样属性都是带有 v- 前缀的特殊属性.指令特性的值预期是单个JS表达式(v-for是例外情况).指令的职责是,当表达式的值改 ...

  8. NOIP 2023 三值逻辑

    problem 我们定义 \(\text{T}\) 对应 \(n + 1\),\(\text{U}\) 对应 \(n + 2\),\(\text{F}\) 就是 \(-\text{T}\). 现在我们 ...

  9. EF 结合 PagingModel

    PagingModel pagingModel using (var db = new PayLogDbContext()) { var data = db.Database.Query<Mer ...

  10. linux入门篇:查看系统用户信息,以及修改用户密码

    From https://blog.csdn.net/dieyong/article/details/86578472 1 用户列表文件$ cat /etc/passwd 2 用户组列表文件$ cat ...