




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Linux操作系統實驗教程第1章 Linux系統概述一、 Linux系統結構從操作系統的角度來分析Linux,它的體系結構總體上屬于層次結構如下圖所示: 從內到外包括三層:最內層是系統核心,中間是Shell、編譯編輯實用程序、庫函數等,最外層是用戶程序,包括許多應用軟件。從操作系統的功能角度來看,它的核心有五大部分組成:進程管理、存儲管理、文件管理、設備管理、網絡管理。各子系統實現其主要功能,同時相互之間是合作、依賴的關系。進程會管理是操作系統最核心的內容,它控制了整個系統的進程調度和進程之間的通信,是整個系統合理高效運行的關鍵;存儲管理為其他子系統提供內存管理支持,同時其他子系統又為內存管理
2、提供了實現支持,例如要通過文件管理和設備管理實現虛擬存儲器和內外存的統一管理。二、 配置一個雙引導系統如果計算機中已經安裝了其他操作系統,并想創建一個引導系統以便兼用Red Hat Linux和另外的操作系統,需要使用雙引導。機器啟動時,可以選擇其中之一,但不能同時使用兩者。每個操作系統都從自己的硬盤驅動器或硬盤分區中引導,并使用自己的硬盤驅動器或硬盤分區。如果計算機上還沒有安裝任何操作系統,可以使用專門的分區及格式化軟件給Windows創建指定大小的分區,Windows的文件系統為FAT,再為Linux系統創建所需要大小的分區(4G或更大),另外再給Linux留100MB左右的交換分區,Li
3、nux的文件系統為ext2。然后就可以安裝系統了。應首先安裝Windows,然后再安裝Red Hat Linux。如果只進行了分區而沒有格式化各分區,在安裝時可以使用Windows自帶的格式化程序和Linux 自帶的格式化程序進行各自分區的格式化。當Windows已經被安裝,而且已為Linux準備了足夠的磁盤空間,就可以安裝Linux了。Red Hat Linux安裝程序通常會檢測到Windows并自動配置引導程序來引導Windows或Red Hat Linux。安裝完成之后,無論在什么時候啟動計算機,都能夠在引導裝載程序屏幕中指明想啟動Red Hat Linux還是另外的操作系統。選擇Red
4、 Hat Linux來引導Red Hat Linux;選擇DOS來引導Windows。三、 Red Hat Linux的安裝將Red Hat Linux9.X安裝光盤插入光驅,然后啟動計算機,即可從CD-ROM啟動Red Hat Linux9.X安裝程序。步驟1,機器啟動之后,顯示boot提示屏幕,其中包括幾個不同的引導選項,每個引導選項還有一個或多個與之關聯的幫助屏幕。以圖形方式從光盤中安裝Red Hat Linux,單擊“回車”鍵繼續安裝。步驟2,安裝程序檢測用戶系統并試圖識別光驅。如果找到了,會進入安裝進程的下一個階段。這時若要終止安裝進程,應取出光盤,重新引導機器。步驟3,歡迎使用Re
5、d Hat Linux,歡迎屏幕并不提示做任何輸入。可閱讀左側面板內的幫助文字來獲得附加的說明,以及關于如何注冊Red Hat Linux產品的信息。單擊next繼續步驟4,語言選擇。使用鼠標選擇要使用的語言。選擇恰當的語言會在稍后的安裝中幫助定位時區配置。安裝程序將會根據這個屏幕上所指定的信息來定義恰當的時區。選擇恰當的語言(例如簡體中文)后,單擊next繼續。步驟5, 鍵盤配置。用鼠標選擇要在今后用作系統默認的鍵盤布局類型(例如U.S.English),選定后,單擊next繼續。如果要在安裝結束以后,想改變鍵盤類型,可在系統啟動后窗口中單擊屏幕左下角的,彈出主菜單,選擇“系統設置/鍵盤”,
6、如果不是根用戶,系統會提示輸入根口令再繼續;或者在shell提示符下輸入redhat-config-keyboard命令,如果不是根用戶,系統會提示輸入根口令再繼續。步驟6,鼠標配置。為系統選擇正確的鼠標類型。如果找不到一個能確定與系統兼容的鼠標,可以根據鼠標的鍵數和它的接口,選擇“通用”項目中的一個。選定鼠標型號以后,單擊next繼續。如果在安裝結束以后改變鼠標配置,可在系統啟動后窗口中單擊屏幕左下角的,彈出主菜單,選擇“系統設置/鼠標”,如果不是根用戶,系統會提示輸入根口令再繼續;或者在shell提示符下輸入redhat-config-mouse命令,如果不是根用戶,系統會提示輸入根口令再
7、繼續。步驟7,選擇安裝還是升級。如果安裝程序在系統中檢測到從前安裝的Red Hat Linux版本,則“升級檢查”屏幕就會自動出現。這里考慮在系統上執行Red Hat Linux的新安裝,選擇“執行Red Hat Linux的新安裝”,然后單擊next繼續。步驟8,選擇要執行的安裝類型。Red Hat Linux的安裝類型選項有“個人桌面”、“工作站”、“服務器”、“定制” 和“升級”。選擇“個人桌面”,單擊next繼續。步驟9,網絡配置。安裝程序會自動檢測到機器中擁有的任何網絡設備,并把它們顯示在“網絡設備”列表中。選擇默認選項后,單擊next繼續。要在安裝結束以后改變網絡配置,可在系統啟動
8、后窗口中單擊屏幕左下角的“紅帽子”,彈出主菜單,選擇“系統設置/網絡”,如果不是根用戶,系統會提示輸入根口令再繼續;或者在shell提示符下輸入redhat-config-network命令,如果不是根用戶,系統會提示輸入根口令后再繼續。步驟10,為系統選擇恰當的安全級別。l “高級”:系統不會接受那些沒有被具體制定的連接(除了默認設置,例如DNS回應、DHCP之外)。如果要把系統連接到互聯網上,但是并不打算運行服務器,這是最安全的選擇。如果需要額外的服務,可以選擇“定制”來具體指定允許通過防火墻的服務。l “中級”:防火墻將不準系統訪問某些資源。可以選擇“定制”來具體指定允許通過防火墻的服務
9、。l “無防火墻”:給予完全訪問權,且不做任何安全檢查。l “信任的設備”:選擇“信任的設備”中的任何一個可使系統接受來自這一設備的全部通信而不受防火墻規則的限制。l “允許進入”:啟用這些選項,將允許具體指定的服務穿過防火墻。防火墻配置完畢,單擊next繼續。要在安裝完畢后改變安全級別配置,可在系統啟動后的窗口中單擊屏幕左下角的,彈出主菜單,選擇“系統設置/安全級別”,如果不是根用戶,系統會提示輸入根口令再繼續;或者在shell提示符下輸入redhat-config-securitylevel命令,如果不是根用戶,系統會提示輸入根口令后再繼續。步驟11,選擇時區。可以通過選擇計算機的物理位置
10、,或指定時區和通用協調時間(UTC)之間的偏移來設置時區。時區選定后,單擊next繼續。要在安裝完成以后改變時區配置,可在系統啟動后的窗口中單擊屏幕左下角的“紅帽子”,彈出主菜單,選擇“系統設置/日期&時間”,如果不是根用戶,系統會提示輸入根口令再繼續;或者在shell提示符下輸入redhat-config-date命令,如果不是根用戶,系統會提示輸入根口令后再繼續。步驟12,設置根口令。設置根賬號(即超級用戶帳號)及其口令是安裝過程中最重要的步驟之一。根賬號是用來安裝軟件包、升級RPM以及執行多數系統維護工作。作為根用戶登錄可獲得對系統的完全控制權。安裝程序會提示為系統設置一個根口令
11、。如果不輸入根口令,安裝程序將不允許繼續。根口令必須至少包括6個字符,所輸入的口令不會在屏幕上顯示,口令是區分大小寫的。根口令設置完畢,單擊next繼續。要在安裝以后改變根口令,可在系統啟動后的窗口中單擊屏幕左下角的,彈出主菜單,選擇“系統設置/根口令”,如果不是根用戶,系統會提示輸入根口令再繼續;或者在shell提示符下輸入redhat-config-rootpassword命令,如果不是根用戶,系統會提示輸入根口令后再繼續。步驟13,個人桌面的默認設置。安裝程序會自動選擇多數軟件包。單擊next繼續。步驟14,選擇軟件包組。在“其他”欄(組件列表的結尾處)選擇“全部”以安裝包括在Red H
12、at Linux中的所有軟件包。也可以在選擇軟件包組后,用鼠標選擇或取消選擇單個軟件包。要了解某一指定軟件包的詳情,可單擊該軟件包的名稱,關于它的信息將會在屏幕底部出現。某些軟件包(例如內核和某些庫)是每個系統所必需的,被系統默認選定,他們不能被選擇或取消選擇。軟件包設置完成后,單擊next繼續。步驟15,至此,應該可以看到為安裝Red Hat Linux而準備好的屏幕。如果由于某種原因希望中斷安裝進程,此處是可以安全取消安裝并重新引導系統的最后機會。一旦按下了“next”按鈕,分區將會被寫入,系統將會被安裝。注意:如果想中止安裝,應該在信息被寫入硬盤驅動器之前重新引導系統。繼續安裝,單擊ne
13、xt繼續。步驟16,安裝軟件包。在所有軟件包安裝完成之前,將不能進行任何其它操作。安裝的快慢取決于所選擇軟件包的數量和計算機的運行速度。依據安裝程序的提示,一次插入第1、第2、第3張Red Hat Linux系統光盤。步驟16,創建引導盤。要創建一張引導盤,可在軟驅中插入一張空白的、格式化了的磁盤,然后單擊next繼續。步驟17,視頻卡配置。安裝程序給出一個視頻卡列表供選擇。選定后(或接受系統的默認選擇),單擊next繼續。步驟18,顯示器配置。安裝程序給出一個顯示器列表供選擇。選定后(或接受系統的默認選擇),單擊next繼續。步驟19,定制圖形化配置。設置屏幕“色彩深度”和“屏幕分辨率”(或
14、接受系統的默認選擇),單擊next繼續。步驟20,安裝完成。至此,安裝完成。取出軟驅中的軟盤和光驅中的光盤。單擊“退出”按鈕,來重新引導系統。一份完整的安裝日志可在/root/install.log中找到,已備今后參考。四、登錄和退出Red Hat Linux系統 1、登錄系統打開計算機,選擇Red Hat Linux,Linux系統開始啟動,之后出現如下登錄界面:輸入用戶名,按回車,系統要求輸入口令,輸入口令后按回車。如果輸入的用戶名和口令正確,就會出現以下窗口至此,已經進入Linux系統。2、退出系統單擊窗口左下角的打開主菜單,選擇其中的“注銷”命令,在彈出的對話框中選擇“關閉系統”,單擊
15、“確定”按鈕。系統將關閉,等出現“power down”字樣時,可以關閉電源。還可使用其他方法退出系統,這里不再介紹。五、Linux系統的shell使用Linux系統時,用戶多數時間是通過shell與系統進行對話的。Shell是一個接受用戶輸入命令并將其轉換成指令的程序,是用戶與Linux系統之間的界面之一。shell 提示看起來類似你熟悉的其它命令行界面。用戶在 shell 提示下鍵入命令,shell 解釋這些命令,然后告訴 OS 該怎么做。有經驗的用戶可以編寫 shell 腳本來進一步擴展這些功能。要打開shell,可在啟動后的窗口中,單擊屏幕左下角的即主菜單,選擇“系統工具/終端”即可進
16、入shell。 還可以右擊桌面并從菜單中選擇新建終端來啟動 shell。Shell的界面如下:要退出 shell 提示,點擊 shell 提示窗口右上角的X 按鈕,或在提示中鍵入 exit,或按 Ctrl-D。Linux系統中可以使用的shell有:bash:Bourne Again Shell。由GNU(自由軟件基金會)開發。是Linux系統中最常用的shell,也是Red Hat Linux9x中默認的shell。合乎POSIX標準且與Bourne Shell兼容,提供了編輯命令行的功能。csh:c shell。由Berkeley(伯克利大學)開發,與Bourne Shell在交互式使用上
17、很多是兼容的,但在程序設計界面上卻有很大的不同。不提供命令行編輯功能。ksh:Korn Shell。在UNIX系統下得到普遍應用,提供了命令行編輯功能。sh: Bourne Shell。是原始的shell,不提供命令行編輯功能。tcsh:c shell的加強版,提供了命令行編輯功能。zsh:z shell。最新的shell,與Bourne Shell兼容,提供了命令行編輯功能。六、Linux系統文件、目錄和權限Linux文件名沒有標準格式。通常文件名可以包含任何字符(“/” 字符除外,“” 字符不能作為文件名的第一個字符),文件名的長度限制在256個字符以內。Linux文件名也提供了強大的通配
18、符:l 星號(*):可以匹配任何字符串。l 問號(?):可匹配任何單個字符。Linux系統中文件的權限有3種l Read(可讀)權限:可以讀取文件內的數據。l Write(可寫)權限:可以改變或刪除該文件。l Execute9(可執行)權限:可以把該文件當成程序執行。擁有root口令的用戶稱為超級用戶,超級用戶有權訪問整個系統,包括建立普通帳號、修改口令、安裝及卸載軟件等。超級用戶的提示符為#,普通用戶的提示符為$。在Linux文件系統根目錄下,有如下子目錄:bin、dev、etc、home、install、lib、mnt、proc、root、tem、user、var(不同版本,目錄會略有不同
19、)。/bin目錄:該目錄中存放許多基本的系統程序。/dev目錄:該目錄中存放的是設備驅動程序,用來訪問系統設備和資源。/home目錄:用戶主目錄,存放各用戶的子目錄。七、加載USB存儲設備1.在插入U盤或硬盤之前,以超級用戶的身份,在命令行窗口運行:fdisk -l 命令,系統將顯示目前所能識別到的硬件存儲設備;即:# fdisk -l顯示內容如:sda sda1 sda2 sdb sdb1 sdb2 等信息,其中,sda與sdb表示目前系統有兩個硬盤,后面帶有數字表示各個硬盤下的各區目錄;硬盤或存儲設備一般都是以sd開頭.2.插入U盤或硬盤,再次運行fdisk -l 命令,系統將再次顯示目前
20、所能識別到的硬件存儲設備,比較兩次輸出的不同,將發現第二次運行時會增加一些內容;系統將在原來的基礎上增加顯示:sdc,等內容,表示新插入的U盤或移動硬盤是掛靠在系統的sdc下.3.運行mount命令,如:#mkdir /mnt/usb 在mnt下建立usb(自己起的子目錄名)子目錄#mount t vfat /dev/sdc /mnt/usb4.運行完畢,可以直接在/mnt/usb目錄下,使用U盤或移動硬盤若要顯示U盤或移動硬盤中的中文文件名,可加參數“ o”,即:可輸入如下命令#mount t vfat /dev/sdc /mnt/usb o iocharset=gb23125. 斷開U盤或
21、移動硬盤之前,運行umount命令,保證數據不會造成丟失,命令如下:#umount /dev/sdc共5個步,即1、用root帳戶登錄;2、mkdir /mnt/usb;(注:創建掛載目錄)3、mount /mnt/sda1 /mnt/usb;(注:掛載U盤)4、現在就可以使用U盤了,在/mnt/usb目錄下的內容就是U盤里的內容了;5、使用完后,用以下命令卸載U盤即可。 #umount /mnt/usb第2章 Linux系統的Shell命令一、目錄管理命令1、建立目錄命令(mkdir)格式:mkdir 目錄名1 目錄名2 常用的選項有-m,指定目錄的模式,即訪問權限,用
22、3位八進制數字跟在后面表示。例:$mkdir d1 d2 d3在當前目錄下建立了3個子目錄,名字分別為d1、d2、d3$mkdir d4 m 775在當前目錄下建立名為d4的目錄,訪問權限為775,即該目錄的所有者和同組用戶有讀、寫和執行這個目錄的權限,其他用戶有讀和執行權限。2、刪除目錄(rmdir)格式:rmdir目錄名1 目錄名2 該命令一次可以刪除多個目錄,刪除目錄時要求目錄為空。另外,Linux系統還提供了rm命令刪除目錄和文件。Rm名令常用的選項有:-f:如果文件不存在則忽略,并且不提示。-r:遞歸地刪除目錄下的內容,rm只有加了這個參數才可以刪除目錄。3、改變工作目錄(cd)改變
23、工作目錄命令與PC-DOS的改變工作目錄命令一樣。注意,當轉到別的用戶目錄時,能執行的操作取決于該用戶賦予的權利。格式:cd 路徑名當不給出路徑名時,cd命令的執行就轉到用戶的注冊目錄(home)中,即由環境變量$HOME指定的目錄,否則,轉到按路徑名指定的目錄。例如:$cd d1進入到當前目錄下的d1目錄中$cd /home/y/d2按路徑名轉到d2目錄下。$cd 轉到y目錄下。指定路徑時,可以使用相對路徑,也可以用絕對路徑,這一點和PC-DOS一樣。注:要轉到某個目錄時,必須對那個目錄有執行權,否則出錯。4、確定當前目錄所在的位置(pwd)格式:pwd例如:$pwd/home/y/d1當前
24、目錄路徑為:/home/y/d15、列出某目錄下的內容(ls)該命令與PC-DOS中的dir命令類似,列出目錄下的各文件名。格式:ls 選擇項常用的選擇項有:-l:按長格式列出每個文件的全部屬性信息(如文件名、文件大小、文件的存取方法等)。-a:列出所有的文件名,包括以“.”開始的隱含文件。-s:對每個文件按塊給出大小。-i:在第1列給出每個文件的i節點號。-t:按文件最后修改時間排序列出。-R:列出包括子目錄下的文件名。6、目錄、文件改名和移動目錄、文件(mv)格式1:mv 源目錄名 目標目錄名功能:如果目標目錄不存在,則將源目錄名改為目標目錄名。如果目標目錄名已經存在,則將源目錄移到目標目
25、錄之下,作為它的子目錄。此時要求使用該命令的用戶對目標目錄有寫權限。格式2:mv 源文件名 目標文件名功能:將源文件名改為目標文件名。格式3:mv 文件名1 文件名2 目錄名功能:將文件1 文件2 傳送到指定的目錄中。常用的選項有:-f:如果目標文件存在,則覆蓋目標文件而不提示。-u:只復制目標中不存在的文件或更新過的文件。7、復制目錄或文件(cp)cp命令既可以復制目錄也可以復制文件格式1:cp 選擇項 源目錄名 目標目錄名功能:將一個或多個源目錄中的文件復制到目標目錄下。格式2:cp 選擇項 源文件名 目標文件名功能:把一個文件復制到另一個文件中。格式3:cp 選擇項 文件名1 文件名2
26、目錄名功能:把一個或多個文件復制到一目錄中。 說明:(1)當源目錄或源文件為多個時,各目錄名或各文件名之間用空格分開。(2)將一個文件復制到目錄時,該目錄必須是可寫的,否則復制失敗。當把一個文件復制到另一個文件時,若目標文件已經存在,則覆蓋之,但覆蓋文件的所有者的存取權限保持不變。常用的選擇項有:-i:當目標已經存在時,在覆蓋之前,先提示是否覆蓋;-f:如果目標文件存在,則覆蓋目標文件而不提示;-r:遞歸地復制源目錄到目標目錄;-u:只復制目標中不存在的文件或者更新過的文件;-R:遞歸地復制當前目錄及子目錄下的文件;-p:復制時保持文件的屬性;-d:復制時保持鏈接關系;8、顯示目錄所占磁盤空間
27、的大小(du)格式:du 選擇項 目錄名常用的選擇項有:-a:遞歸地顯示所有目錄下的文件占用的空間;-h:以可讀形式列出各文件大小;-s:只顯示該目錄的大小,目錄中的各文件占用的空間不顯示二、文件管理1、顯示文件內容命令(cat和more)(1)連接和顯示文件(cat)格式1:cat 文件1 文件2功能:連續顯示各文件的內容。各文件之間沒有標志也沒有空行。格式2:cat>file1功能:建立一個文件名為file1的文件。用ctrl+d組合鍵結束文件的輸入。格式3:cat 文件1 文件2文件3功能:將文件1和文件2的內容寫到文件3中。格式4:cat文件1 文件2文件3功能:將文件1和文件2
28、的內容附加到文件3的末尾。(2)分屏顯示文件內容(more)格式:more 選擇項 文件1 文件2如果一屏顯示不完,按空格鍵可以顯示下一屏的內容。隨時按q鍵退出該命令。常用的選擇項有:+行號:從文件的指定行號開始顯示。+/字符串:從文件中指定的字符串前兩行開始顯示。-s:把文件中的多個空行壓縮成一個空行。2、刪除文件命令(rm)格式:rm 選擇項 文件名1 文件名2常用的選擇項有:-f:如果文件不存在則忽略,并且刪除前不提示。-r:遞歸地刪除目錄下的內容,只有加了該參數才可以刪除目錄。3、統計文件中的行、字和字符數(wc)格式:wc 選擇項 文件名常用的選擇項有:-l:只對指定文件中的行進行統
29、計。-w:只對指定文件中的字進行統計。-c:只對指定文件中的字符進行統計。如果沒有選擇項,wc的統計順序為,先統計行,再統計字,然后統計字符。最后給出被統計的文件名。三、其它1、檢查磁盤剩余空間(df)2、echo格式: echo -n word/string此命令把每個單詞或字符串寫入shell的標準輸出.四、變量和參數在shell程序中,共有6種類型的變量1、變量的定義定義變量的格式:變量名=表達式用$可以取得變量的值,如:$num為num的值。2、位置變量位置變量是在調用shell程序的命令行中按照確定的位置決定的變量。位置變量用來存儲Shell程序后面所跟的參數。第一個參數存儲在變量1
30、中,第二個參數存儲在變量2中,依次類推。在程序名之后輸入的每個參數之間用空格分隔。$0是當前該命令文件的名字。例如,編寫一個Shell程序reverse,執行時帶兩個參數。輸出時,將兩個參數的位置顛倒。reverse的內容為:#program reverse, prints the command line parameters out in reverse orderecho "$2" "$1"在Shell下執行此Shell程序:reverse hello there其輸出為:there hello3、shell預定義變量有些變量在執行Shell程序時
31、系統就設置好了,并且不能加以修改:$# 存儲運行Shell程序時輸入的位置參數的個數。$? 存儲上一個執行命令的返回值。$* 存儲從第一個位置參數開始的所有位置參數的內容。$ 存儲所有命令行輸入的參數,分別表示為“$ 1”,“$ 2” . . . 。$ 存儲當前執行進程的進程標識PID。$! 存儲上一個后臺執行命令的進程標識PID。五、運算符和表達式Shell中的運算符包括運算符 描述 示例 文件運算符 -e filename 如果 filename存在,則為真 -e /var/log/syslog -d filename 如果 filename為目錄,則為真 -d /tmp/mydir -f
32、 filename 如果 filename為常規文件,則為真 -f /usr/bin/grep -L filename 如果 filename為符號鏈接,則為真 -L /usr/bin/grep -r filename 如果 filename可讀,則為真 -r /var/log/syslog -w filename 如果 filename可寫,則為真 -w /var/mytmp.txt -x filename 如果 filename可執行,則為真 -L /usr/bin/grep filename1-nt filename2 如果 filename1比 filename2新,則為真 /tmp/
33、install/etc/services -nt /etc/services filename1-ot filename2 如果 filename1比 filename2舊,則為真 /boot/bzImage -ot arch/i386/boot/bzImage 字符串比較運算符 (請注意引號的使用,這是防止空格擾亂代碼的好方法) -z string 如果 string長度為零,則為真 -z "$myvar" -n string 如果 string長度非零,則為真 -n "$myvar" string1= string2 如果 string1與 stri
34、ng2相同,則為真 "$myvar" = "one two three" string1!= string2 如果 string1與 string2不同,則為真 "$myvar" != "one two three" 算術比較運算符 num1-eq num2 等于 3 -eq $mynum num1-ne num2 不等于 3 -ne $mynum num1-lt num2 小于 3 -lt $mynum num1-le num2 小于或等于 3 -le $mynum num1-gt num2 大于 3 -gt $
35、mynum num1-ge num2 算術運算符:- +-*/%大于或等于(在*和/之前必須冠以反斜線“”)負號 加號 減號 乘號 除號 取余 3 -ge $mynum - 3 3 + 5 8 3 2 * 3 6 / 2 5 % 2 在腳本程序中可以用運算符將運算對象連接起來構成的式子稱為表達式。六、shell控制語句1、if語句格式1:if 條件表達式 then 命令序列 fi格式2:if 條件表達式 then 命令序列 else 命令序列 fi格式3:if 條件表達式 then 命令序列 elif 條件表達式 then 命令序列 else 命令序列 fi格式4:if test 條件表達式
36、then 命令序列 elif test 條件表達式 then 命令序列 . else 命令序列 fi說明:(1)格式1、格式2、格式3中的“”和“”兩側要留有空格(2)格式4中的“”不屬于if語句中的符號,只在本格式中說明“”中的內容可以重復出現多次。2、for循環語句 格式1: for 變量 in 值表do命令表done格式2: for 變量 in 文件正則表達式do命令表done 其執行過程是,變量的值依次取當前目錄下(或給定目錄下)與正則表達式相匹配的文件名,每取值一次,就進入循環體執行命令表,直至所有匹配的文件名取完為止,退出for循環。 格式3: for i in $* 或者 for
37、 i do do命令表 命令表done done 這兩種形式是等價的。其執行過程是,變量i 依次取位置參數的值,然后執行循環體中的命令表,直至所有位置參數取完為止。 3、while循環語句格式:while條件表達式 do命令表done 其執行過程是,先進行條件測試,如果結果為真,則進入循環體(dodone之間部分), 執行其中命令;然后再做條件測試直至測試條件為假時才終止while語句的執行。4、until語句格式:until 條件表達式do命令表done 它與while語句很相似,只是測試條件不同:當測試條件為假時,才進入循環體,直至測試條件為真時終止循環。5、break語句和continu
38、e語句break語句可以使我們從循環體中退出來。格式: break n 其中,n表示要跳出幾層循環。默認值是1,表示只跳出一層循環。 continue語句跳過循環體中在它之后的語句,回到本層循環的開頭,進行下一次循環。格式: continue n 其中,n表示從包含continue語句的最內層循環體向外跳到第幾層循環。默認值為1。循環層數是由內向外編號。 6、case語句case語句允許進行多重條件選擇。格式:case 字符串 in模式字符串1) 命令序列1; ;模式字符串2) 命令序列2; ;模式字符串n) 命令序列n; ;esac 其執行過程是用“字符串”的值依次與各模式字符串進行比較,如
39、果發現同某一個匹配,那么就執行該模式字符串之后的各個命令,直至遇到兩個分號為止。如果沒有任何模式字符串與該字符串的值相符合,則不執行任何命令。 在使用case語句時應注意:(1)每個模式字符串后面可有一條或多條命令,其最后一條命令必須以兩個分號(即;)結束。(2)模式字符串中可以使用通配符。(3) 如果一個模式字符串中包含多個模式,那么各模式之間應以豎線(|)隔開,表示各模式是“或”的關系,即只要給定字符串與其中一個模式相配,就會執行其后的命令表。(4)各模式字符串應是惟一的,不應重復出現。并且要合理安排它們的出現順序。例如,不應將“*”作為頭一個模式字符串,因為“*”可以與任何字符串匹配,它
40、若第一個出現,就不會再檢查其它模式了。(5)case語句以關鍵字case開頭,以關鍵字esac(是case倒過來寫!)結束。(6)case的退出(返回)值是整個結構中最后執行的那個命令的退出值。若沒有執行任何命令,則退出值為零。7、expr語句 雖然shell并不精于數值計算,但還是提供了有關的計算語句。格式:expr 表達式1 表達式2 表達式中只允許整數,合法的運算符有+、-、*、/和%(取余),在*(乘號)和/(除號)之前必須冠以(反斜杠),以防這些運算符由expr獲得之前被shell解釋。例如:$expr 3 * 5 + 2 / 2 16注意:運算符兩側要留有空格。8、read語句利用
41、read語句命令可以從鍵盤上讀取數據,然后賦給指定的變量格式:read 變量1 變量2 例如:read x y z輸入數據時,數據間以空格或制表符作為分隔符。如果變量個數與給定數據個數相同,則依次對應賦值;如果變量個數少于數據個數,則從左至右對應賦值,但最后一個變量被賦予剩余的所有數據;如果變量個數多于給定數據個數,則依次對應賦值,而沒有數據與之對應的變量取空串。9、舉例例1 從控制臺接收用戶輸入,并在標準輸出設備上顯示結果echo “Are you girl?please answer Y or N”read sexif $sex = “Y” ;thenecho “Hello girl!”e
42、cho “How are you!”else echo “Hello boy!”echo “How do you do!”fiecho “ABC”exit 0例2 echo “Are you girl?please answer Y or N”read sexif test $sex = “Y” then echo “Hello girl!”elif test $sex= “N”then echo “Hello boy!”else echo “sorry,$sex not recognized,please entey Y or N”exit 1fiexit 0例3 for day in Mo
43、n Tue Wed Thu Fri Sat Sundoecho $daydone 其執行過程是,變量day依次取值表中各字符串,即第一次將“Mon”賦給day,然后進入循環體,執行其中的命令,顯示出Mon。第二次將“Tue”賦給day,然后執行循環體中命令,顯示出Tue。依次處理,當day把值表中各字符串都取過一次之后,下面day的值就變為空串,從而結束for循環。因此,值表中字符串的個數就決定了for循環執行的次數。在格式上,值表中各字符串之間以空格隔開。例4 while $1 doif -f $1 then echo "display : $1 "cat $1else
44、echo "$1 is not a file name . "fishiftdone 這段程序對各個給定的位置參數,首先判斷其是否是普通文件,若是,則顯示其內容;否則,顯示它不是文件名的信息。每次循環處理一個位置參數$1,利用shift命令可把后續位置參數左移。 測試條件部分除使用test命令或等價的方括號外,還可以是一組命令。根據其最后一個命令的退出值決定是否進入循環體執行。例5 編寫一個簡單的刪除程序#name: del#author: liangnian#this program to compress a file to the dustbinif test $#
45、-eq 0 thenecho “Please specify a file!” elsegzip $1 /先對文件進行壓縮mv $1.gz $HOME/dustbin /移動到回收站echo “File $1 is deleted !”fi10、Shell腳本的建立和執行(1)Shell腳本的建立Shell程序可以存放在文件中,這種被Shell解釋執行的命令文件稱為Shell腳本 (Shell Script)。Shell腳本可以包含任意從鍵盤鍵入的Linux命令。建立Shell腳本的步驟同建立普通文本文件的方式相同,利用任何編輯器(如vi)進行程序錄入和編輯加工。例如,要建立一個名為ex1的S
46、hell腳本,可在提示符后輸入命令:$ viex1 進入vi的插入方式后,就可錄入程序行。完成編輯之后,將編輯緩沖區內容寫入文件中,返回到Shell命令狀態。(2)執行Shell腳本格式:$ bash腳本名參數 例如:$ bashex1 /usr/meng/usr/zhang Shell從文件ex1中讀取命令行,并執行它們。當Shell到達文件末尾時就終止執行,并把控制返回到Shell命令狀態。若有參數,則將參數值傳遞給程序中的命令,使一個Shell腳本可以處理多種情況,就如同函數調用時可根據具體問題給定相應的實參。第3章 Linux系統調用函數簡介1、fork( ):創建一個新進程格式:in
47、t fork()其中返回int值的意義如下: 0:創建子進程,從子進程返回>0:從父進程返回,返回值為子進程的進程標識符-1:創建失敗2、vfork( ):創建一個新進程格式:int vfork()其中返回int值的意義如下:0:創建子進程,從子進程返回>0:從父進程返回,返回值為子進程的進程標識符-1:創建失敗vfork()和fork()不同之處在于:在fork調用中,子進程復制父進程的數據區作為自己的數據區,能夠繼承已有的資源,從而對數據的操作不再影響父進程。vfork()函數在創建子進程后,先于父進程運行,父進程被阻塞,在子進程調用exec或exit之前,子進程與父進程共享數
48、據段,此時可對父進程的數據進行操作。3、execv():運行可執行文件格式:int execv(const char *file,char *argv,char *envp)其中返回int值的意義如下:0:正確返回-1:錯誤返回當一個進程調用execv函數執行另一個程序后,這個進程被新程序取代,包括代碼段、數據段、堆棧段等等,并繼承原進程的進程標識符。從自己的main()函數開始執行。新程序使用原進程的進程標識符和進程控制表里的一部分信息。 該函數要用到unistd.h頭文件,即在程序中要有#include<unistd.h>4、wait():進程的等待Wait函數常用來控制父進程
49、與子進程的同步。在父進程中調用wait函數,則父進程被阻塞,進入等待隊列,等待子進程結束。當子進程結束時,會產生一個終止狀態字,系統會向父進程發出SIGCHLD信號。當接收到信號后,父進程提取子進程的終止狀態字,從wait返回繼續執行原程序。該函數適用的頭文件如下:#include<sys/type.h>#include<sys/wait.h>函數格式:pidt wait(int *statloc)子進程ID:正確返回 0:其他 -1:錯誤返回可以使用系統提供的宏來獲得子進程終止時的信息,這些宏定義在sys/wait.h頭文件中,具體含義如下:WIFEXITED(sta
50、tus):子進程正常終止,返回真。WEXITSTATUS(status):如果WIFEXITED返回真,則該宏返回子進程的exit碼。WIFSIGNALED(status):子進程非正常終止,返回真。WTERMSIG(status):如果WIFSIGNALED返回真,則該宏返回引起子進程終止的信號值。WIFSTOPPED(status):子進程已結束,返回真。WSTOPSIG(status):如果WIFSTOPPED返回真,則該宏返回引起子進程結束的信號值。5、waitpid()如果父進程創建了多個子進程同時在運行,則父進程中wait函數會捕獲它任一個子進程的結束信號,而無法讓它確定地去捕獲某
51、一個進程的結束信號。Waitpid函數則解決了這個問題。該函數適用的頭文件如下:#include<sys/type.h>#include<sys/wait.h>函數格式:pidt waitpid(pidt pid,int *statloc,int options)子進程ID:正確返回 0:其他 -1:錯誤返回參數pid的值決定要求父進程等待的不同特征的子進程,含義如下:0:與父進程組ID相同的子進程。>0:進程ID為pid的子進程。-1:任意子進程。此時與wait函數功能相同。<-1:進程組ID為pid絕對值的子進程。Statloc所指的地址用于存放子進程的
52、終止狀態字。Options控制waitpid的執行,常用的參數如WNOHANG:若waitpid函數沒得到指定子進程的結束信號,則立即返回零,不會阻塞。6、exit():結束進程 進程結束最常用的方法是調用exit函數,在main函數中調用的return,最終也是調用exit,這些都屬于進程的正常終止。該函數適用的頭文件如下:#include<stdio.h>函數格式:void exit(int status)Status為進程結束狀態。在子進程調用exit后,子進程的結束狀態會返回給系統內核,由內核根據狀態字生成終止狀態,供父進程在wait或waitpid函數中讀取。如果子進程結
53、束后,父進程還沒有讀取子進程的終止狀態,則系統就將子進程的狀態置為“ZOMBIE”,并保留子進程的進程控制塊,里面記錄著進程標識符、終止狀態字、CPU時間等信息,等父進程讀取信息后,系統才徹底釋放子進程的進程控制塊。7、msgget():獲得一個消息的描述符,該描述符指定一個消息隊列以便用于其他系統調用。該函數適用的頭文件如下:#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>函數格式:int msgget(key,flag) keyt key; int flag ;消息隊列的標識符:正確返
54、回 -1: 錯誤返回Key是鍵值,這個鍵值要與已有的鍵值進行比較,已有的鍵值指在內核中已存在的其他消息隊列鍵值。當key的值為IPCPRIVATE時,創建一個新的消息隊列;當key的值不為IPCPRIVATE時,對消息隊列的打開或存取操作依賴于flag參數的取值。8、msgsnd():發送一條消息給一個消息隊列該函數適用的頭文件如下:#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>函數格式:int msgsnd(id,smgp,size,flag) int id,size,flag; struct msgbuf* msgp;消息隊列的標識符:正確返回 -1:錯誤返回其中:id是返回消息隊列的標識符;msgp是指向用戶存儲區的一個構造體指針,size指示由msgp指向的數據結構中字符數組的長度,即消息隊列的長度;flag規定當核心用盡內部緩沖空間時應執行的動作;若在標志flag中未設置IPCNOWAIT位,則當該消息隊列中的字節數超過一最大值時,或系統范圍的消息數超過某一最大值時,則調用進程將被阻塞,進入等待隊列;若設置IPCNOWAIT,msgs
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全教員培訓試題及答案
- 樂隊架子鼓面試題及答案
- 生物安全實驗室安全作業環境協議
- 2025食品采購合同范本
- 統編版九年級上冊語文第五單元教學設計
- 望水小說試題及答案
- 專技崗面試試題及答案
- 2024水利考試試題及答案一建
- 電熱電動考試題及答案
- 勞動保障考試題及答案
- 翻身拍背護理
- 高層建筑火災撲救危險識別與應對
- 廣播電視節目評析期末考試資料
- 重慶市沙坪壩區第八中學校2023-2024學年八年級下學期期末英語試題(解析版)
- 江西省南昌市西湖區2023-2024學年五年級下學期期末數學試題
- 植物拓染非物質文化遺產傳承拓花草之印染自然之美課件
- TD/T 1044-2014 生產項目土地復墾驗收規程(正式版)
- 霧化吸入團體標準解讀
- MOOC 質量工程技術基礎-北京航空航天大學 中國大學慕課答案
- 【數字人民幣對貨幣政策的影響及政策探究12000字(論文)】
- 江蘇省鹽城市大豐區2023-2024學年八年級上學期期中數學試題(解析版)
評論
0/150
提交評論