學(xué)習(xí)情境2項目2shell編程_第1頁
學(xué)習(xí)情境2項目2shell編程_第2頁
學(xué)習(xí)情境2項目2shell編程_第3頁
學(xué)習(xí)情境2項目2shell編程_第4頁
學(xué)習(xí)情境2項目2shell編程_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Linux網(wǎng)絡(luò)服務(wù)器配置管理項目實訓(xùn)教程楊云 等編著 中國水利水電出版社 1. 項目課題引入 2. Shell的概念與原理 3. Shell環(huán)境變量的設(shè)置 4. Shell腳本的設(shè)計與運行 5. 現(xiàn)場演示案例課題引入項目背景l(fā) 在Linux系統(tǒng)中,如果計算機插入一個USB設(shè)備,需要用掛載命令才能實現(xiàn)這個設(shè)備的加載??梢园裊SB的掛載與文件的復(fù)制寫成一個shell程序,這樣可以通過程序的運算自動完成很多步驟的操作,程序的功能如下:l 運算程序時,提示用戶輸入“y”或“n”,確定是不是掛載USB設(shè)備。l 如果用戶輸入“y”,則掛載這個USB設(shè)備l 提示用戶輸入“y”或“n”,確定是不是復(fù)制文本l

2、如果用戶輸入“y”,則顯示文件列表,然后提示用戶是否復(fù)制文件l 程序根據(jù)用戶輸入的文件名復(fù)制相應(yīng)的文件,然后提示是否將計算機中的文件復(fù)制到USB中l(wèi) 完成文件的復(fù)制以后,提示用戶是否卸載USB設(shè)備課題引入項目分析完成本項目需要解決的問題:1、Linux中shell是什么,有什么功能2、如何設(shè)定和使用Shell的環(huán)境變量3、如何利用shell進行腳本程序的設(shè)計課題引入教學(xué)目標學(xué)習(xí)本課需要實現(xiàn)的教學(xué)目標:掌握shell的基本命令掌握shell的基本概念和作用掌握shell環(huán)境變量概念和使用方法掌握shell程序的結(jié)構(gòu)和設(shè)計方法能夠完成本課程提出的項目內(nèi)容課題引入應(yīng)達到的職業(yè)能力學(xué)生學(xué)習(xí)本課后應(yīng)該具

3、有的職業(yè)能力:熟練掌握Vi編輯器的使用深入理解shell的思想掌握shell變量和環(huán)境變量的設(shè)置能夠進行基本的shell程序設(shè)計能夠讀懂Linux操作系統(tǒng)中的系統(tǒng)腳本項目問題一shell的概念和功能l Shell的基本概念: Shell就是用戶與操作系統(tǒng)內(nèi)核之間的接口,起著協(xié)調(diào)用戶與系統(tǒng)的一致性和在用戶與系統(tǒng)之間進行交互的作用。Shell在Linux系統(tǒng)中具有極其重要的地位 hardwaremultitaskingdeviceinterfacesvishlsbashkernelTCP/IPstackshellgccdiffgrepwcwhocatutilitiesShell的功能l Shell

4、最重要的功能是命令解釋,從這種意義上來說,Shell是一個命令解釋器。Linux系統(tǒng)中的所有可執(zhí)行文件都可以作為Shell命令來執(zhí)行。將可執(zhí)行文件作一個分類,如表所示。 Shell對命令的解釋過程l 當(dāng)用戶提交了一個命令后,Shell首先判斷它是否為內(nèi)置命令,如果是就通過Shell內(nèi)部的解釋器將其解釋為系統(tǒng)功能調(diào)用并轉(zhuǎn)交給內(nèi)核執(zhí)行l(wèi) 若是外部命令或?qū)嵱贸绦蚓驮噲D在硬盤中查找該命令并將其調(diào)入內(nèi)存,再將其解釋為系統(tǒng)功能調(diào)用并轉(zhuǎn)交給內(nèi)核執(zhí)行。在查找該命令時分為兩種情況:l用戶給出了命令路徑,Shell就沿著用戶給出的路徑查找,若找到則調(diào)入內(nèi)存,若沒有則輸出提示信息;l用戶沒有給出命令的路徑,Shel

