Linux操作系統(tǒng)實驗教程.doc_第1頁
Linux操作系統(tǒng)實驗教程.doc_第2頁
Linux操作系統(tǒng)實驗教程.doc_第3頁
Linux操作系統(tǒng)實驗教程.doc_第4頁
Linux操作系統(tǒng)實驗教程.doc_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

Linux操作系統(tǒng)實驗教程第1章 Linux系統(tǒng)概述一、 Linux系統(tǒng)結(jié)構(gòu)從操作系統(tǒng)的角度來分析Linux,它的體系結(jié)構(gòu)總體上屬于層次結(jié)構(gòu)如下圖所示: 從內(nèi)到外包括三層:最內(nèi)層是系統(tǒng)核心,中間是Shell、編譯編輯實用程序、庫函數(shù)等,最外層是用戶程序,包括許多應用軟件。從操作系統(tǒng)的功能角度來看,它的核心有五大部分組成:進程管理、存儲管理、文件管理、設備管理、網(wǎng)絡管理。各子系統(tǒng)實現(xiàn)其主要功能,同時相互之間是合作、依賴的關(guān)系。進程會管理是操作系統(tǒng)最核心的內(nèi)容,它控制了整個系統(tǒng)的進程調(diào)度和進程之間的通信,是整個系統(tǒng)合理高效運行的關(guān)鍵;存儲管理為其他子系統(tǒng)提供內(nèi)存管理支持,同時其他子系統(tǒng)又為內(nèi)存管理提供了實現(xiàn)支持,例如要通過文件管理和設備管理實現(xiàn)虛擬存儲器和內(nèi)外存的統(tǒng)一管理。二、 配置一個雙引導系統(tǒng)如果計算機中已經(jīng)安裝了其他操作系統(tǒng),并想創(chuàng)建一個引導系統(tǒng)以便兼用Red Hat Linux和另外的操作系統(tǒng),需要使用雙引導。機器啟動時,可以選擇其中之一,但不能同時使用兩者。每個操作系統(tǒng)都從自己的硬盤驅(qū)動器或硬盤分區(qū)中引導,并使用自己的硬盤驅(qū)動器或硬盤分區(qū)。如果計算機上還沒有安裝任何操作系統(tǒng),可以使用專門的分區(qū)及格式化軟件給Windows創(chuàng)建指定大小的分區(qū),Windows的文件系統(tǒng)為FAT,再為Linux系統(tǒng)創(chuàng)建所需要大小的分區(qū)(4G或更大),另外再給Linux留100MB左右的交換分區(qū),Linux的文件系統(tǒng)為ext2。然后就可以安裝系統(tǒng)了。應首先安裝Windows,然后再安裝Red Hat Linux。如果只進行了分區(qū)而沒有格式化各分區(qū),在安裝時可以使用Windows自帶的格式化程序和Linux 自帶的格式化程序進行各自分區(qū)的格式化。當Windows已經(jīng)被安裝,而且已為Linux準備了足夠的磁盤空間,就可以安裝Linux了。Red Hat Linux安裝程序通常會檢測到Windows并自動配置引導程序來引導Windows或Red Hat Linux。安裝完成之后,無論在什么時候啟動計算機,都能夠在引導裝載程序屏幕中指明想啟動Red Hat Linux還是另外的操作系統(tǒng)。選擇Red Hat Linux來引導Red Hat Linux;選擇DOS來引導Windows。三、 Red Hat Linux的安裝將Red Hat Linux9.X安裝光盤插入光驅(qū),然后啟動計算機,即可從CD-ROM啟動Red Hat Linux9.X安裝程序。步驟1,機器啟動之后,顯示boot提示屏幕,其中包括幾個不同的引導選項,每個引導選項還有一個或多個與之關(guān)聯(lián)的幫助屏幕。以圖形方式從光盤中安裝Red Hat Linux,單擊“回車”鍵繼續(xù)安裝。步驟2,安裝程序檢測用戶系統(tǒng)并試圖識別光驅(qū)。如果找到了,會進入安裝進程的下一個階段。這時若要終止安裝進程,應取出光盤,重新引導機器。步驟3,歡迎使用Red Hat Linux,歡迎屏幕并不提示做任何輸入??砷喿x左側(cè)面板內(nèi)的幫助文字來獲得附加的說明,以及關(guān)于如何注冊Red Hat Linux產(chǎn)品的信息。單擊next繼續(xù)步驟4,語言選擇。使用鼠標選擇要使用的語言。選擇恰當?shù)恼Z言會在稍后的安裝中幫助定位時區(qū)配置。安裝程序?qū)鶕?jù)這個屏幕上所指定的信息來定義恰當?shù)臅r區(qū)。選擇恰當?shù)恼Z言(例如簡體中文)后,單擊next繼續(xù)。步驟5, 鍵盤配置。用鼠標選擇要在今后用作系統(tǒng)默認的鍵盤布局類型(例如U.S.English),選定后,單擊next繼續(xù)。如果要在安裝結(jié)束以后,想改變鍵盤類型,可在系統(tǒng)啟動后窗口中單擊屏幕左下角的,彈出主菜單,選擇“系統(tǒng)設置/鍵盤”,如果不是根用戶,系統(tǒng)會提示輸入根口令再繼續(xù);或者在shell提示符下輸入redhat-config-keyboard命令,如果不是根用戶,系統(tǒng)會提示輸入根口令再繼續(xù)。步驟6,鼠標配置。為系統(tǒng)選擇正確的鼠標類型。如果找不到一個能確定與系統(tǒng)兼容的鼠標,可以根據(jù)鼠標的鍵數(shù)和它的接口,選擇“通用”項目中的一個。選定鼠標型號以后,單擊next繼續(xù)。如果在安裝結(jié)束以后改變鼠標配置,可在系統(tǒng)啟動后窗口中單擊屏幕左下角的,彈出主菜單,選擇“系統(tǒng)設置/鼠標”,如果不是根用戶,系統(tǒng)會提示輸入根口令再繼續(xù);或者在shell提示符下輸入redhat-config-mouse命令,如果不是根用戶,系統(tǒng)會提示輸入根口令再繼續(xù)。步驟7,選擇安裝還是升級。如果安裝程序在系統(tǒng)中檢測到從前安裝的Red Hat Linux版本,則“升級檢查”屏幕就會自動出現(xiàn)。這里考慮在系統(tǒng)上執(zhí)行Red Hat Linux的新安裝,選擇“執(zhí)行Red Hat Linux的新安裝”,然后單擊next繼續(xù)。步驟8,選擇要執(zhí)行的安裝類型。Red Hat Linux的安裝類型選項有“個人桌面”、“工作站”、“服務器”、“定制” 和“升級”。選擇“個人桌面”,單擊next繼續(xù)。步驟9,網(wǎng)絡配置。安裝程序會自動檢測到機器中擁有的任何網(wǎng)絡設備,并把它們顯示在“網(wǎng)絡設備”列表中。選擇默認選項后,單擊next繼續(xù)。要在安裝結(jié)束以后改變網(wǎng)絡配置,可在系統(tǒng)啟動后窗口中單擊屏幕左下角的“紅帽子”,彈出主菜單,選擇“系統(tǒng)設置/網(wǎng)絡”,如果不是根用戶,系統(tǒng)會提示輸入根口令再繼續(xù);或者在shell提示符下輸入redhat-config-network命令,如果不是根用戶,系統(tǒng)會提示輸入根口令后再繼續(xù)。步驟10,為系統(tǒng)選擇恰當?shù)陌踩墑e。l “高級”:系統(tǒng)不會接受那些沒有被具體制定的連接(除了默認設置,例如DNS回應、DHCP之外)。如果要把系統(tǒng)連接到互聯(lián)網(wǎng)上,但是并不打算運行服務器,這是最安全的選擇。如果需要額外的服務,可以選擇“定制”來具體指定允許通過防火墻的服務。l “中級”:防火墻將不準系統(tǒng)訪問某些資源??梢赃x擇“定制”來具體指定允許通過防火墻的服務。l “無防火墻”:給予完全訪問權(quán),且不做任何安全檢查。l “信任的設備”:選擇“信任的設備”中的任何一個可使系統(tǒng)接受來自這一設備的全部通信而不受防火墻規(guī)則的限制。l “允許進入”:啟用這些選項,將允許具體指定的服務穿過防火墻。防火墻配置完畢,單擊next繼續(xù)。要在安裝完畢后改變安全級別配置,可在系統(tǒng)啟動后的窗口中單擊屏幕左下角的,彈出主菜單,選擇“系統(tǒng)設置/安全級別”,如果不是根用戶,系統(tǒng)會提示輸入根口令再繼續(xù);或者在shell提示符下輸入redhat-config-securitylevel命令,如果不是根用戶,系統(tǒng)會提示輸入根口令后再繼續(xù)。步驟11,選擇時區(qū)??梢酝ㄟ^選擇計算機的物理位置,或指定時區(qū)和通用協(xié)調(diào)時間(UTC)之間的偏移來設置時區(qū)。時區(qū)選定后,單擊next繼續(xù)。要在安裝完成以后改變時區(qū)配置,可在系統(tǒng)啟動后的窗口中單擊屏幕左下角的“紅帽子”,彈出主菜單,選擇“系統(tǒng)設置/日期&時間”,如果不是根用戶,系統(tǒng)會提示輸入根口令再繼續(xù);或者在shell提示符下輸入redhat-config-date命令,如果不是根用戶,系統(tǒng)會提示輸入根口令后再繼續(xù)。步驟12,設置根口令。設置根賬號(即超級用戶帳號)及其口令是安裝過程中最重要的步驟之一。根賬號是用來安裝軟件包、升級RPM以及執(zhí)行多數(shù)系統(tǒng)維護工作。作為根用戶登錄可獲得對系統(tǒng)的完全控制權(quán)。安裝程序會提示為系統(tǒng)設置一個根口令。如果不輸入根口令,安裝程序?qū)⒉辉试S繼續(xù)。根口令必須至少包括6個字符,所輸入的口令不會在屏幕上顯示,口令是區(qū)分大小寫的。根口令設置完畢,單擊next繼續(xù)。要在安裝以后改變根口令,可在系統(tǒng)啟動后的窗口中單擊屏幕左下角的,彈出主菜單,選擇“系統(tǒng)設置/根口令”,如果不是根用戶,系統(tǒng)會提示輸入根口令再繼續(xù);或者在shell提示符下輸入redhat-config-rootpassword命令,如果不是根用戶,系統(tǒng)會提示輸入根口令后再繼續(xù)。步驟13,個人桌面的默認設置。安裝程序會自動選擇多數(shù)軟件包。單擊next繼續(xù)。步驟14,選擇軟件包組。在“其他”欄(組件列表的結(jié)尾處)選擇“全部”以安裝包括在Red Hat Linux中的所有軟件包。也可以在選擇軟件包組后,用鼠標選擇或取消選擇單個軟件包。要了解某一指定軟件包的詳情,可單擊該軟件包的名稱,關(guān)于它的信息將會在屏幕底部出現(xiàn)。某些軟件包(例如內(nèi)核和某些庫)是每個系統(tǒng)所必需的,被系統(tǒng)默認選定,他們不能被選擇或取消選擇。軟件包設置完成后,單擊next繼續(xù)。步驟15,至此,應該可以看到為安裝Red Hat Linux而準備好的屏幕。如果由于某種原因希望中斷安裝進程,此處是可以安全取消安裝并重新引導系統(tǒng)的最后機會。一旦按下了“next”按鈕,分區(qū)將會被寫入,系統(tǒng)將會被安裝。注意:如果想中止安裝,應該在信息被寫入硬盤驅(qū)動器之前重新引導系統(tǒng)。繼續(xù)安裝,單擊next繼續(xù)。步驟16,安裝軟件包。在所有軟件包安裝完成之前,將不能進行任何其它操作。安裝的快慢取決于所選擇軟件包的數(shù)量和計算機的運行速度。依據(jù)安裝程序的提示,一次插入第1、第2、第3張Red Hat Linux系統(tǒng)光盤。步驟16,創(chuàng)建引導盤。要創(chuàng)建一張引導盤,可在軟驅(qū)中插入一張空白的、格式化了的磁盤,然后單擊next繼續(xù)。步驟17,視頻卡配置。安裝程序給出一個視頻卡列表供選擇。選定后(或接受系統(tǒng)的默認選擇),單擊next繼續(xù)。步驟18,顯示器配置。安裝程序給出一個顯示器列表供選擇。選定后(或接受系統(tǒng)的默認選擇),單擊next繼續(xù)。步驟19,定制圖形化配置。設置屏幕“色彩深度”和“屏幕分辨率”(或接受系統(tǒng)的默認選擇),單擊next繼續(xù)。步驟20,安裝完成。至此,安裝完成。取出軟驅(qū)中的軟盤和光驅(qū)中的光盤。單擊“退出”按鈕,來重新引導系統(tǒng)。一份完整的安裝日志可在/root/install.log中找到,已備今后參考。四、登錄和退出Red Hat Linux系統(tǒng) 1、登錄系統(tǒng)打開計算機,選擇Red Hat Linux,Linux系統(tǒng)開始啟動,之后出現(xiàn)如下登錄界面:輸入用戶名,按回車,系統(tǒng)要求輸入口令,輸入口令后按回車。如果輸入的用戶名和口令正確,就會出現(xiàn)以下窗口至此,已經(jīng)進入Linux系統(tǒng)。2、退出系統(tǒng)單擊窗口左下角的打開主菜單,選擇其中的“注銷”命令,在彈出的對話框中選擇“關(guān)閉系統(tǒng)”,單擊“確定”按鈕。系統(tǒng)將關(guān)閉,等出現(xiàn)“power down”字樣時,可以關(guān)閉電源。還可使用其他方法退出系統(tǒng),這里不再介紹。五、Linux系統(tǒng)的shell使用Linux系統(tǒng)時,用戶多數(shù)時間是通過shell與系統(tǒng)進行對話的。Shell是一個接受用戶輸入命令并將其轉(zhuǎn)換成指令的程序,是用戶與Linux系統(tǒng)之間的界面之一。shell 提示看起來類似你熟悉的其它命令行界面。用戶在 shell 提示下鍵入命令,shell 解釋這些命令,然后告訴 OS 該怎么做。有經(jīng)驗的用戶可以編寫 shell 腳本來進一步擴展這些功能。要打開shell,可在啟動后的窗口中,單擊屏幕左下角的即主菜單,選擇“系統(tǒng)工具/終端”即可進入shell。 還可以右擊桌面并從菜單中選擇新建終端來啟動 shell。Shell的界面如下:要退出 shell 提示,點擊 shell 提示窗口右上角的X 按鈕,或在提示中鍵入 exit,或按 Ctrl-D。Linux系統(tǒng)中可以使用的shell有:bash:Bourne Again Shell。由GNU(自由軟件基金會)開發(fā)。是Linux系統(tǒng)中最常用的shell,也是Red Hat Linux9x中默認的shell。合乎POSIX標準且與Bourne Shell兼容,提供了編輯命令行的功能。csh:c shell。由Berkeley(伯克利大學)開發(fā),與Bourne Shell在交互式使用上很多是兼容的,但在程序設計界面上卻有很大的不同。不提供命令行編輯功能。ksh:Korn Shell。在UNIX系統(tǒng)下得到普遍應用,提供了命令行編輯功能。sh: Bourne Shell。是原始的shell,不提供命令行編輯功能。tcsh:c shell的加強版,提供了命令行編輯功能。zsh:z shell。最新的shell,與Bourne Shell兼容,提供了命令行編輯功能。六、Linux系統(tǒng)文件、目錄和權(quán)限Linux文件名沒有標準格式。通常文件名可以包含任何字符(“/” 字符除外,“” 字符不能作為文件名的第一個字符),文件名的長度限制在256個字符以內(nèi)。Linux文件名也提供了強大的通配符:l 星號(*):可以匹配任何字符串。l 問號(?):可匹配任何單個字符。Linux系統(tǒng)中文件的權(quán)限有3種l Read(可讀)權(quán)限:可以讀取文件內(nèi)的數(shù)據(jù)。l Write(可寫)權(quán)限:可以改變或刪除該文件。l Execute9(可執(zhí)行)權(quán)限:可以把該文件當成程序執(zhí)行。擁有root口令的用戶稱為超級用戶,超級用戶有權(quán)訪問整個系統(tǒng),包括建立普通帳號、修改口令、安裝及卸載軟件等。超級用戶的提示符為#,普通用戶的提示符為$。在Linux文件系統(tǒng)根目錄下,有如下子目錄:bin、dev、etc、home、install、lib、mnt、proc、root、tem、user、var(不同版本,目錄會略有不同)。/bin目錄:該目錄中存放許多基本的系統(tǒng)程序。/dev目錄:該目錄中存放的是設備驅(qū)動程序,用來訪問系統(tǒng)設備和資源。/home目錄:用戶主目錄,存放各用戶的子目錄。七、加載USB存儲設備1.在插入U盤或硬盤之前,以超級用戶的身份,在命令行窗口運行:fdisk -l 命令,系統(tǒng)將顯示目前所能識別到的硬件存儲設備;即:# fdisk -l顯示內(nèi)容如:sda sda1 sda2 sdb sdb1 sdb2 等信息,其中,sda與sdb表示目前系統(tǒng)有兩個硬盤,后面帶有數(shù)字表示各個硬盤下的各區(qū)目錄;硬盤或存儲設備一般都是以sd開頭.2.插入U盤或硬盤,再次運行fdisk -l 命令,系統(tǒng)將再次顯示目前所能識別到的硬件存儲設備,比較兩次輸出的不同,將發(fā)現(xiàn)第二次運行時會增加一些內(nèi)容;系統(tǒng)將在原來的基礎上增加顯示:sdc,等內(nèi)容,表示新插入的U盤或移動硬盤是掛靠在系統(tǒng)的sdc下.3.運行mount命令,如:#mkdir /mnt/usb 在mnt下建立usb(自己起的子目錄名)子目錄#mount t vfat /dev/sdc /mnt/usb4.運行完畢,可以直接在/mnt/usb目錄下,使用U盤或移動硬盤若要顯示U盤或移動硬盤中的中文文件名,可加參數(shù)“ o”,即:可輸入如下命令#mount t vfat /dev/sdc /mnt/usb o iocharset=gb23125. 斷開U盤或移動硬盤之前,運行umount命令,保證數(shù)據(jù)不會造成丟失,命令如下:#umount /dev/sdc共5個步,即1、用root帳戶登錄;2、mkdir /mnt/usb;(注:創(chuàng)建掛載目錄)3、mount /mnt/sda1 /mnt/usb;(注:掛載U盤)4、現(xiàn)在就可以使用U盤了,在/mnt/usb目錄下的內(nèi)容就是U盤里的內(nèi)容了;5、使用完后,用以下命令卸載U盤即可。#umount /mnt/usb第2章 Linux系統(tǒng)的Shell命令一、目錄管理命令1、建立目錄命令(mkdir)格式:mkdir 目錄名1 目錄名2 常用的選項有-m,指定目錄的模式,即訪問權(quán)限,用3位八進制數(shù)字跟在后面表示。例:$mkdir d1 d2 d3在當前目錄下建立了3個子目錄,名字分別為d1、d2、d3$mkdir d4 m 775在當前目錄下建立名為d4的目錄,訪問權(quán)限為775,即該目錄的所有者和同組用戶有讀、寫和執(zhí)行這個目錄的權(quán)限,其他用戶有讀和執(zhí)行權(quán)限。2、刪除目錄(rmdir)格式:rmdir目錄名1 目錄名2 該命令一次可以刪除多個目錄,刪除目錄時要求目錄為空。另外,Linux系統(tǒng)還提供了rm命令刪除目錄和文件。Rm名令常用的選項有:-f:如果文件不存在則忽略,并且不提示。-r:遞歸地刪除目錄下的內(nèi)容,rm只有加了這個參數(shù)才可以刪除目錄。3、改變工作目錄(cd)改變工作目錄命令與PC-DOS的改變工作目錄命令一樣。注意,當轉(zhuǎn)到別的用戶目錄時,能執(zhí)行的操作取決于該用戶賦予的權(quán)利。格式:cd 路徑名當不給出路徑名時,cd命令的執(zhí)行就轉(zhuǎn)到用戶的注冊目錄(home)中,即由環(huán)境變量$HOME指定的目錄,否則,轉(zhuǎn)到按路徑名指定的目錄。例如:$cd d1進入到當前目錄下的d1目錄中$cd /home/y/d2按路徑名轉(zhuǎn)到d2目錄下。$cd 轉(zhuǎn)到y(tǒng)目錄下。指定路徑時,可以使用相對路徑,也可以用絕對路徑,這一點和PC-DOS一樣。注:要轉(zhuǎn)到某個目錄時,必須對那個目錄有執(zhí)行權(quán),否則出錯。4、確定當前目錄所在的位置(pwd)格式:pwd例如:$pwd/home/y/d1當前目錄路徑為:/home/y/d15、列出某目錄下的內(nèi)容(ls)該命令與PC-DOS中的dir命令類似,列出目錄下的各文件名。格式:ls 選擇項常用的選擇項有:-l:按長格式列出每個文件的全部屬性信息(如文件名、文件大小、文件的存取方法等)。-a:列出所有的文件名,包括以“.”開始的隱含文件。-s:對每個文件按塊給出大小。-i:在第1列給出每個文件的i節(jié)點號。-t:按文件最后修改時間排序列出。-R:列出包括子目錄下的文件名。6、目錄、文件改名和移動目錄、文件(mv)格式1:mv 源目錄名 目標目錄名功能:如果目標目錄不存在,則將源目錄名改為目標目錄名。如果目標目錄名已經(jīng)存在,則將源目錄移到目標目錄之下,作為它的子目錄。此時要求使用該命令的用戶對目標目錄有寫權(quán)限。格式2:mv 源文件名 目標文件名功能:將源文件名改為目標文件名。格式3:mv 文件名1 文件名2 目錄名功能:將文件1 文件2 傳送到指定的目錄中。常用的選項有:-f:如果目標文件存在,則覆蓋目標文件而不提示。-u:只復制目標中不存在的文件或更新過的文件。7、復制目錄或文件(cp)cp命令既可以復制目錄也可以復制文件格式1:cp 選擇項 源目錄名 目標目錄名功能:將一個或多個源目錄中的文件復制到目標目錄下。格式2:cp 選擇項 源文件名 目標文件名功能:把一個文件復制到另一個文件中。格式3:cp 選擇項 文件名1 文件名2 目錄名功能:把一個或多個文件復制到一目錄中。 說明:(1)當源目錄或源文件為多個時,各目錄名或各文件名之間用空格分開。(2)將一個文件復制到目錄時,該目錄必須是可寫的,否則復制失敗。當把一個文件復制到另一個文件時,若目標文件已經(jīng)存在,則覆蓋之,但覆蓋文件的所有者的存取權(quán)限保持不變。常用的選擇項有:-i:當目標已經(jīng)存在時,在覆蓋之前,先提示是否覆蓋;-f:如果目標文件存在,則覆蓋目標文件而不提示;-r:遞歸地復制源目錄到目標目錄;-u:只復制目標中不存在的文件或者更新過的文件;-R:遞歸地復制當前目錄及子目錄下的文件;-p:復制時保持文件的屬性;-d:復制時保持鏈接關(guān)系;8、顯示目錄所占磁盤空間的大?。╠u)格式:du 選擇項 目錄名常用的選擇項有:-a:遞歸地顯示所有目錄下的文件占用的空間;-h:以可讀形式列出各文件大小;-s:只顯示該目錄的大小,目錄中的各文件占用的空間不顯示二、文件管理1、顯示文件內(nèi)容命令(cat和more)(1)連接和顯示文件(cat)格式1:cat 文件1 文件2功能:連續(xù)顯示各文件的內(nèi)容。各文件之間沒有標志也沒有空行。格式2:catfile1功能:建立一個文件名為file1的文件。用ctrl+d組合鍵結(jié)束文件的輸入。格式3:cat 文件1 文件2文件3功能:將文件1和文件2的內(nèi)容寫到文件3中。格式4:cat文件1 文件2文件3功能:將文件1和文件2的內(nèi)容附加到文件3的末尾。(2)分屏顯示文件內(nèi)容(more)格式:more 選擇項 文件1 文件2如果一屏顯示不完,按空格鍵可以顯示下一屏的內(nèi)容。隨時按q鍵退出該命令。常用的選擇項有:+行號:從文件的指定行號開始顯示。+/字符串:從文件中指定的字符串前兩行開始顯示。-s:把文件中的多個空行壓縮成一個空行。2、刪除文件命令(rm)格式:rm 選擇項 文件名1 文件名2常用的選擇項有:-f:如果文件不存在則忽略,并且刪除前不提示。-r:遞歸地刪除目錄下的內(nèi)容,只有加了該參數(shù)才可以刪除目錄。3、統(tǒng)計文件中的行、字和字符數(shù)(wc)格式:wc 選擇項 文件名常用的選擇項有:-l:只對指定文件中的行進行統(tǒng)計。-w:只對指定文件中的字進行統(tǒng)計。-c:只對指定文件中的字符進行統(tǒng)計。如果沒有選擇項,wc的統(tǒng)計順序為,先統(tǒng)計行,再統(tǒng)計字,然后統(tǒng)計字符。最后給出被統(tǒng)計的文件名。三、其它1、檢查磁盤剩余空間(df)2、echo格式: echo -n word/string此命令把每個單詞或字符串寫入shell的標準輸出.四、變量和參數(shù)在shell程序中,共有6種類型的變量1、變量的定義定義變量的格式:變量名=表達式用$可以取得變量的值,如:$num為num的值。2、位置變量位置變量是在調(diào)用shell程序的命令行中按照確定的位置決定的變量。位置變量用來存儲Shell程序后面所跟的參數(shù)。第一個參數(shù)存儲在變量1中,第二個參數(shù)存儲在變量2中,依次類推。在程序名之后輸入的每個參數(shù)之間用空格分隔。$0是當前該命令文件的名字。例如,編寫一個Shell程序reverse,執(zhí)行時帶兩個參數(shù)。輸出時,將兩個參數(shù)的位置顛倒。reverse的內(nèi)容為:#program reverse, prints the command line parameters out in reverse orderecho $2 $1在Shell下執(zhí)行此Shell程序:reverse hello there其輸出為:there hello3、shell預定義變量有些變量在執(zhí)行Shell程序時系統(tǒng)就設置好了,并且不能加以修改:$# 存儲運行Shell程序時輸入的位置參數(shù)的個數(shù)。$? 存儲上一個執(zhí)行命令的返回值。$* 存儲從第一個位置參數(shù)開始的所有位置參數(shù)的內(nèi)容。$ 存儲所有命令行輸入的參數(shù),分別表示為“$ 1”,“$ 2” . . . 。$ 存儲當前執(zhí)行進程的進程標識PID。$! 存儲上一個后臺執(zhí)行命令的進程標識PID。五、運算符和表達式Shell中的運算符包括運算符 描述 示例 文件運算符 -e filename 如果 filename存在,則為真 -e /var/log/syslog -d filename 如果 filename為目錄,則為真 -d /tmp/mydir -f filename 如果 filename為常規(guī)文件,則為真 -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可執(zhí)行,則為真 -L /usr/bin/grep filename1-nt filename2 如果 filename1比 filename2新,則為真 /tmp/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與 string2相同,則為真 $myvar = one two three string1!= string2 如果 string1與 string2不同,則為真 $myvar != one two three 算術(shù)比較運算符 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 $mynum num1-ge num2 算術(shù)運算符:- +-*/%大于或等于(在*和/之前必須冠以反斜線“”)負號 加號 減號 乘號 除號 取余 3 -ge $mynum - 3 3 + 5 8 3 2 * 3 6 / 2 5 % 2 在腳本程序中可以用運算符將運算對象連接起來構(gòu)成的式子稱為表達式。六、shell控制語句1、if語句格式1:if 條件表達式 then 命令序列 fi格式2:if 條件表達式 then 命令序列 else 命令序列 fi格式3:if 條件表達式 then 命令序列 elif 條件表達式 then 命令序列 else 命令序列 fi格式4:if test 條件表達式 then 命令序列 elif test 條件表達式 then 命令序列 . else 命令序列 fi說明:(1)格式1、格式2、格式3中的“”和“”兩側(cè)要留有空格(2)格式4中的“”不屬于if語句中的符號,只在本格式中說明“”中的內(nèi)容可以重復出現(xiàn)多次。2、for循環(huán)語句 格式1: for 變量 in 值表do命令表done格式2: for 變量 in 文件正則表達式do命令表done 其執(zhí)行過程是,變量的值依次取當前目錄下(或給定目錄下)與正則表達式相匹配的文件名,每取值一次,就進入循環(huán)體執(zhí)行命令表,直至所有匹配的文件名取完為止,退出for循環(huán)。 格式3: for i in $* 或者 for i do do命令表 命令表done done 這兩種形式是等價的。其執(zhí)行過程是,變量i 依次取位置參數(shù)的值,然后執(zhí)行循環(huán)體中的命令表,直至所有位置參數(shù)取完為止。 3、while循環(huán)語句格式:while條件表達式 do命令表done 其執(zhí)行過程是,先進行條件測試,如果結(jié)果為真,則進入循環(huán)體(dodone之間部分), 執(zhí)行其中命令;然后再做條件測試直至測試條件為假時才終止while語句的執(zhí)行。4、until語句格式:until 條件表達式do命令表done 它與while語句很相似,只是測試條件不同:當測試條件為假時,才進入循環(huán)體,直至測試條件為真時終止循環(huán)。5、break語句和continue語句break語句可以使我們從循環(huán)體中退出來。格式: break n 其中,n表示要跳出幾層循環(huán)。默認值是1,表示只跳出一層循環(huán)。 continue語句跳過循環(huán)體中在它之后的語句,回到本層循環(huán)的開頭,進行下一次循環(huán)。格式: continue n 其中,n表示從包含continue語句的最內(nèi)層循環(huán)體向外跳到第幾層循環(huán)。默認值為1。循環(huán)層數(shù)是由內(nèi)向外編號。 6、case語句case語句允許進行多重條件選擇。格式:case 字符串 in模式字符串1) 命令序列1; ;模式字符串2) 命令序列2; ;模式字符串n) 命令序列n; ;esac 其執(zhí)行過程是用“字符串”的值依次與各模式字符串進行比較,如果發(fā)現(xiàn)同某一個匹配,那么就執(zhí)行該模式字符串之后的各個命令,直至遇到兩個分號為止。如果沒有任何模式字符串與該字符串的值相符合,則不執(zhí)行任何命令。 在使用case語句時應注意:(1)每個模式字符串后面可有一條或多條命令,其最后一條命令必須以兩個分號(即;)結(jié)束。(2)模式字符串中可以使用通配符。(3) 如果一個模式字符串中包含多個模式,那么各模式之間應以豎線(|)隔開,表示各模式是“或”的關(guān)系,即只要給定字符串與其中一個模式相配,就會執(zhí)行其后的命令表。(4)各模式字符串應是惟一的,不應重復出現(xiàn)。并且要合理安排它們的出現(xiàn)順序。例如,不應將“*”作為頭一個模式字符串,因為“*”可以與任何字符串匹配,它若第一個出現(xiàn),就不會再檢查其它模式了。(5)case語句以關(guān)鍵字case開頭,以關(guān)鍵字esac(是case倒過來寫!)結(jié)束。(6)case的退出(返回)值是整個結(jié)構(gòu)中最后執(zhí)行的那個命令的退出值。若沒有執(zhí)行任何命令,則退出值為零。7、expr語句 雖然shell并不精于數(shù)值計算,但還是提供了有關(guān)的計算語句。格式:expr 表達式1 表達式2 表達式中只允許整數(shù),合法的運算符有+、-、*、/和%(取余),在*(乘號)和/(除號)之前必須冠以(反斜杠),以防這些運算符由expr獲得之前被shell解釋。例如:$expr 3 * 5 + 2 / 2 16注意:運算符兩側(cè)要留有空格。8、read語句利用read語句命令可以從鍵盤上讀取數(shù)據(jù),然后賦給指定的變量格式:read 變量1 變量2 例如:read x y z輸入數(shù)據(jù)時,數(shù)據(jù)間以空格或制表符作為分隔符。如果變量個數(shù)與給定數(shù)據(jù)個數(shù)相同,則依次對應賦值;如果變量個數(shù)少于數(shù)據(jù)個數(shù),則從左至右對應賦值,但最后一個變量被賦予剩余的所有數(shù)據(jù);如果變量個數(shù)多于給定數(shù)據(jù)個數(shù),則依次對應賦值,而沒有數(shù)據(jù)與之對應的變量取空串。9、舉例例1 從控制臺接收用戶輸入,并在標準輸出設備上顯示結(jié)果echo “Are you girl?please answer Y or N”read sexif $sex = “Y” ;thenecho “Hello girl!”echo “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 Mon Tue Wed Thu Fri Sat Sundoecho $daydone 其執(zhí)行過程是,變量day依次取值表中各字符串,即第一次將“Mon”賦給day,然后進入循環(huán)體,執(zhí)行其中的命令,顯示出Mon。第二次將“Tue”賦給day,然后執(zhí)行循環(huán)體中命令,顯示出Tue。依次處理,當day把值表中各字符串都取過一次之后,下面day的值就變?yōu)榭沾?,從而結(jié)束for循環(huán)。因此,值表中字符串的個數(shù)就決定了for循環(huán)執(zhí)行的次數(shù)。在格式上,值表中各字符串之間以空格隔開。例4 while $1 doif -f $1 then echo display : $1 cat $1else echo $1 is not a file name . fishiftdone 這段程序?qū)Ω鱾€給定的位置參數(shù),首先判斷其是否是普通文件,若是,則顯示其內(nèi)容;否則,顯示它不是文件名的信息。每次循環(huán)處理一個位置參數(shù)$1,利用shift命令可把后續(xù)位置參數(shù)左移。 測試條件部分除使用test命令或等價的方括號外,還可以是一組命令。根據(jù)其最后一個命令的退出值決定是否進入循環(huán)體執(zhí)行。例5 編寫一個簡單的刪除程序#name: del#author: liangnian#this program to compress a file to the dustbinif test $# -eq 0 thenecho “Please specify a file!” elsegzip $1 /先對文件進行壓縮mv $1.gz $HOME/dustbin /移動到回收站echo “File $1 is deleted !”fi10、Shell腳本的建立和執(zhí)行(1)Shell腳本的建立Shell程序可以存放在文件中,這種被Shell解釋執(zhí)行的命令文件稱為Shell腳本 (Shell Script)。Shell腳本可以包含任意從鍵盤鍵入的Linux命令。建立Shell腳本的步驟同建立普通文本文件的方式相同,利用任何編輯器(如vi)進行程序錄入和編輯加工。例如,要建立一個名為ex1的Shell腳本,可在提示符后輸入命令:$ viex1 進入vi的插入方式后,就可錄入程序行。完成編輯之后,將編輯緩沖區(qū)內(nèi)容寫入文件中,返回到Shell命令狀態(tài)。(2)執(zhí)行Shell腳本格式:$ bash腳本名參數(shù) 例如:$ bashex1 /usr/meng/usr/zhang Shell從文件ex1中讀取命令行,并執(zhí)行它們。當Shell到達文件末尾時就終止執(zhí)行,并把控制返回到Shell命令狀態(tài)。若有參數(shù),則將參數(shù)值傳遞給程序中的命令,使一個Shell腳本可以處理多種情況,就如同函數(shù)調(diào)用時可根據(jù)具體問題給定相應的實參。第3章 Linux系統(tǒng)調(diào)用函數(shù)簡介1、fork( ):創(chuàng)建一個新進程格式:int fork()其中返回int值的意義如下: 0:創(chuàng)建子進程,從子進程返回0:從父進程返回,返回值為子進程的進程標識符-1:創(chuàng)建失敗2、vfork( ):創(chuàng)建一個新進程格式:int vfork()其中返回int值的意義如下:0:創(chuàng)建子進程,從子進程返回0:從父進程返回,返回值為子進程的進程標識符-1:創(chuàng)建失敗vfork()和fork()不同之處在于:在fork調(diào)用中,子進程復制父進程的數(shù)據(jù)區(qū)作為自己的數(shù)據(jù)區(qū),能夠繼承已有的資源,從而對數(shù)據(jù)的操作不再影響父進程。vfork()函數(shù)在創(chuàng)建子進程后,先于父進程運行,父進程被阻塞,在子進程調(diào)用exec或exit之前,子進程與父進程共享數(shù)據(jù)段,此時可對父進程的數(shù)據(jù)進行操作。3、execv():運行可執(zhí)行文件格式:int execv(const char *file,char *argv,char *envp)其中返回int值的意義如下:0:正確返回-1:錯誤返回當一個進程調(diào)用execv函數(shù)執(zhí)行另一個程序后,這個進程被新程序取代,包括代碼段、數(shù)據(jù)段、堆棧段等等,并繼承原進程的進程標識符。從自己的main()函數(shù)開始執(zhí)行。新程序使用原進程的進程標識符和進程控制表里的一部分信息。 該函數(shù)要用到unistd.h頭文件,即在程序中要有#include4、wait():進程的等待Wait函數(shù)常用來控制父進程與子進程的同步。在父進程中調(diào)用wait函數(shù),則父進程被阻塞,進入等待隊列,等待子進程結(jié)束。當子進程結(jié)束時,會產(chǎn)生一個終止狀態(tài)字,系統(tǒng)會向父進程發(fā)出SIGCHLD信號。當接收到信號后,父進程提取子進程的終止狀態(tài)字,從wait返回繼續(xù)執(zhí)行原程序。該函數(shù)適用的頭文件如下:#include#include函數(shù)格式:pidt wait(int *statloc)子進程ID:正確返回 0:其他 -1:錯誤返回可以使用系統(tǒng)提供的宏來獲得子進程終止時的信息,這些宏定義在sys/wait.h頭文件中,具體含義如下:WIFEXITED(status):子進程正常終止,返回真。WEXITSTATUS(status):如果WIFEXITED返回真,則該宏返回子進程的exit碼。WIFSIGNALED(status):子進程非正常終止,返回真。WTERMSIG(status):如果WIFSIGNALED返回真,則該宏返回引起子進程終止的信號值。WIFSTOPPED(status):子進程已結(jié)束,返回真。WSTOPSIG(status):如果WIFSTOPPED返回真,則該宏返回引起子進程結(jié)束的信號值。5、waitpid()如果父進程創(chuàng)建了多個子進程同時在運行,則父進程中wait函數(shù)會捕獲它任一個子進程的結(jié)束信號,而無法讓它確定地去捕獲某一個進程的結(jié)束信號。Waitpid函數(shù)則解決了這個問題。該函數(shù)適用的頭文件如下:#include#include函數(shù)格式:pidt waitpid(pidt pid,int *statloc,int options)子進程ID:正確返回 0:其他 -1:錯誤返回參數(shù)pid的值決定要求父進程等待的不同特征的子進程,含義如下:0:與父進程組ID相同的子進程。0:進程ID為pid的子進程。-1:任意子進程。此時與wait函數(shù)功能相同。-1:進程組ID為pid絕對值的子進程。Statloc所指的地址用于存放子進程的終止狀態(tài)字。Options控制waitpid的執(zhí)行,常用的參數(shù)如WNOHANG:若waitpid函數(shù)沒得到指定子進程的結(jié)束信號,則立即返回零,不會阻塞。6、exit():結(jié)束進程 進程結(jié)束最常用的方法是調(diào)用exit函數(shù),在main函數(shù)中調(diào)用的return,最終也是調(diào)用exit,這些都屬于進程的正常終止。該函數(shù)適用的頭文件如下:#include函數(shù)格式:void exit(int status)Status為進程結(jié)束狀態(tài)。在子進程調(diào)用exit后,子進程的結(jié)束狀態(tài)會返回給系統(tǒng)內(nèi)核,由內(nèi)核根據(jù)狀態(tài)字生成終止狀態(tài),供父進程在wait或waitpid函數(shù)中讀取。如果子進程結(jié)束后,父進程還沒有讀取子進程的終止狀態(tài),則系統(tǒng)就將子進程的狀態(tài)置為“ZOMBIE”,并保留子進程的進程控制塊,里面記錄著進程標識符、終止狀態(tài)字、CPU時間等信息,等父進程讀取信息后,系統(tǒng)才徹底釋放子進程的進程控制塊。7、msgget():獲得一個消息的描述符,該描述符指定一個消息隊列以便用于其他系統(tǒng)調(diào)用。該函數(shù)適用的頭文件如下:#include#include#include函數(shù)格式:int msgget(key,flag) keyt key; int flag ;消息隊列的標識符:正確返回 -1: 錯誤返回Key是鍵值,這個鍵值要與已有的鍵值進行比較,已有的鍵值指在內(nèi)核中已存在的其他消息隊列鍵值。當key的值為IPCPRIVATE時,創(chuàng)建一個新的消息隊列;當key的值不為IPCPRIVATE時,對消息隊列的打開或存取操作依賴于flag參數(shù)的取值。8、msgsnd():發(fā)送一條消息給一個消息隊列該函數(shù)適用的頭文件如下:#include#include#include函數(shù)格式:int msgsnd(id,smgp,size,flag) int id,size,flag; struct msgbuf* msgp;消息隊列的標識符:正確返回 -1:錯誤返回其中:id是返回消息隊列的標識符;msgp是指向用戶存儲區(qū)的一個構(gòu)造體指針,size指示由msgp指向的數(shù)據(jù)結(jié)構(gòu)中字符數(shù)組的長度,即消息隊列的長度;flag規(guī)定當核心用盡內(nèi)部緩沖空間時應執(zhí)行的動作;若在標志flag中未設置IPCNOWAIT位,則當該消息隊列中的字節(jié)數(shù)超過一最大值時,或系統(tǒng)范圍的消息數(shù)超過某一最大值時,則調(diào)用進程將被阻塞,進入

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論