成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五個(gè)鮮為人知的現(xiàn)代 Bash 腳本編寫技術(shù)

系統(tǒng) Linux
以下概念通過一些鮮為人知的現(xiàn)代Bash腳本編寫技術(shù),使您的自動化腳本更加現(xiàn)代化。

程序員經(jīng)常使用Bash命令語言創(chuàng)建Shell腳本來自動化手動任務(wù)。例如,他們會為各種配置、文件操作、生成構(gòu)建結(jié)果和各種與DevOps相關(guān)的活動創(chuàng)建Bash腳本。幾乎所有類Unix或基于Unix的操作系統(tǒng)都為用戶提供預(yù)安裝的Bash解釋器,因此我們可以使用Bash編寫更具可移植性的自動化腳本。

正如我們已經(jīng)知道的那樣,Bash腳本編寫是指使用Bash命令語言的語法、內(nèi)置Bash命令和核心操作系統(tǒng)CLI程序(如GNU核心工具)編寫一系列命令。標(biāo)準(zhǔn)且老式的Bash腳本通常執(zhí)行一些命令并在終端上顯示純文本輸出。

然而,我們可以通過幾個(gè)獨(dú)特的概念使我們的Bash腳本更具未來性和用戶友好性。以下概念通過一些鮮為人知的現(xiàn)代Bash腳本編寫技術(shù),使您的自動化腳本更加現(xiàn)代化。

顯示動畫以指示長時(shí)間運(yùn)行的任務(wù)

在某些情況下,我們需要從Bash腳本中執(zhí)行長時(shí)間運(yùn)行的命令。有幾種方法可以指示長時(shí)間運(yùn)行的任務(wù)。最簡單和最容易的方法是使用echo命令顯示帶有三個(gè)尾隨點(diǎn)(也稱為省略號)的消息。但是,這種方法產(chǎn)生的是一個(gè)靜態(tài)消息,對用戶和開發(fā)人員來說不是很交互式和友好。

我們可以使用核心Unix操作系統(tǒng)命令和Bash內(nèi)置命令輕松顯示ASCII動畫。看下面這個(gè)只有兩個(gè)動畫幀的簡單動畫示例:

#!/bin/bash
# Linux迷 www.linuxmi.com

while true;
do
    # Frame #1
    printf "\r< Loading..." 
    sleep 0.5
    # Frame #2 
    printf "\r> Loading..." 
    sleep 0.5 
done

上面的Bash腳本在終端上顯示一個(gè)無盡的兩幀動畫。printf語句使用\r轉(zhuǎn)義字符來重置當(dāng)前行的終端光標(biāo)。上面的腳本呈現(xiàn)了以下基于文本的動畫:

一個(gè)簡單的兩幀文本動畫

我們可以在動畫中添加更多幀,并使用以下Bash腳本在特定耗時(shí)任務(wù)完成之前一直顯示動畫。

#!/bin/bash
# Linux迷 www.linuxmi.com

sleep 5 &
pid=$!
frames="/ | \\ -"
while kill -0 $pid 2&>1 > /dev/null;
do
    for frame in $frames;
    do
        printf "\r$frame Loading..."
        sleep 0.5
    done
done
printf "\n"

上面的腳本顯示一個(gè)基于文本的旋轉(zhuǎn)器動畫,直到sleep 5命令完成執(zhí)行。類似地,我們可以在任何耗時(shí)任務(wù)中顯示旋轉(zhuǎn)器動畫,而不是用echo顯示靜態(tài)消息。預(yù)覽如下。

一個(gè)帶有旋轉(zhuǎn)器文本動畫的Bash腳本,作者的截圖 這些基于文本的動畫使命令行程序更加用戶友好和互動,因此大多數(shù)現(xiàn)代命令行程序都顯示這些ASCII動畫。現(xiàn)在,你知道如何通過改變幀字符列表來使你的Bash腳本也具有動畫效果了。

從Bash顯示本地GUI通知

Bash腳本和命令行程序通常為經(jīng)常使用終端界面的開發(fā)人員提供工具。例如,F(xiàn)lutter框架為開發(fā)人員提供了flutter命令行程序,用于管理Flutter應(yīng)用程序和配置Flutter應(yīng)用程序開發(fā)環(huán)境。假設(shè)你正在開發(fā)一個(gè)耗時(shí)的命令行腳本。在用戶不查看終端輸出時(shí),如何顯示重要消息?

