版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第7章相關說明說明:(1)實驗相關ppt內容選自操作系統(tǒng)課程設計的核心實驗,本實驗為linux編程基礎實驗,以學生理解linux的發(fā)展史和熟悉linux命令及相應的工具為主。(2)本實驗難點在于linux命令使用,對于初接觸linux操作系統(tǒng)的學生,重在親自動手操作,講解時盡量降低講解速度,shell腳本要反復多加練習才能掌握語法等。(3)該課程上課時間為2015年春季,全班人數共54人。第7章:Linux編程基礎實驗提綱3提綱4實驗目的了解Linux編程環(huán)境和編程工具。掌握基本的Linux系統(tǒng)命令及執(zhí)行過程。了解shell的作用及主要分類。掌握shell腳本程序運行原理及基礎語法,學會編寫簡
2、單的shell腳本程序。5提綱6實驗內容一、Linux命令實驗 實驗:熟悉linux系統(tǒng)與linux命令二、文本編輯工具、GCC以及GDB的使用 實驗:熟悉工具的使用三、Shell編程(小組實驗) 實驗:shell腳本程序設計7一、Linux簡介與常用命令8Linux發(fā)展史UNIX操作系統(tǒng)是美國貝爾實驗室的Ken.Thompson和DennisRitchie于1969年夏在DECPDP-7小型計算機上開發(fā)的一個分時操作系統(tǒng)。當時KenThompson為了能在閑置不用的PDP-7計算機上運行他非常喜歡的星際旅行(Spacetravel)游戲,在1969年夏天乘他夫人回家鄉(xiāng)加利福尼亞渡假期間,在一
3、個月內開發(fā)出了unix操作系統(tǒng)的原型。當時使用的是BCPL語言(基本組合編程語言),后經DennisRitchie于1972年用移植性很強的C語言進行了改寫,使得UNIX系統(tǒng)在大專院校得到了推廣。UNIX操作系統(tǒng)的誕生9Linux發(fā)展史MINIX 系統(tǒng)是由Andrew S. Tanenbaum(AST)開發(fā)的。AST 是在荷蘭Amsterdam 的Vrije 大學數學與計算機科學系統(tǒng)工作,是ACM 和IEEE 的資深會員。AST 雖出生在美國紐約,但是是荷蘭僑民。由于讀博士后的緣故,他來到了家鄉(xiāng)荷蘭。從此就與家鄉(xiāng)一直有來往。后來就在Vrije 大學開始教書、帶研究生了。荷蘭首都Amsterda
4、m 是個常年陰雨綿綿的城市,而對于AST 來說,這最好不過了,因為這樣他就可以待在家里擺弄他的計算機了。MINIX 是他1987年編制的,主要用于學生學習操作系統(tǒng)原理。到91年時版本是1.5。當時該操作系統(tǒng)在大學使用是免費的,但其它用途不是。 由于MINIX系統(tǒng)的出現(xiàn)并且提供源代碼(只能免費用于大學內)在全世界的大學中刮起了學習UNIX系統(tǒng)旋風。MINIX操作系統(tǒng)的誕生10Linux發(fā)展史GNU計劃和自由軟件基金會(theFreeSoftwareFoundation-FSF)是由RichardM.Stallman于1984年一手創(chuàng)辦的。旨在開發(fā)一個類似Unix、并且是自由軟件的完整操作系統(tǒng):G
5、NU系統(tǒng)。(GNU是GNUsNotUnix的遞歸縮寫,它的發(fā)音為guh-NEW。)各種使用linux作為核心的GNU操作系統(tǒng)正在被廣泛的使用。雖然這些系統(tǒng)通常被稱作Linux,但是嚴格地說,它們應該被稱為GNU/Linux系統(tǒng)。到上世紀90年代初,GNU項目已經開發(fā)出許多高質量的免費軟件,其中包括有名的emacs編輯系統(tǒng)、bashshell程序、gcc系列編譯程序、gdb調試程序等等。這些軟件為Linux操作系統(tǒng)的開發(fā)創(chuàng)造了一個合適的環(huán)境,是Linux能夠誕生的基礎之一。以至于目前許多人都將Linux操作系統(tǒng)稱為GNU/Linux操作系統(tǒng)。 Linux只是操作系統(tǒng)的一個內核,沒有GNU軟件環(huán)境
6、(比如說bashshell),則Linux將寸步難行。GNU計劃11Linux發(fā)展史POSIX(PortableOperatingSystemInterfaceforComputingSystems)是由IEEE和ISO/IEC開發(fā)的一簇標準。該標準是基于現(xiàn)有的UNIX實踐和經驗,描述了操作系統(tǒng)的調用服務接口,用于保證編制的應用程序可以在源代碼一級上在多種操作系統(tǒng)上移植運行。它是在1980年早期一個UNIX用戶組(usr/group)的早期工作的基礎上取得的。該UNIX用戶組原來試圖將AT&T的系統(tǒng)V和BerkeleyCSRG的BSD系統(tǒng)的調用接口之間的區(qū)別重新調和集成,從而于1984年產生了
7、/usr/group標準。1985年,IEEE操作系統(tǒng)技術委員會標準小組委員會(TCOS-SS)開始在ANSI的支持下責成IEEE標準委員會制定有關程序源代碼可移植性操作系統(tǒng)服務接口正式標準。到了1986年4月,IEEE就制定出了試用標準。第一個正式標準是在1988年9月份批準的(IEEE1003.1-1988),也既以后經常提到的POSIX.1標準。 該標準在推動Linux操作系統(tǒng)以后朝著正規(guī)路上發(fā)展起著重要的作用。是Linux前進和燈塔。POSIX 標準12Linux發(fā)展史1991年,芬蘭大學生Linus Torvalds想要了解Intel的新CPU80386。他認為好的學習方法是自己編寫
8、操作系統(tǒng)內核。出于這種目的,加上他對當時Unix變種版本對于80386類機器的脆弱支持十分不滿,他決定要開發(fā)出一個全功能的、支持POSIX標準的、類Unix的操作系統(tǒng)內核,該系統(tǒng)吸收了BSD和System V的優(yōu)點,同時摒棄了它們的缺點。LinusTorvalds獨立把這個內核開發(fā)到0.02版,這個版本已經可以運行gcc,bash和很少的一些應用程序。這些就是他開始的全部工作了。接著開始在因特網絡上尋求廣泛的幫助,年,Linus的Linux已經升級到1.0版本。它的源代碼量也呈指數形式增長,實現(xiàn)了基本的TCP/IP功能。此時Linux就已經擁有大約10萬用戶了。Linus Torvalds要求
9、內核代碼必須公開,任何人不得從中獲利,這種純粹的自由軟件理想妨礙了linux的擴散和發(fā)展。Linux操作系統(tǒng)的誕生13自由而自由奔放的黑馬誕生于學生之手成長于Internet 壯大于自由而開放的文化Linux發(fā)展史14Linux簡介Linux是一套可以免費使用和自由傳播的類Unix操作系統(tǒng),基于Unix內核。Linux具有多種發(fā)行版本廠家將Linux內核與外圍實用程序和文檔包裝, 提供安裝界面和管理工具等。15注意的幾點圖形界面只是Linux上的一個軟件,不是內核,終端打開的是字符界面。$為普通用戶,#為超級用戶,密碼輸入時不回顯沒有C:D:,只有目錄,用斜線“/”分隔是否為可執(zhí)行文件不看擴展
10、名,看文件有無x(執(zhí)行)屬性區(qū)分大小寫,abc.txt和ABC.txt不同想把文件或目錄隱藏起來,第一個字用“.”16Linux目錄樹17Linux目錄樹18Linux中的用戶超級用戶(root)登錄后,默認用戶主目錄為 /root至高無上,具有一切權限。輸入命令時候為#普通用戶新創(chuàng)建的普通用戶,系統(tǒng)會為其在/home目錄下以該用戶名創(chuàng)建一個新目錄,該目錄即默認用戶主目錄 例如: /home/lym輸入命令時候顯示為$19指令的一般格式命令名稱 選擇項 參數選擇項:用來擴展命令的特性或功能。$ls -l參數:表示命令的作用對象,如文件名。$ls l /home/lym20切換目錄-cd名稱:c
11、hange directory功能:切換目錄語法:cd 目錄$ cd / 切換到根目錄$ cd . 切換到上一級目錄$ cd 切換到用戶主目錄. 當前目錄. 上一級目錄 當前登錄用戶的主目錄root登錄,默認/root/ 普通用戶,默認/home/lym21列出文件清單-ls名稱:list功能:顯示目錄文件語法:ls 選項-al 文件/目錄-a 顯示所有文件名,包括隱藏文件-l 詳細信息范例:22幫助命令-man名稱manual page功能:顯示系統(tǒng)中命令與函數的幫助信息語法:man 命令范例:$man ls23創(chuàng)建新文件-touch名稱:touch功能:創(chuàng)建新文件語法:touch 文件范例
12、:$touch newfile若newfile并不存在,則新建文件;若存在,則修改最后修改時間24創(chuàng)建新目錄-mkdir名稱:make directory功能:創(chuàng)建新目錄語法:mkdir -p 目錄-p 遞歸創(chuàng)建范例:$mkdir /dir$mkdir -p /dir1/dir2/dir325文件處理命令-cat名稱:concatenate and display files功能:顯示文件內容語法:cat 文件名范例:$cat file1 查看file1內容26文件的復制-cp名稱:copy功能:復制語法:cp -r 源文件/目錄 目的目錄-r 復制目錄范例:$cp file dir 將fil
13、e復制到dir1$cp file1 file2 dir1 將file1與file2復制到dir1$cp r dir1 dir2 將dir1所有文件及其子文件復制到dir227文件的移動與更名-mv名稱:move功能:移動、更名語法:mv 源文件/目錄 目的目錄范例:$mv file1 file2 當前目錄下file1改名為file2$mv file2 /test 將file2移動到/test28文件的刪除-rm名稱:remove功能:刪除語法:rm rfi 文件/目錄-r 刪除目錄-f 強制刪除/-i 刪除前詢問范例:$rm f file1 刪除當前錄下file1文件$rm rf test 強
14、制刪除目錄test29文件搜索命令-find名稱:find功能:文件搜索語法:find 搜索范圍匹配條件范例:$find /home/lym name test 在主目錄下查找名為test的文件$find / -size +10000k 根目錄下找find大于10M的文件30文件搜索命令-grep名稱:grep功能:文件中搜索指定行,輸出語法:grep -anv指定字串文件-a 以文本方式搜索-n 輸出行號-v 反向搜索,找沒有搜索字符串的行范例:$grep mysql /root/install.log$grep mysql * 在當前所有文件中查找31統(tǒng)計命令-wc名稱:word coun
15、t功能:統(tǒng)計行數、字數、字節(jié)數語法:wc -clw文件-l 統(tǒng)計行數-w 統(tǒng)計字數-c 統(tǒng)計字節(jié)數范例:$wc-l/root/install.log32文件搜索命令-sort名稱:sort功能:文本按行排序語法:sort 指定字串文件-u 去除重復行-r 改為降序,默認為升序-o 重定向寫入文件,默認為標準輸出范例:$sort r file1 將file1降序后標準輸出,原文件不變$sort r file1 o file1 將file 1降序后輸出到原文件中33輸出重定向 保存到文件 追加到文件ls l /etc file 將ls命令生成的/etc目錄下文件清單存到file文件中l(wèi)s l /e
16、tc dir 將ls命令生成的/etc目錄下文件清單追加到file文件中 34管道格式:命令1|命令2|命令n將前一條命令的執(zhí)行結果通過標準輸出送給后一命令作為輸入數據每條命令作為單獨的進程運行cat /etc/passwd | grep /bin/bash | wc l將cat顯示的passw文件內容輸出給grep;grep找出含有“bin/bash”的所有行;wc統(tǒng)計行數”; 35Linux文件類型普通文件:“-”目錄文件:“d”,類似windows的文件夾設備文件:所有設備均為文件,如打印機。塊文件“b”,字符文件“c”鏈接文件:“l(fā)”36硬鏈接與符號鏈接硬鏈接不創(chuàng)建新文件,只是新添文件
17、名,二者的文件類型、大小完全一樣link count記錄文件具有的硬鏈接數,每新添一個硬鏈接加1,減為0時數據塊才被真正清除符號鏈接(軟鏈接)類似于windows下的快捷方式,會新建一個文件,數據指向目標文件的數據塊,該文件類型為鏈接文件,“l(fā)”不影響link count數37ln(link)命令ln(link) 功能:創(chuàng)建鏈接語法:ln -s 源文件 目標文件硬鏈接符號鏈接38權限管理命令-chmod名稱:chmod(change permission mode)功能:改變權限語法:chmod ugo +-= rwx文件/目錄范例:Chmod +x file 為file增加所有的x權限Chm
18、od u-w file file文件減少w權限39文件處理命令-pwd名稱:print working directory功能:顯示當前工作目錄語法:pwd直接回車40關機命令-shutdown功能:關機語法:shutdown -hr 時間-h 關機-r 重啟需要root權限,sudo暫時提升權限范例:$sudo shutdown h now 馬上關機$sudo shutdown r 10 十分鐘后重啟41二、文本編輯工具、GCC以及GDB的使用42Linux下c編程運行c文件,hello.c為例(1)預處理階段: gcc -E hello.c -o hello.i -E的作用是讓Gcc在預處
19、理結束后停止編譯過程 Hello.i預處理過生的c語言代碼(2)編譯階段(檢查代碼的規(guī)范性、是否有語法錯誤) gcc -S hello.i -o hello.s -S的作用只進行編譯而不進行匯編 Hello.s匯編語言代碼43Linux下c編程(3)匯編階段:(把編譯階段生成的.s文件轉成目標文件) Gcc -c hello.s -o hello.o -c作用查看匯編代碼已轉化為.o的二進制代碼 (4)鏈接階段: Gcc hello.o -o hello(生成可執(zhí)行文件) 運行該可執(zhí)行文件 ./hello44Linux下c編程 VI編輯器的使用 gedit編輯器的使用45三、shell編程46
20、Shell簡介shell是用戶和內核之間的接口。為屏蔽內核復雜性,在內核周圍建一個外殼(shell),用戶向shell提出請求,shell逐條解釋將請求傳給內核。Shell是一種命令解釋器,是一種高級編程語言,支持變量、函數、控制語句等等。解釋執(zhí)行方式,不會形成目標程序。Shell有多種,一般使用bash(bonurne shell),用echo $SHELL查看環(huán)境所用shell47為什么要有shell腳本系統(tǒng)管理員每天需要進行大量且重復的管理工作,如文件路徑備份、更新等。可以將重復進行的操作寫入一個文本文件,作為shell腳本運行。如,管理員每天需要運行如下命令:datepwd又如grou
21、padd groupnameusradd m username1 -g groupnameusradd m username2 g groupname -m默認方式,/home/username148Shell腳本運行過程編寫shell腳本使用任意編輯器(gedit、vim、nano等)編寫腳本第一行為#!/bin/sh,指示解釋器(shell/perl)添加執(zhí)行權限: chmod u+x test.sh運行腳本: ./test.sh運行腳本的幾種方式sh 腳本名:sh 只執(zhí)行bash,讀文件,只需r權限;./腳本名 :當前目錄下該腳本,作為可執(zhí)行程序運行,需x權限. 腳本名:. 是一個命令,
22、不開啟兒子shell,當前shell運行49Shell腳本示例#!/bin/sh #This is s1datepwdchmod u+x s1./s1#!/bin/sh #This is s2sudo groupadd g1sudo usradd m u1 g g1 sudo usradd m u2 -g g1chmod u+x s2./s2/etc/group查看組/etc/passwd查看用戶50Shell腳本示例Shell是一種命令解釋器,也是一種比較復雜的高級編程語言,它支持變量、函數、控制語句等等。#!/bin/sh #This is s2#print “hello shell!”e
23、cho “hello shell!”chmod u+x s2./s251Shell的變量BaShell的變量變量賦值:var=string a=“hello world”不需要聲明類型,都是字符串類型,直接賦值使用字符串類型,等號后無空格,若string有空格,需要引號取用變量時則在變量名稱前加“$”用戶自定義變量為小寫,系統(tǒng)變量為大寫變量都為字符串,數值運算需要外部命令(如expr)expr:一般用于整數值計算,常用于程序計數器expr 10 + 10expr 10 * 10expr 30 / 1052常用變量系統(tǒng)變量 env命令查看所有環(huán)境變量$HOME 用戶主目錄,$PATH 執(zhí)行命令時
24、所搜尋的目錄特殊變量$0這個程序的執(zhí)行名字 $n這個程序的第n個參數值$*這個程序的所有參數 $#這個程序的參數個數 $這個進程的PID $?執(zhí)行上一個指令的返回值53條件測試測試文件狀態(tài)-d:目錄-s:文件非空-f:正規(guī)文件-w:可寫-L:符號鏈接-u:文件有suid位-r:可讀-x:可執(zhí)行表達式-eq =-ne !=-gt -lt -n 非空串-z 空串-le =邏輯操作-a &-o |!54控制語句if 語句if 條件測試 then actionelif 條件 then actionelse actionfi#!/bin/sh scores=40;if $scores -gt 90 then echo very good!elif $scores -gt 80 then echo good!elif $score
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年青神縣招教考試備考題庫帶答案解析(必刷)
- 2025年依安縣幼兒園教師招教考試備考題庫附答案解析(必刷)
- 2024年黑龍江建筑職業(yè)技術學院馬克思主義基本原理概論期末考試題帶答案解析
- 2025年電白縣幼兒園教師招教考試備考題庫附答案解析(奪冠)
- 2024年首都師范大學馬克思主義基本原理概論期末考試題及答案解析(必刷)
- 2025年廣西信息職業(yè)技術學院單招職業(yè)技能考試題庫帶答案解析
- 2026年新鄉(xiāng)職業(yè)技術學院單招職業(yè)適應性測試題庫附答案解析
- 2025年蠡縣招教考試備考題庫附答案解析(必刷)
- 2024年長垣縣幼兒園教師招教考試備考題庫帶答案解析
- 2025年青島工程職業(yè)學院單招職業(yè)技能考試模擬測試卷帶答案解析
- 江蘇省蘇州市2025-2026學年高三上學期期末考試政治試卷(含答案)
- 建筑施工機械使用安全手冊
- GB/T 22200.6-2025低壓電器可靠性第6部分:接觸器式繼電器可靠性試驗方法
- 口腔感控培訓教育制度
- 2026四川成都錦江投資發(fā)展集團有限責任公司招聘18人筆試備考試題及答案解析
- 英語培訓班工資制度
- 房地產 -2025年重慶商業(yè)及物流地產市場回顧與展望2025年重慶商業(yè)及物流地產市場回顧與展望
- 2025年湖南邵陽經開貿易投資有限公司招聘12人參考試題附答案解析
- 第三方管理制度規(guī)范
- 初步設計評審收費標準與流程說明
- 城市感知體系研究報告2025
評論
0/150
提交評論