linux學年論文.doc_第1頁
linux學年論文.doc_第2頁
linux學年論文.doc_第3頁
linux學年論文.doc_第4頁
linux學年論文.doc_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

學年論文(課程論文、課程設(shè)計)題目:Linux shell程序設(shè)計 作者: 所在學院: 專業(yè)年級: 指導教師: 職稱: 年 月 日Linux shell程序設(shè)計摘要:Linux是一個免費的、多用戶的、多任務的操作系統(tǒng),其運行方式、功能和Unix系統(tǒng)很相似,但Linux系統(tǒng)的穩(wěn)定性、安全性與網(wǎng)絡(luò)功能是許多商業(yè)操作系統(tǒng)所無法比擬的。Linux系統(tǒng)最大的特色是源代碼的公開,在符合GUN/GPL的原則下,任何人都可以自由取得傳播甚至修改源代碼。從程序員的角度來看,shell本身是一種用c語言編寫的程序,從用戶的角度來看,shell是用戶與linux操作系統(tǒng)溝通的橋梁。用戶即可以輸入命令執(zhí)行,又可以利用shell腳本編程,完成更加復雜的操作。隨著網(wǎng)絡(luò)的日益盛行,越來越多的技術(shù)高超的程序員加入到Linux的開發(fā)與完善中來,在系統(tǒng)管理等領(lǐng)域,shell編程起著不可忽略的作用。深入地了解和熟練地掌握shell編程,是每一個linux用戶的必修功課之一。關(guān)鍵詞:Linux,Shell、類型及建立,控制語句,輸入輸出目 錄緒論4一,shell的特點5二,shell程序?qū)嵗?三,shell腳本的建立和執(zhí)行6四,命令歷史7五,shell特殊字符7六,shell變量7七,控制結(jié)構(gòu)9八,函數(shù)11緒論Linux是一個免費的、多用戶的、多任務的操作系統(tǒng),其運行方式、功能和Unix系統(tǒng)很相似,但Linux系統(tǒng)的穩(wěn)定性、安全性與網(wǎng)絡(luò)功能是許多商業(yè)操作系統(tǒng)所無法比擬的。UNIX是世界上最流行的操作系統(tǒng)之一,它是一種實時操作系統(tǒng),可以運行于大型和小型計算機上的多任務系統(tǒng)。但由于它比較龐大,而且價格昂貴,所以不適合PC機用戶使用。而Linux正好彌補了這些缺點,同時還繼承了UNIX大多數(shù)優(yōu)點。由于它基于PC機上運行的操作系統(tǒng),并且內(nèi)核源代碼是公開的,使得Linux成為時下最滸的操作系統(tǒng)。Linux適用于PC機的計算機操作系統(tǒng),它適合于多種平臺,是目前唯一免費的非商品化操作系統(tǒng)。由于有結(jié)構(gòu)清晰、功能強大等特點,它很快成為許多院校學生和科研機構(gòu)的研究人員學習和研究的對象。在他們的熱心努力下,Linux漸漸成為一個穩(wěn)定可靠、功能完善的操作系統(tǒng)。Linux是由UNIX發(fā)展來的,它不僅繼承了UNIX操作系統(tǒng)的特征,而且許多方面還超過了UNIX系統(tǒng)。另外它還有許多UNIX所不具有的優(yōu)點和特征。它的源代碼是開放的,可運行于許多硬件平臺 ,支持多達32種文件,支持大量的外部設(shè)備等。本文主要介紹了linux中shell的基本概念和構(gòu)成,從程序員的角度來看,shell本身是一種用c語言編寫的程序,從用戶的角度來看,shell是用戶與linux操作系統(tǒng)溝通的橋梁。用戶即可以輸入命令執(zhí)行,又可以利用shell腳本編程,完成更加復雜的操作。隨著網(wǎng)絡(luò)的日益盛行,越來越多的技術(shù)高超的程序員加入到Linux的開發(fā)與完善中來,在系統(tǒng)管理等領(lǐng)域,shell編程起著不可忽略的作用。深入地了解和熟練地掌握shell編程,是每一個linux用戶的必修功課之一。Shell程序有很多類似C語言和其他程序設(shè)計語言的特征,但是又沒有程序語言那樣復雜。它結(jié)合了延展性與效率,持續(xù)保有獨具的特色,并不斷被改良,是那些類似與GUI等的屏幕圖形界面最有力的支柱。Shell程序是指放在一個文件中的一系列Linux命令和實用程序。在執(zhí)行的時候,通過Linux操作系統(tǒng)一個接一個地解釋和執(zhí)行每條命令。此后,只要直接執(zhí)行該程序便能完成工作。如果你的程序?qū)懙暮苡杏茫渌丝梢岳迷摮绦虍斪鲆粋€黑盒來使用。本論文將對shell做一個比較全面的解析,使大家能夠?qū)χ邮煜?。一?初識shell在寫這篇論文之前,我們需要弄清楚5個基本的概念: 1) 什么是Shell? 官方的解釋稱:Shell是一種具備特殊功能的程序, 它是介于使用者和 UNIX/Linux 操作系統(tǒng)之核心程序(kernel)間的一個接口,是核心程序(kernel)之外的指令解析器,是一個程序,同時是一種命令語言和程序設(shè)計語言。也就是說, 為了對用戶屏蔽內(nèi)核的復雜性,也為了保護內(nèi)核以免用戶誤操作造成損害,在內(nèi)核的周圍建了一個外殼(shell)。用戶向shell提出請求,shell解釋并將請求傳給內(nèi)核。 2) shell的本質(zhì) 本質(zhì)上,shell 腳本是命令行命令簡單的組合到一個文件里面。Shell基本上是一個命令解釋器,類似于DOS下的。它接收用戶命令,然后調(diào)用相應的應用程序。 輸入echo $SHELL可以知道當前運行在那個Shell標準中。 3) shell標準有哪些? 使用較廣的shell有標準的Bourne shell (sh)、Korn Shell(ksh)、C shell (csh)、Bourne Again Shell(bash)等。 4) shell程序大體內(nèi)容shell自身就是一個解釋型的程序設(shè)計語言,shell程序設(shè)計語言支持絕大多數(shù)在高級語言中能見到的程序元素,如函數(shù)、變量、數(shù)組和程序控制結(jié)構(gòu)。任何在提示符中能鍵入的命令都能放到一個可執(zhí)行的shell程序中。 5) 運行shell的腳本格式 運行一個shell腳本必須為(./+名字.sh)。 5個基本概念明白之后,我們首先來編寫第一個Shell程序,從中學習Shell程序的編寫、修改權(quán)限、執(zhí)行過程。利用vi編輯器編輯腳本,將腳本命名為date.sh。編輯一個內(nèi)容如下的源程序,保存文件名為date,可將其存放在目錄/bin下。6) 執(zhí)行Shell程序有下面三種方法: 方法一: rootlocalhost bin#./ date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法二: 另一種執(zhí)行date的方法就是把它作為一個參數(shù)傳遞給Shell命令: rootlocalhost bin# Bash date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法三:為了在任何目錄都可以編譯和執(zhí)行Shell所編寫的程序,即把/bin的這個目錄添加到整個環(huán)境變量中。具體操作如下: rootlocalhost root#export PATH=/bin:$PATH rootlocalhost bin# date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 接下來我們通過一些例子將shell編程進一步闡釋。二,shell的特點 一種高級程序設(shè)計語言,它有變量,關(guān)鍵字,有各種控制語句,如if、case、while、for等語句,支持函數(shù)模塊,有自己的語法結(jié)構(gòu)。Shell有如下幾種特點:組合新命令 提供了文件名擴展字符 直接使用shell 的內(nèi)置命令 靈活地使用數(shù)據(jù)流 結(jié)構(gòu)化的程序模塊 在后臺執(zhí)行命令 可配置的環(huán)境 高級的命令語言 Shell的種類: (1)Bourne shell(簡稱sh)(2)C shell(簡稱csh)(3)Korn shell(簡稱ksh)(4)Bourne Again shell(即bash) 三,shell程序?qū)嵗旅媸怯扇龡l簡單命令組成的shell程序(文件名為ex1)。$ cat ex1datepwdcd .下面是簡單地用shell輸出當前年月日的程序運行結(jié)果圖:四,shell腳本的建立和執(zhí)行執(zhí)行shell腳本的方式基本上有三種:(1)輸入定向到shell腳本$ bash 腳本名 (2)以腳本名作為參數(shù)其一般形式是: $ bash 腳本名 參數(shù)bash shell的內(nèi)置命令:type 通過type我們可以知道一個命令式內(nèi)置命令還是外部命令。type -t 命令-t :加入?yún)?shù)t時,結(jié)果為以下意思:file:表示為外部命令alias:表示該命令式別名所設(shè)置的名稱builtin:表示該命令為bash內(nèi)置命令,按如上面所說的步驟寫命令其運行結(jié)構(gòu)為:(3)將shell腳本的權(quán)限設(shè)置為可執(zhí)行,然后在提示符下直接執(zhí)行它。$ chmod a+x ex2$ PATH=$PATH:.$ ex2查看環(huán)境變量使用env 或者export命令,可以查看系統(tǒng)中所有的變量例如:下面是它實際實現(xiàn)圖:四,命令歷史顯示歷史命令語法格式是:history option arg 如果不帶任何參數(shù),則history命令會顯示歷史命令的清單 如果history 后給出一個正整數(shù)(如50),就只顯示歷史表中的最后50行命令。例如:如果只是查看最近的10條歷史命令,可以在命令提升符下輸入:#history10在linux系統(tǒng)的默認配置下,重復的歷史命令都會存入.bash_history文件。如果不希望在輸入history命令查看歷史命令時,看到連續(xù)重復的歷史命令,我們可以在.bashrc中加入下面兩行:exportHISTCONTROL=ignoreboth shopt-shistappend其中第一行的命令的作用為“移除Linux shell命令歷史記錄中連續(xù)重復的文件”,第二行的作用為“shell 退出時,將shell 的歷史記錄附加到您的記錄文件”。如果history后給出一個文件名,就把它作為歷史文件名。五,shell特殊字符1一般通配符*(星號),它匹配任意字符的0次或多次出現(xiàn) ?(問號),它匹配任意一個字符 (一對方括號),其中有一個字符組。其作用是匹配該字符組所限定的任何一個字符 !(驚嘆號),如果它緊跟在一對方括號的左方括號()之后,則表示不在一對方括號中所列出的字符 由雙引號括起來的字符(除$、倒引號()和反斜線()外)均作為普通字符對待。由單引號括起來的字符都作為普通字符出現(xiàn)。六,shell變量用戶定義的變量 變量名是以字母或下線符打頭的字母、數(shù)字和下線符序列,并且大小寫字母意義不同。 定義變量并賦值的一般形式是: 變量名=字符串 通常我們引用變量值時在變量名前面加上一個符號“$”。如果在賦給變量的值中要含有空格、制表符或換行符,那么,就應該用雙引號把這個字符串括起來。 例如:$ names=arzugul Lisi adila$ echo $names如果變量值須出現(xiàn)在長字符串的開頭或者中間,為了使變量名與其后的字符區(qū)分開,避免shell把它與其它字符混在一起視為一個新變量,則應該用花括號將該變量名括起來。例如: $ dir=/usr/meng $ cat $dirqc/m1.c命令替換有兩種形式的命令替換,一種是使用倒引號引用命令,其一般形式是: 命令表另一種形式是: $(命令表) 如:$ dir=$(pwd) $ echo $(pwd ; cd /home/mengqc ; ls -d)數(shù)組shell中bash只提供一維數(shù)組,并且沒有限定數(shù)組的大小。類似與C語言,數(shù)組元素的下標由0開始編號。一般對數(shù)組元素賦值的形式是:數(shù)組名下標值可以用declare命令顯式聲明一個數(shù)組,一般形式是:declare -a 數(shù)組名讀取數(shù)組元素值的一般格式是:$數(shù)組名下標定義一個數(shù)組并為其賦初值的一般形式是:數(shù)組名=(值1 值2 值n)。其中,各個值之間以空格分開。若沒有給出數(shù)組元素的下標,則數(shù)組名表示下標為0的數(shù)組元素。使用*或當作下標,則會以數(shù)組中所有元素取代*或。輸入/輸出命令在shell中可以利用read命令從鍵盤上讀取數(shù)據(jù),然后賦給指定的變量。read命令的一般格式是:read 變量1 變量2 ,變量個數(shù)與給定數(shù)據(jù)個數(shù)相同,則依次對應賦值,變量個數(shù)少于數(shù)據(jù)個數(shù),則從左至右對應賦值,但最后一個變量被賦予剩余的所有數(shù)據(jù)。變量個數(shù)多于給定數(shù)據(jù)個數(shù),則依次對應賦值,而沒有數(shù)據(jù)與之對應的變量取空串。用echo命令顯示其后的變量值或者直接顯示它后面的字符串。如果echo命令帶有選項“-e”,那么在其后的參數(shù)中可以有以下轉(zhuǎn)義字符: a b c e f n r t v m xm下面是幾種常見的聲明類型及它實現(xiàn)結(jié)果圖:declare -iaxr vara:數(shù)組類型i 整形x 全局變量r 只讀類型七,控制結(jié)構(gòu)if語句if語句用于條件控制結(jié)構(gòu)中,其一般格式為:if 測試條件 then 命令1 else 命令2 fi其中,if、then、else和fi是關(guān)鍵字。例如: if test -f $1 then echo $1 is an ordinary file . else echo $1 is not an ordinary file . fi在shell中if語句中else部分可以缺省。case語句case語句允許進行多重條件選擇。其一般語法形式是: case 字符串 in 模式字符串1) 命令 命令; 模式字符串2) 命令 命令; 模式字符串n) 命令 命令; esac但在使用case語句時我們應注意如下幾點: 每個模式字符串后面可有一條或多條命令,其最后一條命令必須以兩個分號(即;)結(jié)束。模式字符串中可以使用通配符 如果一個模式字符串中包含多個模式,那么各模式之間應以豎線(|)隔開,表示各模式是“或”的關(guān)系,即只要給定字符串與其中一個模式相配,就會執(zhí)行其后的命令表。 各模式字符串應是唯一的,不應重復出現(xiàn)。并且要合理安排它們的出現(xiàn)順序。 case語句以關(guān)鍵字case開頭,以關(guān)鍵字esac(是case倒過來寫!)結(jié)束。 case的退出(返回)值是整個結(jié)構(gòu)中最后執(zhí)行的那個命令的退出值。若沒有執(zhí)行任何命令,則退出值為零。while語句shell中有三種用于循環(huán)的語句,它們是:while語句、for語句和until語句。 while語句的一般形式是:while 測試條件 do命令表 doneuntil語句until語句的一般形式是: until 測試條件 do 命令表 Done它與while語句很相似,只是測試條件不同:當測試條件為假時,才進入循環(huán)體,直至測試條件為真時終止循環(huán)。for語句值表方式:其一般格式為 for 變量 in 值表 ;do 命令表;done算術(shù)表達式方式:其一般格式為 for ( e1;e2;e3) ; do 命令表;done或者 for (e1;e2;e3) do 命令表 donebreak命令和continue命令break命令使程序從循環(huán)體中退出來。其語法格式是: break n continue命令跳過循環(huán)體中在它之后的語句,回到本層循環(huán)的開頭,進行下一次循環(huán)。其語法格式是:continue n exit命令exit命令的功能是立即退出正在執(zhí)行的shell腳本,并設(shè)定退出值。其語法格式是:exit n 八,函數(shù)在shell腳本中可以定義并使用函數(shù)。其定義格式為:function函數(shù)名( ) 命令表 函數(shù)應先定義,后使用。調(diào)用函數(shù)時,直接利用函數(shù)名,如showfile,不必帶圓括號。shell腳本與函數(shù)間的參數(shù)傳遞可利用位置參數(shù)和變量直接傳遞,通常,函數(shù)中的最后一個命令執(zhí)行之后,就退出被調(diào)函數(shù)。也可利用return命令立即退出函數(shù),其語法格式是:return n 個人總結(jié):通過這學期的linux學習,我對linux操作系統(tǒng)有了基本的認識。最開始我對這門課一點也不了解,覺得它應用領(lǐng)域廣泛而且復雜,自己再怎么努力也學不好這門課,許多代碼也不好記的那樣感覺。但通過我們?nèi)握n老師的認

溫馨提示

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

評論

0/150

提交評論