所有類Unix和基于Unix的操作系統(tǒng)都有特殊的命令來顯示GUI通知。我們可以從Bash腳本中調(diào)用這些命令來顯示本地通知。例如,你可以在基于GNU/Linux的操作系統(tǒng)上使用notify-send命令,如下所示。

#!/bin/bash
# Linux迷 www.linuxmi.com

sleep 10
notify-send "notify.sh" "Task #1 已成功完成 www.linuxmi.com"

一些GNU/Linux發(fā)行版通常會預(yù)裝notify-send工具的版本。上面的Bash腳本在十秒后顯示了一個(gè)本地通知。預(yù)覽如下:

在Ubuntu上的本地通知截圖

macOS用戶可以通過在Bash中執(zhí)行AppleScript解釋器來顯示本地通知,如下所示:

#!/bin/bash
sleep 10
osascript -e "display notification \"Task #1 www.linuxmi.com 已成功完成\" with title \"notify.sh\""

在Bash腳本中的多進(jìn)程處理非常有助于通過長時(shí)間運(yùn)行的腳本或永久運(yùn)行的后臺腳本向用戶通知重要事件。

在Bash腳本中的多進(jìn)程處理

通常,程序員使用Bash腳本按順序運(yùn)行命令。因此,Bash解釋器會逐個(gè)執(zhí)行每個(gè)語句,直到達(dá)到源文件的末尾或遇到exit語句。然而,我們可以改變這種順序執(zhí)行的方式,實(shí)現(xiàn)并行執(zhí)行以加快自動化腳本的速度。

首先,我們可以將整個(gè)Bash腳本分解為幾個(gè)獨(dú)立的函數(shù),可以異步運(yùn)行每個(gè)函數(shù)。接下來,我們可以將所有Bash函數(shù)作為后臺任務(wù)運(yùn)行。最后,我們可以使用內(nèi)置的wait命令來保持腳本執(zhí)行過程處于活動狀態(tài),直到所有異步進(jìn)程執(zhí)行結(jié)束。

請看以下示例代碼:

#!/bin/bash
# Linux迷 www.linuxmi.com

function task1() {
    echo "Running task1..."
    sleep 5
}
function task2() {
    echo "Running task2..."
    sleep 5
}
task1 &
task2 &
wait
echo "www.linuxmi.com 全部完成"

在這個(gè)例子中,我們將兩個(gè)并行函數(shù)task1和task2作為后臺任務(wù)運(yùn)行。此外,我們使用內(nèi)置的wait命令使腳本實(shí)例保持活動狀態(tài),直到后臺任務(wù)完成執(zhí)行。如果你檢查腳本的執(zhí)行時(shí)間,你會發(fā)現(xiàn)這兩個(gè)函數(shù)在大約五秒鐘內(nèi)結(jié)束,而不是十秒鐘。

使用Bash顯示GUI組件

前面我們討論了如何通過長時(shí)間運(yùn)行的Bash腳本顯示GUI通知。類似地,我們可以顯示其他GUI組件,如消息框、輸入框和文件選擇對話框。有時(shí)我們需要為非技術(shù)人員創(chuàng)建基于GUI的自動化程序。如果你已經(jīng)了解Bash腳本編寫,你不需要使用其他GUI開發(fā)工具來創(chuàng)建簡單的GUI應(yīng)用程序——因?yàn)槲覀兛梢允褂肂ash顯示GUI元素。

zenity程序提供了幾個(gè)命令,用于在GNU/Linux命令行環(huán)境中顯示各種GUI元素。例如,我們可以使用以下命令打開文件選擇對話框。

zenity --file-selection

大多數(shù)基于GNOME的GNU/Linux操作系統(tǒng)發(fā)行版都預(yù)裝了Zenity版本。此外,作為替代,你可以在基于KDE的GNU/Linux發(fā)行版中使用kdialog命令。

macOS用戶可以像往常一樣調(diào)用AppleScript解釋器。例如,他們可以使用以下命令通過Bash腳本顯示文件選擇對話框。

osascript -e "POSIX path of (choose file)"

你也可以像Zenity那樣構(gòu)建自己的二進(jìn)制文件,并從Bash腳本中顯示任何GUI組件。此外,你還可以使用Neutralinojs通過Bash腳本在本地/遠(yuǎn)程窗口中顯示交互式的HTML界面。

使用文本樣式現(xiàn)代化終端輸出

