牛说(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 就成了胶水的主体
- 实现主循环、提早等粘合的工作
- 兴许有一天能够做到
- 能够本人画一个小动物来报时吗?🤔
- 咱们下次再说程序!👋
- 蓝桥 ->https://www.lanqiao.cn/course…
- github->https://github.com/overmind19…
- gitee->https://gitee.com/overmind198…
- 视频 ->https://www.bilibili.com/vide… 作者:oeasy