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