一份shell「聖經」收好
- 2019 年 10 月 7 日
- 筆記
來源:公眾號【編程珠璣】
作者:守望先生
網站:https://www.yanbinghu.com
前言
不知道你是否在為突然想實現某個功能的小腳本而苦苦尋找答案,這裡有一份「聖經」用來查看各種僅使用內置bash命令實現各種常用的功能和鮮為人知的用法。
為什麼要寫腳本?
無論是作為Linux應用開發還是運維,編寫shell腳本都是一個最基本的技能,而使用shell能夠簡潔快速地解決很多問題,提高效率。什麼你還不會?那麼建議你花點時間學一下,畢竟花不了你太多時間就可以讓它給你幹活。你也可以參考這裡了解一下最基本的用法《這些必備的shell知識你都會了嗎?》
為什麼要使用內置bash來實現?
使用內置的bash命令可以避免一些依賴,不至於你的腳本遷移到另外一個系統還需要裝一些依賴,另外一方面,使用這些內置命令常常也會更加高效。
這份」聖經「是怎樣的?
實際上它是github上地一個星標項目,地址如下: https://github.com/dylanaraps/pure-bash-bible 目前星標近20k,它列出了一些常用的功能,有哪些呢,我們可以看看。
- 字符串
- 去掉字符串首尾的空格
- 去掉字符串中的空格並用空格分割
- 在字符串中使用正則表達式
- 分割字符串
- 字符串大小寫轉換
- 字符串反轉
- 檢查字符串中是否包含某個子串
- 檢查字符串是否以某個子串結尾
- ……
- 數組
- 反轉數組
- 去除數組中重複元素
- 隨機排列數組元素
- ……
- 循環
- 以數值作為循環條件
- 以數值變量作為循環條件
- 以數組作為循環條件
- 遍歷文件內容
- 遍歷文件和目錄
- ……
- 文件處理
- 將文件內容讀取到字符串中
- 將文件內容以行為單位讀取到數組中
- 讀取文件的前n行
- 讀取文件的最後n行
- 創建空文件
- ……
- 文件路徑
- 獲取全路徑中的目錄名
- 獲取全路徑中的文件名
注意,這裡僅僅是目錄的一小部分,原項目中還有很多內容,包括一些內置變量的獲取,系統信息的獲取,一些常用語法,常見表達式,基本運算等等。
內容是什麼樣子的呢?
舉個例子,如何去掉字符串首尾的元素,它給了一個shell函數:
trim_string() { # Usage: trim_string " example string " : "${1#"${1%%[![:space:]]*}"}" : "${_%"${_##*[![:space:]]}"}" printf '%sn' "$_" }
那麼在shell腳本中就可以這樣調用:
trim_string " Hello, World " #會打印這個結果:Hello, World
而又例如在介紹循環的時候,告訴你一些常見的循環方式:
# Loop from 0-100 (no variable support). for i in {0..100}; do printf '%sn' "$i" done
或者
VAR=50 for ((i=0;i<=VAR;i++)); do printf '%sn' "$i" done
又或者:
for element in "${arr[@]}"; do printf '%sn' "$element" done
總之作為基礎學習的手冊也是非常不錯了,一些常用的語法在這裡都能看到。
總結
實際上裏面很多相關功能也有一些bash命令可以直接實現,但是大部分內容作為一個速查的渠道還是不錯的,有興趣的可以去查看:
https://github.com/dylanaraps/pure-bash-bible