5、l就在環(huán)境變量PATH所制定的路徑中依次進行查找,若找到則調(diào)入內(nèi)存,若沒找到則輸出提示信息。 Shell的主要版本項目問題二Shell環(huán)境變量l Shell支持具有字符串值的變量。 l Shell變量不需要專門的說明語句,通過賦值語句完成變量說明并予以賦值。 l 在命令行或Shell腳本文件中使用$name的形式引用變量name的值。shell變量的定義和引用l 在Shell中,變量的賦值有下列句法格式: name=string l name是變量名,它的值就是string,“=”是賦值符號。變量名是以字母或下劃線開頭的字母、數(shù)字和下劃線字符序列。 l 通過在變量名(name)前加$字符(如$

6、name)引用變量的值,引用的結(jié)果就是用字符串string代替$name。 l 在定義變量時,若string中包含空格、制表符和換行符,則string必須用string或者”sting”的形式,即用單(雙)引號將其括起來。雙引號內(nèi)允許變量替換,而單引號內(nèi)則不可以。Shell變量的作用域l 與程序設(shè)計語言中的變量一樣,Shell變量有其規(guī)定的作用范圍。 l Shell變量分為局部變量和全局變量:局部變量的作用范圍僅僅限制在其命令行所在的Shell或Shell腳本文件中 全局變量的作用范圍則包括本Shell進程及其所有子進程 可以使用export內(nèi)置命令將局部變量設(shè)置為全局變量Shell變量作用域

7、舉例在當(dāng)前Shell中定義變量var1在當(dāng)前Shell中定義變量var2并將設(shè)為全局引用變量的值 顯示當(dāng)前Shell的PID Shell變量作用域舉例調(diào)用子Shell ,并顯示子Shell的PID 由于var1沒有被export,在子Shell中已無值由于var2被export,所以在子Shell中仍有值返回主Shell,并顯示變量的值 Shell的環(huán)境變量 l 環(huán)境變量是指由Shell定義和賦初值的Shell變量。 l Shell用環(huán)境變量來確定查找路徑、注冊目錄、終端類型、終端名稱、用戶名等。 l 所有環(huán)境變量都是全局變量,并可以由用戶重新設(shè)置。l 在Bash中,設(shè)置環(huán)境變量用set命令,

8、命令的格式是:set 環(huán)境變量=變量的值Shell的環(huán)境變量舉例l 設(shè)置用戶的主目錄為/home/john,可以用以下命令:l 不加任何參數(shù)地直接使用set命令可以顯示出用戶當(dāng)前所有環(huán)境變量的設(shè)置,如:Shell的環(huán)境變量舉例l 在環(huán)境變量前面加上$符號,表示引用環(huán)境變量的值,例如把目錄切換到用戶的主目錄 :l 當(dāng)修改PATH變量時,如:將一個路徑/tmp加到PATH變量后,應(yīng)該這樣設(shè)置:Shell中的正則表達式l grep命令用來在文本文件中查找內(nèi)容,指定給grep的文本模式叫做“正則表達式”。l 正則表達式可以是普通的字母或者數(shù)字,也可以使用特殊字符來匹配不同的文本模式。l 由于正則表達式

9、使用了一些特殊字符,所以所有的正則表達式都必須用單引號括起來。 l 正則表達式字符可以包含某些特殊的模式匹配字符。 句點匹配任意一個字符,相當(dāng)于shell中的問號 緊接句號之后的星號匹配零個或多個任意字符,相當(dāng)于Shell的星號 方括號的用法跟Shell的一樣,只是用代替了 !表示匹配不在指定列表內(nèi)的字符 正則表達式匹配字符、量詞 、控制字符 正則表達式舉例l help 匹配包含help的行l(wèi) .$ 匹配倒數(shù)第二個字符是句點的行l(wèi) .$ 匹配只有3個字符的行l(wèi) 0-930-9 匹配以3個數(shù)字開頭跟著是一個非數(shù)字字符的行 l (A-ZA-Z)*$ 匹配只包含偶數(shù)個大寫字母的行 輸入輸出重定向與管

