理解Linux Shell和基本Shell指令碼語言的小貼士

jobbole發表於2014-04-04

  圖片勝過文字,下圖概述了Linux的工作:

Understanding-Linux-Shell

  理解Linux Shell:

  shell:一個命令列直譯器,通過執行命令或指令碼,幫助使用者與作業系統打交道。

  process:程式,使用者執行的任務是程式,但程式不只是任務。

  file:檔案放在硬碟上,包含使用者所有的資料。

  x-windows(又稱windows):Linux的一種模式,使螢幕包含多個視窗,讓使用者同時監視多個任務,方便地穿梭於任務之間,它是圖形化的。

  text terminal:一種只能顯示文字或簡單圖形的視窗。

  session:登入,建立會話;登出,登出會話。

  標準Linux發行版裡的shell種類:

  Bourne Shell:它是早期版本中的一種主要的shell,並且後來成為了標準。由貝爾實驗室的 Stephen Bourne 所寫。每個“類Unix”的系統裡都至少有一種shell與之相容。Bourne Shell 的程式命名為“sh”,一般放在 /bin/sh 。

C shell:由 Bill Joy 為 BSD 版本所寫。它的語法是模仿C語言的。它主要用於互動式操作,有很多互動式命令,而不太常用於寫指令碼。

  開始玩了!

  命令有成千上萬條,都把它們記住,好嗎?額,很明顯那是不行的。計算機的真正用途是簡化你的工作,你需要過程自動化,所以,你需要指令碼。

  指令碼是命令的集合,儲存在檔案裡。shell能讀取這些檔案並且執行裡面的命令,就像執行鍵盤發來的命令。shell還提供各種各樣的程式設計特性,使得指令碼真心強大。

  shell程式設計基礎:

  開啟終端,以獲取shell

  看下你用著什麼shell,執行:echo $SHELL

  在Linux shell中,美元符號$代表一個變數

  “echo”命令就是回覆你鍵入任何東西

  當需要串聯幾個命令時,管線指令 “|” 就有用了

  Linux命令有自己的語法,你的任何錯誤都不會被容忍和接受。如果你寫了條不規範的命令,當然不會如願執行。

  #!/bin/sh —— 這個叫環境。這句寫在shell指令碼的首行,使得命令被髮送到 /bin/sh 程式

  關於shell 指令碼:

  shell指令碼就是一個普通的文字檔案,副檔名是  .sh ,且能夠被執行。

  編寫和執行指令碼:

  開啟終端

  “cd”命令,去到你想存放該指令碼的地方

  cd,回車,使你的提示符變成home目錄

  touch hello.sh(這裡我們的指令碼命名為hello,而 .sh 是規定的)

  vi hello.sh(nano hello.sh)用你最喜歡的編輯器,我用nano

  chmod 744 hello.sh(使指令碼可被執行)

  sh hello.sh 或者 ./hello.sh (執行指令碼)

  編寫你第一個指令碼:

#!/bin/bash
# My first script

echo "Hello World!"

  如上所述,將這幾行東西,儲存在文字檔案裡,使之可執行,並執行之。

  輸出的樣子:

Hello World!

  上面的程式碼解釋如下。

#!/bin/bash ( 執行環境 )
# My first script ( 註釋,任何位於#後的東西都被註釋 )
echo “Hello World!” ( 指令碼的主要部分 )

  編寫你第二個指令碼:

  是時候寫下一個了。這個指令碼會說出你的username和列出執行中的process

#! /bin/bash
echo "Hello $USER"
echo "Hey i am" $USER "and will be telling you about the current processes"
echo "Running processes List"
ps

  如上所述,將這幾行東西,儲存在文字檔案裡,檔案叫啥名字都行,但記住副檔名為 .sh ,使之可執行,並執行之。

Hello tecmint
Hey i am tecmint and will be telling you about the current processes
Running processes List
  PID TTY          TIME CMD
 1111 pts/0    00:00:00 bash
 1287 pts/0    00:00:00 sh
 1288 pts/0    00:00:00 ps

  覺得酷嗎?編寫指令碼就像將想法轉變為流程式命令一樣簡單。通過內建的過濾器和管道功能,shell 指令碼擅長做簡單的檔案系統操作。

  當你的需求更復雜,例如是功能、健壯、效能、效率等方面時,你就需要一個全能的語言了。

  當你已經熟悉 C、PERL、PYTHON之類時,學習指令碼語言就不覺得難了。

  編寫你第三個指令碼:

  接著,來寫第三個也是本文最後一個指令碼。這個指令碼表現為一個互動式的指令碼,何不親自執行它,說下感覺怎樣?

#! /bin/bash
echo "Hey what's Your First Name?";
read a;
echo "welcome Mr./Mrs. $a, would you like to tell us, Your Last Name";
read b;
echo "Thanks Mr./Mrs. $a $b for telling us your name";
echo "*******************"
echo "Mr./Mrs. $b, it's time to say you good bye"

  輸出的樣子:

Hey what's Your First Name?
Avishek
welcome Mr./Mrs. Avishek, would you like to tell us, Your Last Name
Kumar
Thanks Mr./Mrs. Avishek Kumar for telling us your name
******************************************************
Mr./Mrs. Kumar, it's time to say you good bye

  其實,這事還沒完。我們只不過讓你淺嘗了一下。在未來,我們會全面開展“指令碼”這個話題,它會一直下去,沒有最詳盡,只有更詳盡。各位在評論中的寶貴意見都是可讚的!請支援我們,並幫忙宣傳,保持聯絡,敬請關注!

  原文連結: TecMint.com   翻譯: 伯樂線上 - unblock

相關文章