




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第五章 shell編程Linux shell 是一個(gè)命令解釋器,用來接受并執(zhí)行用戶命令;shell環(huán)繞在Linux內(nèi)核的外層,它是Linux操作系統(tǒng)和用戶之間的接口; Linux下最常用的shell bash。bash是大多數(shù)Linux發(fā)行套件的缺省shell 。在命令行輸入命令時(shí),每次輸入一個(gè)命令,立即可得到系統(tǒng)的響應(yīng)。但如果經(jīng)常要依次執(zhí)行一組命令,可利用shell程序來實(shí)現(xiàn) Shell程序是放在一個(gè)文件中的一系列的Linux命令執(zhí)行shell程序時(shí),由Linux逐條解釋和執(zhí)行程序中的每個(gè)命令一、shell程序文件shell程序文件是一個(gè)特殊的文本文件,其內(nèi)容包含:一系列可在shell提示符
2、下執(zhí)行的命令shell提供的專用的命令和控制語句shell程序文件的運(yùn)行過程是將shell程序文件中的命令依次執(zhí)行二、shell程序文件的建立shell程序文件可用任何一個(gè)文件編輯器(如vi)來建立用vi編輯器建立shell程序文件shex1的步驟: 鍵入命令“vi shex1”,啟動vi; 按命令“i”,進(jìn)入vi的插入狀態(tài); 輸入程序文件內(nèi)容; 按鍵,再鍵入“;”,切換到vi的命令狀態(tài); 在“:”后鍵入命令“wq”,即保存文件內(nèi)容后,退出vi。例:建立shell程序shex1,其內(nèi)容為: clear cal 1 09 cal 2 09 cal 3 09功能:先清屏,再顯示09年的1、2、3月
3、份的月歷三、shell程序運(yùn)行的2種方法運(yùn)行shell程序有兩種方法:在shell環(huán)境下,將shell 程序文件作為子shell程序被調(diào)用執(zhí)行 sh 例:sh shex1將shell程序文件視作命令來執(zhí)行(因此,shell程序文件可以看作是將各種命令組合在一起而形成的新命令),此時(shí)必須賦予shell程序文件執(zhí)行權(quán)限$ 例: $ chmod a+x shex1 給程序文件賦予可執(zhí)行屬性 $ /home/user1/shex1 以完整的路徑名鍵入程序名 帶參數(shù)的運(yùn)行命令運(yùn)行命令中有參數(shù)和無參數(shù)的2種情況,分別稱為帶參數(shù)的運(yùn)行命令和不帶參數(shù)的運(yùn)行命令在shell程序中可使用的形參規(guī)定為只能是:$0、
4、$1、$2、$9,共10個(gè) 當(dāng)程序運(yùn)行時(shí),命令行中的、依次賦值給$1、$2、,通常稱運(yùn)行命令中所帶的參數(shù)為實(shí)參$0是一個(gè)特殊的形參,其值規(guī)定為當(dāng)前運(yùn)行的shell程序命令本身例:建立shell程序shex3,其內(nèi)容為: clear cal $1 09 cal $2 09 cal $3 09執(zhí)行時(shí)輸入命令的形式為:$ sh shex3 1 2 3則執(zhí)行結(jié)果如p.143圖5-3所示第一個(gè)實(shí)參值是1,運(yùn)行時(shí)代換給程序中的形參$1,第二個(gè)實(shí)參值是2,運(yùn)行時(shí)代換給程序中的形參$2,第三個(gè)實(shí)參值是3,運(yùn)行時(shí)代換給程序中的形參$3,命令shift作用由于形參個(gè)數(shù)有限(10個(gè)),當(dāng)參數(shù)較多時(shí),可通過命令shi
5、ft來移動形參與實(shí)參的對應(yīng)關(guān)系執(zhí)行一次 shift 后,$1、$2、變?yōu)橐来闻c 對應(yīng)再執(zhí)行一次shift后,$1、$2、變?yōu)橐来闻c 對應(yīng),依此類推例:建立shell程序shex2,其內(nèi)容為: echo $0 $1 $2 shift echo $0 $1 $2運(yùn)行時(shí)情況如下:# /root/shex2 yesterday today tomorrow/root/shex2 yesterday today/root/shex2 today tomorrow#可見: $0始終是當(dāng)前運(yùn)行的shell程序命令本身,即/root/shex3 四、shell變量shell程序中允許使用3種類型的變量:系統(tǒng)變
6、量也稱環(huán)境變量,它可將值傳給shell運(yùn)行的其他命令或shell程序使用,也就是說系統(tǒng)變量是全局變量內(nèi)部變量由系統(tǒng)提供,與環(huán)境變量不同,用戶不能修改用戶變量由用戶定義,是在當(dāng)前shell中使用的局部變量,不能被在shell下運(yùn)行的其他命令或其它shell程序使用通過shell提供的命令set,可以查看當(dāng)前shell下定義的一系列變量及其值變量賦值格式: =功能:將等號右邊的字符串賦給等號左邊的變量變量名可以由任意字符、數(shù)字或下劃線組成,但數(shù)字不能作為變量名的首字符。變量名不能包含空格、驚嘆號字符變量名不能使用shell中保留的關(guān)鍵詞等符號變量名不能多于一個(gè)詞,因?yàn)閟hell使用空格分析命令、定
7、界命令名和參數(shù),所以若字符串中含有空格,則在字符串上加上引號例:name1=MARY name2=X Window引用變量格式:$功能:引用變量的值。只要在變量名前加上“$”字符,變量名即將變量值取代例: # name2=$name1 將變量name1值賦予變量name2 # echo $name1 在屏幕上顯示變量name1的值釋放變量格式:unset 功能:釋放一個(gè)現(xiàn)存的shell變量。要慎用unset *,因?yàn)樗鼘h除全部shell變量例:# unset name1五、 shell程序中的控制流條件判斷命令test條件表達(dá)式是控制程序流程的關(guān)鍵,shell提供的test命令適用于條件控制
8、流和循環(huán)控制流 格式:test 功能:返回表達(dá)式成立與否的狀態(tài)值, 如果表達(dá)式成立,則test返回狀態(tài)值0, 反之,test返回狀態(tài)值非0值。(常用的表達(dá)形式見參考書P41)例:判斷文件/etc目錄下文件profile是否存在 test -e /etc/profile當(dāng)運(yùn)行shell程序shex時(shí),判斷是否帶參數(shù) test -z $1(-z 如字符串長度為0,返回真值)判斷變量value是否大于等于1并小于3 test $value ge 1 -a $value -lt 3( -a 與操作 -eq 等于返回真 -ge 大于或等于返回真)條件控制流 if-then-else 結(jié)構(gòu) if then
9、 else fi 通常采用“ test ”,當(dāng)條件成立,則返回0;條件不成立,則返回一個(gè)非0值 注意:其中if和fi必須配對出現(xiàn) if-then-fi結(jié)構(gòu) if then fi(實(shí)例1:p43):如果/etc目錄中的文件profile存在,則將其復(fù)制到/home中,并分屏顯示/home下的profile內(nèi)容;否則在屏幕上顯示信息“pro not exist!”if test -e /etc/profile then cp /etc/profile /home cat /etc/pro else echo “profile is not exist!”fi實(shí)例3:P44建立程序文件shp3,存放
10、在當(dāng)前目錄下。如果shp3運(yùn)行時(shí)未帶參數(shù),則在屏幕上顯示信息“Parameter is lost!” ,并結(jié)束程序運(yùn)行;如果shp3運(yùn)行時(shí)帶一個(gè)參數(shù),則判斷參數(shù)所指定的文件是否存在,如果存在則復(fù)制該文件到/home;否則先在屏幕上顯示信息“ found!”,然后顯示程序本身。判:帶參數(shù)否? 顯示不帶參數(shù) 判:參數(shù)指定文件存在否? 復(fù)制該文件到/home 顯示文件不存在 顯示程序本身 結(jié)束程序nnnyyif test -z $1 -z判$1存在否 then echo Parameter is lost! 如帶一參數(shù) else if test -e $1 則$1肯定在 then cp $1 /ho
11、me else echo File not found! cat $0 $0指程序本身 fifi (實(shí)例6:p48):編寫shell程序shp6,存放在當(dāng)前目錄下。運(yùn)行shp6時(shí)帶一個(gè)正整數(shù)參數(shù),將數(shù)值存入變量value;如果該參數(shù)大于等于1但小于3,則在屏幕上顯示“value is less than 3 and not less than 1”;如果該參數(shù)大于等于3,則在屏幕上顯示“value is not less than 3”;最后以“value=xx”的形式顯示變量value的值。value=$1if test $value -ge 1 -a $value -lt 3 then e
12、cho value is less than 3 and not less than 1fiif test $value -ge 3 then echo value is not less than 3fiecho value=$value(實(shí)例10:p51): 編1個(gè)shell程序shp10,當(dāng)以命令“shp10 xx yy”執(zhí)行時(shí),(其中xx為年份參數(shù),yy為季度參數(shù)),能自動清屏,并顯示指定年份指定季度中的3個(gè)月的月歷。cleark=$2if test $k -eq 1 then cal 1 $1 cal 2 $1 cal 3 $1fiif test $k -eq 2 then cal
13、4 $1 cal 5 $1 cal 6 $1fiif test $k -eq 3 then cal 7 $1 cal 8 $1 cal 9 $1fiif test $k -eq 4 then cal 10 $1 cal 11 $1 cal 12 $1fi case結(jié)構(gòu)case in字符串1) ;字符串n) ; *) ;esac說明:其中,字符串中可含通配符。如果能同時(shí)匹配多個(gè)字符串,則只能執(zhí)行第一個(gè)匹配字符串后的。循環(huán)控制流 for-in結(jié)構(gòu) for in do done 其中,中的值與值之間用空格分隔。 (實(shí)例2:p44):用for命令實(shí)現(xiàn),在當(dāng)前目錄下創(chuàng)建名為user0、user1、use
14、r9十個(gè)子目錄,用長格式顯示這10個(gè)目錄的目錄信息,然后用for命令刪去這10個(gè)目錄后,再用長格式顯示這10個(gè)目錄的目錄信息。 for i in 0 1 2 3 4 5 6 7 8 9 do mkdir user$i done ls -dl user?|more for i in 0 1 2 3 4 5 6 7 8 9 do rm -rf user$i done ls -dl user?|more例:(1)清屏(2)當(dāng)程序運(yùn)行時(shí),屏幕顯示如下形式信息:*This is a shell program *(3)檢查/home目錄下,是否存在由參數(shù)1指定的文件,若不存在,則屏幕顯示信息“File
15、not found!”;若存在,則將參數(shù)1指定的文件改名為由參數(shù)2指定的文件名,然后用for命令對改名后的文件顯示其長格式的目錄信息和文件內(nèi)容 clearecho “*”echo “*This is a shell program *”echo “ *”if test -n $1 -a -n $2 then if test $1!=$2 then if test -e $1 then mv $1 $2 for cn in “l(fā)s -l” “cat” do $cn $2 echo “” done fi else echo File not found! fifi while 結(jié)構(gòu) while d
16、o done說明:當(dāng)返回0時(shí),則執(zhí)行一輪由do和done括起來的循環(huán)體中的,直到返回一個(gè)非0值時(shí),則不再執(zhí)行循環(huán)體中的命令,執(zhí)行done后面的命令 until 結(jié)構(gòu) until do done 執(zhí)行過程說明:與while 結(jié)構(gòu)相反,當(dāng)返回非0時(shí),執(zhí)行循環(huán)體中的命令,直到返回一個(gè)0值時(shí),繼續(xù)執(zhí)行done后面的命令。 第六章 Linux環(huán)境下的C程序開發(fā)Linux環(huán)境下c源程序可用vi等文本編輯器編寫c程序是以.c作為類型名的文本文件Linux下c的編譯器gccLinux帶有g(shù)cc,它是c程序的編譯器命令格式:gcc options -o 定義輸出的執(zhí)行文件名當(dāng)不用任何選項(xiàng)編譯程序時(shí), gcc會產(chǎn)
17、生名為a.out的可執(zhí)行文件。以下命令將產(chǎn)生一個(gè)叫a.out的文件:gcc star.c 可用-o選項(xiàng)指定一個(gè)可執(zhí)行文件名,它將代替a.out -g 產(chǎn)生用于調(diào)試的符號表,以使程序可用gdb調(diào)試 例:現(xiàn)已有c的源程序star.c,對它進(jìn)行編譯,要求產(chǎn)生的可執(zhí)行程序名為star,并可用gdb調(diào)試 gcc -g star.c -o starLinux下c執(zhí)行程序的運(yùn)行當(dāng)c的可執(zhí)行程序產(chǎn)生后,運(yùn)行的方法是在shell提示符下,鍵入可執(zhí)行程序的絕對路徑和可執(zhí)行程序名例:運(yùn)行可執(zhí)行程序star,它的位置在/root下 # /root/star注意:如果現(xiàn)在當(dāng)前目錄是/root,由以下形式發(fā)命令,則肯定引
18、發(fā)錯(cuò)誤,因?yàn)闆]有鍵入可執(zhí)行程序的絕對路徑和可執(zhí)行程序名: # starLinux下c的調(diào)試工具gdbgdb用于程序調(diào)試 命令格式:gdb 則啟動gdb,并運(yùn)行指定的目標(biāo)文件,并給出gdb的運(yùn)行環(huán)境,gdb的提示符為(gdb),在此提示符下,可使用gdb命令進(jìn)行調(diào)試l 行號1,行號2 顯示指定行號范圍內(nèi)的源代碼r 執(zhí)行當(dāng)前被調(diào)試的程序b 行號 指定行號處設(shè)置斷點(diǎn)p 變量名 顯示指定變量內(nèi)容c 在斷點(diǎn)處繼續(xù)往下運(yùn)行程序d 斷點(diǎn)號刪除指定斷點(diǎn)號的斷點(diǎn)info break 列出所有的斷點(diǎn)q 退出gdb調(diào)試環(huán)境main()函數(shù)的參數(shù)傳遞main(int argc,char *argv)若可執(zhí)行程序名為t
19、est,執(zhí)行時(shí)帶有2個(gè)參數(shù),格式如下:# ./test shanghai sspu地址1地址2地址3argv0argv1argv2testshansspuargc=3argv是什么?*argv是什么?argv+是什么?*(argv+)是什么?*(+argv)是什么?第七章 X-Window的基本使用X Window系統(tǒng)是在1984年由美國麻省理工學(xué)院(MIT)開發(fā)的一個(gè)分布式的圖形工作環(huán)境,X Window系統(tǒng)現(xiàn)已在大多數(shù)UNIX系統(tǒng)、Linux以及許多計(jì)算機(jī)系統(tǒng)上實(shí)現(xiàn)X Window系統(tǒng)是具有設(shè)備獨(dú)立性的用戶圖形操作界面X Window系統(tǒng)的體系結(jié)構(gòu)是建立在客戶-服務(wù)器(Client-Ser
20、ver)模型基礎(chǔ)上的,X Window系統(tǒng)的應(yīng)用程序稱為客戶,對所有客戶程序提供服務(wù)的程序稱為服務(wù)器X Window系統(tǒng)幾乎每幾年就有一個(gè)新的版本,稱為發(fā)行版X Window的啟動在Linux中啟動X Window有兩種方法直接以圖形方式登錄Linux,也即在登錄Linux后自動進(jìn)入X Window;但退出X window即為退出Linux在Linux的文本方式,即shell提示符下輸入啟動X Window的命令: # startx 退出X window就返回到shell提示符狀態(tài)下 X Window啟動后,屏幕上將出現(xiàn)一個(gè)與Windows 95的屏幕非常類似的畫面 X Window的退出退出
21、X Window的常用方法有如下2種:按鍵+退格鍵菜單命令“Start/Exit Fvwm/Yes,Really Quit” 可按“退出X”按鈕第八章 Linux的系統(tǒng)管理一、數(shù)據(jù)備份與壓縮二、用戶與用戶組管理一、數(shù)據(jù)備份與壓縮為了保存系統(tǒng)中不斷增長的數(shù)據(jù),為了防止數(shù)據(jù)的丟失與破壞,必須把硬盤上的數(shù)據(jù)復(fù)制到其它存儲設(shè)備上 把這種復(fù)制操作稱為數(shù)據(jù)備份,同時(shí)在習(xí)慣上把得到的第二套數(shù)據(jù)也稱為備份數(shù)據(jù)或備份 備份的存儲介質(zhì)可以是軟盤、另一臺硬盤或可寫光盤、磁帶等 Linux專用的備份工具 Linux提供的常用備份命令有tar、cpio等 tar能夠生成稱為tar文件的壓縮文件,也能夠?qū)⑺鈮嚎s。tar
22、是Linux中最常用的備份工具,能夠正確地備份到任何介質(zhì)上,例如,磁帶、磁盤等 tar的使用格式: tar options2 功能:對由 指定的文件進(jìn)行打包,或恢復(fù)還原到由指定的打包文件或備份設(shè)備上 為指定的打包備份文件或備份設(shè)備; 指定需要加入打包文件的文件或指定欲從打包文件中恢復(fù)還原的文件;options1必須包含:A、c、d、r、t、u、x中的一個(gè)的必選選項(xiàng) ,這幾個(gè)選項(xiàng)決定了tar究竟要做什么 Options2:可選選項(xiàng) tar的必選選項(xiàng) -A:向打包備份文件中追加另一個(gè)打包文件。-c:創(chuàng)建一個(gè)新的打包備份文件。-d:將一個(gè)打包備份文件與文件系統(tǒng)上的文件作比較。-delete:從打包文
23、件中刪除文件。-r:向打包備份文件的末尾追加一個(gè)文件。-t:列出打包備份文件中所含的文件清單。-u:僅追加比打包備份文件中的文件更新的文件。-x:從打包備份文件中恢復(fù)還原文件 tar的可選選項(xiàng)-f FILE:使用文件FILE或設(shè)備文件FILE來打包歸檔文件。-M:生成/列出/恢復(fù)還原多卷的打包備份文件。-O:將文件恢復(fù)還原到標(biāo)準(zhǔn)輸出。-P:不要除去文件名中的 /。-remove-files:在將文件加入到打包備份文件之后,就刪除它們。-same-owner:恢復(fù)還原打包文件時(shí),恢復(fù)文件的原文件主 說明:tar命令后使用的可選項(xiàng)可以省略“-”,但要注意先后次序 tar的使用舉例要求將目錄 ./book打包到備份文件book.tar,并存放在fd0盤的根目錄下 $ tar cf /mnt/floppy/book.tar ./book 要求將/usr/src目錄下的所有內(nèi)容多卷打包備份到fd0盤上 $ tar cfM /dev/fd0 /usr/src 當(dāng)?shù)谝粡埍P上的數(shù)據(jù)裝滿后,會提示插入第二張盤,按回車鍵后繼續(xù),直至所有數(shù)據(jù)備份結(jié)束 數(shù)據(jù)壓縮與解壓 數(shù)據(jù)壓縮:用某種緊湊的格式來存儲
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025四月月度系列暖場圈層(春光夏始 萬物生)主題活動策劃方案
- 品牌定位與傳播策略實(shí)施要點(diǎn)
- 三農(nóng)扶貧工作手冊 ??(符合要求)
- 建設(shè)工程施工合同書
- 2025年度安全警示標(biāo)志銷售代理合同樣本
- 安徽教育云課堂平臺
- 能源安全戰(zhàn)略研究報(bào)告
- 中國廣告行業(yè)發(fā)展現(xiàn)狀
- 企業(yè)員工培訓(xùn)制度
- 股份制改革相關(guān)文書指南
- 藥品使用風(fēng)險(xiǎn)監(jiān)測與預(yù)警制度
- 《軟件實(shí)施方法論》課件
- 民宿整體規(guī)劃
- 2024年廣西區(qū)公務(wù)員錄用考試《行測》真題卷及答案解析
- 電工(初級)考試試卷及答案
- 《建設(shè)工程施工合同(示范文本)》(GF-2017-0201)
- 國家電網(wǎng)公司招聘高校畢業(yè)生應(yīng)聘登記表
- 中國結(jié)直腸癌診療規(guī)范(2023版)解讀
- 2024年陜西省中考數(shù)學(xué)試題含答案
- 2024年國網(wǎng)河南省電力公司招聘歷年高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 2024年清理化糞池協(xié)議書
評論
0/150
提交評論