學習 shell 有什麼好書推薦?


我之前在博客上推薦過一些很好的學習材料,感興趣的同學可以看一看。(shell腳本學習材料)。不過,我推薦的學習材料比較全面,難度也不小,所以,這裡對推薦的材料進行了精簡,以便讓新同學學起來更加輕鬆愉快,提高大家學習shell腳本的積極性。

1.書

linux shell腳本攻略

這是我強烈推薦的一本書,我的shell腳本從新手到老手全靠這本書。這本書很薄也精華。這本書追求的不是全,而是精,是各種各樣的奇技淫巧,是老手天天用卻不會告訴你或者他們也沒有意識到的技巧。五顆星推薦。

此外,這本書的作者是一個印度人,二十歲的時侯寫下了這本書,那時他已經是Ubuntu 和Fedora的源碼貢獻者了。

The AWK Programming Language

這本書的作者就是AWK程序語言的設計者,所以,其權威性毋庸置疑。值得注意的是,這本書的第二作者 Brian W. Kernighan是神一樣的科學家,他是《The C Programming Language》的作者。 Brian W. Kernighan 的《程序設計實踐》也是一本好書。

AWK的學習資料網上一搜一大片,其實,只要靜下心來把這本書中的代碼敲一遍,就可以無視其他所有材料了。 這本書網上有電子版。很奇怪的是,這麼好的一本書,國內的出版社怎麼沒有引入,可能是AWK太老太小眾了吧。 總之,學習AWK這是必讀的一本書,五顆星推薦。

2.免費電子書

sed and awk 101 hacks

這是一本印度人寫的開源免費書籍(印度人好像比較喜歡也有能力干這事),應該算是入門書籍, 不過作者表達能力太強,交代的東西也很多,所以無論老手還是新手,看這本書都會有一定的收穫。

此外,該作者還寫了另外兩本同樣有名的開源書籍,即《vim 101 hacks》和《linux 101 hacks》。 這三本書都四顆星推薦。

3.博客 網站

One-Liners Explained

除了上面推薦的比較好的書以外,網路上也有一些比較好的博文。比如,大名鼎鼎的One-liners Explained 系列。這個系列共有4篇文章,都是進階級的,需要較強的功底才能看懂。

這4篇文章是:

  • Bash One-Liners Explained
  • sed One-Liners Explained
  • awk One-Liners Explained
  • perl One-Liners Explained

http://commandlinefu.com

這是一個很有名的網站,專門收集一些很酷很簡潔的命令。

