GitHub星數1.3W!五分鐘帶你搞定Bash腳本使用技巧

點擊上方 "程序員小樂"關注公眾號, 星標或置頂一起成長

每天早上8點20分, 第一時間與你相約

每日英文

Always remember that in life. Whatever we do, we are never defeated unless we give up.

永遠要記住,無論我們做什麼,人生從來都沒有失敗,唯一的失敗就是自己放棄。

每日掏心話

生活就是一隻看不見的儲蓄罐,你投入的每一份努力都不會白費。

GitHub星數1.3W!五分鐘帶你搞定Bash腳本使用技巧

程序員小樂(ID:study_tech)第 633 次推文 圖片來自網絡

往日回顧:GitHub 標星 7k+,面試官的靈魂 50 問,問到你懷疑人生!

00 前言


Bash腳本比我們想象中的都要強大,通過Bash腳本,大多數任務都可以讓你在無任何其它語言或第三方依賴的安裝環境下,快速寫出腳本程序。在Bash中調用外部進程是非常繁瑣的,過度調用會導致明顯的減速,通過內置方法編寫的腳本和程序會更快,所需的依賴也會更少,並且幫助你更好的理解編程語言。

GitHub星數1.3W!五分鐘帶你搞定Bash腳本使用技巧
有位澳大利亞工的程師在Github上開源了一本書——《pure bash bible》
GitHub星數1.3W!五分鐘帶你搞定Bash腳本使用技巧
目前,這本書已經在Github上獲得 13148 個Star,905 個Fork(Github地址:https://github.com/dylanaraps/pure-bash-bible)本書收集彙總了編寫 bash 腳本經常會使用到的一些代碼片段,無論是常見和不太常見的方法都可以在這書裡找到,通過書中的代碼片段,可以刪除腳本中的依賴項,並且在大多數情況下可以讓程序運行的更快。書中依照字符串、數組、正則表達式、文件處理、變量等腳本程序的常用功能進行分類,每個分類下都提供了具體 bash 代碼實現。刪除字符串前後空格:例如,下面的函數通過查找字符串前後空格字符,並把它們移除。以下為功能使用:trim_string() { # Usage: trim_string " example string " : "${1#"${1%%[![:space:]]*}"}" : "${_%"${_##*[![:space:]]}"}" printf '%s\\n' "$_"}

示例:
  • $ trim_string " Hello, World "Hello, World


  • $ name=" John Black "$ trim_string "$name"John Black在字符串上使用正則表達式:regex() { # Usage: regex "string" "regex" [[ $1 =~ $2 ]] && printf '%s\\n' "${BASH_REMATCH[1]}"}


  • 用法示例:

  • $ # Trim leading white-space.$ regex ' hello' '^\\s*(.*)'hello


  • $ # Validate a hex color.$ regex "#FFFFFF" '^(#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))#FFFFFF


  • $ # Validate a hex color (invalid).$ regex "red" '^(#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))# no output (invalid)腳本的示例用法:

  • is_hex_color() { if [[ $1 =~ ^(#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))$ ]]; then printf '%s\\n' "${BASH_REMATCH[1]}" else printf '%s\\n' "error: $1 is an invalid color." return 1 fi}


  • read -r coloris_hex_color "$color" || color="#FFFFFF"


  • # Do stuff.刪除重複的數組:

  • remove_array_dups() { # Usage: remove_array_dups "array" declare -A tmp_array


  • for i in "$@"; do [[ $i ]] && IFS=" " tmp_array["${i:- }"]=1 done


  • printf '%s\\n' "${!tmp_array[@]}"}用法示例:

  • $ remove_array_dups 1 1 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 512345


  • $ arr=(red red green blue blue)$ remove_array_dups "${arr[@]}"redgreenblue本書完整的腳本功能的代碼片段如下:

  • GitHub星數1.3W!五分鐘帶你搞定Bash腳本使用技巧
  • 關於作者

  • GitHub星數1.3W!五分鐘帶你搞定Bash腳本使用技巧
  • Dylan Araps是來自澳大利亞墨爾本的開源開發人員,從小就對開源產生了極大的熱情,多年來開源了許多項目,14歲,就離開了學校,開始專注於 Linux、編程和其他相關技能的學習,Dylan Araps開源的項目得到了廣泛的應用,並在Unix和Linux社區中得到廣泛關注。

開源最前線(ID:OpenSourceTop) 綜合整理

綜合自:https://leanpub.com/u/dylanaraps、https://leanpub.com/u/dylanaraps

歡迎在留言區留下你的觀點,一起討論提高。如果今天的文章讓你有新的啟發,學習能力的提升上有新的認識,歡迎轉發分享給更多人。

歡迎各位讀者加入程序員小樂技術群,在公眾號後臺回覆“加群”或者“學習”即可。

猜你還想看

阿里、騰訊、百度、華為、京東最新面試題彙集

不會SQL注入,連漫畫都看不懂了

中美互聯網科技公司對比圖!你有的,我們也有!

教你用Python將圖片轉化為字符畫!附源代碼

太牛逼了,居然有人將各大編程語言繪成了一部編年史!

團隊中的 Git 實踐

關注「程序員小樂」,收看更多精彩內容

嘿,你在看嗎?


分享到:


相關文章: