圖片勝過文字,下圖概述了Linux的工作:
理解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 (執行指令碼)
編寫你第一個指令碼:
1 2 3 4 |
#!/bin/bash # My first script echo "Hello World!" |
如上所述,將這幾行東西,儲存在文字檔案裡,使之可執行,並執行之。
輸出的樣子:
1 |
Hello World! |
上面的程式碼解釋如下。
1 2 3 |
#!/bin/bash ( 執行環境 ) # My first script ( 註釋,任何位於#後的東西都被註釋 ) echo “Hello World!” ( 指令碼的主要部分 ) |
編寫你第二個指令碼:
是時候寫下一個了。這個指令碼會說出你的username和列出執行中的process
1 2 3 4 5 |
#! /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 ,使之可執行,並執行之。
1 2 3 4 5 6 7 |
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之類時,學習指令碼語言就不覺得難了。
編寫你第三個指令碼:
接著,來寫第三個也是本文最後一個指令碼。這個指令碼表現為一個互動式的指令碼,何不親自執行它,說下感覺怎樣?
1 2 3 4 5 6 7 8 |
#! /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" |
輸出的樣子:
1 2 3 4 5 6 7 |
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 |
其實,這事還沒完。我們只不過讓你淺嘗了一下。在未來,我們會全面開展“指令碼”這個話題,它會一直下去,沒有最詳盡,只有更詳盡。各位在評論中的寶貴意見都是可讚的!請支援我們,並幫忙宣傳,保持聯絡,敬請關注!