不知道你是否在為突然想實(shí)現(xiàn)某個(gè)功能的小腳本而苦苦尋找答案,這里有一份“圣經(jīng)”用來查看各種僅使用內(nèi)置bash命令實(shí)現(xiàn)各種常用的功能和鮮為人知的用法。
作者:守望,Linux應(yīng)用開發(fā)者
前言
不知道你是否在為突然想實(shí)現(xiàn)某個(gè)功能的小腳本而苦苦尋找答案,這里有一份“圣經(jīng)”用來查看各種僅使用內(nèi)置bash命令實(shí)現(xiàn)各種常用的功能和鮮為人知的用法。
為什么要寫腳本?
無論是作為Linux應(yīng)用開發(fā)還是運(yùn)維,編寫shell腳本都是一個(gè)最基本的技能,而使用shell能夠簡潔快速地解決很多問題,提高效率。什么你還不會(huì)?那么建議你花點(diǎn)時(shí)間學(xué)一下,畢竟花不了你太多時(shí)間就可以讓它給你干活。
為什么要使用內(nèi)置bash來實(shí)現(xiàn)?
使用內(nèi)置的bash命令可以避免一些依賴,不至于你的腳本遷移到另外一個(gè)系統(tǒng)還需要裝一些依賴,另外一方面,使用這些內(nèi)置命令常常也會(huì)更加高效。
這份”圣經(jīng)“是怎樣的?
實(shí)際上它是github上地一個(gè)星標(biāo)項(xiàng)目,地址如下:
https://github.com/dylanaraps/pure-bash-bible
目前星標(biāo)近20k,它列出了一些常用的功能,有哪些呢,我們可以看看。
字符串
去掉字符串首尾的空格
去掉字符串中的空格并用空格分割
在字符串中使用正則表達(dá)式
分割字符串
字符串大小寫轉(zhuǎn)換
字符串反轉(zhuǎn)
檢查字符串中是否包含某個(gè)子串
檢查字符串是否以某個(gè)子串結(jié)尾
……
數(shù)組
反轉(zhuǎn)數(shù)組
去除數(shù)組中重復(fù)元素
隨機(jī)排列數(shù)組元素
……
循環(huán)
以數(shù)值作為循環(huán)條件
以數(shù)值變量作為循環(huán)條件
以數(shù)組作為循環(huán)條件
遍歷文件內(nèi)容
遍歷文件和目錄
……
文件處理
將文件內(nèi)容讀取到字符串中
將文件內(nèi)容以行為單位讀取到數(shù)組中
讀取文件的前n行
讀取文件的最后n行
創(chuàng)建空文件
……
文件路徑
獲取全路徑中的目錄名
獲取全路徑中的文件名
注意,這里僅僅是目錄的一小部分,原項(xiàng)目中還有很多內(nèi)容,包括一些內(nèi)置變量的獲取,系統(tǒng)信息的獲取,一些常用語法,常見表達(dá)式,基本運(yùn)算等等。
內(nèi)容是什么樣子的呢?
舉個(gè)例子,如何去掉字符串首尾的元素,它給了一個(gè)shell函數(shù):
trim_string() {
# Usage: trim_string " example string "
: "${1#"${1%%[![:space:]]*}"}"
: "${_%"${_##*[![:space:]]}"}"
printf '%s
' "$_"
}
那么在shell腳本中就可以這樣調(diào)用:
trim_string " Hello, World "
#會(huì)打印這個(gè)結(jié)果:Hello, World
而又例如在介紹循環(huán)的時(shí)候,告訴你一些常見的循環(huán)方式:
# Loop from 0-100 (no variable support).
for i in {0..100}; do
printf '%s
' "$i"
done
或者
VAR=50
for ((i=0;i<=VAR;i++)); do
printf '%s
' "$i"
done
又或者:
for element in "${arr[@]}"; do
printf '%s
' "$element"
done
總之作為基礎(chǔ)學(xué)習(xí)的手冊(cè)也是非常不錯(cuò)了,一些常用的語法在這里都能看到。
總結(jié)
實(shí)際上里面很多相關(guān)功能也有一些bash命令可以直接實(shí)現(xiàn),但是大部分內(nèi)容作為一個(gè)速查的渠道還是不錯(cuò)的,有興趣的可以去查看:
https://github.com/dylanaraps/pure-bash-bible
來源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺(tái),并已注明來源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)聯(lián)系小編,我們會(huì)及時(shí)審核處理。
聲明:江蘇教育黃頁對(duì)文中觀點(diǎn)保持中立,對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或者完整性不提供任何明示或暗示的保證,不對(duì)文章觀點(diǎn)負(fù)責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。
Copyright©2013-2025 ?JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺(tái)保留所有權(quán)利
蘇公網(wǎng)安備32010402000125
蘇ICP備14051488號(hào)-3技術(shù)支持:南京博盛藍(lán)睿網(wǎng)絡(luò)科技有限公司
南京思必達(dá)教育科技有限公司版權(quán)所有 百度統(tǒng)計(jì)