我們經(jīng)常使用echo命令輸出腳本中的消息。默認(rèn)情況下,echo命令根據(jù)默認(rèn)終端文本樣式打印給定的文本。但是,在某些情況下,我們可以通過使用基本的用戶體驗(yàn)原則根據(jù)當(dāng)前上下文改進(jìn)文本樣式。例如,我們可以使用紅色顯示錯(cuò)誤消息。此外,您可以使用粗體字體樣式強(qiáng)調(diào)段落中的一些關(guān)鍵細(xì)節(jié)。

tput是一個(gè)Unix程序,提供控制當(dāng)前終端屏幕的命令。它提供了改變終端光標(biāo)位置、獲取終端信息和更改文本樣式的命令。我們可以將tput命令與echo命令結(jié)合使用,在所有類Unix和基于Unix的操作系統(tǒng)上打印各種文本樣式。

請看以下示例,打印不同的文本樣式:

#!/bin/bash
# Linux迷 www.linuxmi.com

bold=$(tput bold)
underline=$(tput smul)
italic=$(tput sitm)
info=$(tput setaf 2)
error=$(tput setaf 160)
warn=$(tput setaf 214)
reset=$(tput sgr0)
echo "${info}INFO${reset}: This is an ${bold}info${reset} message"
echo "${error}ERROR${reset}: This is an ${underline}error${reset} message"
echo "${warn}WARN${reset}: This is a ${italic}warning${reset} message"

在這里,我們使用tput命令為每種文本樣式定義了一些變量。最后,我們使用echo命令執(zhí)行臨時(shí)保存的命令,以顯示不同的文本樣式,如下所示。

Bash中的文本樣式屏幕截圖

您可以使用上述方法為Bash腳本構(gòu)建自己的個(gè)性化顏色方案。上面的示例腳本使用空設(shè)備文件(/dev/null)來隱藏kill命令的錯(cuò)誤消息。

責(zé)任編輯:趙寧寧 來源: Linux迷
相關(guān)推薦

2024-05-07 00:00:00

工具類開發(fā)者功能

2024-10-31 11:19:33

2024-11-05 08:00:00

數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)預(yù)處理Python

2021-07-07 10:59:48

python代碼編程語言

2009-09-14 09:45:20

Chrome谷歌操作系統(tǒng)

2023-04-23 15:11:26

2014-07-29 14:25:43

Unix命令

2019-10-08 16:24:33

Chrome瀏覽器

2017-11-08 14:55:16

Linux命令sudo

2010-01-07 10:05:51

IT顧問特質(zhì)

2019-12-12 20:49:05

JavaScript語言運(yùn)算符

2024-03-04 16:32:02

JavaScript運(yùn)算符

2011-05-03 13:13:52

編程PHPJava

2022-06-23 10:17:00

Git技術(shù)Linux

2013-07-15 09:14:00

2014-04-22 16:38:12

GitHubGitHub 使用技巧

2018-12-10 19:30:45

2024-09-10 08:35:57

2013-11-19 11:59:49

Linux命令Shell腳本

2019-11-20 10:54:32

Python數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 99热国产免费 | 久久久久久久91 | 一区二区在线免费观看 | 欧美日韩精品在线免费观看 | 国产在线中文字幕 | 精品国产一区二区三区性色av | 性一交一乱一伦视频免费观看 | 国产精品久久亚洲 | 精品国产乱码久久久久久蜜臀 | 久久高清国产视频 | 国产不卡一区 | 一区二区中文 | 久草.com | 黄色一级免费 | 97色免费视频 | 亚洲精品一区二区网址 | 亚洲一区日韩 | 日日夜夜免费精品 | 亚洲免费在线观看 | 中文字幕一区二区三区在线观看 | 台湾佬久久 | 亚洲精品久久久久国产 | 国产精品亚洲一区二区三区在线观看 | 91在线观看免费视频 | 精产嫩模国品一二三区 | 国产欧美日韩在线观看 | 免费黄色av网站 | 久久久久久高潮国产精品视 | 免费在线观看91 | 久久99精品国产麻豆婷婷 | 91美女在线| 久久国产精品99久久久大便 | 欧美在线综合 | www..com18午夜观看 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 国产中的精品av涩差av | 免费视频久久 | 精品国产精品三级精品av网址 | av中文在线观看 | 高清色视频 | 欧美激情在线精品一区二区三区 |