




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一部分:上機作業:第二部分:一、填空1軟件提供的三種模式商業軟件、共享(試用)軟件、自由軟件。2Linux發行遵循GNU 的通用公共許可證(GPL),其目標是保持和 POSIX 標準兼容.3Posix表示可移植操作系統接口,其目的是是為了提高UNIX環境下應用程序的可移植性。4目前linux主要應用在軟件供應商、學術界及ASP、ISP、ICP公司。5目前linux發行版本主要有Debian、Red Hat、Slackware、Openlinux、Blue Point、Red Flag、Xteam Linux、Debian、Suse。6Linux內核具有兩種版本號,分別是:實驗版本、產品化版本
2、,這樣區分的優點 可以方便廣大軟件人員加入到Linux的開發和測試工作中來,另一方面又可以讓一些用戶使用上穩定的Linux版本。7操作系統功能可以分為文件系統管理、處理器管理、內存管理、 設備管理、網絡管理五大部分(子系統)。8操作系統的體系結構是軟件內部結構配置的一種抽象描述。通常操作系統可劃分為模塊結構、層次結構、對象結構三種結構,linux屬于 模塊結構。9根據Eric Raymond的觀點,他將linux內核的開發模式稱為 集市模式,而將傳統軟件的開發模式稱為教堂模式。二、填空1Linux安裝過程中通常至少要創建根分區和交換分區兩個分區。2系統安裝完成后,用dd命令制作啟動軟盤的完整命
3、令是:# dd if=bootnet.img of=/dev/fd0 bs=1440k 。3/dev/hda表示第一個IDE硬盤, /dev/hda6表示第一個IDE硬盤上第六個主分區或擴展分區。4Linux采用的啟動管理器有 LILO和 GRUB兩種;對應的配置文件的名稱分別是/etc/lilo.conf和/boot/Grub/menu.lst(或grub.conf)。三填空1Linux采用ext2或ext3作為其默認文件系統的。 2Linux中的五種基本文件類型分別是普通文件、目錄文件、設備文件、鏈接文件、管道文件。3Linux系統中文件權限分別賦予文件擁有者、擁有者所在用戶組、其他用戶組
4、三類用戶,每類用戶權限用三位表示,分別是 讀(r)、寫(w)、執行(x)。4Linux中改變文件權限的命令是chmod;改變文件所有者的命令是chown;改變文件所屬組的命令是chgrp。5Linux采用鏈接法方法實現文件共享,這樣方法產生的文件又可分為硬鏈接和符號鏈接兩種。兩種文件的各自特點硬鏈接文件和源文件指向同一個i節點;符號鏈接文件為指向文件的路徑。6Linux下拷貝文件的命令是cp,移動一個文件在目錄樹中的位置的命令是mv,刪除一個文件的命令是rm。7Linux下顯示文件內容的命令有cat、more、less、head、tail、od。8在linux shell中 >表示 輸出
5、重定向,>>表示 追加輸出改向,<表示 輸入重定向,<<表示 本地文檔重定向(追加輸入改向)。 四填空1進程是指一個具有一定獨立功能的程序關于某個數據集合的一次運行活動,一個完整的進程包括程序、執行程序所需要的數據、記錄進程狀態的動態數據資料(進程映像)三部分,描述Linux進程數據結構的文件是/include/linux/sched.h。2進程的三個基本狀態等待狀態、就緒狀態、執行狀態,Linux將執行、就緒分為運行態,而將等待狀態分為可中斷等待狀態、不可中斷的等待態兩種狀態。3Linux的調度啟動命令有at、cron、batch,$at f /tmp/prin
6、t job 2100 12/25/04的含義為:在04年12月25日21:00執行/tmp/print job中的作業。4ps命令的功能是查看系統進程,top命令的作用是顯示系統當前的進程和其它狀況。5Linux提供的進程通信機制有信號、管道、消息隊列(msg)、共享內存(shm)、信號量(sem)種。五問答:111111111111說明Linux操作系統的調度機制。Linux采用兩級調度,用戶作業進入內存,直接參與交換調度或進程調度。進程和線程采用同樣的表示和管理方式,也使用同樣的調度函數。Linux采用請求頁式內存動態管理方法,根據進程執行的實際需要分配內存頁面并換入內容,同時使用內核交換
7、進程kswapd按照記齡(aging)置換算法來實現頁面淘汰功能,內核交換進程周期性地執行。Linux用簡單的函數實現了三種進程調度算法,雖然不十分完美,但高效,可適用于大多數情況。222222222222解釋Linux系統的虛擬文件系統VFS整體結構;目錄結構,Inode結構!VFS整體結構:VFS采用超級塊和i節點來描述文件系統,這些數據結構在文件系統初始化過程中,由具體邏輯文件系統的超級塊和i節點的數據來填充。而當文件系統關閉時,VFS的超級塊和i節點也就消失了。目錄結構:整個Linux文件系統形成一個完整的目錄樹,每一個邏輯文件系統都可作為一個獨立子樹安裝到目錄樹的某枝節點上。VFS超
8、級塊中用指針s-root記錄著該文件系統在根文件系統目錄樹的信息,使用指針s-dev記錄指向該邏輯文件系統(設備號).或者:Linux系統中,目錄也是文件的一種,稱為目錄文件,每一個目錄也由一個i節點來描述,i節點中文件類型標識這是一個目錄文件,同時在對應的索引表(物理塊)中存放用來描述文件的目錄項列表。目錄項列表用來描述一個目錄所包含的全部文件和子目錄,每一個目錄項對應著一個文件或目錄。Inode結構:1、VFS inode包含文件訪問權限、屬主、組、大小、生成時間、訪問時間、最后修改時間等信息。它是linux管理文件系統的最基本單位,也是文件系統連接任何子目錄、文件的橋梁。inode結構中
9、的靜態信息取自物理設備上的文件系統,由文件系統指定的函數填寫,它只存在于內存中,可以通過inode緩存訪問。雖然每個文件都有相應的inode結點,但是只有在需要的時候系統才會在內存中為其建立相應的inode數據結構,建立的inode結構將形成一個鏈表,我們可以通過遍歷這個鏈表去得到我們需要的文件結點,VFS也為已分配的inode構造緩存和哈希表,以提 高系統性能。EXT2 inode用來定義文件系統的結構以及描述系統中每個文件的管理信息,每個文件都有且只有一個inode,即使文件中沒有數據,其索引結點也是存在的。每個文件用一個單獨的Ext2 inode結構來描述,而且每一個inode都有唯一的
10、標志號。Ext2 inode為內存中的inode結構提供了文件的基本信息,隨著內存中inode結構的變化,系統也將更新Ext2 inode中相應的內容。Ext2 inode對應的是Ext2_inode結構。33333333333333解釋Ext2文件系統結構?給出一個文件名,系統是如何找到文件內容的?系統結構:i節點和超級塊是Ext2文件系統最關鍵結構。其中:i節點:用來描述各種類型的文件,是整個文件系統的基本(/include/linux/ext2_fs.h)超級塊:是描述整個文件系統的重要數據。組描述符也是描述文件系統塊組分布和使用情況的主要數據。(/include/linux/ext2_
11、fs.h)線性檢索法:以下步驟:1)系統讀入根索引節點(1),從文件地址項查找根目錄文件所在物理塊號讀入內存。2)將磁盤第2個inode讀入內存,找出bin目錄文件所在物理塊號并將它讀入內存。3)將磁盤第10號節點讀入內存,從中判斷ls文件所在的物理塊號。4)目錄查詢操作到此結束,如果順序查找過程中發現一個文件分量名未能找到,則停止查找并送回“文件未找到”信息。44444444444444掌握Linux下進程創建的函數fork和vfork。fork函數:創建子進程,具體調用如下: #include<sys/type.h> #include<unistd.h> Pid_t
12、 fork(viod) 正確返回:父進程返回子進程的進程號,子進程返回0。 錯誤返回:-1子進程是父進程的一個拷貝。子進程從父進程那里得到數據段和堆棧段的拷貝。由于父子進程的運行順序無關。故運行結果的先后順序不定,若要求父子進程運行順序一定,要采用進程間通訊機制。若父進程將標準輸出重定向到某一文件,子進程也將標準輸出重定向到同一文件。Fork函數調用的主要用途有兩個: a、一個進程希望復制自身,從而父子進程能同時執行不同的代碼。b、進程想執行另外一個進程。vfork函數Vfork函數作用基本類似于fork,調用流程與返回值與fork函數完全相同。但它們的語義不同。a、用vfork創建新進程的主
13、要目的在于用exec函數執行另外的進程(如fork函數的第二個用途)。目的:提高效率。b、vfork中子進程先運行,父進程掛起,直至子進程執行exec或exit,此后父子進程執行次序無限制。555555555555555掌握rpm,tar,gzip命令的使用方法。RPM軟件包管理程序的使用 A) 安裝軟件包: rpm -ivh 軟件包.rpm 可選參數說明:-v顯示安裝的軟件包的名稱 -i 安裝軟件-t (-test) 測試安裝,不是真的安裝-nodeps 安裝前不執行軟件包依賴性檢查。不推薦使用-force 強制安裝一個軟件包 -h 打印50個“#”符號,與-v合用 如 rpm -ivh t
14、elnet-server-0.17-25.i386.rpm B) 刪除軟件包 rpm e 軟件包.rpm 可通過rpm -qa |egrep軟件包.rpm 查看是否安裝了此軟件包 錯誤信息:. is needed by . 可加-nodeps,但不推薦使用 如 rpm -ev telnet-server-0.17-25.i386.rpm (先要停止Telnet服務)C) 升級軟件包 rpm Uvh 軟件包.rpm 自動刪除相應軟件包的老版本,若配置文件同新版本不兼容,自動將其保存為oldconfig.rpmsave文件. D) 查詢軟件包 rpm q 軟件包(名稱) 具體可使用如下
15、特定參數 rpm ql 列出包中所有文件(包括配置/文檔文件) rpm qs 列出包中所有文件的狀態 rpm qd 列出包中所有的文檔文件 rpm qc 列出包中所有的配置文件 rpm qa 列出系統中安裝的所有軟件包 rpm qa|grep “telnet” 查詢系統中包含telnet的rpm包 或 rpm qi telnet rpm -qf 查詢包含該文件的軟件包 E) 校驗軟件包 可校驗文件大小、MD5校驗碼、文件權限、類型及屬主等信息。 rpm V 軟件包.rpm 檢查校驗該軟件包中的文件是否存在 rpm Vf /bin/vi 校驗軟件包中的單個文件 rpm Va 校驗安裝的所有軟件包
16、 rpm Vp 軟件包.rpm 比較一個源軟件包和已經安裝的軟件包 1) tar命令 tar 可以為文件和目錄創建檔案。語法: tar 主選項+輔選項 tar文件 目錄 主選項: c 創建新的檔案文件。 r 把要存檔的文件追加到檔案文件的未尾。 t 列出檔案文件的內容,查看已經備份了哪些文件。 u 更新文件。即用新增的文件取代原備份文件。 x 從檔案文件中釋放文件。 f 使用檔案文件或設備,這個選項通常是必選的。輔助選項: b 該選項是為磁帶機設定的。其后跟一數字,用來說明區塊的大小,系統預設值為20(20*512 bytes)。 k 保存已經存在的文件。如在還原文件的過程中,遇到相同的文件,
17、不會進行覆蓋。 m 還原文件時,把所有文件的修改時間設定為現在。 M 創建多卷的檔案文件,以便在幾個磁盤中存放。 v 詳細報告tar處理的文件信息。如無此選項,tar不報告文件信息。 z 用gzip來壓縮/解壓縮文件,加上該選項后可以將檔案文件進行壓縮。例1:把/home目錄下包括它的子目錄全部做備份文件,備份文件名為usr.tar。 $ tar cvf usr.tar /home例2:把/home目錄下包括它的子目錄全部做備份文件,并進行壓縮,備份文件名為usr.tar.gz 。 $ tar czvf usr.tar.gz /home例3:把usr.tar.gz這個備份文件還原并解壓縮。 $
18、 tar xzvf usr.tar.gz例4:查看usr.tar備份文件的內容,并以分屏方式顯示在顯示器上。 $ tar tvf usr.tar | more要將文件備份到一個特定的設備,只需把設備名作為備份文件名。例5:j在/dev/fd0的軟盤中創建一個備份,并將/home中所有的文件都拷到備份中。 $ tar cf /dev/fd0 /home k要恢復設備磁盤中的文件,可使用xf選項: $ tar xf /dev/fd0 l創建一個多卷的tar備份文件。當使用M選項向一個軟驅進行存檔時,tar命令在一張軟盤已滿的時候會提醒您再放入一張新的軟盤。 $ tar cMf /dev/fd0 /
19、home2) gzip命令 減少文件大小可以減少存儲空間;通過網絡傳輸文件時,可以減少傳輸的時間。gzip是經常使用的一個對文件進行壓縮和解壓縮的命令。 語法: gzip 選項 壓縮(解壓縮)的文件名 各選項含義: -c 將輸出寫到標準輸出上,并保留原有文件。 -d 將壓縮文件解壓。 -l 對每個壓縮文件,顯示下列字段:壓縮文件的大小,未壓縮文件的大小,壓縮比,未壓縮文件的名字。 -r 遞歸查找指定目錄并壓縮或解壓縮其中的所有文件。 -t 測試,檢查壓縮文件是否完整。-v 對每個壓縮和解壓的文件,顯示文件名和壓縮比。 -num 用指定的數字num調整壓縮的速度,1或-fast表示最快壓縮方法(
20、低壓縮比),9或-best表示最慢壓縮方法(高壓縮比)。系統缺省值為6。 例1:把/home目錄下的每個文件壓縮成.gz文件。 $ gzip /home* 例2:把例1中壓縮的文件解壓,并列出詳細的信息。 $ gzip -dv * 例3:壓縮一個tar備份文件,如usr.tar,此時壓縮文件的擴展名為.tar.gz $ gzip usr.tar66666666666掌握shell變量的定義與使用,會編寫簡單的關于文件操作的shell程序。777777777777掌握linux下gcc,g+,gdb,make應用程序的作用和基本使用。gcc 能夠編譯三種語言:C、C+ 和 Object C ,利
21、用 gcc 命令可同時編譯并連接 C 和 C+ 源程序。也可對幾個 C 源文件利用 gcc 編譯、連接并生成可執行文件。例:gcc -o factorial main.c factorial.cgcc 只編譯 C+ 源文件,不能自動和 C+ 程序使用的庫連接。因此,通常使用 g+ 命令來完成 C+ 程序的編譯和連接。例:g+ -o hello hello.C 。make 工具來自動完成編譯工作。gdb為GNU的調試器,是一個交互式工具,工作在字符模式。可完成如下的調試任務:設置斷點; 監視程序變量的值; 程序的單步執行; 修改變量的值。 88888888888解釋Linux進程的概念、狀態及轉
22、換、進程間通信方式以及task_struct結構。進程是一個具有一定獨立功能的程序關于某個數據集合的一次運行活動。一個完整進程包括程序、執行程序所需要的數據以及記錄進程狀態的動態數據資料等待狀態、就緒狀態和執行狀態是一個進程所具有的最基本的三種狀態。Linux系統的2.2.16版本進程共有六種狀態,包括:運行狀態、可中斷等待狀態、不可中斷等待狀態、僵死狀態、暫停狀態和交換狀態。在2.4.0版本中取消了交換狀態,加入獨占狀態。進程的整個生命周期中,大致的轉換路徑總是沿著三個閉合回路進行:第一個回路: 由就緒狀態和執行狀態形成。第二個回路: 由執行狀態、等待狀態和就緒狀態形成第三個回路: 執行狀態
23、、暫停狀態和就緒狀態構成退出: 處于執行狀態的進程調用退出函數exit之后,進程就會進入僵死狀態。進程間通信。兩種方式:低級通信:互相發送少量的控制信息,一般只傳遞一個或者幾個字節的數據,進程利用這些簡單的信息,實現互斥和同步,控制運行速度。高級通信:基本不涉及進程執行速度控制,用來在進程之間傳遞大量的信息,由于這種通信方式主要用于交換信息。因此,在開發本地進程間通信的同時,也為遠程進程間的通信、網絡程序的開發及控制奠定了基礎。Linux系統的PCB用一個稱為task-struct的結構體來描述(/include/linux/sched.h中)。其中信息可分為:(1) 進程描述信息(2) 進程
24、控制信息(3) 進程資源信息(4) CPU現場信息99999999999掌握Linux下用戶賬號管理,文件權限管理,環境變量的定義,和網絡相關的配置文件和應用程序。賬戶一般分為三種:普通用戶賬戶系統管理賬戶系統賬戶1) 賬戶的信息存儲在/etc/passwd文件中2) /etc/shadow系統包含一個/etc/passwd 的同伴文件/etc/shadow。該文件只對root用戶可讀,且包含加密的密碼信息。3) /etc/group文件定義了 Linux 系統上所有的組. 使用adduser添加普通用戶賬戶,必須以root登錄。2)添加用戶組向/etc/group文件添加新組,語法: gro
25、upadd -g gid mygroup;gid 一般是500以上。也可用命令刪除,語法如下:userdel -r login加上 -r 參數將刪除用戶主目錄及其創建的文件Linux系統的/etc/passwd文件含有系統中每個用戶的信息(加密后的口令存于/etc/shadow文件中)。 crypt命令可提供給用戶以加密文件。網絡文件配置1、 /etc/conf.modules 文件該配置文件定義了各種需要在啟動時加載的模塊的參數信息。2、/etc/hostname 文件 該文件包含系統的主機名稱,完全的域名,3、/etc/sysconfig/network-scripts/ifcf
26、g-ethN文件 在RedHat中,系統網絡設備的配置文件保存在"/etc/sysconfig/network-scripts"目錄下,ifcfg-eth0包含第一塊網卡的配置信息,ifcfg-eth1包含第二塊網卡的配置信息。4、/etc/resolv.conf 文件 該文件是由域名解析器使用的配置文件5、/etc/host.conf 文件 該文件指定如何解析主機名。6、/etc/sysconfig/network 文件該文件用來指定服務器上的網絡配置信息,101掌握文件系統安裝表,VFS超級快,文件系統類型注冊表的基本結構以及關系。文件系統安裝表記錄著整個系統中當前可使
27、用(已安裝)的全部文件系統,是操作系統訪問具體存儲設備上文件系統的入口。文件系統類型注冊表記錄著整個系統當前所支持的全部文件系統類型。文件系統安裝表、VFS超級塊和文件系統類型注冊表之間的關系111111111111111掌握文件系統、進程系統、系統管理的基本命令使用方法。$ cp - i exam1.c /usr/wang/shiyan1.c 若不希望重新命名,可以使用下面的命令: $ cp exam1.c /usr/ wang/例1:將/usr/xu中的所有文件移到當前目錄中: $ mv /usr/xu/ * .例2:將文件wch.txt重命名為wjz.doc $ mv wch.txt w
28、jz.doc$ rm -i test example顯示文件內容命令cat命令:2、more命令 3、less命令 4、head命令 用head命令只顯示文件或標準輸入的頭幾行。 語法:head - n 文件 5、tail命令 若用戶想查看文件的尾部,可使用tail命令。 語法:tail + / - num 參數 文件 6、od命令 od命令查看特殊格式的文件內容。通過指定該命令的不同選項可以以十進制、八進制、十六進制和ASCII碼來顯示文件。 語法:od 選項 文件 各選項含義: - A 指定地址基數,包括: d 十進制 o 八進制(系統默認值) x 十六進制 n 不打印位移值 文件內容查詢
29、命令(1) 1、grep、fgrep 和 egrep命令例1:grep命令在文件example中搜索模式“text file”。$ grep text file example例2:搜索并顯示所有包含goto語句的代碼行: $ grep goto *.c例3:從文件mypats中讀取要搜索的模式。 $ cat mypats editor create $ grep -f mypats exam2、find命令例1:查找當前目錄中所有以main開頭的文件并顯示這些文件的內容。 $ find . - name main* - exec more ;例2:刪除當前目錄下所有一周之內沒有被訪問過的 a
30、 .out或*.o文件。 $ find . (- name a.out - o - name *.o)- atime +7 - exec rm ;說明:(和)表示括號( ),其中“”稱為轉義符。 “- name a.out”是指要查找名為a.out的文件;“- name *.o”是指要查找所有名字以.o結尾的文件。兩個- name間- o表示邏輯或or,即查找名字為a.out或名字以.o結尾的文件。 find在當前目錄及其子目錄下找到這樣的文件后,再進行判斷,看其最后訪問時間是否在7天以前(條件atime +7),若是,則對該文件執行命令 rm(- exec rm ;)。代表當前查到的符合條件
31、的文件名;是語法要求的。3、locate命令例如:查找相關字issue $ locate issue /etc/issue /etc/ /usr/man/man5/issue.5 /usr/man/man5/.5df命令 :檢查文件系統的磁盤空間占用情況。du命令du 為“disk usage”縮寫,統計目錄(或文件)所占磁盤空間的大小。dd命令 把指定的輸入文件拷貝到指定的輸出文件中,且在拷貝過程中可進行格式轉換。例1:要把一張軟盤的內容拷貝到另一張軟盤上: $ dd if =/dev/fd0 of = /tmp/tmpfile $ dd if = /tmp/tmp =/dev/fd0Sor
32、t命令 語法:sort 選項 文件 。說明:對文件中所有的行進行排序。例2 以第2個字段作為排序關鍵字對文件example的內容進行排序。 $ sort +1-2 example 例3 對于file1和file2文件內容反向排序,結果放在outfile中,利用第2個字段的第一個字符作為排序關鍵字 $ sort -r -o out -2.1 file1 file2 例4 sort排序常用于在管道中與其它命令連用,組合完成比較復雜的功能,如利用管道將當前工作目錄中的文件送給sort進行排序,排序關鍵字是第6個至第8個字段。 $ ls - l | sort +5 - 7uniq命令說明:該命令讀取輸
33、入文件,并比較相鄰的行。例1 顯示文件 example中不重復的行。 $ uniq - u example 例2 顯示文件 example中不重復的行,從第2個字段的第2個字符開始做比較。 $ uniq - u - 1 +1 examplewc命令說明:該命令統計給定文件中的字節數、字數、行數。例1:$ wc - lcw file1 file2 4 4 33 file1 4 7 52 file211 11 85 totalComm命令語法:comm - 123 file1 file2說明:該命令是對兩個已經排好序的文件進行比較。$ comm -12 myfile1 myfile21212121
34、2121212了解Linux系統啟動相關的文件以及功能。考試題型:填空,選擇,命令解釋,問答;程序閱讀與設計;Linux下shell編程入門(1)通常情況下,我們從命令行輸入命令每輸入一次就能夠得到系統的一次響應。一旦需要我們一個接著一個的輸入命令而最后才得到結果的時候,這樣的做法顯然就沒有效率。要達到這樣的目的,通常我們利用shell程序或者shell腳本來實現。 一、簡介 Shell編程有很多類似C語言和其他程序語言的特征,但是又沒有編程語言那樣復雜。Shell程序就是放在一個文件中的一系列Linux命令和實用程序,在執行的時候,通過Lin
35、ux一個接著一個地解釋和執行每個命令。 下面我們來看一個簡單的shell程序:1、首先建立一個內容如下的文件,名字為date,將其存放在目錄下的bin子目錄中。#Program date#usageto :show the date in this way (注釋)echo “Mr.$USER,Today is:”echo date “+%B%d%A”echo “Whish you a lucky day !”2、編輯完該文件之后它還不能執行,我們需要給它設置可執行權限。使用如下命令:chmod +x date
36、0; 通過以上過程之后,我們就可以像使用ls命令一樣執行這個shell程序.beichenlocalhost bin$ dateMr.beichen,Today is:January 13 FridayWhish you a lucky day ! 為了在任何目錄里都可以執行這個程序,可以將bin的這個目錄添加到路徑中去。beichenlocalhost bin$ PATH=$PATH: $HOME/bin(注:這里的$HOME代替的是/home/beechen,而bin目錄是自己建的一個目錄)
37、 另外一種執行date的方法就是把它作為一個參數傳給shell命令:beichenlocalhost /$ bash dateMr.beichen,Today is:January 13 FridayWhish you a lucky day ! 盡管在前面我們使用chmod +x date將date設置為可執行,其實不設置也沒有關系,但在Linux里執行它,需要先告訴系統它是一個可執行的腳本。beichenlocalhost /$ .dateMr.beichen,Today is:January 13 Fr
38、idayWhish you a lucky day ! 即在date前面加上一個點”.”,并且用空格與后面的shell腳本的文件名隔開。當然,不推薦這樣做。二、shell參數 如同ls 命令可以接受目錄等作為它的參數一樣,在shell編程時同樣可以使用參數。Shell有位置參數和內部參數。1、 位置參數 由系統提供的參數稱為位置參數。位置參數的值可以用$N得到,N是一個數字,如果為1,即$1.類似C語言中的數組,Linux會
39、把輸入的命令字符串分段并給每段進行標號,標號從0開始。第0號為程序名字,從1開始就表示傳遞給程序的參數。如$0表示程序的名字,$1表示傳遞給程序的第一個參數,以此類推。2、 內部參數 上述過程中的$0是一個內部變量,它是必須的,而$1則可有可無。和$0一樣的內部變量還有以下幾個。$# -傳遞給程序的總的參數數目$? -上一個代碼或者shell程序在shell中退出的情況,如果正常退出則返回0,反之為非0值。$* -傳遞給程序的所有參數組成的字符串。下面舉例進
40、行說明:建立一個內容為如下的程序P1:echo “Program name is $0”echo “There are totally $# parameters passed to this program”echo “The last is $?”echo “The parameters are $*”執行后的結果如下:beichenlocalhost bin$ P1 this is a test program /傳遞5個參數Program name is /home/beichen/bin/P1 /給出程序的完整路徑和名字There a
41、re totally 5 parameters passed to this program /參數的總數The last is 0 /程序執行結果The parameters are this is a test program /返回有參數組成的字符串下面我們利用內部變量和位置參數編寫一個名為del的簡單刪除程序:#name: del#author: liangnian#
42、this program to compress a the dustbinif test $# -eq 0 then echo “Please specify a file!” else gzip $1 /先對文件進行壓縮 mv $1.gz $HOME/dustbin /移動到回收站 echo “File $1 is deleted !”fi=part1=三、變量表達式 在上面我們編寫的小程序中我們用到了一個關
43、鍵字test,其實它是shell程序中的一個表達式比較(test)。通過和shell提供的if等條件語句(后面我們會介紹)相結合我們可以方便的完判斷。 其用法如下: test 表達式 表達式所代表的操作符有字符串操作符、數字操作符、邏輯操作符以及文件操作符。其中文件操作符是一種shell獨特的操作符,因為shell里的變量都是字符串,為了達到對文件進行操作的目的,于是才提供了這樣的一種操作符。1、 字符串比較作用:測試字符串是否相等、長度是否為零,字符串是否為NULL(注:bash區分零長度字符
44、串和空字符串)常用的字符穿操作符有:= 比較兩個字符串是否相同,同則為“是”!= 比較兩個字符串是否相同,不同則為“是”-n 比較字符串長度是否大于零,如果大于零則為“是”-z 比較字符串的穿度是否等于零,如果等于則為“是”2、 數字比較這里區別于其他編程語言,test語句不使用>、<、>=類似的符號來表達大小的比較,而是用整數式來表示這些。-eq 相等-ge 大于等于-le 小于等于-ne
45、;不等于-gt 大于-lt 小于3、 邏輯操作! 反:與一個邏輯值相反的邏輯值-a 與(and):兩個邏輯值為“是”返回值才為“是”,反之為“否”-o 或(or):兩個邏輯值有一個為“是”,返回值就為“是”4、 文件操作文件測試表達式通常是為了測試文件的信息,一般由腳本來決定文件是否應該備份、復制或刪除。由于test關于文件的操作符有很多,我們只列舉一些常用的。-d 對象存在且為目錄返回值為“是”-f 對象存在且為文件返回值為“是”-L
46、 對象存在且為符號連接返回值為“是”-r 對象存在且可讀則返回值為“是”-s 對象存在且長度非零則返回值為“是”-w 對象存在且可寫則返回值為“是”-x 對象存在且可執行則返回值為“是”file1 nt(-ot) file2 文件1比文件2新(舊)四、循環結構語句shell常見的循環語句有for循環、while循環、until循環1. for 循環語法:for 變量 in 列表 do
47、160; 操作 done注:變量是要在循環內部用來指代當前所指代的列表中的那個對象的。列表是在for 循環的內部要操作的對象,可以是字符串也可以是文件,如果是文件則為文件名。例:刪除垃圾箱中的所有.gz文件#delete all extension of “gz” in the dustbinfor I in $HOME/dustbin/*.gzdo rm f $i echo “$i has been deleted!”done
48、 執行結果如下:beichenlocalhost bin$.f_rmgz/home/beichen/dustbin/nessus-4.0.0.2.tar.gz has been deleted!/home/beichen/dustbin/g has been deleted!2. While循環語法:while 表達式 do 操作 done 只要while表達式成立,do和done之間的操作就一直會進行。3. until循環語法:until 表達式 do 操作 done 重復do和done之間的操作直到表達式成立為止。 例:#test until#add from 1 to 100total=0num=0until test num
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省杭州市景成實驗校2024-2025學年初三考前搶分(三)語文試題含解析
- 招遠市2025年四下數學期末復習檢測模擬試題含解析
- 汽車配件購銷合同范本
- 廬江縣重點名校2025屆初三第二次模擬考試英語試題含答案
- 江蘇省蘇州市葛江中學2025屆初三下學期聯合考試生物試題含解析
- 寧波市重點中學2024-2025學年初三3月教學質量檢查化學試題含解析
- 鹽城市亭湖區2025屆初三5月階段性檢測試題語文試題含解析
- 云南省麗江市重點名校2024-2025學年初三7月四校聯考化學試題含解析
- 烘焙食品加工合作協議
- 貨物供應合同附加協議范本
- 維修改造項目施工組織設計方案
- 基于納米材料的熱擴散研究
- 國家職業技術技能標準 6-28-02-01 燃氣儲運工 人社廳發202188號
- 高血壓臨床路徑
- 中國普通食物營養成分表一覽
- 校園天眼平臺建設方案
- 防腐涂料產品營銷計劃書
- 前程無憂國企筆試題
- 新版蘇教版數學三年級上冊全冊教案(新教材)
- 鋁錠銷售居間合同范本
- “湘”談“四史”智慧樹知到期末考試答案章節答案2024年湘潭大學
評論
0/150
提交評論