基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實(shí)踐-課件2
單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,第,2,章 初識,Linux,87,單擊此處編輯母版標(biāo)題樣式,,第,2,章 初識,Linux,2.1,安裝發(fā)行版,Linux,操作系統(tǒng),,2.2 Linux,的目錄結(jié)構(gòu),,2.3 Linux,的文件屬性,,2.4 Linux,的文件類型,,2.5 Shell,,2.6 Shell,編程基礎(chǔ),,本章小結(jié),,,2.1,安裝發(fā)行版,Linux,操作系統(tǒng),宿主機(jī),(PC),安裝發(fā)行版,Linux,操作系統(tǒng)有以下三個(gè)方案: ?、?基于,PC,機(jī),Windows,操作系統(tǒng)下的,CYGWIN,。 ?、?在,Windows,下安裝虛擬機(jī)后,再在虛擬機(jī)中安裝,Linux,操作系統(tǒng)。 ③ 直接安裝,Linux,操作系統(tǒng)。,,2.1.1,安裝虛擬機(jī),VMware,,安裝虛擬機(jī),VMware,步驟如下: ① 雙擊安裝程序后來到,VMware-Workstation-6.5,安裝向?qū)Ы缑?,如圖,2-1,所示。,,,圖,2-1 VMware,安裝向?qū)Ы缑?,② 安裝類型選擇,(,選中“,Typical”,典型安裝,),。 ?、?安裝路徑選擇,(,如選擇將,VMware Workstation,安裝在默認(rèn)的路徑下,),。 ?、?啟動捷徑選擇,(,可全選,),,如圖,2-2,所示。 ⑤ 確定無誤后單擊“,Install”,按鈕,完成安裝。 ?、?重新啟動,VMware Workstation,,在如圖,2-3,出現(xiàn)的窗口內(nèi)填寫序列號和注冊信息。,,,圖,2-2,啟動捷徑選擇,,,圖,2-3,填寫序列號和注冊信息,,2.1.2,在虛擬機(jī),VMware,中安裝,RedHat,Linux 9.0,操作系統(tǒng),在虛擬機(jī),VMware,中安裝,RedHat,Linux 9.0,操作系統(tǒng)步驟如下。,,,圖,2-4,新建虛擬機(jī),,,圖,2-5,虛擬平臺選擇,,,圖,2-6,處理器配置,,,圖,2-7,虛擬機(jī)配置,,,圖,2-8,光盤安裝設(shè)置,,,圖,2-9,測試光盤選擇,,,圖,2-10,系統(tǒng)登錄界面,,2.1.3,安裝,VMware Tools,,1. ?VMware Tools,的軟件包的安裝過程,,(1),以,root,身份登錄,Linux,。,(2),按下,Ctrl?+?Alt,組合鍵,進(jìn)入主操作系統(tǒng),點(diǎn)擊菜單欄,VM,下的,Install VMware Tools,子菜單,會出現(xiàn)如圖,2-11,所示界面。,,,圖,2-11,點(diǎn)擊,Install VMware Tools,子菜單彈出的界面,,,(3),將該軟件包拷貝到,Linux,的,tmp,目錄下。,(4),打開終端,進(jìn)入,tmp,目錄。,(5),解壓縮該軟件包,如圖,2-12,所示,默認(rèn)解壓到,vmware-tools-distrib,目錄下:,tar -,zxf,VMwareTools-5.5.3-34685.tar.gz,進(jìn)入解壓后的目錄:,cd,,vmware-tools-distrib,,,(6),運(yùn)行如下命令安裝:,./,vmware-install.pl,,安裝完成后可進(jìn)行文件共享的設(shè)置。,,,圖,2-12,解壓縮,VMware Tools,軟件包,,,2.,文件共享的設(shè)置,(1),關(guān)閉,Linux,系統(tǒng)。,(2),選擇“編輯虛擬機(jī)設(shè)置”,點(diǎn)擊“,Options”,,選擇“,Share Folders”,,點(diǎn)擊“,Add”,按鈕就可設(shè)置共享文件夾,如圖,2-13,所示。,(3),啟動,Linux,系統(tǒng)。,(4),在,/,mnt,下即可看到,hgfs,文件目錄,在,hgfs,目錄下有,share,文件目錄,這樣就可實(shí)現(xiàn),Windows,與,VMware,下的,Linux,文件共享,如圖,2-14,所示。,,,圖,2-13,文件共享的設(shè)置,,,圖,2-14,查看文件共享,,,2.2 Linux,的目錄結(jié)構(gòu),,(1) ?/bin,。,(2) ?/boot,。,(3) ?/dev,。,(4) ?/etc,。,(5) ?/,sbin,。,(6) ?/home,。,(7) ?/lib,。,(8) ?/,lost+found,。,(9) ?/,mnt,。,,(10) ?/proc,。,(11) ?/root,。,(12) ?/,tmp,。,(13) ?/,usr,。,,,2.3 Linux,的文件屬性,,Linux,的文件屬性主要有九個(gè)字段。 圖,2-15,給出了,a2ps.cfg,文件屬性的詳細(xì)信息。,,,圖,2-15 a2ps.cfg,文件詳細(xì)信息,,,2.4 Linux,的文件類型,,Linux,文件類型和,Linux,文件的文件名所代表的意義是兩個(gè)不同的概念。可以通過一般應(yīng)用程序而創(chuàng)建,比如,file.txt,、,file.tar.gz,,這些文件雖然要用不同的程序來打開,但放在,Linux,文件類型中衡量的話,大多是常規(guī)文件,(,也被稱為普通文件,),。,Linux,文件類型常見的有普通文件、目錄文件、字符設(shè)備文件、塊設(shè)備文件、套接口文件和符號鏈接文件等。,,,1.,普通文件,[root@localhost ~]# ls -lh install.log,,,-,rw-r--r,-- 1 root,root,53K 03-16 08:54,install.log,,,2.,目錄文件,,[,root@localhost,~]#,ls,–,lh,,總用量,14M,,-,rw-r--r,-- 1 root,root,2 03-27 02:00,fonts.scale,,,-,rw-r--r,-- 1 root,root,53k 03-16 08:54,install.log,,,-,rw-r--r,-- 1 root,root,14M 03-16 07:53 kernel-2.6.15-,,1.2025_FC5.i686.rpm,,drwxr-xr-x,2 1000 users 4.0k 04-04 23:30 mkuml-2004.07.17,,,drwxr-xr-x 2 root root 4.0k 04-19 10:53 mydir,,,drwxr-xr-x,2 root,root,4.0k 03-17 04:25 Public,,,3.,字符設(shè)備或塊設(shè)備文件,進(jìn)入,/dev,目錄,列一下文件,如下:,[,root@localhost,~]#,ls,–,lh,/dev/,tty,,,crw-rw-rw,- 1 root,tty,5, 0 04-19 08:29 /dev/,tty,,,[,root@localhost,~]#,ls,-,lh,/dev/hda1,,brw-r,----- 1 root disk 3, 1 2006-04-19 /dev/hda1,,,4.,套接口文件,當(dāng)啟動,MySQL,服務(wù)器時(shí),會產(chǎn)生一個(gè),mysql.sock,的文件。,[,root@localhost,~]#,ls,-,lh,/,var/lib/mysql/mysql.sock,,,srwxrwxrwx,1,mysql,,mysql,0 04-19 11:12,,/,var/lib/mysql/mysql.sock,,注意這個(gè)文件屬性的第一個(gè)字符是“,s”,。,,,5.,符號鏈接文件,[,root@localhost,~]#,ls,-,lh,,setup.log,,,lrwxrwxrwx,1 root,root,11 04-19 11:18,setup.log,->,install.log,,,2.5 Shell,2.5.1 Shell,簡介,,Shell,是一種具備特殊功能的程序,它是介于使用者和,Linux,操作系統(tǒng)核心程序,(kernel),間的一個(gè)接口。,,,圖,2-16 Shell,、,Linux,內(nèi)核和用戶之間的關(guān)系,,2.5.2,常用,Shell,命令,,Shell,命令的一般格式: 命令名,[,選項(xiàng),] [,參數(shù),1] [,參數(shù),2]…,,,1.,獲取幫助信息命令,?,man,,權(quán)限:所有用戶。 使用方法:,man [,查找內(nèi)容,],說明:用于快速查詢命令和程序的使用方法等。 例如:,# man,ls,,?,help,,權(quán)限:所有用戶。 使用方法:,help[,幫助,],說明:打印出需要查找?guī)椭畹膸椭畔?,根?jù)命令不同可能采用不同的參數(shù),--help,或,-help,。 例如:,[,mxl@localhost,home]$,ls,--help,,,2.,瀏覽目錄常用命令,?,ls,,權(quán)限:所有用戶。 使用方法:,ls,[,選項(xiàng),]… [,文件,]…,說明:列出當(dāng)前工作子目錄,(,默認(rèn),),中的文件及子目錄清單。,,?,cd,,權(quán)限:所有用戶。 使用方法:,cd,[,目標(biāo)路徑,],,,說明:變換工作目錄到目標(biāo)路徑,其中目標(biāo)路徑可以是絕對路徑也可以是相對路徑。目標(biāo)路徑名可以缺省,若缺省則變換至使用者的,home directory(,用戶登錄子目錄,),。,,?,pwd,,權(quán)限:所有用戶。 使用方法:,pwd,,說明:顯示用戶當(dāng)前工作子目錄的完整路徑。 例如:,[,mxl,@,localhost,home]$,pwd,,則出現(xiàn),/home,,?,dir,,權(quán)限:所有用戶。 使用方法:,dir [,路徑,] [,文件名,],,,說明:功能與,ls,命令類似,(,列出當(dāng)前工作子目錄,(,默認(rèn),),中的文件及子目錄清單,),。,,,3.,閱讀常用命令,?,cat,,權(quán)限:所有用戶。 使用方法:,cat [,參數(shù),] [,文件名,],說明:可以顯示文件內(nèi)容,或者把文件串接后輸出到基本輸出,(,或另一個(gè)文件,),。,,?,more,,權(quán)限:所有用戶。 使用方法:,more [,參數(shù),] [,文件名,],說明:類似,cat,,但它可以分頁顯示,適合顯示長文件清單或文本內(nèi)容,最基本的指令就是按空格換頁,按回車下一行,按,b,鍵返回上一頁。 常用參數(shù):,-num,一次顯示的行數(shù);,-d,在屏幕最下方顯示提示信息;,+num,從第,num,行開始顯示。,,?,less,,權(quán)限:所有用戶。 使用方法:,less [,參數(shù),] [,文件名,],說明:與,more,命令功能類似,可以用來瀏覽文字文件的內(nèi)容,,less,允許往回卷動已瀏覽過的部分。,less,不會一開始就讀入整個(gè)文件,所以在打開文件時(shí),會比一般的文本編輯器,(vi),快。,,,4.,查找常用命令,?,find,,權(quán)限:所有用戶。 使用方法:,find [,路徑,] [,參數(shù),] [,查找相關(guān)內(nèi)容,],,,說明:對某個(gè)特定文件、某些特定文件和某種類型的文件進(jìn)行檢索,可以根據(jù)名字、類型、文件屬主以及上次修改時(shí)間來檢索。,,常用參數(shù):,,-name,檢索文件名中包含查找內(nèi)容字符串的文件;,-type,檢索相應(yīng)類型的文件,(d,、,c,等,),;,-user,檢索創(chuàng)建用戶為查找內(nèi)容的文件。,,,5.,目錄操作常用命令,?,mkdir,,權(quán)限:所有用戶。 使用方法:,mkdir,[,子目錄或子目錄完整路徑,],說明:建立一個(gè)新的子目錄,使用子目錄的路徑作為參 數(shù)。 例如:,[,mxl@localhost,home]$,mkdir,/home/,mxl,/temp,,?,rmdir,,權(quán)限:當(dāng)前目錄有適當(dāng)權(quán)限的所有者。 使用方法:,rmdir,[,子目錄或子目錄完整路徑,],說明:刪除空的目錄。 例如:,[,mxl@localhost,home]$,rmdir,/home/,mxl,/temp,,,6.,文件操作常用命令,?,rm,,權(quán)限:當(dāng)前文件有適當(dāng)權(quán)限的所有者。 使用方法:,rm,[,參數(shù),] [,文件名或目錄,],說明:刪除文件以及目錄。 常用參數(shù):,-I,刪除前逐一詢問確定;,-f,即使原文件為只讀也強(qiáng)制刪除,并不詢問確定;,-r,同時(shí)刪除該目錄層下的所有目錄以及文件。,,?,mv,,權(quán)限:當(dāng)前文件有適當(dāng)權(quán)限的所有者。 使用方法:,mv,[,參數(shù),] [,原文件或目錄,] [,目標(biāo)文件或目錄,],說明:將一個(gè)文件移至另一個(gè)文件,或?qū)⒍鄠€(gè)文件移動至另一個(gè)目錄,也可以將一個(gè)目錄移動至另一個(gè)目錄。 常用參數(shù):,-I,若目的位置已有同名文件,則詢問是否覆蓋舊文件。,,?,cp,,權(quán)限:所有用戶。 使用方法:,cp [,參數(shù),] [,原文件或目錄,] [,目標(biāo)文件或目錄,],,,說明:將一個(gè)文件復(fù)制到另一個(gè)文件,或?qū)?shù)個(gè)文件復(fù)制到另一個(gè)目錄中,也可以將一個(gè)目錄復(fù)制到另一個(gè)目錄。,,常用參數(shù):,,-a,盡可能將文件的狀態(tài)、權(quán)限等信息全部復(fù)制;,-f,若目的地址有同名文件,則將已有的文件刪除再進(jìn)行復(fù)制;,-r,若原目錄中包含子目錄,則原目錄中的文件及子目錄也依次復(fù)制到目的地址中。,,,7.,壓縮及解壓縮命令,,Linux,的軟件一般是以,.,gz,、,.tar,或者,.,tar.gz,結(jié)尾的。,.,gz,是由,gzip,程序壓縮的;,.,tar.gz,是先用,tar,程序歸檔,(,打包,),,再用,gzip,程序壓縮而成的。,,?,tar,,,,權(quán)限:所有用戶。, 使用方法:,tar [,參數(shù),] f [,歸檔文件名,] [,原文件或目錄,],,,說明:廣泛用于建立歸檔文檔,這個(gè)命令將文件及目錄復(fù)制到歸檔文件中,原文件并不會有被刪除的危險(xiǎn)。同時(shí)還可通過參數(shù)調(diào)用相應(yīng)的壓縮工具進(jìn)行壓縮及解壓縮。,,常用參數(shù):,,-f,此參數(shù)是必須的,通常用來指定包的文件名;,-c,創(chuàng)建新的檔案文件,如果用戶想備份一個(gè)目錄或一些文件,就要選擇這個(gè)選項(xiàng);,,,8.,掛載文件系統(tǒng)命令,?,mount,,權(quán)限:所有用戶。 使用方法:,mount [,參數(shù),] [,設(shè)備,] [,掛載目錄,(,掛載點(diǎn),)],,,說明:在命令行中使用,mount,命令掛載文件系統(tǒng)。,,?,umount,,權(quán)限:所有用戶。 使用方法:,umount,[,參數(shù),] [,設(shè)備,] [,掛載目錄,(,掛載點(diǎn),)],,,說明:在命令行中使用,umount,命令卸載文件系統(tǒng)。 例如:,umount,/dev/hda1,將,/dev/hda1,設(shè)備卸載,設(shè)備必須處于空閑狀態(tài)。? 常用參數(shù):,-t,指定掛載文件系統(tǒng)類型。,,,9.,網(wǎng)絡(luò)常用命令,?,ifconfig,,權(quán)限:所有用戶。 使用方法:,ifconfig,[,接口,],,ifconfig,[,接口,] [,參數(shù),],或,[,地址,],說明:用來配置網(wǎng)絡(luò)接口。,,,10.,快捷鍵,(1) ?TAB,文件目錄匹配搜索的使用。,(2),光標(biāo)鍵:如果在以前輸入某個(gè)命令,下次想要再次輸入此命令,則只要按上光標(biāo)鍵就可以找到。,,,11.,其他常用命令,,(1) ?clear,命令:清屏命令,清除屏幕上的內(nèi)容。,(2) ?init 0,命令:關(guān)閉虛擬機(jī)命令,可以防止直接關(guān)閉虛擬機(jī)電源導(dǎo)致數(shù)據(jù)崩潰。,(3) ?reboot,命令:重新啟動虛擬機(jī)。,(4),insmod,命令:向內(nèi)核添加模塊,如驅(qū)動模塊。,(5),rmmod,命令:向內(nèi)核添加模塊,如,rmmod,獲至寶,rtl8139,刪除名為,rtl8139,的驅(qū)動模塊。,,(6),startx,:進(jìn)入,Linux,虛擬機(jī)圖形界面。,(7),Ctrl+C,:中斷,Shell,命令。,(8),adduser,:添加用戶命令。,(9),userdel,:刪除用戶命令。,,,2.6 Shell,編程基礎(chǔ),,2.6.1,建立和運(yùn)行,Shell,程序,執(zhí)行,Shell,程序文件有三種方法: ?、?#,chmod,+x file,,#./ file,②,#,sh,file,③,#source file,,2.6.2 Shell,中的變量,1.,用戶自定義變量,,Shell,語言是非類型的解釋型語言,不像用,C++/Java,語言編程時(shí)需要事先聲明變量,給一個(gè)變量賦值,實(shí)際上就是定義了變量。在,Linux,支持的所有,Shell,中,都可以用賦值符號“,=”,為變量賦值。在變量賦值之后,只需在變量前面加一個(gè)“,$”,去引用。,,,2.,系統(tǒng)變量,常用的系統(tǒng)變量如下:,$ #,保存程序命令行參數(shù)的數(shù)目;,$ ?,保存前一個(gè)命令的返回碼;,$ 0,保存程序名;,$1,第一個(gè)參數(shù),,$2,第二個(gè)參數(shù),,$3,,,$4,,,$5…,依次類推;,$ *,以,(“$1 $2…”),的形式保存所有輸入的命令行參數(shù);,$ @,以,("$1""$2"…),的形式保存所有輸入的命令行參數(shù),;,,,3.,環(huán)境變量,(1),什么是環(huán)境變量。,,Linux,是一個(gè)多用戶的操作系統(tǒng)。每個(gè)用戶登錄系統(tǒng)后,都會有一個(gè)專用的運(yùn)行環(huán)境。通常每個(gè)用戶默認(rèn)的環(huán)境都是相同的,這個(gè)默認(rèn)環(huán)境實(shí)際上就是一組環(huán)境變量的定義。用戶可以對自己的運(yùn)行環(huán)境進(jìn)行定制,其方法就是修改相應(yīng)的系統(tǒng)環(huán)境變量。,,,(2),常見的環(huán)境變量。,PATH,決定了,Shell,將到哪些目錄中尋找命令或程序。,HOME,當(dāng)前用戶主目錄。,MAIL,當(dāng)前用戶的郵件存放目錄。,SHELL,當(dāng)前用戶用的是哪種,Shell,。,HISTSIZE,保存歷史命令記錄的條數(shù)。,LOGNAME,當(dāng)前用戶的登錄名。,,,(3),常用的環(huán)境變量命令。,echo,顯示某個(gè)環(huán)境變量值,例如:,echo $PATH,。,export,設(shè)置一個(gè)新的環(huán)境變量,例如:,export,,HELLO=“hello” (,可以無引號,),。,env,,顯示所有環(huán)境變量。,set,顯示本地定義的,Shell,變量。,unset,清除環(huán)境變量,unset HELLO,。,readonly,,設(shè)置只讀環(huán)境變量,readonly,HELLO,。,,,(4),修改環(huán)境變量的方法。 可以對,.,bashrc,和,/etc/profile,文件進(jìn)行環(huán)境變量的編輯。但注意,對前者修改只對當(dāng)前用戶有用,對后者修改是對所有用戶有用。,,2.6.3 Shell,中引號的使用方法,1.,單引號,‘,,由單引號括起來的字符都作為普通字符出現(xiàn)。特殊字符用單引號括起來以后,也會失去原有意義,而只作為普通字符解釋。,,,2.,雙引號,“,,由雙引號括起來的字符,除,$,、,\,、,',和,",這幾個(gè)字符仍是特殊字符并保留其特殊功能外,其余字符仍作為普通字符對待。對于,$,來說,就是用其后指定的變量的值來代替這個(gè)變量和,$,;對于,\,而言,是轉(zhuǎn)義字符,它告訴,Shell,不要對其后面的那個(gè)字符進(jìn)行特殊處理,只當(dāng)作普通字符即可。,,,3.,反引號,‘,,反引號這個(gè)字符所對應(yīng)的鍵一般位于鍵盤的左上角,不要將其同單引號混淆。反引號括起來的字符串被,Shell,解釋為命令行,在執(zhí)行時(shí),,Shell,首先執(zhí)行該命令行,并以它的標(biāo)準(zhǔn)輸出結(jié)果取代整個(gè)反引號,(,包括兩個(gè)反引號,),部分。,,2.6.4 Shell,中的,test,命令,,test,命令的語法格式:,test expression,或者,[expression],,test,在以下四種情況下使用:,,,1.,字符比較,字符比較的命令和含義如表,2-1,所示。,,,,2.,兩個(gè)整數(shù)值的比較,整數(shù)比較具有和字符比較類似的功能,只是它們的操作是針對整數(shù),整數(shù)比較的命令和含義如表,2-2,所示。,,,,3.,文件操作,文件操作是對文件是否存在及文件的狀態(tài)的判斷等,文件操作的表達(dá)式和含義如表,2-3,所示。,,,,4.,邏輯操作,可以進(jìn)行,and,和,or,,與其他條件聯(lián)合使用,邏輯操作的表達(dá)式和含義如表,2-4,所示。,,,2.6.5,條件語句,,1. ?if,語句,語法格式:,if [expression1],,then,,commands1,,elif,[expression2],,commands2,,else,,commands3,,fi,,,,2. case,語句,,case,語句要求,Shell,將一個(gè)字符串,S,與一組字符串模式,P1,,,P2,,,…,,,Pn,比較,當(dāng),S,與某個(gè)模式,Pi,相匹配時(shí),就執(zhí)行相應(yīng)的那一部分程序,/,命令。,Shell,的,case,語句中字符模式里可以包含像?*?這樣的通配符。,,語法格式:,case string1 in,,str1),,commands1,;;,str2),,commands2,;; *,),,commands3,;;,esac,,,2.6.6,循環(huán)語句,1.? for,語句,語法格式:,for var1 in list,,do,,commands,,done,,,2. ?while,語句,,while,語句是,Shell,提供的另一種循環(huán)語句。,while,語句指定一個(gè)表達(dá)式和一組命令。這個(gè)語句使得,Shell,重復(fù)執(zhí)行一組命令,直到表達(dá)式的值為,False,為止。 語法格式:,while expression,,do,,statements,,done,,,3. until,語句,,until,與,while,語句具有類似的語法格式和功能,不同的是,while,中,expression,的值為,True,時(shí),,Shell,執(zhí)行命令組;而,until,中當(dāng),expression,的值為,False,時(shí),,Shell,才執(zhí)行那組命令。 語法格式:,until expression,,do,,commands,,done,,,4. shift,語句,,shift,將命令行參數(shù)依次向左傳遞。例如,命令行參數(shù)當(dāng)前值為:,$1=file1 $2=file2 $3=file3,,執(zhí)行一次,shift,命令后,位置變量的值為:,$1=file2 $2=file3,。還可以在,shift,命令中指定位置變量轉(zhuǎn)移的次數(shù),如,shift n,。,,,5. ?select,語句,語法格式:,select menu [in,list_of_items,],,do,,commands,,done,,2.6.7 Shell,中的函數(shù),Shell,允許用戶定義自己的函數(shù),函數(shù)是高級語言中的重要結(jié)構(gòu),,Shell,中的函數(shù)與,C,或者其他語言中定義的函數(shù)一樣。與從頭開始,一行一行地寫程序相比,使用函數(shù)主要好處是有利于組織整個(gè)程序。一個(gè)函數(shù)的語法格式如下:,fname,(){,,shell,comands,,,},,本 章 小 結(jié),本章首先介紹了發(fā)行版,Linux,操作系統(tǒng)的安裝方法,主要講述,Linux,一些基本知識,包括,Linux,的目錄結(jié)構(gòu)、文件屬性和文件類型。還講述了,Shell,的一些基本知識,重點(diǎn)介紹了,Shell,編程基礎(chǔ)。通過本章的學(xué)習(xí)和操作,讀者應(yīng)該能夠?qū)?Linux,操作系統(tǒng)有一個(gè)常識性的了解,為后續(xù)章節(jié)的學(xué)習(xí)打下基礎(chǔ)。,,