版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、LINUX 與 UNIX SHELL 編程指南讀書筆記- 1 -LINUX 與 UNIX SHELL 編程指南讀書筆記Version 0.1zqf(zqf620)特別提供給2005-2-22LINUX 與 UNIX SHELL 編程指南讀書筆記- 2 -LINUX 與 UNIX SHELL 編程指南讀書筆記之一zqf(zqf620)第一部分SHELL第 1 章 文件安全與權(quán)限方式:1. 一個(gè)文件一經(jīng)創(chuàng)建,就具有三種基本1)2)3)讀(r): 可以顯示該文件的內(nèi)容。寫(w): 可以編輯或刪除它。執(zhí)行(x): 如果該文件是一個(gè) shell或程序的話。2.1)2)3)按照所
2、的用戶,文件的權(quán)限可分為三類:文件屬主: 創(chuàng)建該文件的用戶。同組用戶: 擁有該文件的用戶組中的任何用戶。其他用戶: 即不屬于擁有該文件的用戶組的某一用戶。3.ls -l (列出目錄內(nèi)容)命令的輸出的分析drwxr-xr-x2 rootroot4096 Oct 14 20:18 bin1) 第 1 個(gè)部分第 1 個(gè)字符: 表示文件的類型,詳細(xì)說明見下。2)3)4)5)6)第 1 個(gè)部分第 2-10 個(gè)字符: 分為 3 組(triplet),分別表示文件的屬主、組用戶和其它用戶的權(quán)限。第 2 個(gè)部分: 表示該文件的硬的數(shù)目。第 3 個(gè)部分: 表示文件的屬主。第 4 個(gè)部分: 文件的屬主(root)
3、所在的缺省組(也是 root 組)。第 5 個(gè)部分: 表示文件的長(zhǎng)度(以字節(jié) byte 為)。7) 第 6-7 個(gè)部分: Oct 14 20:18 表示文件的更新時(shí)間。8) 第 8 個(gè)部分: 該文件的文件名。4.文件的類型1) d : 目錄文件,目錄也是一種文件 (directory)2)3)4)5)6)7)l b c p s-:符號(hào)塊 字符(指向另一個(gè)文件) (link) 文件 (block device)文件 (charactor device)命名管道文件 (named piple) 套接字文件 (socket)普通文件,或者更準(zhǔn)確地說,不屬于以上幾種類型的文件5.文件的權(quán)限位1) 一個(gè)
4、文件的權(quán)限位由 9 個(gè)字符組成,分成 3 個(gè) triplet,分別表示文件屬主(owner)、文件屬主所屬缺省組的用戶(group)、系統(tǒng)中其他用戶(other)所擁有的權(quán)限。2) 一個(gè) triplet 由 3 個(gè)字符位組成(rwx),分別表示可讀、可寫、可執(zhí)行。如果對(duì)應(yīng)位置的字符是-,表示不具有對(duì)應(yīng)權(quán)限。 eg: rw- 表示可讀寫,不可執(zhí)行r- 表示可讀,不可寫、執(zhí)行3) 在文件權(quán)限位的 owner triplet 第 3 個(gè)位置的字符如果設(shè)置為s,稱為 SUID。當(dāng)某用戶執(zhí)行該文件時(shí), 系統(tǒng)用文件 owner 的 uid 替代實(shí)際執(zhí)行該文件的用戶的 uid,文件會(huì)認(rèn)為是 owner 在執(zhí)
5、行它。4) 在文件權(quán)限位的 group triplet 第 3 個(gè)位置的字符如果設(shè)置為s,稱為 SGID。當(dāng)某用戶執(zhí)行該文件時(shí), 系統(tǒng)用文件組擁有者的 gid 替代實(shí)際執(zhí)行該文件的用戶的 gid。當(dāng)在某個(gè)目錄文件上設(shè)置 SGID 時(shí)候,則在該目錄下的所有文件和子目錄都會(huì)繼承使用該目錄的 GID 來代替實(shí)際執(zhí)行者的 GID。5) 文件設(shè)置了 SUID 或 SGID,一般來說文件的 owner 或 group 應(yīng)該有執(zhí)行(x)權(quán)限。如果沒有 x 權(quán)限,設(shè)置SUID 或 SGID 是沒有意義的,triplet 上第 3 個(gè)字符就會(huì)是S(大寫)而不是s(小寫)。eg: rwSr-Sr-6) 給可執(zhí)行文
6、件設(shè)置 SUID/SGID 可能帶來安全風(fēng)險(xiǎn),許多系統(tǒng)因而忽略 SUID/SGID 權(quán)限設(shè)置7) 在某些目錄(如/tmp)的 other triplet 的第 3 個(gè)字符設(shè)置為t。一般來說,在目錄的 other triplet 上設(shè)置 w 和 x 權(quán)限,則任何用戶都可以在該目錄下執(zhí)行、刪除文件,而設(shè)置t的作用就是保證非目錄的 owner 用戶不能刪除目錄下的文件。6.使用 chmod 命令改變權(quán)限位1) 符號(hào)模式 Usage: chmod who file_nameLINUX 與 UNIX SHELL 編程指南讀書筆記- 3 -who: 可以是 u g o a,表示給文件的 owner、gro
7、up、other 和 all 用戶設(shè)置權(quán)限。省略時(shí)默認(rèn)為 a。operator: 可以是+ - =,分別表示增加、取消、指定權(quán)限perm: 可以是 r w x s(suid 和 guid) t(粘性位) l(給文件加鎖,使其他用戶無法)舉例: chmod u+xw o-w myfile / 給 myfile 的 owner 增加 x w 權(quán)限,去除 other 用戶的 w 權(quán)限2) 絕對(duì)模式 Usage: chmod mode file_name mode: 4 位 8 進(jìn)制數(shù),每一位分別用于 SUID 和 SGID、屬主權(quán)限、組權(quán)限、其他用戶權(quán)限。當(dāng)用戶給出的mod 值小于 4 位時(shí),系統(tǒng)會(huì)
8、在數(shù)字前面加 0 補(bǔ)齊。 權(quán)限 r w x 分別用數(shù)字 4 2 1 表示, suid guid 用 4 2 表示,各個(gè) triplet 的數(shù)字相加可得 mod 值。eg: rwxr-xr- 為 754,rwsr-xr-x 為 4755, rwsr-sr-x 為 6755 -rwxrwSr- 為 27647.目錄文件的權(quán)限(r w x)的含義1)2)3)r: 可以列出該目錄中的內(nèi)容。w: 可以在目錄中創(chuàng)建、修改文件。目錄的 w 位不設(shè)置,即使擁有目錄中某文件的 w 權(quán)限也不能寫該文件。x: 可以搜索和該目錄。x 位不設(shè)置,不能目錄下的任何文件,即使擁有文件的權(quán)限。8.chown 和 chgrp
9、修改文件的擁1) chown Usage: chown 選項(xiàng) owner.group file_name 創(chuàng)建文件時(shí),文件預(yù)設(shè) owner 就是創(chuàng)建該文件的用戶,預(yù)設(shè)所屬組(group)就是 owner 所屬的缺省組。只有文件的 owner 和系統(tǒng)管理員才可以改變文件的擁,改變一個(gè)文件的 owner 時(shí),相應(yīng)的 suid 也將被清除。chmod 的常用選項(xiàng): -R 對(duì)指定目錄所有文件和子目錄遞歸式地進(jìn)行同樣的操作-h如果 file_name 是符號(hào),則只對(duì)符號(hào)本身進(jìn)行操作owner 和 .group 表示文件擁有者名和文件所屬組名,可以使用 uid/gid 表示。兩者不能同時(shí)省略舉例: cho
10、wn http.http /etc/httpd / 將目錄/etc/httpd 的屬主修改為 http,組修改為 http2) chgrp Usage: chgrp 選項(xiàng) group file_namechgrp 命令只能用來修改文件的所屬組。chgrp 和 chown 用法類似,選項(xiàng)也一樣。舉例: chown http /etc/httpd / 將目錄/etc/httpd 的所屬組修改為 http3)用戶信息和用戶所屬組信息id user_name 或 groups user_name8.umask 確定系統(tǒng)創(chuàng)建文件時(shí)的缺省權(quán)限位。1) Usage: umask umask_mod2) um
11、ask_mod 的計(jì)算: umask_mod777文件缺省權(quán)限值。3) 系統(tǒng)不你在創(chuàng)建一個(gè)文件時(shí)就賦予它執(zhí)行權(quán)限,即 umask_mod 為 002 時(shí),創(chuàng)建文件的缺省權(quán)限值為665,創(chuàng)建目錄的缺省權(quán)限值為 775。9.符號(hào)1) Usage: ln -s source_path target_path2)2 種類型的: 硬和軟。軟又稱位符號(hào),符號(hào)實(shí)際上是指向一個(gè)文件的指針,符號(hào)和 Windows OS 的快捷方式有點(diǎn)類似。3) 不管是否在同一個(gè)文件系統(tǒng)中,都可以創(chuàng)建。在創(chuàng)建的時(shí)候,不要忘記在原有目錄設(shè)置執(zhí)行權(quán)限。一旦創(chuàng)建,目錄將具限 777(rwxrwxrwx),但是實(shí)際的原有文件的權(quán)限并未改
12、變。4) 舉例: ln -s /var/tmp /home/zqf/tmp / 在 zqf 主目錄創(chuàng)建一個(gè)名為 tmp,指向/var/tmp 的符號(hào)第 2 章 使用 find 和 xargs 1.有時(shí)可能需要在系統(tǒng)中查找具有某一特征的文件(如文件權(quán)限、文件屬主、文件長(zhǎng)度、文件類型等)。find是一個(gè)非常有效的工具,它可以遞歸式遍歷當(dāng)前目錄甚至于整個(gè)文件系統(tǒng)(本地和件或目錄,只要你具有相應(yīng)的文件或目錄的權(quán)限。文件系統(tǒng))來查找某些文2.find 命令的使用1) Usage : find path_name . expression2) path_name : 用于指定要搜索的目錄,可以是以空格分隔
13、的多個(gè)目錄路徑的列表。如果省略此參數(shù),默認(rèn)使用當(dāng)前目錄。LINUX 與 UNIX SHELL 編程指南讀書筆記- 4 -3) expression : 用于指定搜索的方式、條件和要執(zhí)行的操作等。如果 expression 省略,則默認(rèn)使用 -print 作為 expression。expression 可由 4 類項(xiàng)目組成: 4)OPTION(選項(xiàng)) : 用于指定 find 命令的搜索方式,一般把 OPTION 放在 expression 的開頭。TEST(測(cè)試) :用于指定 find 命令的檢索條件,只有符號(hào)條件的文件被指定的 ACTION 處理。ACTION(操作) :用于指定對(duì) find
14、 的搜索結(jié)果執(zhí)行的操作。省略 ACTION 時(shí)預(yù)設(shè)為 -print。OPERATOR(運(yùn)算) : 對(duì) TEST 或 ACTION 進(jìn)行與、或、非 等運(yùn)算。find 在執(zhí)行時(shí),一般會(huì)將第 1 個(gè)-字符之后令行參數(shù)都看作 expression,把之前的參數(shù)都看作為要搜索的路徑。3.常用的 OPTION 項(xiàng)目0)1)2)OPTION 項(xiàng)目可以省略,find 默認(rèn)從指定路徑目錄開始遞歸地向下層子目錄搜索。-depth : 在查找文件時(shí),首先查找當(dāng)前目錄中的文件,然后再在其子目錄中查找。-maxdepth level : 進(jìn)入指定的目錄下層目錄搜索時(shí),最深不超過 level(一個(gè)非負(fù)整數(shù))層。eg: f
15、ind . -maxdepth 0 -name 1 / 只在當(dāng)前目錄而不向下層子目錄搜索名為1的文件或目錄3)4)5)-follow : 如果 find 命令遇到符號(hào)文件,就跟蹤至所指向的文件。-mount : 不搜索其它文件系統(tǒng)上的目錄(不文件系統(tǒng) mount 點(diǎn))。-daystart : 從當(dāng)日起始時(shí)開始而不是從 24 小時(shí)之前開始計(jì)算時(shí)間(如-amin, -atime, -cmin, -ctime, -mmin 和 -mtime )。6) -noleaf : 不為目錄中子目錄數(shù)量比硬數(shù)少 2這種假設(shè)做優(yōu)化。這個(gè)選項(xiàng)在搜索那些不遵循 UNIX文件系統(tǒng)約定的文件系統(tǒng)(比如 CD-ROM,MS
16、-DOS 文件系統(tǒng)或 AFS 卷的加載點(diǎn))時(shí)使用。在普通的 UNIX 文件系統(tǒng)中,每個(gè)目錄至少有兩個(gè)硬: 它的名字和它的.條目。另外,它的每個(gè)子目錄(假的話)還會(huì)各有一個(gè).到它。在 find 檢索一個(gè)目錄時(shí),發(fā)現(xiàn)子目錄數(shù)比它的數(shù),它就知道目錄中的其他條目并非目錄(而是目錄樹中的葉(leaf)節(jié)點(diǎn))。除非需要檢索的是這個(gè)葉節(jié)點(diǎn),否則沒必要去處理它。這樣可以帶來很大的搜索搜索速度的提升。4.常用的 TEST 項(xiàng)目0) 在 TEST 項(xiàng)目的一些選項(xiàng)中有時(shí)會(huì)使用數(shù)字,數(shù)字 N(非負(fù)整數(shù))可以以 3 種形式給出:+N 表示比 N 大, -N 表示比 N 小, N 表示正好是 N1)-name PATTE
17、RN : 查找文件名符合模式 PATTERN(一般要加雙引號(hào))的文件,也可直接使用文件名。eg: find . -name a-za-z0-90-9.txt -print / 此命令可以返回名為 ax37.txt 的文件-empty : 查找空白文件,它可以是一般文件或目錄。-lname PATTERN: 只查找符合 PATTERN 的符號(hào)文件。-iname 和 -ilname : 分別與 -name 和 -lname 類似,只是不區(qū)分大小寫。-regex PATTERN : 查找完整文件名符合模式 PATTERN 的文件。2)3)4)5)6)-type C : 查找某一類型的文件。C 可以是
18、 b c d p l s f (塊字符目錄 命名管道 符號(hào)socket 正規(guī)文件)。eg: find -type l / 此命令返回當(dāng)前用戶的主目錄內(nèi)所有的符號(hào)文件的文件名7)-size Nbckw :查找使用 N 個(gè)空間的文件,可以使用 b(塊,512 字節(jié)) c(字節(jié)) k(KB) w(2 字節(jié))為,不帶時(shí)預(yù)設(shè)為 b。eg: find -size +100k -size -1024k / 此命令返回文件大于 100k 小于 1M 的文件的文件名8)9)-fstype FSTYPE : 查找位于某一類型文件系統(tǒng)中的文件,如 vfat ext3 nfs 等-user USERNAME : 查找
19、文件屬主為 USERNAME 的文件。-uid UID : 查找文件屬主的 uid 為 UID 的文件。10) -group GROUPNAME : 查找文件所屬組為 GROUPNAME 的文件。-gid GID : 查找文件所屬組的 gid 為 GID 的文件。11) -nouser : 查找無有效屬主的文件,即該文件的屬主在/etc/passwd 中不。-nogroup : 查找無有效所屬組的文件,即該文件所屬的組在/etc/groups 中不。12) -perm MODE : 查找文件的權(quán)限設(shè)置等于 MODE 的文件。MODE 前可加+或-,表示權(quán)限設(shè)置比 MODE 寬松) 或更嚴(yán)格。1
20、3) -anewer FILENAME :-cnewer FILENAME :-newer FILENAME :查找其存取(access)時(shí)間比文件 FILENAME 的修改時(shí)間更接近現(xiàn)在的文件。查找其狀態(tài)改變(change)時(shí)間比文件 FILENAME 的修改時(shí)間更接近現(xiàn)在的文件。查找其內(nèi)容修改(modify)時(shí)間比文件 FILENAME 的修改時(shí)間更接近現(xiàn)在的文件。-amin-cmin-mminN N N:查找在指定時(shí)間(N 為分鐘)被存取過的文件。查找在指定時(shí)間(N 為分鐘)更改過文件狀態(tài)的文件。查找在指定時(shí)間(N 為分鐘)修改過數(shù)據(jù)內(nèi)容的文件。-atime N : 查找在指定時(shí)間(N
21、為天)被存取過的文件。LINUX 與 UNIX SHELL 編程指南讀書筆記- 5 -ctime N : 查找在指定時(shí)間(N 為天)更改過文件狀態(tài)的文件。-mtime N : 查找在指定時(shí)間(N 為天)修改過數(shù)據(jù)內(nèi)容的文件。注: 上面這些選項(xiàng)分別涉及到文件的 3 種時(shí)間: 文件存取時(shí)間(access)、文件狀態(tài)改變時(shí)間(status change) 和 文件內(nèi)容修改時(shí)間(modify),也就是在 ls -l 命令輸出中顯示的時(shí)間。5.常用 ACTION1)2)3)-print : 以完整文件路徑名的形式將 find 的搜索結(jié)果顯示到標(biāo)準(zhǔn)輸出,以 NEWLINE 分隔各個(gè)文件名。-ls: 以ls
22、 -l命令的格式將 find 的搜索結(jié)果顯示到標(biāo)準(zhǔn)輸出。-exec CMD ; : 把 find 的搜索結(jié)果作為 shell 程序 CMD 的文件名參數(shù),并執(zhí)行 CMD 程序。eg: find /logs4) -ok CMD ;-mtime +5 -exec rm -rf ; / 刪除/logs 目錄中更改時(shí)間在 5 日以前的文件: 同上,是一種更安全的模式,在執(zhí)行每個(gè)命令前,會(huì)提示用戶來確定是否執(zhí)行。6.常用的 OPERATOR1)EXPR1 EXPR2 或EXPR1 -a EXPR2 或 EXPR1 -and EXPR2 : 把 2 個(gè) EXPR 相與。eg: find zqf -size
23、 +10k -name *.c/ 從 zqf 的主目錄開始搜索大于 10kB 的 C 源程序文件2)EXPRT1 -o EXPR2 或 EXPR1 -or EXPR2 : 把 2 個(gè) EXPR 相或。eg: find . -name *.c -or -name *.cpp / 從當(dāng)前目錄開始搜索 C 或 C+源程序文件! EXPR 或 -not EXPR : 對(duì) EXPR 取反。eg: find zqf ! -user zqf / 查找 zqf 的主目錄中屬主不是 zqf 的文件或目錄( EXPR ) : 當(dāng)出現(xiàn)多個(gè) OPERATOR 時(shí),用來改變 OPERATOR 的運(yùn)算順序。eg: fin
24、d . ! ( -user zqf -name *.awk )3)4)7.xargs1) Usage: xargs CMD (從管道中獲取 CMD 命令的參數(shù))2) xargs 常常與 find 命令一起使用,用于取代 find 的-exec 參數(shù)。有幾個(gè): find 的-exec 參數(shù)有很多局限。比如,遞給 exec 少的 shell 命令等。令長(zhǎng)度有限制,在某些系統(tǒng)上-exec 參數(shù)只能調(diào)用很 某些系統(tǒng)上-exec CMD 選項(xiàng)會(huì)為 find 的搜索結(jié)果中的每一個(gè)文件名啟動(dòng)一個(gè) CMD 進(jìn)程,而不是把搜索結(jié)果作為一個(gè)參數(shù)文件列表整個(gè)傳給 CMD 程序,當(dāng)搜索結(jié)構(gòu)很多時(shí),會(huì)嚴(yán)重影響系統(tǒng)性能。
25、xargs CMD 把從管道獲取的參數(shù)作為一個(gè)參數(shù)列表一次傳給 CMD 程序。3) find 和 xargs使用舉例:find . -perm -7 | xargs chmod o-w / 在當(dāng)前目錄下查找所有用戶具有讀、寫和執(zhí)行權(quán)限的文件,并收回相應(yīng)的寫權(quán)限第 3 章執(zhí)行命令1.cron1) cron 是系統(tǒng)主要的調(diào)度進(jìn)程,可以在無需人工干預(yù)的情況下運(yùn)行作業(yè),與Windows 的計(jì)劃任務(wù)類似。2) cron 守護(hù)進(jìn)程支持 crontab 和 at,用戶可以通過這 2 個(gè)程序來實(shí)現(xiàn)定時(shí)調(diào)度作業(yè)。2.crontab 命令用戶提交、編輯或刪除相應(yīng)的作業(yè)。1) 2)要想讓 cron 來定時(shí)調(diào)度執(zhí)行用
26、戶指定的程序,需要 2 個(gè)步驟: 按照 crontab 文件的格式創(chuàng)建用戶的 crontab 文件。使用 crontab 命令向 cron 提交用戶的 crontab 文件。系統(tǒng)管理員可以通過設(shè)置/etc 目錄下的 cron.deny 和 cron.allow 文件來或用戶使用 crontab。3.創(chuàng)建用戶的 crontab 文件:1) crontab 文件由若干條組成,一條對(duì)應(yīng)一個(gè)要運(yùn)行令。注釋行要在行首加#。2) crontab 文件格式:分時(shí)日月 用 06(0 表示要運(yùn)行的 CMD天),小時(shí)用 123(0 表示子夜)時(shí)間用數(shù)字表示,其中表示空格,作為域分隔符,每一條必須含有 5 個(gè)時(shí)間域
27、,而且每個(gè)域之間要用空格分隔。在這些表示時(shí)間的域中,可以用橫杠-來表示一個(gè)時(shí)間范圍,可以使用逗號(hào),,使用星號(hào)*來表示對(duì)某個(gè)表示時(shí)間的域沒有特別的限定。例如,你希望一至五運(yùn)行某個(gè)作業(yè),那么可以在域使用1-5來表示。如果希望在日域填入*。一和四運(yùn)行某個(gè)作業(yè),只需要使用1,4來表示。如果希望每天都運(yùn)行某作業(yè),應(yīng)該舉例: echo 10 1 * *6,0 /bin/find zqf -name core -exec rm ; zqf.cron/ 上面的例子創(chuàng)建了一個(gè)用戶 crontab 文件 zqf.cron,表示每周六、周日的 1:10 運(yùn)行一個(gè) find 命令。LINUX 與 UNIX SHELL
28、 編程指南讀書筆記- 6 -4.用戶提交用戶 crontab 文件:1) Usage: crontab user_cronfile2) 用戶提交了 crontab 文件后,cron 會(huì)把用戶 crontab 文件中的內(nèi)容添加到/var/spool/cron 目錄下一個(gè)與用戶名同名的文件中,用戶第一次使用 cron 之前不3) 舉例: crontab zqf.cron/var/spool/cron 目錄下的同名文件。/ 用戶 zqf 執(zhí)行此命令后,cron 將 zqf.cron 中的內(nèi)容添加到文件/var/spool/cron/zqf 中4)crontab Usage: crontab -u U
29、SERNAME -e -l -r-u-e-l-rUSERNAME : 編輯指定用戶名的 crontab 文件。:直接編輯 crontab 文件/var/spool/cron/。列出 crontab 文件/var/spool/cron/中的內(nèi)容。刪除/var/spool/cron/文件。4.at用戶向 cron 守護(hù)進(jìn)程提交作業(yè),使其在指定的稍后時(shí)間運(yùn)行。1) 一旦一個(gè)作業(yè)被提交,at 命令將會(huì)保留所有當(dāng)前的環(huán)境變量,路徑,不象 crontab 只提供缺省的環(huán)境。該作業(yè)的所有輸出重定向到某個(gè)文件中。以電子郵件的形式給用戶,除非你對(duì)其輸出進(jìn)行了重定向,絕大多數(shù)情況下是2) 和 crontab 一樣
30、,系統(tǒng)管理員可以通過/etc 目錄下的 at.allow 和 at.deny 文件來at 命令。一般來說,對(duì) at 命令的使用不如對(duì) crontab 的使用限制那么嚴(yán)格。哪些用戶可以使用3) 向 at 提交一個(gè)作業(yè)后,at 將為該作業(yè)分配一個(gè)唯一的作業(yè)號(hào),進(jìn)入 at 的隊(duì)列,作業(yè)運(yùn)行后4) 提交給 at 的作業(yè),只能在指定的時(shí)間運(yùn)行一次,不能象 crontab 那樣周期性運(yùn)行。隊(duì)列。5.向 at 提交作業(yè)1)命令行方式: 一般在提交 shell時(shí),使用命令行方式。Usage: at -f SCRIPT_FILE -m TIMESCRIPT_FILE : 是文件名,可以把要提交給 at 的作業(yè)寫
31、到文件中,然后提交給 at。-m : 作業(yè)完成后給用戶發(fā)郵件。TIME : 指定作業(yè)將要執(zhí)行的時(shí)間。TIME 的格式很靈活。2)交互方式: 在交互方式下,要提交的作業(yè)直接從Usage: at -m TIME臺(tái)輸入。在命令行下執(zhí)行at TIME命令后,就進(jìn)入 at 命令提示符( at )狀態(tài),在 at 提示符狀態(tài)下可以輸入shell 命令,一行輸入一條 shell 命令,可以輸入多行,最后按Ctrl+D。 舉例:$ at 21:10at find / -name passwd -print at / 表示Ctrl+D6.TIME :作業(yè)被指定的時(shí)間,at 的時(shí)間格式很靈活,時(shí)間粒度可以是時(shí)分、月
32、日年。常見的格式有: 這是最普遍的格式。比如 21:30、9:15 等1)2)3)4)5)HH:MMam 和 pm : 比如 10am、4pm、9:25pm 等MMDDYY 和 MM/DD/YY: 比如 9:30pm 022005、11:50 02/20/2005 等tomorrow 和 today : 比如 10pm today、21:30 tomorrow 等now +N uint : unit 為時(shí)間,可以是 minutes(min minute)、hours(hour) days(day)比如 now+3min、now +2days、now +12hours 等+N unit : 比如
33、 9pm +2days、11:30 +4min 等6)7.at 的其它操作1) 查看中已提交到 at 隊(duì)列等待運(yùn)行的作業(yè): at -l 或 atq2) 取消還未運(yùn)行的作業(yè): at -r job_number 或 atrm job_number8.&命令 把作業(yè)放到執(zhí)行1) 當(dāng)在前臺(tái)運(yùn)行某作業(yè)時(shí),終端被該作業(yè)占據(jù),用戶不能使用終端;而把作業(yè)放在運(yùn)行就占據(jù)終端。2) 當(dāng)在執(zhí)行作業(yè)時(shí),用戶可以繼續(xù)使用終端做其他事情。但是作業(yè)在運(yùn)行一樣會(huì)將結(jié)果輸出到屏幕上,干擾你的工作。如果放在運(yùn)行的作業(yè)會(huì)產(chǎn)生大量的輸出,最好使用下面的把它的輸出重定向到某個(gè)文件中。比如 command out_file 2&1 &L
34、INUX 與 UNIX SHELL 編程指南讀書筆記- 7 -4) 適合運(yùn)行的作業(yè)是那些非交互式的作業(yè)。需要用戶交互令不要放在執(zhí)行,否則系統(tǒng)就會(huì)始終等待用戶的輸入。9.向提交作業(yè)1) Usage: CMD &2) 舉例: find /etc -name *.conf -print find.dt 2&1 &10.nohupnohup 命令可以在你1) Usage: nohup CMD &2) 如果使用 nohup 命令提交帳戶之后繼續(xù)運(yùn)行相應(yīng)的進(jìn)程作業(yè),那么在缺省情況下該作業(yè)的所有輸出都被重定向到一個(gè)名為nohup.out 的文件中,除非另外指定了輸出文件。3)舉例: nohup find /
35、 -name *.tmp -print /root/tmp.fnd 2&1 &第 4 章 文件名置換1.1)符 可在命令行上匹配文件名使用星號(hào)* : 可以匹配文件名中的任何字符串,空字符串。eg: ls app* / 此命令可以列出文件 app、appdva、appdva_SLA 等使用問號(hào)? : 可以匹配文件名中的任何單個(gè)字符。eg: ls conf.?.log / 此命令可以列出文件 conf.12.log、conf.25.log 等2)3) 使用. : 可以匹配方括號(hào)中出現(xiàn)的任何單個(gè)字符。還可以使用-來連接兩個(gè)字母或數(shù)字,以此來表示一個(gè)范圍。eg: ls log.0-5* / 此命令可以
36、列出文件 log.0321、log.2987、log.5367 等4) 使用 !. : 與.相反,匹配不屬于方括號(hào)!.中出現(xiàn)字符的單字符。eg: ls log.!0-9 / 此命令可以列出文件 log.sybase 等第 5 章 shell 輸入與輸出1.echo 將一行字符串顯示到標(biāo)準(zhǔn)輸出0)1) 2)echo 命令的一些細(xì)節(jié)在 System V、BSD 和 Linux 這三種 Like-UNIX 系統(tǒng)上不同,這里以 Linux 系統(tǒng)為主。Usage: echo -e -n STRINGSTRING : STRING 是要輸出的字符串,其中可以包含 shell 變量名、轉(zhuǎn)義符等,一般-e :
37、 Linux 的 echo 缺省不解釋 STRING 中的轉(zhuǎn)移符,除非加上此選項(xiàng)。引號(hào)括起來。-n : echo 缺省在輸出 STRING 后輸出 NEWLINE(換行),使用此選項(xiàng) echo 將不輸出 NEWLINE。echo 支持的轉(zhuǎn)移符:NNNaft舉例:ASCII 碼為 NNN(8 進(jìn)制)的字符,NNN 如果不是一個(gè)合理的值,將直接按照字面打印響鈴換頁(yè)水平制表符bnv退格換行垂直制表符cr/去除結(jié)尾 NWELINE 字符反斜線顯示 User: zqf3)echo -e User: $USERtUID: $UIDUID: 5002.read 從鍵盤或文件的某一行文本中讀入信息,并將其賦給
38、變量。1) Usage: read varible1 varible2 .2)3)4)如果只指定了一個(gè)變量,read 將會(huì)把輸入行的所有內(nèi)容賦給該變量,直至遇到第一個(gè)文件結(jié)束符或。如果指定了多個(gè)變量,read 用空格(環(huán)境變量 IFS)作為分隔符把輸入行分成多個(gè)域,分別賦給各個(gè)變量。輸入文本分隔出的域數(shù)量多于 read 給出的變量數(shù),read 將所有的超長(zhǎng)部分賦予最后一個(gè)變量。3.cat 一個(gè)簡(jiǎn)單而通用令,可以用它來顯示文件內(nèi)容,創(chuàng)建文件,還可以用它來顯示字符。1) 顯示文件內(nèi)容: cat myfile | more / cat 命令在文件分頁(yè)停下,它會(huì)一下顯示完整個(gè)文件2) 創(chuàng)建文件: ca
39、t file1 file2 file3 bigfile / 創(chuàng)建一個(gè)名為 bigfile 的文件,包含三個(gè)文件的內(nèi)容cat myfile / 創(chuàng)建一個(gè)新文件,并向其中輸入一些內(nèi)容,輸入完后按結(jié)束輸入3) 顯示文件中字符: cat -v filename4.管道 可以通過管道把一個(gè)命令的輸出傳遞給另一個(gè)命令作為輸入。管道用豎杠|表示。1) Usage: command1 | command22) 舉例: ls | grep *.c / 將 ls 命令的輸出作為 grep 命令的輸入,即在當(dāng)前目錄下搜索 C 源程序文件LINUX 與 UNIX SHELL 編程指南讀書筆記- 8 -3) sed、a
40、wk 和 grep 等程序都很適合用管道,特別是在 shell 命令行下。5.tee 它把輸出的一個(gè)副本輸送到標(biāo)準(zhǔn)輸出,另一個(gè)副本拷貝到相應(yīng)的文件中1)Usage: tee -a filename -a : 表示追加到文件末尾。 tee 命令應(yīng)該和管道結(jié)合使用2) 舉例: who | tee who.out / who 命令的輸出不僅會(huì)輸出到標(biāo)準(zhǔn)輸出,還會(huì)輸入到文件 who.out6.標(biāo)準(zhǔn)輸入、輸出和錯(cuò)誤1) 文件描述符: 文件描述符是從 0 開始的整數(shù),指向與進(jìn)程相關(guān)的特定數(shù)據(jù)流。當(dāng)進(jìn)程啟動(dòng)時(shí),通常打開三個(gè)文件描述符,分別對(duì)應(yīng)三種標(biāo)準(zhǔn)的 I/O: 標(biāo)準(zhǔn)輸入(文件描述符 0),標(biāo)準(zhǔn)輸出(文件描
41、述符 1),標(biāo)準(zhǔn)錯(cuò)誤(文件描述符 2)。2)3)4)5)標(biāo)準(zhǔn)輸入(STDIN) : 它是命令的輸入,缺省和終端的鍵盤關(guān)聯(lián)。標(biāo)準(zhǔn)輸出(STDOUT): 它是命令的輸出,缺省和終端的屏幕關(guān)聯(lián)。標(biāo)準(zhǔn)錯(cuò)誤(STDERR): 它是命令的錯(cuò)誤信息輸出,缺省也和終端的屏幕關(guān)聯(lián)。如果進(jìn)程打開了額外的文件進(jìn)行輸入和輸出,則其被設(shè)置為下一個(gè)可用的文件描述符,從 3 到 9。7.文件重定向1) 在執(zhí)行命令時(shí),命令的標(biāo)準(zhǔn)輸入、輸出和錯(cuò)誤是和文件描述符 0、1、2 關(guān)聯(lián)的,而文件描述符 0、1、2 缺省都和終端關(guān)聯(lián)。如果希望命令從文件中使用文件重定向。標(biāo)準(zhǔn)輸入或者希望命令的標(biāo)準(zhǔn)輸出寫到文件而不是屏幕,就需要2)重定向標(biāo)
42、準(zhǔn)輸出CMD filename CMD filename myfile: 把 CMD 命令的標(biāo)準(zhǔn)輸出重定向到一個(gè)文件中(如果文件,其被覆蓋)。: 把 CMD 命令的標(biāo)準(zhǔn)輸出重定向到一個(gè)文件中(追加文件尾部)。: 創(chuàng)建一個(gè)長(zhǎng)度為 0 的空文件,如果文件清空該文件。舉例: ls -l | grep d files.out / 把當(dāng)前目錄下的子目錄的列表寫到文件 files.out中 zqf.log/ 清空日志文件 zqf.log 3) 4) 5)CMD filename 實(shí)際上是和 CMD 1 filename 等效,CMD filename 和 CMD 1 filename 等效。重定向標(biāo)準(zhǔn)輸入
43、CMD filename: CMD DELIMITER :以 filename 文件作為 CMD 命令的標(biāo)準(zhǔn)輸入。從標(biāo)準(zhǔn)輸入中讀入輸入,直至遇到 DELIMITER 分界符。(here-document)舉例: sort grade.txt / 對(duì)文件 grade.txt 進(jìn)行排序(sort)CMD filename 實(shí)際上是和 CMD 0 filename 等效,CMD filename 和 CMD 0 filename : 把 CMD 命令的標(biāo)準(zhǔn)錯(cuò)誤重定向到一個(gè)文件中(如果文件,其被覆蓋)。 filename : 把 CMD 命令的標(biāo)準(zhǔn)錯(cuò)誤重定向到一個(gè)文件中(追加文件尾部)。find /
44、-name *.tmp -exec rm -rf ; 2/dev/null / 把命令的錯(cuò)誤消息輸出丟棄結(jié)合使用標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤CMD 1 file1 2 file2 : 將輸出重定向到 file1 中,并把標(biāo)準(zhǔn)錯(cuò)誤重定向到 file2 中。CMD file2: 以 file1 文件作為 CMD 命令的標(biāo)準(zhǔn)輸入,以 file2 文件作為標(biāo)準(zhǔn)輸出。舉例: find / -name *.tmp -print 1find.out 2find.err / 把 find 的搜索結(jié)果寫到文件find.out 中,而把 find 命令的錯(cuò)誤信息(比如沒有足夠權(quán)限搜索某些目錄)寫到文件 find.err 中
45、cat 2.txt / 實(shí)際是將 1.txt 的內(nèi)容寫到 2.txt,等效于文件6)合并標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤CMD filename 2&1 : 把標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤一起重定向到一個(gè)文件中CMD filename 2&1 : 把標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤一起重定向到一個(gè)文件中(追加)舉例: grep standard * grep.out 2&1 / 在當(dāng)前目錄下所有文本文件中搜索字符串standard CMD filename 2&1 實(shí)際上可以看作 2 部分, filename(重定向標(biāo)準(zhǔn)輸出)和2&1(把標(biāo)準(zhǔn)錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出)。7) 在使用一些接受文件名為參數(shù)令時(shí),有時(shí)命令會(huì)把文件描述符當(dāng)文件
46、名參數(shù)而報(bào)錯(cuò)。一般文件描述符和重定向符號(hào)之間留有不要有空格。第 6 章 命令執(zhí)行順序1.使用&1) 命令 1 & 命令 2LINUX 與 UNIX SHELL 編程指南讀書筆記- 9 -2) &左邊3) 舉例: cp令 1 返回真(即返回 0,被執(zhí)行)后,&右邊令 2 才能夠被執(zhí)行/apps/bin /apps/dev/bin & rm -r /apps/bin / 如果操作完成,那么執(zhí)行刪除操作2.使用|1) 命令 1 |命令 22) 如果|左邊令 1 未執(zhí)行,那么就執(zhí)行|右邊令 23) 舉例: cp file1 file2 | echo if seeing this,cp failed.
47、/ 如果失敗,就打印信息3.用()和將命令結(jié)合在一起1) ( 命令 1;命令 2;. ) : 當(dāng)前 shell 中執(zhí)行一組命令2) 命令 1;命令 2;. : 類上,相應(yīng)令將在子 shell 而不是當(dāng)前 shell 中作為一個(gè)整體被執(zhí)行。只有在 中所有命令的輸出作為一個(gè)整體被重定向時(shí),其中shell 執(zhí)行。3) ()、 一般和&或|一起使用令才被放到子 shell 中執(zhí)行,否則仍然在當(dāng)前eg: cp file1 file2 | (echo cp failed | mail zqf; exit) / 當(dāng)文件 file1 很大時(shí),需要花費(fèi)很多時(shí)間,如果4) 在編寫 shell 語(yǔ)句非常有用。過程中
48、出錯(cuò),將會(huì)一個(gè)郵件給用戶,然后當(dāng)前 shell其后面命令的執(zhí)行,對(duì)構(gòu)造時(shí),使用&和|,可根據(jù)前面命令的返回值來LINUX 與 UNIX SHELL 編程指南讀書筆記- 10 -LINUX 與 UNIX SHELL 編程指南讀書筆記之二zqf(zqf620)第二部分文本過濾第 7 章 正則表(RE)1.當(dāng)從一個(gè)文件或命令輸出中抽取或過濾文本時(shí),可以使用正則表(RE,regular expressions),正則表達(dá)式是一些特殊或不很特殊的字符串模式的集合。正則表符組成,當(dāng)然也可以使用規(guī)則字符。由一些特殊字符或進(jìn)行模式匹配操作時(shí)使用的2.使用句點(diǎn).匹配單字符1) .: 匹配任意單 ASCII 字符
49、,可以為字母,或?yàn)閿?shù)字。2) 舉例: .XC.匹配 deXC1t、23XCdf 等,.w.w.w.匹配 rwxrw-rw-3.在行首以匹配字符串或字符序列1) :在一行的開始匹配字符或單詞。2) 舉例: .01 匹配 0011cx4、c01sdf 等,d 匹配 drwxr-xr-x、drw-r-r-等4.在行尾以$匹配字符串或字符1) $: 在行尾匹配字符串或字符,$符號(hào)放在匹配單詞后。2) 舉例: trouble$ 匹配以單詞 trouble 結(jié)尾的所有行$匹配所有空行5.使用*匹配字符串中的單字符或其重復(fù)序列(與文件名置換中的*不一樣)1) *: 一個(gè)單字符后緊跟*,匹配 0 個(gè)或多個(gè)此單
50、字符。2) 舉例: compu*t 將匹配字符 u 一次或多次,即匹配 computer computing compuuute 等1033* 可以匹配 101333 10133 1013444 等3) 在正則表中使用*,有時(shí)會(huì)產(chǎn)生非預(yù)期的結(jié)果。6.使用1) 義。一個(gè)特殊字符的含義:用來一個(gè)符的特殊含義。因?yàn)橛袝r(shí)在 shell 中符有特殊含義??梢允蛊涫?yīng)有意2) 舉例: 在正則表中匹配以*.pas 結(jié)尾的所有文件: *.pas$7.使用匹配屬于一個(gè)范圍或集合單個(gè)字符1) : 匹配 內(nèi)的字符??梢允且粋€(gè)單字符,也可以是字符序列。可以使用-表示括號(hào) 內(nèi)字符序列范圍,如用1-5代替12345???/p>
51、以用逗號(hào),分隔括號(hào)內(nèi)的字符。2) 當(dāng)符號(hào)當(dāng)直接靠著,意指或不匹配括號(hào)3) 舉例: 0-9匹配任意一個(gè)數(shù)字;a-z匹配任意一個(gè)小寫字母;0-9A-Za-z匹配任意字母或數(shù)字; C,computer 匹配 Computer 和 computer;a-zA-Z匹配任一非字母型字符8.使用匹配模式結(jié)果出現(xiàn)的次數(shù)1)2)3)4)5)patternn patternn, pattern,m patternn,m 舉例: A2BA2,B:匹配模式 pattern 出現(xiàn) n 次的情形。匹配模式 pattern 最少出現(xiàn) n 次的情形。匹配模式 pattern 最多出現(xiàn) m 次的情形。匹配模式 pattern
52、出現(xiàn)次數(shù)在 n 與 m 之間的情形。匹配的值為 AAB匹配的值可以是 AAB 或 AAAAAB,但不能匹配 AB匹配的值可以是 AAB、AAAB、AAAAB,但不能匹配 AB 或 AAAAAB 等A2,4B0-94CX0-94 匹配數(shù)字出現(xiàn) 4 次后跟 CX,最后是數(shù)字出現(xiàn) 4 次的情形實(shí)際上真正的格式是 n n, ,m n,m,只不過對(duì)和應(yīng)用了 Esacpe 字符。6)9.經(jīng)常使用的正則表舉例SsignalL匹配單詞 signal、signaL、Signal、SignaL SsignalL. 同上,但加一句點(diǎn)LINUX 與 UNIX SHELL 編程指南讀書筆記- 11 -USER$.d.x.x.xlyYnN.*$.$ a-zA-Za-z*0-9$ 12
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年滬教新版七年級(jí)生物上冊(cè)階段測(cè)試試卷含答案
- 2024-2025學(xué)年江山市數(shù)學(xué)三上期末綜合測(cè)試模擬試題含解析
- 健康教育的新篇章跨學(xué)科合作在學(xué)校的應(yīng)用
- 2024年電力設(shè)施安裝勞務(wù)作業(yè)分包書
- 2024年專業(yè)會(huì)議資料定制與印制合同3篇
- 以數(shù)據(jù)驅(qū)動(dòng)的家庭健身計(jì)劃調(diào)整與優(yōu)化
- 辦公環(huán)境中如何幫助員工建立自信心
- 2025中國(guó)鐵塔集團(tuán)河南分公司招聘25人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)西電集團(tuán)(中國(guó)西電)招聘22人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)石化高橋石化分公司畢業(yè)生招聘30人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《大學(xué)英語(yǔ)跨文化交際》課程教案
- 新員工職業(yè)素養(yǎng)培訓(xùn)
- 個(gè)人車輛抵押借款合同
- 營(yíng)養(yǎng)教育與社區(qū)營(yíng)養(yǎng)管理基礎(chǔ)考試復(fù)習(xí)題庫(kù)及答案
- 2023年化工企業(yè)隱患排查與治理培訓(xùn)
- 國(guó)語(yǔ)經(jīng)典歌曲歌詞接龍考試題庫(kù)(180題)
- 西安東原地產(chǎn)品牌年度推廣方案
- 2022年7月云南省普通高中學(xué)業(yè)水平考試物理含答案
- 走進(jìn)范仲淹課件
- 2023-2024學(xué)年江蘇省吳江市小學(xué)語(yǔ)文五年級(jí)上冊(cè)期末高分測(cè)試題
- GB/T 20641-2006低壓成套開關(guān)設(shè)備和控制設(shè)備空殼體的一般要求
評(píng)論
0/150
提交評(píng)論