原作者: 賴明星
原地址:http://mingxinglai.com/cn/2013/12/material-of-shell/
本著對linux和shell腳本的極大興趣,我看了不少shell腳本相關的書和文章,也有了很多學習心得, 回首自己的linux和shell腳本學習歷程,不禁發現自己竟也走了不少的彎路,完全是靠著自己的滿腔 熱情走到今天。為了幫助有緣的朋友少走一點彎路,這里向大家推薦一些學習的資料, 資料包括書,開源免費書,博客和相關網站。這里推薦的材料都屬于進階類型,特別適合已經掌握 了一些shell腳本的基礎知識,并希望深入學習shell腳本的朋友。
- 書
linux命令行與shell腳本編程大全1
這本書是入門級的讀物,作為入門材料非常合適。可惜我入門的時侯沒有遇到它。雖然很大 部頭,其實一天也就能看完了。講的東西比較全面,也比較簡單。三顆星推薦。
linux shell腳本攻略2
這是我強烈推薦的一本書,我的shell腳本從新手到老手全靠這本書。這本書很薄,也精華。 與上面的那本書不一樣,這本書追求的不是全,而是精,是各種各樣的奇技淫巧,是老手 天天用卻不會告訴你或者他們也沒有意識到的技巧。五顆星推薦。
此外,這本書的作者是一個印度人,二十歲的時侯寫下了這本書,那時他已經是Ubuntu 和Fedora的源碼貢獻者了。
The AWK Programming Language3
這本書的作者就是AWK程序語言的設計者,所以,其權威性毋庸置疑。值得注意的是,這本書的第二作者 Brian W. Kernighan是神一樣的科學家,他是《The C Programming Language》的作者。 Brian W. Kernighan 的《程序設計實踐》也是一本好書。
AWK的學習資料網上一搜一大片,其實,只要靜下心來把這本書中的代碼敲一遍,就可以無視其他所有材料了。 這本書網上有電子版。很奇怪的是,這么好的一本書,國內的出版社怎么沒有引入,可能是AWK太老太小眾了吧。 總之,學習AWK這是必讀的一本書,五顆星推薦。
- 免費電子書
高級shell腳本編程指南4
img4
高級shell腳本編程指南,也就是傳說中的ABS,你如果到論壇里去問有什么好的學習shell腳本 的進階書籍,大多數人都會推薦這本書。正如這個世界上最珍貴的東西(如:空氣,陽光, 親情與愛)都是免費的一樣,這本書也是免費的,是網上開源的免費書籍,任何人都可以獲得。 已經有熱心的朋友將它翻譯成了中文版,不過還是推薦看英文版,專業書籍使用的英文單詞都不難, 大家應該盡快習慣看英文版的書籍。四顆星推薦。
sed and awk 101 hacks5
這是一本印度人寫的開源免費書籍(印度人好像比較喜歡也有能力干這事),應該算是入門書籍, 不過作者表達能力太強,交代的東西也很多,所以無論老手還是新手,看這本書都會有一定的收獲。
此外,該作者還寫了另外兩本同樣有名的開源書籍,即《vim 101 hacks》和《linux 101 hacks》。 這三本書都四顆星推薦。
- 博客 && 網站
One-Liners Explained6
除了上面推薦的比較好的書以外,網絡上也有一些比較好的博文。比如,大名鼎鼎的One-liners Explained 系列。這個系列共有4篇文章,都是進階級的,需要較強的功底才能看懂。
這4篇文章是:
Bash One-Liners Explained
sed One-Liners Explained
awk One-Liners Explained
perl One-Liners Explained
commandlinefu.com7
這是一個很有名的網站,專門收集一些很酷很簡潔的命令。
例如:當你使用vim編輯一個文檔,保存的時侯才提示你沒有權限,這個時侯怎么辦呢? 如果你知道:w !sudo tee %
命令就不用煩惱了,這個牛逼的命令我就是在commandlinefu上學會的, 也是我至今覺得最酷的一個命令。
Top Ten One-Liners from CommandLineFu Explained One-liners Explained 系列的作者還根據CommandLineFu 寫了另外一篇文章,即 Top Ten One-Liners from CommandLineFu Explained
the unix school8
the unix school是一個印度哥們維護的博客,這個博客專注于linux與shell,最大的特色 是嘗試使用不同的方法解決同一個問題,對于開闊視野,拓展思路非常有用。
the unix school 是我最喜歡的博客之一,里面的每一篇博文我都認真看過,強烈推薦。
bash Pitfalls9
Bash Pitfalls文章介紹了40多條日常Bash編程中,老手和新手都容易忽略的錯誤編程習慣。 每條作者在給出錯誤的范例上,詳細分析與解釋錯誤的原因,同時給出正確的改寫建議。
已經有朋友(網名:團子)將這篇文章翻譯成了中文版。
簡潔bash編程10
團子寫的簡潔bash編程也值得一看。
里面雖然有很多知識你可能在其他地方已經見過,但是這么多編程技巧里面,只要有一條你不知道, 并在知道以后長期使用就值得你看了。
我第一次寫一個較復雜的腳本的時侯,用到了多進程,需要在主進程里面等待子進程結束。當時我的做法 是記錄下子進程的pid(sleep 10 &; pid= $!),然后使用while 循環判斷進程是否結束(kill -s 0 $pid),進程少還行,子進程多了一后就沒法這么干了。 其實有一個很好也很方便的做法,使用wait
命令即可。這個命令我就是在簡潔bash編程里學到的。
- 后記
認真學習完這里推薦的資料,就算得上是shell腳本老手了,不過,凡事都是憑興趣,我相信這篇文章對 shell腳本感興趣的新手會有很大的幫助。不過,還是要切記,多用多動手才是學習linux和shell的最佳方法。
我真的很佩服印度人,他們非常有才華,也善于表達,還具有開源精神。《linux shell腳本攻略》的 作者一直致力于開源軟件,年紀輕輕就向Ubuntu和Fedora貢獻源碼(我也想,能力不夠),還維護了自己的 linux發行版。二十歲時寫下的這本《linux shell腳本攻略》,現在已是我必備書籍。
101 hack系列的是一個印度人寫的,the unix school是我最喜歡的博客之一,博主也是一個印度人, 大名鼎鼎的《a byte of python》與《a byte of vim》(與這篇博客無關)的作者也是印度人, 我就發現這些印度人確實很厲害,他們能用簡單易懂的方式傳遞知識,而且他們也很愿意無償的貢獻自己勞動成果。
有感于印度人的才華與表達能力,并且網絡上已經有很多優秀的shell腳本學習資料。所以我打消了寫shell 相關博客的想法。僅用此文收集一些優秀的書籍和博文,以后發現好的資料還會再補充。也歡迎補充優秀 的學習資料。