例如:當你使用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 school(http://www.theunixschool.com/)

the unix school是一個印度哥們維護的博客,這個博客專註於linux與shell,最大的特色 是嘗試使用不同的方法解決同一個問題,對於開闊視野,拓展思路非常有用。

the unix school 是我最喜歡的博客之一,裡面的每一篇博文我都認真看過,強烈推薦。

bash Pitfalls(BashPitfalls)

Bash Pitfalls文章介紹了40多條日常Bash編程中,老手和新手都容易忽略的錯誤編程習慣。 每條作者在給出錯誤的範例上,詳細分析與解釋錯誤的原因,同時給出正確的改寫建議。已經有朋友(網名:糰子)將這篇文章翻譯成了中文版。

4.後記

認真學習完這裡推薦的資料,就算得上是shell腳本老手了,不過,凡事都是憑興趣,我相信這篇文章對 shell腳本感興趣的新手會有很大的幫助。不過,還是要切記,多用多動手才是學習linux和shell的最佳方法。

如果你對Python感興趣,也可以看看我的這個回答:怎樣才能寫出pythonic的代碼? - 程序員 - 知乎


1. &< &< Advanced Bash-Scripting Guide &> &> ,即ABS,http://tldp.org/LDP/abs/html/。

經典的Online教程,內容全面,對每一個知識點都有相當多的實例,適合系統的學習。之前有翻譯的版本出到過3.9.1。

2. &< &< UNIX Shells by Example Fourth Edition &> &> ,網上有chm下載。

這本書適合用的時候查詢,結構很清晰,以語法為主。它的亮點在於將幾種常用的不同種類的Shell分開來描述。

3. &< &< Linux Command Line and Shell Scripting Bible &> &> ,網上有pdf下載。

這本書也很全面。適合那些喜歡一章一章看書的人去學,印刷質量相當的好。

4. &< &< LINUX與UNIX Shell編程指南 &> &> ,網上有pdf下載。

中文。中文。中文。


這裡推薦幾本學習linux書籍,好的教程,可以讓學習者少走彎路。 可以把枯燥的東西變得有樂趣。

不是嗎?

一、入門

1.輕鬆學用linux shell編程

2.linux shell編程從入門到精通這本書

3.《Linux shell腳本編程入門》

作者:金泰龍

譯者:金香

書號:978-7-115-36659-7

定價:89

頁數:496

這本書非常基礎,脈絡清晰,適合新手入門。

二、進階:

1.《Linux命令行與shell腳本編程大全(第2版)》

原書名:Linux Command Line and Shell Scripting Bible

作者:Richard Blum,Christine Bresnahan

譯者:武海峰

書號:978-7-115-28889-9

定價:99

頁數:620

一本關於Linux命令行與shell腳本編程的全面教程,話說全面到令人髮指,零基礎的讀者肯定喜歡。對於高手,第四部分高級Shell編程主題萬萬不能錯過。要知道,普通的書哪敢叫Bible。

2.《Linux Shell腳本攻略(第2版)》

原書名:Linux Shell Scripting Cookbook

作者:Shantanu Tushar,Sarath Lakshman

譯者:門佳

書號:978-7-115-33921-8

定價:59

頁數:312

被多次推薦的實操好書,案例實用性強。對於略微了解Shell的初學者,這是一本全面提升書,書中有很多腳本老手經常使用的技巧。

三、再進:

高級bash腳本編程指南

sed awk

你想更深入了解學習Linux知識體系,你可以看一下我們花費了一個多月整理了上百小時的幾百個知識點體系內容:

【超全整理】《Linux雲計算從入門到精通》系列實戰筆記全放送


不包含Perl,vim/emacs的話就這些


Linux 命令行和 shell 腳本編程寶典 Richard·Blum


ABS,高級Bash腳本編程指南,http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/


推薦看這本:《Learning the bash shell》(http://book.douban.com/subject/3296982/)

內容清晰,提綱挈領

書不是很厚,可以很快看完,然後投入實踐

網上有電子書,可以搜一下


ABS,python,看就行


&< &< UNIX Shells by Example Fourth Edition &> &> 推薦這本,網上有中文版pdf。內容豐富,講解也不錯。每個例子都是c shell ,ksh,bash三種都有,最好著重學習一個,個人喜歡bash,簡練且緊湊。c shell的交互功能做的倒是不錯,不過要是用它寫腳本你會想去撞牆。

其實學什麼教材倒是其次,堅持只用linux做桌面環境才是關鍵,同時拔掉你的滑鼠。


前面幾位說的很全了,我也是推薦ABS和Mastering Unix Shell Scripting。

前段時間看過一本《shell腳本專家指南(Expert Shell Scripting)》,Ron Peters.也很不錯,「這裡囊括了所有你迫切希望解決、卻又無處發問的shell腳本問題。」


O"Reilly 《Shell 腳本學習指南》 機械工業出版社 http://book.douban.com/subject/3519360/


http://linuxcommand.org/


其實入門的話《鳥哥的Linux私房菜》裡面關於Shell那章寫的挺有意思的。


UNIX Shell By Example .豐富的範例,詳盡的解說,我看過最好的Shell 教程。


《Linux Shell腳本攻略》

《Linux Shell腳本攻略》 是Linux Shell 編程的實戰秘籍,程序員的獨門攻略:準備,動手,一舉成功!

對新手而言,本書的內容由淺入深且緊貼實踐,使得他們能夠快速地學以致用,而專業人士也能從本書中發現一些新鮮的東西,使自己的技巧更加純熟。

《Linux命令行與Shell腳本編程大全(第2版)》

圖書堪稱黑客進階必讀,讓你輕鬆全面掌握命令行和shell

全書分為四部分:第一部分介紹Linuxshell 命令行;第二部分介紹shell 腳本編程基礎;第三部分深入探討shell 腳本編程的高級內容;第四部分介紹如何在現實環境中使用shell 腳本。本書不僅涵蓋了詳盡的動手教程和現實世界中的實用信息,還提供了與所學內容相關的參考信息和背景資料。 本書內容全面,語言簡練,示例豐富,適合於Linux 系統管理員及Linux 愛好者閱讀參考。

更多linux圖書:圖靈社區 : 閱讀 : Linux好書、經典書籍推薦


本文翻譯自《List of Bash online-tutorials》(http://wiki.bash-hackers.org/scripting/tutoriallist)

引子:

當你忍住耐心看完本文,你會篤定本文作者是一個完美主義者。
其實作為一個嚴謹的「程序員」,誰又不是呢?一個不嚴謹的人編寫程序,總會出錯。我們知道晚上回家打開電燈,家裡就會燈火通明;而如果我們生活在一個不知道下一次燈泡會不會亮的房子里,會不會很抓狂?對於一個程序員也是一樣,我們希望程序每次運行時都是正常的符合預期的,就像自己的思想的重現,此時此刻此情此景它就該如此這般,而不是提心弔膽地擔心下一秒鐘會不會令人啼笑皆非或報錯或崩潰,如果那樣首先崩潰的該是這個程序員吧。所以,我們可以理解作者的初衷,雖然有點強迫症的傾向。

當然學習使用shell的並不局限於程序員。

由於知乎的排版限制(或許是我不會)無法再現原文中的排版,所以做了折中重新排版,但願還算清楚。沒有使用它的圖形方式的評價指數,而是使用字元,便於移植,編輯也簡單。

由於時間問題,後面的詳盡評論暫不翻譯,有興趣的應該可以自己學習下。
有翻譯不當之處,敬請指出。

Tony L.
TonyLiu2ca@yahoo.com

註:該文最近一次修改日期:2015/11/25 06:20

以下是正文:
=======================================================================

Bash在線教程列表
---------------------

下面是一些Bash教程的列表
本列表的主要目的是引導初學者找到一個好的而不是錯誤百出的教程,第二個是促使這些教程的作者加以改進。
我的經驗表明,即便是在它的教程中有個大大的「聯繫我」的連接,如果只是給作者發個信件是不會被引起注意的. 本文希望
給Bash世界帶來一點積極的影響。

列表
-----
(此處忽略翻譯)

建議列表
-----------

注意這些建議是我個人的觀點,如果你有下面的問題,請聯繫我:
你有自己的評價或想添加新的站點
你對我的評價不滿意
你是列表中內容的作者(希望刪除鏈接,版權和討論等)
其它原因

下面使用的REC參考指數是可視的從1到10評分:
---------- 0% 不建議閱讀,最好不要點擊鏈接
*****----- 50% 小心使用!
********** 100% 完美的教程(我懷疑能否找到)

Bash guide on Greg"s wiki
連接: (http://mywiki.wooledge.org/BashGuide)
新重版草稿(http://guide.bash.academy/)
REC指數: *********- 90%
評價: 這個指南提供現代知識並提供良好的練習。我推薦使用它。它是由Freenode上的#bash的實時聊天(IRC)頻道的人(主要是lhunath)寫的, 因為網上有太多的差教程了.

Steve Parker"s shell scripting guide
連接: (http://steve-parker.org/sh/intro.shtml)
REC指數: *********- 90%
評價: 很好(不僅僅是Bash)的shell腳本指南,提供很好的練習並提供背景知識。

Bash Guide for Beginners (review)
連接: http://tldp.org/LDP/Bash-Beginners-Guide/html/
REC指數: ********-- 80%
評價: 不錯的無需初步知識的指導,並涵蓋了大部分的Unix工具。

Advanced Bash Scripting Guide (ABS) (review)
連接: http://tldp.org/LDP/abs/html/
REC指數: *****----- 50%
評價: 有很多很難找到的信息,但有點過時和不安全的內容。除非能辨明那些事好的不要使用。

IBM developerWorks "Bash by example"
連接: http://www.ibm.com/developerworks/library/l-bash.html
http://www.ibm.com/developerworks/library/l-bash2.html
http://www.ibm.com/developerworks/library/l-bash3.html
REC指數: ********-- 80%
評價: 沒有過時的信息,不會告訴你錯誤的內容,很好的入門教材但不夠詳細。

Deadman"s
連接: http://samrowe.com/wordpress/advancing-in-the-bash-shell/
REC指數: *******--- 70%
評價: 本身並不單單關註腳本,更注重交互使用和生產力的呈現,會教一些不錯的特性。

Bash Shell Programming in Linux (P. Lutus)
連接: http://www.arachnoid.com/linux/shell_programming.html
REC指數: *******--- 70%
評價: 不錯的入門教程,但有一些小錯誤。

BASH Help at http://hypexr.org (review)
連接: http://www.hypexr.org/bash_tutorial.php
REC指數: *****----- 50%
評價: 給你提供不錯的內容和其它相關的網路資源連接,不算是一個學習Bash的教程。

Bash Programming Introduction HowTo (TLDP)
連接: http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
REC指數: *--------- 10%
評價: 真是垃圾,單單語法就有好多錯誤。

Quick guide (review)
連接: http://www.panix.com/~elflord/unix/bash-tute.html
REC指數: *****----- 50%
評價: 入門使用,沒有錯誤信息,並提供不錯的練習。

Linux Shell Scripting Tutorial v2.0 (review)
連接: http://bash.cyberciti.biz/guide/Main_Page
REC指數: ****------ 40%
評價: 正在評審中 (它在開發教程)

http://linuxconfig.org Bash Scripting Tutorial (review)
連接: http://www.linuxconfig.org/Bash_scripting_Tutorial
REC指數: ---------- 0%
評價: 有好多過時、不可靠的和不詳盡的內容,你無法從中學到腳本的知識。

Beginner Linux Tutorial
連接: http://linuxtutorial.todolistme.net/
REC指數: ******---- 60%
評價: 一個Linux命令行的綜合介紹並提供大量的實例使學習更簡單。

Beginner Bash Scripting Tutorial
連接: http://ryanstutorials.net/bash-scripting-tutorial/
REC指數: ******---- 60%
評價: 一個在Linux環境下學習Bash的入門教材。

LinuxCommand.org: Writing shell scripts. (評審為完成,評分也未完成)
連接:http://linuxcommand.org/writing_shell_scripts.php
REC指數: *****----- 50%
評價:面向練習的,有些錯誤和瑕疵。可惜的是沒有完成就終止了。

Linuxcommand.org: The Linux Command Line
連接: http://linuxcommand.org/tlcl.php/
REC指數: ****------ 40%
評價: 使用Bash的入門教材,基本的Unix工具和shell腳本知識。Shell部分不是太出色,但是Bash工具很好。


ABS


1 abs

2 awksed

3 ChinaUnix shell論壇解決問題


linux命令行大全linux命令大全


我倒是可以提供PowerShell的學習書籍。。。。


推薦閱讀:

Linux服務端編程。關於IO復用,在epoll出現多年的情況下,select和poll還有使用場景嗎?
IT行業中個人如何選擇發展方向?
Linux 為什麼嚴格區分大小寫?
Windows 在服務端市場沒人用嗎?
Linux 中 mmap() 函數的內存映射問題理解?

TAG:Linux | Shell編程開發 | Linux入門教材 | Linux開發 | shellscript |