1. 程式人生 > >Shell程式語言學習:從新手到系統管理員

Shell程式語言學習:從新手到系統管理員

本文由 [茶話匯] – [Qing] 編譯自 [Avishek Kumar] 轉載請註明出處

Shell-Script-Guide

GNU/Linux包含了一些Windows所沒有的強大的工具。Shell指令碼就是這些重要的工具中的一種。雖然Windows也有類似的指令碼工具,但是其功能遠沒有Linux的Shell指令碼強大。Shell指令碼程式設計使得執行一系列的命令變得可能,它同時也可以通過管道來控制輸出。這些功能在日常的自動化工作中使用的非常頻繁。事實上,自動化控制對伺服器來說是一個非常重要的任務。Linux/Unix系統管理員需要編寫大量的指令碼程式來執行每天特定的任務。

Linux下最常見的shell是BASH,即Bourne Again Shell

的縮寫。在Linux還有一些其它常見的shell,如下所示:
Almquist shell (ash)
Bourne shell (sh)
Debian Almquist shell (dash)
korn shell (ksh)
Public domain korn shell (pdksh)
MirBSD korn shell (mksh)
Z shell (zsh)
Busybox, 等。

我們在如下所示的五篇博文中盡力討論shell程式設計的各種特性和主題。

從新手到系統管理員(一):理解Linux Shell和基本的Shell指令碼

在第一部分,我們主要介紹指令碼語言的基本知識及如何使用和編寫基本命令、何時需要註釋及如何增加註釋、討論shebang、如何使指令碼變得可執行及如何執行指令碼。

Hello.sh
第一個例子的目的是生成一個簡單的輸出。希望通過這個指令碼,你不會對指令碼程式設計世界感覺恐懼。

Process.sh
第二個例子告訴你如何一次性在腳本里面執行多個命令,這裡暫時不討論管道。

Interactive.sh
最後一個例子是一個簡單但互動性很強的指令碼。在這個指令碼中,它會要求你首先輸入你的名字,儲存它,然後再讓你輸入你的姓。最後,它分不同的行在螢幕上列印你的全名和姓。

通過第一部分的學習,你會知道如何執行命令,在指令碼中儲存資料和對資料進行處理,及在執行的時候要求使用者輸入資料及儲存數目。

[茶話匯注]第一部分的譯文連結:這裡

從新手到系統管理員(二):Linux新手學習Shell指令碼程式設計的五個例子

在這部分我們將提供五個例子,其主題是討論shell的設計及著色。通過這部分我們想告訴大家Linux終端也是可以五顏六色的,並不是大家想象的那麼單調無聊。

Special_patter.sh
這個例子可以繪製特殊的圖形,比如用“.”來繪製鑽石。通過這個特殊的例子,你將學習到如何使用for迴圈。

Colourful.sh
這個例子的輸出結果是五顏六色的。通過這個例子,你可以學習到幾種顏色的編碼,如何使用它們來控制輸出的文字和背景的顏色。整個學習過程是非常有趣的。

Encrypt.sh
這個例子的程式碼總共不超過10行,但它卻完成了加密一個檔案/資料夾的功能。關於安全的實現從來都沒有像這樣容易過。這裡我們沒有提供解密檔案/資料夾的程式碼。但我們提供瞭解密所需要的命令,你可以自己來完成相應的解密指令碼。

Server-Health.sh
對於初學者來說,這個指令碼例子所包含的程式碼要長很多。這個例子為了後續的使用,而將一些輸出資訊重定向到檔案中。從這裡你可以學習Linux非常重要的管道命令。

Disk_space.sh
最後一個例子對於web管理員來說特別有用。它的功能是當某個使用者的磁碟空間超過了限額之後,將自動向此使用者傳送郵件。這裡我們假設分配給使用者的是5GB的空間,那麼當用戶使用的空間超過4.75GB之後,系統將自動向該使用者傳送一封郵件。

[茶話匯注]第二部分的原文連結:這裡(待翻譯)

從新手到系統管理員(三):深入探索Linux Bash指令碼程式設計世界

是時候向你介紹shell指令碼中的關鍵字/保留字了。通過這部分的學習,可以使得我們編寫的指令碼語言更加專業。這部分我們討論一些Linux命令在指令碼語言中是如何實現的。

up.sh
這個例子討論如何切換到若干個上層目錄。

Randomfile.sh
這個例子對於系統管理員來說特別有用。它可以建立一個具有特定日期和時間戳的檔案/資料夾。

Collectnetworkinfo.sh
這個例子收集與伺服器相關的資訊並將其儲存到文字檔案中,以備將來之需。

Convertlowercase.sh
這個例子一次性的將從檔案或者標準輸入得到的資料轉為小寫。

[茶話匯注]第三部分的原文連結:這裡(待翻譯)

從新手到系統管理員(四):Linux Shell指令碼程式設計之數學(Part I)

這部分我們討論指令碼語言中的數學運算。

Addition.sh
這個例子討論Shell程式設計中的加法運算,這裡我們使用“expr”來執行運算操作。
Substration.sh, Multiplication.shDivision.sh用起演示其它集中運算操作。

Table.sh
這個例子將實時產生一個表格的資料。

EvenOdd.sh
這個例子用來判斷從標準輸入得到的數字是奇數還是偶數,並將結果打印出來。

Factorial.sh
這個例子演示瞭如何計算一個數的階乘。

Armstrong.sh
這個例子用來判斷輸入的數字是否是armstrong數字。

Prime.sh
這個例子用來判斷輸入的數字是否是質數,並將其結果打印出來。

[茶話匯注]第四部分的原文連結:這裡(待翻譯)

從新手到系統管理員(五):Linux Shell指令碼程式設計之數學(Part II)

Fibonacci.sh
這個例子用來判斷一個數是否是Fibonacci。

Decimal2Binary.sh
這個例子將十進位制數轉換為二進位制數。

Binry2Decimal.sh
這個例子將二進位制數轉換為十進位制數。

[茶話匯注]第五部分的原文連結:這裡(待翻譯)

上述五個部分的指令碼例子我們都詳細的測試過,確保其可以執行。在大部分的例子我們也提供了輸出結果。相信大家在學習這些指令碼的時候不會感覺困惑。如果大家還是有問題,歡迎給我們留言。