[oeasy]python0036_牛說_cowsay_小動物說話_asciiart_figlet_lolcat_管道(祝大家新
牛說(cowsay)
回憶上次內(nèi)容
上次我們研究了shell腳本的編程
并且在shell中實現(xiàn)了
循環(huán)語句
延遲命令
清屏命令
python命令
figlet命令

還能整點什么呢???
還想要讓小動物報時
cowsay
首先要安裝 cowsay
sudo apt install cowsay
裝完之后
cow 就可以 say 了嗎?

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

如何與報時函數(shù)整合呢?
整合
這如何和我們的報時程序整合呢?
import time print(time.asctime())
一步一步來

figlet的結(jié)果再通過管道送cowsay

管道原理

然后嘗試循環(huán)起來
把 cowsay 整合進來
把figlet的輸出結(jié)果再送到cowsay -f moose -n
其實就是一步步通過管道流淌的過程
for a in {1..10}do ? ?clear ? ?python3 show_time.py | figlet |cowsay -f moose -n ? ?sleep 1sdone
看起來有點復雜
保留轉(zhuǎn)義字符
\n
避免屏幕混亂
使用駝鹿
-f moose
-n

這確實有點亞文化??
可以來點更亞的文化嗎???
彩色效果
#安裝彩色程序sudo apt install lolcat#實驗echo oeasy | lolcat
這樣就可以輸出彩色效果了

這個可以!
真的很亞?
可以再把報時整合進來嗎?
整合報時

有的時候會因為寬度問題
感覺很亂
我想把時間簡化為時分秒
整合時間
整合進入原來的loop.sh
循環(huán)中
清屏后
輸出這個效果
再延時
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 函數(shù)
str 是字符串 string 的意思
f 是 format
strftime 函數(shù) 把一個 time.localtime()
格式化為一個字符串

缺省參數(shù)就是當前時間

#!/usr/bin/python3import timeprint(time.strftime('%H:%M:%S'),end="")
格式如何理解呢?
理解格式
格式化成
%H:%M:%S
這個格式%H是小時
%M是分鐘
%S是秒鐘
中間用:分割
這個格式選取了三個時間元組項

試驗走起來
直接運行 sh

這兩個搭配起來確實可以運行了!
但是循環(huán)次數(shù)還是受限制
可以做一個永遠循環(huán)的嗎?
搜索

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

效果還行

更多效果
哈哈 火雞turkey也能說話
也許我們也可以用fortune-zh
把偈語打到時鐘旁邊???

如果我想直接運行
loop.sh
呢?而不是
sh loop.sh
可以么?
直接運行
直接運行的話
loop.sh
沒有執(zhí)行權(quán)限給他提權(quán)
chmod 改變模式
u+x 給當前用戶增加執(zhí)行權(quán)限
chmod u+x loop.sh ./loop.sh
然后再運行

綠色說明可以運行了
不過前面還是需要當前路徑
./
如果就想要
loop.sh
直接運行不要當前路徑
./
呢?
設置路徑
export PATH=$PATH:.
注意$的位置
前面的是
PATH
沒有$后面的
$PATH
有$.(點)
指的是當前的路徑
這樣
就可以直接運行當前路徑下的程序了
不用在程序前面加上
./
了不過如果關了當前的shell
還是不能直接運行
怎么辦來著???
~/.zshrc
編輯當前zsh的配置文件 ~/.zshrc
每次進入zsh都會執(zhí)行這個配置文件的
這樣重開一個shell
還是可以直接運行l(wèi)oop.sh
跳出循環(huán)可以用ctrl+c
把循環(huán)放到后臺用ctrl+z
這就是我們之前都接觸過的內(nèi)容了!
啊~終于完成了
不容易?。?!
可以自己做一個小動物嗎?
還是先來總結(jié)一下吧!
總結(jié)
我們狂飆了一路
shell程序
從用 shell 直接運行 python 程序
到用 shell 循環(huán)運行 python 程序
shell中的循環(huán)體
把 python 的輸出結(jié)果用管道交給了 figlet 程序
把 figlet 輸出的結(jié)果用管道給了 cowsay
把 cowsay 的結(jié)果給了 lolcat
最后是提權(quán)直接運行shell程序
這一路真的好遠啊
如果能用 python 直接調(diào)用 shell 中的命令就好了
那個時候 python 就成了膠水的主體
完成主循環(huán)、延遲等粘合的工作
用 shell 把 python 的粘了起來
分時輸出的
python3 是腳本解釋器
shell 也是腳本解釋器
其實我們是在 shell 中利用 python3 的輸出結(jié)果
不過這一路真的好繞
也許有一天可以做到
可以自己畫一個小動物來報時嗎???
我們下次再說程序!??
藍橋->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