




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、嵌入式操作系統(tǒng)實驗指導書 苗暹 黃連麗 實用優(yōu)質(zhì)文檔目 錄實驗一 Linux命令使用實驗二 vi編輯器的使用實驗三 shell編程實驗(一)實驗四 shell編程實驗(二)實驗五 Linux開發(fā)工具的使用實驗六 Linux編程實驗(一)實驗七 Linux編程實驗(二)實驗八 Linux的系統(tǒng)及網(wǎng)絡管理實驗實驗一 Linux命令使用班級: 姓名: 學號: 上機時間: 任課教師: 實驗教師: 實驗成績: 一、實驗目的1 掌握Linux的一般命令格式。2 掌握有關(guān)文件和目錄操作的常用命令。3 掌握有關(guān)進程操作的常用命令。4 熟練使用man命令。二、實驗注意事項實驗環(huán)境與系統(tǒng)是共用設施,請不要在系統(tǒng)內(nèi)
2、做對系統(tǒng)或?qū)ζ渌脩舨话踩氖虑?。要求每個同學登錄后系統(tǒng)后,要在主目錄(/home/student)下創(chuàng)建一個屬于自己的子目錄(以自己(拼音)名字或?qū)W號)。以后所有工作都要在自己的目錄內(nèi)進行。建議以后的實驗都在同臺計算機上做,這樣可以保持連續(xù)性。三、實驗內(nèi)容及步驟:1登錄進入系統(tǒng)。雙擊 VMware Workstation 進入虛擬機,再 點擊 u 登陸Ubuntu,輸入用戶名: ,輸入密碼: ,進入Ubuntu圖形桌面環(huán)境。2使用簡單命令:date,cal,who,echo,clear等,了解Linux命令格式。要啟動一個終端,可以選擇 應用程序/附件/終端 。在終端提示符下輸入:date在
3、屏幕上顯示系統(tǒng)的日期和時間。 顯示 2014年10月06日 星期一 19:05:06 CST 。在終端提示符下輸入:who 顯示: mxtty72014-10-06 19:02(:0)mxpts/02014-10-06 19:04(:0.0)在終端提示符下輸入:who am I 顯示: mxpts/02014-10-06 19:04(:0.0) 。在終端下顯示Hello! 命令: echo Hello! 。在終端提示符下輸入:clear 顯示: (清屏作用) 。在終端提示符下輸入:cal 顯示: 當前日歷(10月份日歷)。3瀏覽文件系統(tǒng):(1)運行pwd 命令,確定當前工作目錄,記錄之: /h
4、ome/mx 。(2)運行l(wèi)s命令,查看當前目錄下有哪些文件和子目錄,簡略記錄。 (3)運行l(wèi)s -l命令,理解文件各字段的含義,找一個文件標注。 -rwxr-xr-x 1 mx mx 711 2008-11-04 11:41 driver1.c drwxr-xr-x 2 mx mx 4096 2013-12-09 23:00 Lsy3 文件類型與權(quán)限 鏈接數(shù) 文件主 文件組 文件大小 建立或修改時間 文件名文件類型:-普通文件,d目錄文件,b塊設備文件,c字符設備文件,l符號鏈接文件。文件存取權(quán)限:r讀,w寫,x執(zhí)行,- 沒有設置權(quán)限。(4)運行l(wèi)s -ai命令,理解各字段的含義。比如:18
5、272 conversion 字段第一項是18272是I結(jié)點號,第二項是文件名或目錄名。-a顯示指定目錄下所有子目錄和文件,包括以“.”開頭的隱藏文件(如.cache) -i 在輸出的第一列顯示文件的I節(jié)點號。(5)使用cd /命令,將當前目錄改變?yōu)楦夸洠?)。運行l(wèi)s -l命令,結(jié)合書中給出的Linux樹狀目錄結(jié)構(gòu),了解各目錄的作用。命令: cd / 回到: 根目錄 命令: pwd 顯示: / 命令: ls -l 顯示:(簡略記之) bin dev media proc boot home mnt root usr sys 等等。 (6)直接使用cd,回到了那里?用pwd驗證之。 命令:
6、cd 回到: 主目錄 命令: pwd 顯示: /home/mx (7)用 mkdir建立一個子目錄subdir。命令: mkdir subdir (8)將當前目錄改到subdir。 命令: cd subdir 4文件操作:(1)驗證當前目錄在subdir。 命令: pwd 顯示: /home/mx/subdir (2)運行date>file1,然后運行cat file1,看到什么信息? 命令: date>file1 ,命令: cat file1 顯示:2014年10月06日 星期一 20:15:04 CST “ >將命令(或可執(zhí)行程序的)輸出重新定向到指定文件,這樣該命令的輸
7、出就不在屏幕上顯示,而是寫入到文件中?!笔鞘裁捶?? 輸出重定向符 解釋“ date>file1將date命令的輸出重定向到file1中。 ”的含義: 將當前時間保存至file1中,若file1不存在,則創(chuàng)建之后保存 (3)先cd .回到上級目錄,再運行cat subdir,會有什么結(jié)果?為什么?結(jié)果: cat: subdir: Is a directory 為什么? subdir是個目錄,cat只能查看文件,無法查看目錄信息 。 (4)分別用cat和more查看文件內(nèi)容(提示:/etc/manpath.config)。比較cat和more這兩個命令的異同。這兩個命令都是顯示文件內(nèi)容,c
8、at直接全屏顯示,more分屏顯示,按space鍵繼續(xù)下一屏。(5)利用man 命令顯示date命令的使用說明。 命令: man date 顯示:(簡略記之) 按space鍵繼續(xù)下一屏顯示 。 如何從man命令狀態(tài)退回到終端窗口? 按q鍵退回到終端 。(6)運行man date>>file1,再運行cat file1 ,看到什么? 命令: man date>>輸出附加定向符:將命令(或可執(zhí)行程序的)輸出附加到指定文件的后面,該文件原來的內(nèi)容不被破壞。file1 命令: cat file1 顯示:首先顯示當前日期,之后顯示date命令的使用幫助。 man date>
9、>file1含義: 將date命令的使用幫助附加在file1文件之后 。(7)利用ls -l file1,了解鏈接計數(shù)是多少?運行 ln file1 ./fa,再運行l(wèi)s -l file1,看鏈接計數(shù)有無變化?用cat命令顯示fa文件內(nèi)容。(注意:做完后要刪除所做硬鏈接,恢復原樣以便后面同學再做此實驗)命令:ls -l file1 顯示的鏈接計數(shù): 1 命令:ln file1 ./fa將file1文件鏈接到上級目錄下的文件fa(硬鏈接)。 命令:ls -l file1 顯示的鏈接計數(shù): 2 ,有無變化? 有變化 。命令:cat ./fa 顯示: 2014年10月06日 星期一 20:15
10、:04 CST 。修改file1粉色部分是新增加內(nèi)容。修改了file1文件使得鏈接文件一并修改。文件:cal>>file1, 顯示file1內(nèi)容:cat file1, 結(jié)果:在日期的后面附加了本月日歷。再查看鏈接文件fa內(nèi)容:cat ./fa,顯示:2014年10月06日 星期一 20:15:04 CST 十月 2014一 二 三 四 五 六 日 1 2 3 4 5 6 7 8 9 10 11 12省略刪除硬鏈接: rm ./fa 刪除上級目錄下的鏈接文件fa。(8)使用head和tail命令分別顯示file1文件的前十行和后十行的內(nèi)容。 命令: head file1 命令: ta
11、il file1 (默認是10行) 命令: head -10 file1 或者 head -n 10 file1 命令: tail -10 file1 (9)運行cp file1 file2,然后ls -l,看到什么? 命令:cp file1 file2 ls -l 看到了:file1 file2 (屏幕上除了file1文件外,多了一個file2文件) 解釋顯示結(jié)果:cp命令將file1內(nèi)容復制到file2中 。 運行mv file2 file3, 然后ls -l,看到什么? 命令:mv file2 file3 ls l 看到了:file1 file3 (file2文件消失,多了一個file3
12、文件) 解釋顯示結(jié)果:將文件file2改名為file3 運行cat f*,結(jié)果怎樣? 命令:cat f* file1、flie3內(nèi)容顯示在屏幕上 解釋顯示結(jié)果: *號是通配符,可匹配到所有以f 開頭的文件,所以上述命令:顯示所有以f開頭文件的內(nèi)容 (10)運行rm file3,然后ls -l,看到什么? 命令:rm file3 命令:ls -l 看到:file3文件消失 解釋顯示結(jié)果: rm命令將file3刪除 (11)在/etc/passwd文件中查找適合你的注冊名的行。 命令: grep -F mx /etc/passwd 顯示:mx:x:1000:1000:mx,:/home/mx:/b
13、in/bash 待解釋?(12)運行l(wèi)s -l理解各文件的權(quán)限是什么?(選擇兩個不同文件標注)-rwxr-xr-x 1 mx mx 9159 2013-11-26 02:14 tst.out(13)用兩種方式改變file1的權(quán)限(實例)。以符號模式改變權(quán)限: chmod a+w tst.out (所有用戶都有寫權(quán)限) 再用ls -l tst.out 顯示:-rwxrwxrwx 1 mx mx 9159 2013-11-26 02:14 tst.out以符號模式改變權(quán)限:chmod u=rwx, g=rx, o=r file1 (用戶有讀寫執(zhí)行權(quán)限,組有讀執(zhí)行權(quán)限,其他有讀權(quán)限)再用ls -l
14、tst.out 顯示:rwxr-xr- 1 mx mx 9159 2013-11-26 02:14 tst.out以絕對方式改變權(quán)限: chmod 0664 file1 (110,110,100文件主和同組用戶具有讀、寫權(quán)限,其它用戶只可讀)(14)統(tǒng)計file1文件的行數(shù)、字數(shù)、字節(jié)數(shù)。 命令: wc file1 顯示: 191 733 5732 file1 解釋各參數(shù)的含義: 行數(shù) 字數(shù) 字節(jié)數(shù) 文件名 (15)運行命令man ls |more “man ls |more”的含義: 分屏顯示ls命令幫助信息 運行cat -20|tee file5,結(jié)果如何? 顯示結(jié)果: 顯示file1前2
15、0行內(nèi)容 “cat -20|teetee指令會從標準輸入設備讀取數(shù)據(jù),將其內(nèi)容輸出到標準輸出設備,同時保存至文件。 file5”的含義: 將file1中前20行保存至file5中,并顯示在屏幕上 。 運行cat ,結(jié)果如何? 顯示結(jié)果: 20 61 544 “cat ”的含義: 統(tǒng)計file5文件的行數(shù),字數(shù),字節(jié)數(shù)。 (16)運行cd,回到主目錄,運行mkdir mydir,建立mydir 子目錄,運行l(wèi)s -l查看目錄,再運行rmdir mydir,看到什么結(jié)果?如果要刪除mydir目錄,該如何操作? 運行命令:cd <回車鍵> 回到: 主目錄/homw/mx 運行命令:mkd
16、ir mydir 建立: mydir子目錄 運行命令: ls -l mydir 查看所建目錄內(nèi)容,顯示:total 0 運行命令:cp /etc/profile /home/student/mydir 解釋該命令: 將etc下的profile 拷貝至mydir子目錄中 查看mydir內(nèi)容命令: ls mydir 顯示:profile 運行命令: rmdir mydir 看到什么結(jié)果: rmdir:failed to remove mydir:Directory not empty 如何處理? 先清空mydir子目錄內(nèi)容,再刪除該子目錄。 rm mydir/*, rmdir mydir, ls
17、mydir。 注意:在這個實驗中沒有特別的難點,但是要注意的是,rm命令刪除文件的時候,不給任何提示,因此一定要謹慎,不然很容易刪除不應該刪除的文件。四、實驗報告要求1按實驗步驟寫出實驗命令及運行結(jié)果,回答所提問題。2總結(jié)上機過程中所遇到的問題和解決方法及感想。實驗二 vi編輯器的使用 班級: 姓名: 學號: 上機時間: 任課教師: 實驗教師: 實驗成績: 一、實驗目的學習使用vi編輯器建立、編輯、顯示以及加工處理文本文件。二、實驗注意事項實驗室內(nèi)的實驗環(huán)境與系統(tǒng)是共用設施,請不要在系統(tǒng)內(nèi)做對系統(tǒng)或?qū)ζ渌脩舨话踩氖虑?。要求每個同學登錄后系統(tǒng)后,要在自己的家目錄下創(chuàng)建一個屬于自己的子目錄(以
18、自己(拼音)名字或?qū)W號)。以后所有工作都要在自己的目錄內(nèi)進行。建議以后的實驗都在同臺計算機上做,這樣可以保持連續(xù)性。三、實驗內(nèi)容及步驟1進入和退出vi(1)進入vi,創(chuàng)建一個file.c文件。 命令: vi file.c 。(2)進入插入方式,輸入如下C程序,將該文件存盤,回到shell狀態(tài)下。 #include<stdio.h>int main()float a,b,x; /int a,b,x;printf("Please input a,b:");scanf("%5.2f,%5.2f",a,b); / scanf("%d,%d&
19、quot;,&a,&b);x=a%b;printf("x=%5.2fn",x); /printf("x=%dn",x);return 0; 進入插入方式命令: i ,文件存盤回到shell狀態(tài)命令: :wq 。(3)運行g(shù)cc file.c -o myfile,編譯該文件,會發(fā)現(xiàn)錯誤提示,理解其含義。 編譯命令:gcc file.c -o myfile <回車> 警告: conversion type character . in format 。 錯誤: oprands to binary %(have float and
20、float) 。(4)重新進入vi,對該文件進行修改,然后存盤,退出vi。重新編譯該文件,如果編譯通過,運行該程序。運行程序命令:./myfile注意:在錯誤程序行旁邊注釋正確程序。(5)運行man date>file10,然后用vi打開file10文件,使用x,dd命令刪除某些文本行,使用u命令復原此前的情況,使用c,r,s等命令修改文本內(nèi)容,使用檢索命令進行給定模式的檢索。 刪除光標所在字符: x 。從光標位置(包括光標位)向右刪5個字符命令: 5x或者d5l 。 刪除光標前面字符: X 。從光標位置(不包括光標位)向左刪5個字符命令:5X或者d5h 。刪除光標所在的整行: dd 。
21、從光標位置(包括光標位)刪至到行尾命令: D 或者 d$ 。從光標位置(不包含光標位)刪至到行首命令: d0 。 復原命令:u(取消剛才插入或刪除命令)。U(直接把當前行恢復成它被編輯之前的狀態(tài),不管做了多少次修改)。 修改命令舉例:(修改文本對象是用新輸入的文本代替老的文本,等價于用刪除命令刪除老文本,然后用i命令輸入新文本,再按ESC回到命令狀態(tài)) c: 如:c5GHello!+ESC 刪除光標所在行到第5行文本,然后輸入Hello!,再按ESC C: 如:CWelcome!+ESC 修改從光標位置開始到該行尾(用$符標記)文本,用welcome替代 cc: 如:ccHow nice!+E
22、SC 刪除當前行,用How nice!替代 取代命令舉例: r: 如:r9用9取代光標所在字符,5rA從光標位開始向右有5個字符被A取代,按ESC R: 用隨后輸入的文本取代光標位及其后面的字符,每輸入一個取代一個,最后按ESC 替換命令舉例: s: 用隨后輸入的正文替換光標所在的字符(處于插入狀態(tài),光標后面字符仍保存),按ESC S: 用隨后輸入的正文替換當前整行,若3S,則表示有3行(包含當前行)將被新文本替代 搜索命令: 向前字符串檢索舉例:/date+Enter(/模式+Enter鍵) 解釋:從當前行開始向前查找date字符串 /current/-+Enter(/模式/位移+Enter
23、鍵) 解釋:從當前行開始向前查找date字符串,光標停在首先找到行的前一行的行首。/current/-數(shù)字+Enter(/模式/位移+Enter鍵) 解釋:從當前行開始向前查找date字符串,光標停在(行號=匹配行號-n)的行首。/current/+Enter(/模式/位移+Enter鍵)解釋:從當前行開始向前查找date字符串,光標停在首先找到行的下一行的行首。/current/+數(shù)字+Enter(/模式/位移+Enter鍵)解釋:從當前行開始向前查找date字符串,光標停在(行號=匹配行號+n)的行首。向后字符串檢索舉例:?man+Enter(?模式+Enter鍵) 解釋:從當前行開始向后
24、查找man字符串 ?man?-+Enter (?模式?位移+Enter) 解釋:從當前行開始向后查找man字符串,光標停在首先找到行的前一行的行首 查找字符命令舉例: fg (f字符) 解釋: 在當前行上向前找字符g Fd (F字符) 解釋: 在當前行上向后找字符d 置標記命令:(待添加命令) 全局替換命令舉例: :g/time/ s/TIME/gc 解釋:用TIME替換所有出現(xiàn)的time,并確認替換。 :1,$s/time/TIME/gc 解釋: 從第一行到最后一行的行尾,用TIME替換所有出現(xiàn)的time,并確認替換。 2新建文件(1)請在主目錄(/home/student)下建立一個名為
25、vitest 的目錄; 命令: cd 回車, mkdir vitest (2)進入 vitest 這個目錄當中; 命令: cd vitest (3)將 /etc/manpath.config 拷貝到本目錄下; 命令: cp /etc/manpath.config (4)使用 vi 開啟本目錄下的 manpath.config 這個文件; 命令: vi manpath.config (5)在 vi 中設定一下行號; 設置行號命令: :set nu 。(取消行號命令: :set nonu 。)(6)移動到第67 行,向右移動 26 個字符,請問您看到的是什么目錄? 移動到第67 行的命令: 67G
26、可用Ctrl+G得到當前行的行號。 向右移動 26 個字符的命令:26l or 26+Space鍵 or 26-> 看到: /var/cache/man (7)再向左移動16個字符的命令:16h or 16+Backspace鍵 or 16<- 看到: /usr/share/man (8)回到當前行第一個字符處命令: 0 or 移動到當前行的行尾命令: $ (9)移動到第5行(包含當前行)詞尾命令: 5Ge 。再回到當前行的第一個字符處: 0 。(10)光標向前移至下一個詞的開頭命令: w或W 。(11)光標后退到前一個詞的開頭命令: b或B 。(12)移動到第一行,并且向下搜尋一
27、下 modify 這個字符串,請問他在第幾行? 移動到第一行: 1G , 向下搜尋一下“modify ” /modify+Enter鍵 它在 76 行。(13)接著下來,我要將 50 到 70 行之間的 name 改為 NAME ,并且一個一個挑選是否需要修改,如何下達指令? 命令: :50,70s/name/NAME/gc 或者 :50,70g/man/s/MAN/gc (14)修改完之后,突然反悔了,要全部復原,有哪些方法? u大寫還是小寫? or :q!(不保存退出vi) (15)我要復制51到60行這十行的內(nèi)容,并且貼到最后一行之后; 51G10yyG$p or 51G10yy:$回車
28、p (16)刪除11到30行之間的20行; 11G20dd or 11Gd30G or :11,30d or 11G:.,19d(先到11行,再用ex命令刪除當前行和它后面的19行)(17)到第29行,并且刪除 15 個字符; 29G 再15x 或者 29G 再d15l (18)將這個文件另存成一個 man.test.config 文件; :w man.test.config (19) 請問目前的文件有多少行與多少字符?用什么命令統(tǒng)計? 命令::w 或者回到shell窗口用wc lw manpath.config (20)儲存后離開吧。 :wq! 四、實驗報告要求1按實驗步驟寫出實驗命令及運行
29、結(jié)果,回答所提問題。2總結(jié)上機過程中所遇到的問題和解決方法及感想。資料:復制操作:yy:復制當前整行的內(nèi)容到vi緩沖區(qū)yw:復制當前光標所在位置到單詞尾字符的內(nèi)容到vi緩存區(qū),相當于復制一個單詞y$:復制光標所在位置到行尾內(nèi)容到緩存區(qū)y:復制光標所在位置到行首內(nèi)容到緩存區(qū)#yy:例如:5yy就是復制5行#yw:例如:2yw就是復制兩個單詞如果復制第m行到第n行之間的內(nèi)容,可以在末行模式中輸入m,ny例如:3,5y復制第三行到第五行內(nèi)容到緩存區(qū)。粘貼操作:粘貼的命令式p,即put(放下) p 小寫p代表貼至游標后(下),因為游標是在具體字符的位置上,所以實際是在該字符的后面 P 大寫P代表貼至游
30、標前(上)整行的復制粘貼在游標的上(下)一行,非整行的復制則是粘貼在游標的前(后)。實驗三 shell編程實驗(一)班級: 姓名: 學號: 上機時間: 任課教師: 實驗教師: 實驗成績: 一、實驗目的1了解shell的作用和主要分類。2掌握bash的建立和執(zhí)行方式。3掌握bash的基本語法。4綜合Linux常用命令和vi編輯器的使用,熟練掌握shell腳本編程。二、實驗注意事項實驗室內(nèi)的實驗環(huán)境與系統(tǒng)是共用設施,請不要在系統(tǒng)內(nèi)做對系統(tǒng)或?qū)ζ渌脩舨话踩氖虑?。要求每個同學登錄后系統(tǒng)后,要在自己的家目錄下創(chuàng)建一個屬于自己的子目錄(以自己(拼音)名字或?qū)W號)。以后所有工作都要在自己的目錄內(nèi)進行。建
31、議以后的實驗都在同臺計算機上做,這樣可以保持連續(xù)性。三、實驗內(nèi)容1利用vi 建立一個腳本文件,該文件在用戶輸入年、月之后,自動打印出該年該月的日歷。然后以3種不同方式執(zhí)行該腳本,如有不能執(zhí)行情況,請說明原因。vi mycal(進入vi環(huán)境輸入下列腳本程序) echo “Please input month:”read month #從鍵盤讀入月份給month變量echo “Please input year:”read year #從鍵盤讀入年份給year變量cal $month $yearbash :wq!回車(保存文件并退出vi)執(zhí)行腳本方法:方法一:輸入定向到shell腳本(格式:$ba
32、sh<腳本名)$bash<mycal結(jié)果:不能執(zhí)行腳本。原因:該方法不能帶參數(shù)運行,包括程序中有從鍵盤讀入?yún)?shù)命令。方法二:以腳本名作為bash參數(shù)(格式:$bash 腳本名 參數(shù))$bash mycal 回車顯示:Please input month: 12顯示:Please input year:2013 結(jié)果:十二月 2013一 二 三 四 五 六 日 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31方法三:將shell腳本的權(quán)限設置為可執(zhí)行,然后在提示符下直
33、接執(zhí)行。(用chmod命令)$chmod a+x mycal #把mycal設置為對所有用戶都有“執(zhí)行”權(quán)限。 $PATH=$PATH:. #將腳本所在的目錄添加到命令搜索路徑(PATH)中。$mycal #輸入腳本名直接執(zhí)行該腳本顯示:Please input month: 12顯示:Please input year:2013 結(jié)果:十二月 2013一 二 三 四 五 六 日 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31注:cal 命令顯示公園19999年中任意一年或任
34、意一個月的日歷。如果不帶任何參數(shù),則顯示當前月份的日歷。如果只有一個參數(shù),則該參數(shù)被解釋為年份。當有兩個參數(shù)時,則第一個參數(shù)表示月份,第二個參數(shù)表示年份。兩個參數(shù)之間應留有空格。年份要使用完整形式,如2006,不能寫成06。iftest-commandthencommandTurefiFalse圖3.1 ifthen流程圖2編程提示用戶輸入兩個單詞,并將其讀入,然后比較這兩個單詞,如果兩個單詞相同則顯示“Match”,并顯示“End of program”,如果不同則顯示“End of program”。方法一:vi if1(進入vi環(huán)境輸入下列腳本程序) echo n “word 1:”re
35、ad word1echo n “word 2:” # -n表示顯示完word2后光標不換行read word2if test “$word1” = “$word2” #注意“=”前后應有空格 then echo “Match”fiecho “End of program.” :wq!回車(保存文件并退出vi)方法二:$cat>if1<<EOF #在注釋中給出這樣定義文件并輸入腳本的原因。echo n “word 1:”read word1echo n “word 2:” # -n表示顯示完word2后光標不換行read word2if test “$word1” = “$wo
36、rd2” #注意“=”前后應有空格 then echo “Match”fiecho “End of program.”EOF #結(jié)束輸入,回到shell窗口。注意EOF前面不能有空格, EOF后面必須是回車符。運行腳本程序:將shell腳本的權(quán)限設置為可執(zhí)行,然后在提示符下直接執(zhí)行。(用chmod命令)$chmod a+x if1 #把mycal設置為對所有用戶都有“執(zhí)行”權(quán)限。 $PATH=$PATH:. #將腳本所在的目錄添加到命令搜索路徑(PATH)中。$if1 #輸入腳本名直接執(zhí)行該腳本3修改上述程序,編程提示用戶輸入兩個單詞,并將其讀入,然后比較這兩個單詞,如果兩個單詞相同顯示“Ma
37、tch”,不同則顯示“Not match”,最后顯示“End of program”。<編程提示>請使用ifthenelse控制結(jié)構(gòu)。iftest-commandthencommandTurefiFalse參考程序:$cat>if2 echo -n "word1:"read word1echo -n "word2:"read word2if “$word1" = "$word2" then echo "Match!"else echo "No Match!" fiec
38、ho "End of program!"Ctrl+D #結(jié)束輸入,回到shell窗口。4編程使用case結(jié)構(gòu)創(chuàng)建一個簡單的菜單,屏幕顯示菜單:a. Current date and timeb. User currently logged inc. Name of the working directoryd. Contents of the working directoryEnter a,b,c or d:根據(jù)用戶輸入選項做相應操作。參考程序:$cat>menu1 echo e “nCOMMAND MENUn” #后面使用了轉(zhuǎn)義字符n,所以前面一定使用選項-e。e
39、cho “ a. Current date and time”echo “ b. User currently logged in”echo “ c. Name of the working directory”echo e “ d. Contents of the working directoryn”echo n “Enter a,b,c or d:”read answerechocase “$answer” ina) date;b) who;c) pwd;d) ls;*) echo “There is no selection $answer”;esacechoCtrl+D #結(jié)束輸入,
40、回到shell窗口。$menu1 回車5 修改上題,使用戶可以連續(xù)選擇直到想退出時才退出。參考程序:while true doecho -e "nCOMMAND MENUn"echo "1. Current date and time"echo "2. User currently logged in"echo "3. Name of the working directory"echo "4. Contents of the working directory" echo -e "5
41、. Exitn" echo -n "Enter selection:"read selectechocase "$select" in 1) date; 2) who; 3) pwd; 4) ls; 5) exit; *) echo -e "There is no selection $selectn"esac echodone6. 設計一個程序,從命令行接收數(shù)值參數(shù),并計算這些參數(shù)的和。參考程序:$cat > sy3_6_1x=0 #累加器變量清零for y in $* #變量依次取位置參數(shù)的值,然后執(zhí)行循環(huán)體中的命
42、令表,直至所有位置參數(shù)取完為止。do x=expr $x + $y #計算表達式x+y,并把計算結(jié)果賦給x。(累加器)doneecho "The sum is:$x"Ctrl+D運行方法:studentubuntu:$ bash sy3_6 10 20 30運行文件時所帶的參數(shù)。The sum is:60但是,本程序是有問題的,原因是它沒有判斷輸入數(shù)據(jù)的合法性。下面是一個增加輸入數(shù)據(jù)合法性檢查的程序。x=0for y in $*doz=echo $y | awk '/:digit:*$/ print $0 ' #待研究?if -z $z ; thenecho
43、 -e "Invalid command line parameter: $ya" exit 1fix=expr $x + $y doneecho "The Sum is: $x"四、實驗報告要求1列出調(diào)試通過程序的清單,并加注釋。2. 寫出程序運行步驟及結(jié)果。3總結(jié)上機調(diào)試過程中所遇到的問題和解決方法及感想。實驗四 shell編程實驗(二)班級: 姓名: 學號: 上機時間: 任課教師: 實驗教師: 實驗成績: 一、實驗目的綜合Linux常用命令和vi編輯器的使用,熟練掌握shell腳本編程。二、實驗注意事項實驗室內(nèi)的實驗環(huán)境與系統(tǒng)是共用設施,請不要在系
44、統(tǒng)內(nèi)做對系統(tǒng)或?qū)ζ渌脩舨话踩氖虑椤R竺總€同學登錄后系統(tǒng)后,要在自己的家目錄下創(chuàng)建一個屬于自己的子目錄(以自己(拼音)名字或?qū)W號)。以后所有工作都要在自己的目錄內(nèi)進行。建議以后的實驗都在同臺計算機上做,這樣可以保持連續(xù)性。三、實驗內(nèi)容1. 編寫一個腳本,求斐波那契數(shù)列的前10項及總和。斐波那契數(shù)列指的是這樣一個數(shù)列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, .這個數(shù)列從第三項開始,每一項都等于前兩項之和。參考程序:方法一:(只能求前10項)$cat>fbnq_1num1=1num2=1echo "費波納奇數(shù)列前10項和:"
45、;echo -n "$num1+$num2"sum=2for(i=1;i<=8;i+) #for語句算術(shù)表達式方式:for(e1;e2;e3)do tmp=expr $num1 + $num2 #注意"+ "前后有空格 echo -n "+$tmp" (num1=num2) #let命令替代表示形式:(算術(shù)表達式) (num2=tmp) sum=$(expr $sum + $tmp) #命令替換的另一種形式:$(命令表)doneecho "=$sum" Ctrl+D方法二:(從命令行輸入n值,可求出任意項)$
46、cat>fbnq_2num1=1num2=1count=$1命令行第一個實參對應$1,腳本名對應$0echo "費波納奇數(shù)列前$count項和:"echo -n "$num1+$num2"sum=2for(i=1;i<=count-2;i+)do tmp=expr $num1 + $num2 echo -n "+$tmp" num1=$num2 #不能寫成$num1=$num2,為什么? num2=$tmp sum=expr $sum + $tmpdoneecho "=$sum" Ctrl+D運行方法:
47、$bash fbnq_2腳本名 10第一個實參費波納奇數(shù)列前10項和:1+1+2+3+5+8+13+21+34+55=1432編寫一個腳本,求一個數(shù)的逆序。參考程序:用除商取余法依次得到個位數(shù)、十位數(shù)、百位數(shù),存放到數(shù)組中,最后輸出數(shù)組中內(nèi)容。echo -n "Pleasw enter number : "read n declare a inv #顯示聲明一個數(shù)組inv,也可不聲明echo "You put number is $n"echo n "The inverted order number is "i=0 while $n
48、 -gt 0 dosd=$( $n % 10 ) #求余n=$( $n / 10 ) #去掉當前的最后一位數(shù)后剩下的數(shù)inv$i=$sd #余數(shù)存放到數(shù)組中echo n $inv$i #顯示數(shù)組中內(nèi)容(讀取數(shù)組元素值的一般方法:$數(shù)組名下標)i=expr $i + 1 #下標變量改變指向數(shù)組下一位doneecho #換行3設計一個Shell程序,在用戶主目錄下建立一個userdata目錄,在此目錄下再建立5個目錄,即user1user5,并設置每個目錄的權(quán)限,其中其他用戶的權(quán)限為:讀;文件所有者的權(quán)限為:讀、寫、執(zhí)行;文件所有者所在組的權(quán)限為:讀、執(zhí)行。(注意:最后刪除自己所建立的目錄,恢復原樣,以便后面同學做此實驗)參考程序:mkdir -m 754 /home/student/userdatai=1temp=/home/student/userdir/userwhile $i -le 5domkdir -m 754 $temp$ilet "i = i + 1" #或(i=i1)或i=expr $i + 1done注:let 命令的替代表示形
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 戰(zhàn)略合作方銷售代理合同范本
- 土地使用權(quán)買賣合同樣本
- 臨時雇傭合同標準文本
- 高校畢業(yè)生實習協(xié)議合同
- 股份合作企業(yè)合同范本
- 婚禮場地租賃合同書
- 度企業(yè)信用反擔保合同協(xié)議
- 企業(yè)安全生產(chǎn)責任協(xié)議合同
- 勞動合同樣本:員工長期雇傭
- 海濱度假村物業(yè)銷售合同協(xié)議
- 2024年新人教版一年級數(shù)學下冊《第2單元第5課時 20以內(nèi)的退位減法解決問題(1)》教學課件
- 2022年陜西省普通高校職業(yè)教育單獨招生統(tǒng)一考試語文甲(A)試題
- DB11T 212-2017 園林綠化工程施工及驗收規(guī)范
- 失業(yè)保險待遇申領(lǐng)表
- 2024-2025學年初中信息技術(shù)(信息科技)第二冊河北大學版(第3版)教學設計合集
- 期末測試卷(一)(試題)2023-2024學年二年級上冊數(shù)學蘇教版
- 攜程在線能力測評真題
- 感知覺與溝通評估三明醫(yī)學科技職業(yè)
- 人教版(2024)六年級全一冊 第17課 設計我的種植園
- 承包商入廠安全培訓試題附參考答案【完整版】
- 加盟京東商城合同模板
評論
0/150
提交評論