10、道 l 所謂重定向,就是不使用系統(tǒng)的標準輸入端口、標準輸出端口或標準錯誤端口,而進行重新的指定,所以重定向分為輸入重定向、輸出重定向和錯誤重定向 l 在Shell中,要實現(xiàn)重定向主要依靠重定向符實現(xiàn) ,下表列出了常用的重定向符 輸入輸出重定向舉例管道 l 許多Linux命令具有過濾特性,即一條命令通過標準輸入端口接收一個文件中的數(shù)據(jù),命令執(zhí)行后產(chǎn)生的結(jié)果數(shù)據(jù)又通過標準輸出端口送給后一條命令,作為該命令的輸入數(shù)據(jù)。 l Shell提供管道命令“|”將這些命令前后銜接在一起,形成一個管道線。格式為:命令1|命令2|命令nl 管道線中的每一條命令都作為一個單獨的進程運行,每一條命令的輸出作為下一條命

11、令的輸入。由于管道線中的命令總是從左到右順序執(zhí)行的,因此管道線是單向的。 管道舉例l 以長格式遞歸的方式分屏顯示/etc目錄下的文件和目錄列表。Shell腳本l Shell最強大的功能在于它是一個功能強大的編程語言。l 用戶可以在文件中存放一系列的命令,這被稱為Shell腳本或Shell程序,將命令、變量和流程控制有機地結(jié)合起來將會得到一個功能強大的編程工具。l Shell腳本語言非常擅長處理文本類型的數(shù)據(jù),由于Linux系統(tǒng)中的所有配置文件都是純文本的,所以Shell腳本語言在管理Linux系統(tǒng)中發(fā)揮了巨大作用。Shell腳本l Shell腳本是以行為單位的,在執(zhí)行腳本的時候會分解成一行一行

12、依次執(zhí)行。腳本中所包含的成分主要有注釋、命令、Shell變量和結(jié)構(gòu)控制語句。其中:l注釋。用于對腳本進行解釋和說明,在注釋行的前面要加上符號“#”,這樣在執(zhí)行腳本的時候Shell就不會對該行進行解釋。l命令。在Shell腳本中可以出現(xiàn)任何在交互方式下可以使用的命令。l變量。Shell支持具有字符串值的變量。Shell變量不需要專門的說明語句,通過賦值語句完成變量說明并予以賦值。在命令行或Shell腳本文件中使用$name的形式引用變量name的值。l流程控制。主要為一些用于流程控制的內(nèi)部命令。Shell腳本的流程控制腳本的建立與執(zhí)行 l 用戶可以使用任何文本編輯器編輯Shell腳本文件,如Vi

13、、gedit等。l Shell對Shell腳本文件的調(diào)用可以采用3種方式:l 一種是將文件名作為Shell命令的參數(shù),其調(diào)用格式為:l 另一種調(diào)用方法是先將腳本文件的訪問權(quán)限改為可執(zhí)行,以便該文件可以作為執(zhí)行文件調(diào)用l 當(dāng)執(zhí)行一個腳本文件時,Shell就產(chǎn)生一個子Shell(即一個子進程)去執(zhí)行文件中的命令。因此,腳本文件中的變量值不能傳遞到當(dāng)前Shell(即父進程)。為了使的腳本文件中的變量值傳遞到當(dāng)前Shell,必須在命令文件名前面加“.”命令。 Shell設(shè)置變量實例Shell選擇語句實例l 本實例測試首先測試/bin/bash文件是否存在,如果存在,測試它是不是一個目錄,并通過echo語句輸出測試結(jié)果Shell循環(huán)語句實例l 本實例首先利用for循環(huán),分別給foo賦值為bar,fud和43,并通過echo語句輸出foo變量的內(nèi)容。然后利用while循環(huán),使得foo不斷加一本課項目總結(jié)通過前面的學(xué)習(xí),我們已經(jīng)可以完成本課程的項目了。具體實施方法如下:在Linux終端中輸入Vi,打開vi編輯器在Vi中進行代碼的編輯,部分主要代碼如圖所示將代碼保存成usb.sh,并使用chmod +x usb.sh命令增加執(zhí)行權(quán)限運行程序進行測試本項目示例代碼作業(yè)l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論