




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
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. 一個文件一經(jīng)創(chuàng)建,就具有三種基本1)2)3)讀(r): 可以顯示該文件的內(nèi)容。寫(w): 可以編輯或刪除它。執(zhí)行(x): 如果該文件是一個 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 個部分第 1 個字符: 表示文件的類型,詳細(xì)說明見下。2)3)4)5)6)第 1 個部分第 2-10 個字符: 分為 3 組(triplet),分別表示文件的屬主、組用戶和其它用戶的權(quán)限。第 2 個部分: 表示該文件的硬的數(shù)目。第 3 個部分: 表示文件的屬主。第 4 個部分: 文件的屬主(root)
3、所在的缺省組(也是 root 組)。第 5 個部分: 表示文件的長度(以字節(jié) byte 為)。7) 第 6-7 個部分: Oct 14 20:18 表示文件的更新時間。8) 第 8 個部分: 該文件的文件名。4.文件的類型1) d : 目錄文件,目錄也是一種文件 (directory)2)3)4)5)6)7)l b c p s-:符號塊 字符(指向另一個文件) (link) 文件 (block device)文件 (charactor device)命名管道文件 (named piple) 套接字文件 (socket)普通文件,或者更準(zhǔn)確地說,不屬于以上幾種類型的文件5.文件的權(quán)限位1) 一個
4、文件的權(quán)限位由 9 個字符組成,分成 3 個 triplet,分別表示文件屬主(owner)、文件屬主所屬缺省組的用戶(group)、系統(tǒng)中其他用戶(other)所擁有的權(quán)限。2) 一個 triplet 由 3 個字符位組成(rwx),分別表示可讀、可寫、可執(zhí)行。如果對應(yīng)位置的字符是-,表示不具有對應(yīng)權(quán)限。 eg: rw- 表示可讀寫,不可執(zhí)行r- 表示可讀,不可寫、執(zhí)行3) 在文件權(quán)限位的 owner triplet 第 3 個位置的字符如果設(shè)置為s,稱為 SUID。當(dāng)某用戶執(zhí)行該文件時, 系統(tǒng)用文件 owner 的 uid 替代實際執(zhí)行該文件的用戶的 uid,文件會認(rèn)為是 owner 在執(zhí)
5、行它。4) 在文件權(quán)限位的 group triplet 第 3 個位置的字符如果設(shè)置為s,稱為 SGID。當(dāng)某用戶執(zhí)行該文件時, 系統(tǒng)用文件組擁有者的 gid 替代實際執(zhí)行該文件的用戶的 gid。當(dāng)在某個目錄文件上設(shè)置 SGID 時候,則在該目錄下的所有文件和子目錄都會繼承使用該目錄的 GID 來代替實際執(zhí)行者的 GID。5) 文件設(shè)置了 SUID 或 SGID,一般來說文件的 owner 或 group 應(yīng)該有執(zhí)行(x)權(quán)限。如果沒有 x 權(quán)限,設(shè)置SUID 或 SGID 是沒有意義的,triplet 上第 3 個字符就會是S(大寫)而不是s(小寫)。eg: rwSr-Sr-6) 給可執(zhí)行文
6、件設(shè)置 SUID/SGID 可能帶來安全風(fēng)險,許多系統(tǒng)因而忽略 SUID/SGID 權(quán)限設(shè)置7) 在某些目錄(如/tmp)的 other triplet 的第 3 個字符設(shè)置為t。一般來說,在目錄的 other triplet 上設(shè)置 w 和 x 權(quán)限,則任何用戶都可以在該目錄下執(zhí)行、刪除文件,而設(shè)置t的作用就是保證非目錄的 owner 用戶不能刪除目錄下的文件。6.使用 chmod 命令改變權(quán)限位1) 符號模式 Usage: chmod who file_nameLINUX 與 UNIX SHELL 編程指南讀書筆記- 3 -who: 可以是 u g o a,表示給文件的 owner、gro
7、up、other 和 all 用戶設(shè)置權(quán)限。省略時默認(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) 絕對模式 Usage: chmod mode file_name mode: 4 位 8 進(jìn)制數(shù),每一位分別用于 SUID 和 SGID、屬主權(quán)限、組權(quán)限、其他用戶權(quán)限。當(dāng)用戶給出的mod 值小于 4 位時,系統(tǒng)會
8、在數(shù)字前面加 0 補齊。 權(quán)限 r w x 分別用數(shù)字 4 2 1 表示, suid guid 用 4 2 表示,各個 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 選項 owner.group file_name 創(chuàng)建文件時,文件預(yù)設(shè) owner 就是創(chuàng)建該文件的用戶,預(yù)設(shè)所屬組(group)就是 owner 所屬的缺省組。只有文件的 owner 和系統(tǒng)管理員才可以改變文件的擁,改變一個文件的 owner 時,相應(yīng)的 suid 也將被清除。chmod 的常用選項: -R 對指定目錄所有文件和子目錄遞歸式地進(jìn)行同樣的操作-h如果 file_name 是符號,則只對符號本身進(jìn)行操作owner 和 .group 表示文件擁有者名和文件所屬組名,可以使用 uid/gid 表示。兩者不能同時省略舉例: cho
10、wn http.http /etc/httpd / 將目錄/etc/httpd 的屬主修改為 http,組修改為 http2) chgrp Usage: chgrp 選項 group file_namechgrp 命令只能用來修改文件的所屬組。chgrp 和 chown 用法類似,選項也一樣。舉例: chown http /etc/httpd / 將目錄/etc/httpd 的所屬組修改為 http3)用戶信息和用戶所屬組信息id user_name 或 groups user_name8.umask 確定系統(tǒng)創(chuàng)建文件時的缺省權(quán)限位。1) Usage: umask umask_mod2) um
11、ask_mod 的計算: umask_mod777文件缺省權(quán)限值。3) 系統(tǒng)不你在創(chuàng)建一個文件時就賦予它執(zhí)行權(quán)限,即 umask_mod 為 002 時,創(chuàng)建文件的缺省權(quán)限值為665,創(chuàng)建目錄的缺省權(quán)限值為 775。9.符號1) Usage: ln -s source_path target_path2)2 種類型的: 硬和軟。軟又稱位符號,符號實際上是指向一個文件的指針,符號和 Windows OS 的快捷方式有點類似。3) 不管是否在同一個文件系統(tǒng)中,都可以創(chuàng)建。在創(chuàng)建的時候,不要忘記在原有目錄設(shè)置執(zhí)行權(quán)限。一旦創(chuàng)建,目錄將具限 777(rwxrwxrwx),但是實際的原有文件的權(quán)限并未改
12、變。4) 舉例: ln -s /var/tmp /home/zqf/tmp / 在 zqf 主目錄創(chuàng)建一個名為 tmp,指向/var/tmp 的符號第 2 章 使用 find 和 xargs 1.有時可能需要在系統(tǒng)中查找具有某一特征的文件(如文件權(quán)限、文件屬主、文件長度、文件類型等)。find是一個非常有效的工具,它可以遞歸式遍歷當(dāng)前目錄甚至于整個文件系統(tǒng)(本地和件或目錄,只要你具有相應(yīng)的文件或目錄的權(quán)限。文件系統(tǒng))來查找某些文2.find 命令的使用1) Usage : find path_name . expression2) path_name : 用于指定要搜索的目錄,可以是以空格分隔
13、的多個目錄路徑的列表。如果省略此參數(shù),默認(rèn)使用當(dāng)前目錄。LINUX 與 UNIX SHELL 編程指南讀書筆記- 4 -3) expression : 用于指定搜索的方式、條件和要執(zhí)行的操作等。如果 expression 省略,則默認(rèn)使用 -print 作為 expression。expression 可由 4 類項目組成: 4)OPTION(選項) : 用于指定 find 命令的搜索方式,一般把 OPTION 放在 expression 的開頭。TEST(測試) :用于指定 find 命令的檢索條件,只有符號條件的文件被指定的 ACTION 處理。ACTION(操作) :用于指定對 find
14、 的搜索結(jié)果執(zhí)行的操作。省略 ACTION 時預(yù)設(shè)為 -print。OPERATOR(運算) : 對 TEST 或 ACTION 進(jìn)行與、或、非 等運算。find 在執(zhí)行時,一般會將第 1 個-字符之后令行參數(shù)都看作 expression,把之前的參數(shù)都看作為要搜索的路徑。3.常用的 OPTION 項目0)1)2)OPTION 項目可以省略,find 默認(rèn)從指定路徑目錄開始遞歸地向下層子目錄搜索。-depth : 在查找文件時,首先查找當(dāng)前目錄中的文件,然后再在其子目錄中查找。-maxdepth level : 進(jìn)入指定的目錄下層目錄搜索時,最深不超過 level(一個非負(fù)整數(shù))層。eg: f
15、ind . -maxdepth 0 -name 1 / 只在當(dāng)前目錄而不向下層子目錄搜索名為1的文件或目錄3)4)5)-follow : 如果 find 命令遇到符號文件,就跟蹤至所指向的文件。-mount : 不搜索其它文件系統(tǒng)上的目錄(不文件系統(tǒng) mount 點)。-daystart : 從當(dāng)日起始時開始而不是從 24 小時之前開始計算時間(如-amin, -atime, -cmin, -ctime, -mmin 和 -mtime )。6) -noleaf : 不為目錄中子目錄數(shù)量比硬數(shù)少 2這種假設(shè)做優(yōu)化。這個選項在搜索那些不遵循 UNIX文件系統(tǒng)約定的文件系統(tǒng)(比如 CD-ROM,MS
16、-DOS 文件系統(tǒng)或 AFS 卷的加載點)時使用。在普通的 UNIX 文件系統(tǒng)中,每個目錄至少有兩個硬: 它的名字和它的.條目。另外,它的每個子目錄(假的話)還會各有一個.到它。在 find 檢索一個目錄時,發(fā)現(xiàn)子目錄數(shù)比它的數(shù),它就知道目錄中的其他條目并非目錄(而是目錄樹中的葉(leaf)節(jié)點)。除非需要檢索的是這個葉節(jié)點,否則沒必要去處理它。這樣可以帶來很大的搜索搜索速度的提升。4.常用的 TEST 項目0) 在 TEST 項目的一些選項中有時會使用數(shù)字,數(shù)字 N(非負(fù)整數(shù))可以以 3 種形式給出:+N 表示比 N 大, -N 表示比 N 小, N 表示正好是 N1)-name PATTE
17、RN : 查找文件名符合模式 PATTERN(一般要加雙引號)的文件,也可直接使用文件名。eg: find . -name a-za-z0-90-9.txt -print / 此命令可以返回名為 ax37.txt 的文件-empty : 查找空白文件,它可以是一般文件或目錄。-lname PATTERN: 只查找符合 PATTERN 的符號文件。-iname 和 -ilname : 分別與 -name 和 -lname 類似,只是不區(qū)分大小寫。-regex PATTERN : 查找完整文件名符合模式 PATTERN 的文件。2)3)4)5)6)-type C : 查找某一類型的文件。C 可以是
18、 b c d p l s f (塊字符目錄 命名管道 符號socket 正規(guī)文件)。eg: find -type l / 此命令返回當(dāng)前用戶的主目錄內(nèi)所有的符號文件的文件名7)-size Nbckw :查找使用 N 個空間的文件,可以使用 b(塊,512 字節(jié)) c(字節(jié)) k(KB) w(2 字節(jié))為,不帶時預(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)時間比文件 FILENAME 的修改時間更接近現(xiàn)在的文件。查找其狀態(tài)改變(change)時間比文件 FILENAME 的修改時間更接近現(xiàn)在的文件。查找其內(nèi)容修改(modify)時間比文件 FILENAME 的修改時間更接近現(xiàn)在的文件。-amin-cmin-mminN N N:查找在指定時間(N 為分鐘)被存取過的文件。查找在指定時間(N 為分鐘)更改過文件狀態(tài)的文件。查找在指定時間(N 為分鐘)修改過數(shù)據(jù)內(nèi)容的文件。-atime N : 查找在指定時間(N
21、為天)被存取過的文件。LINUX 與 UNIX SHELL 編程指南讀書筆記- 5 -ctime N : 查找在指定時間(N 為天)更改過文件狀態(tài)的文件。-mtime N : 查找在指定時間(N 為天)修改過數(shù)據(jù)內(nèi)容的文件。注: 上面這些選項分別涉及到文件的 3 種時間: 文件存取時間(access)、文件狀態(tài)改變時間(status change) 和 文件內(nèi)容修改時間(modify),也就是在 ls -l 命令輸出中顯示的時間。5.常用 ACTION1)2)3)-print : 以完整文件路徑名的形式將 find 的搜索結(jié)果顯示到標(biāo)準(zhǔn)輸出,以 NEWLINE 分隔各個文件名。-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 目錄中更改時間在 5 日以前的文件: 同上,是一種更安全的模式,在執(zhí)行每個命令前,會提示用戶來確定是否執(zhí)行。6.常用的 OPERATOR1)EXPR1 EXPR2 或EXPR1 -a EXPR2 或 EXPR1 -and EXPR2 : 把 2 個 EXPR 相與。eg: find zqf -size
23、 +10k -name *.c/ 從 zqf 的主目錄開始搜索大于 10kB 的 C 源程序文件2)EXPRT1 -o EXPR2 或 EXPR1 -or EXPR2 : 把 2 個 EXPR 相或。eg: find . -name *.c -or -name *.cpp / 從當(dāng)前目錄開始搜索 C 或 C+源程序文件! EXPR 或 -not EXPR : 對 EXPR 取反。eg: find zqf ! -user zqf / 查找 zqf 的主目錄中屬主不是 zqf 的文件或目錄( EXPR ) : 當(dāng)出現(xiàn)多個 OPERATOR 時,用來改變 OPERATOR 的運算順序。eg: fin
24、d . ! ( -user zqf -name *.awk )3)4)7.xargs1) Usage: xargs CMD (從管道中獲取 CMD 命令的參數(shù))2) xargs 常常與 find 命令一起使用,用于取代 find 的-exec 參數(shù)。有幾個: find 的-exec 參數(shù)有很多局限。比如,遞給 exec 少的 shell 命令等。令長度有限制,在某些系統(tǒng)上-exec 參數(shù)只能調(diào)用很 某些系統(tǒng)上-exec CMD 選項會為 find 的搜索結(jié)果中的每一個文件名啟動一個 CMD 進(jìn)程,而不是把搜索結(jié)果作為一個參數(shù)文件列表整個傳給 CMD 程序,當(dāng)搜索結(jié)構(gòu)很多時,會嚴(yán)重影響系統(tǒng)性能。
25、xargs CMD 把從管道獲取的參數(shù)作為一個參數(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è),與Windows 的計劃任務(wù)類似。2) cron 守護(hù)進(jìn)程支持 crontab 和 at,用戶可以通過這 2 個程序來實現(xiàn)定時調(diào)度作業(yè)。2.crontab 命令用戶提交、編輯或刪除相應(yīng)的作業(yè)。1) 2)要想讓 cron 來定時調(diào)度執(zhí)行用
26、戶指定的程序,需要 2 個步驟: 按照 crontab 文件的格式創(chuàng)建用戶的 crontab 文件。使用 crontab 命令向 cron 提交用戶的 crontab 文件。系統(tǒng)管理員可以通過設(shè)置/etc 目錄下的 cron.deny 和 cron.allow 文件來或用戶使用 crontab。3.創(chuàng)建用戶的 crontab 文件:1) crontab 文件由若干條組成,一條對應(yīng)一個要運行令。注釋行要在行首加#。2) crontab 文件格式:分時日月 用 06(0 表示要運行的 CMD天),小時用 123(0 表示子夜)時間用數(shù)字表示,其中表示空格,作為域分隔符,每一條必須含有 5 個時間域
27、,而且每個域之間要用空格分隔。在這些表示時間的域中,可以用橫杠-來表示一個時間范圍,可以使用逗號,,使用星號*來表示對某個表示時間的域沒有特別的限定。例如,你希望一至五運行某個作業(yè),那么可以在域使用1-5來表示。如果希望在日域填入*。一和四運行某個作業(yè),只需要使用1,4來表示。如果希望每天都運行某作業(yè),應(yīng)該舉例: echo 10 1 * *6,0 /bin/find zqf -name core -exec rm ; zqf.cron/ 上面的例子創(chuàng)建了一個用戶 crontab 文件 zqf.cron,表示每周六、周日的 1:10 運行一個 find 命令。LINUX 與 UNIX SHELL
28、 編程指南讀書筆記- 6 -4.用戶提交用戶 crontab 文件:1) Usage: crontab user_cronfile2) 用戶提交了 crontab 文件后,cron 會把用戶 crontab 文件中的內(nèi)容添加到/var/spool/cron 目錄下一個與用戶名同名的文件中,用戶第一次使用 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è),使其在指定的稍后時間運行。1) 一旦一個作業(yè)被提交,at 命令將會保留所有當(dāng)前的環(huán)境變量,路徑,不象 crontab 只提供缺省的環(huán)境。該作業(yè)的所有輸出重定向到某個文件中。以電子郵件的形式給用戶,除非你對其輸出進(jìn)行了重定向,絕大多數(shù)情況下是2) 和 crontab 一樣
30、,系統(tǒng)管理員可以通過/etc 目錄下的 at.allow 和 at.deny 文件來at 命令。一般來說,對 at 命令的使用不如對 crontab 的使用限制那么嚴(yán)格。哪些用戶可以使用3) 向 at 提交一個作業(yè)后,at 將為該作業(yè)分配一個唯一的作業(yè)號,進(jìn)入 at 的隊列,作業(yè)運行后4) 提交給 at 的作業(yè),只能在指定的時間運行一次,不能象 crontab 那樣周期性運行。隊列。5.向 at 提交作業(yè)1)命令行方式: 一般在提交 shell時,使用命令行方式。Usage: at -f SCRIPT_FILE -m TIMESCRIPT_FILE : 是文件名,可以把要提交給 at 的作業(yè)寫
31、到文件中,然后提交給 at。-m : 作業(yè)完成后給用戶發(fā)郵件。TIME : 指定作業(yè)將要執(zhí)行的時間。TIME 的格式很靈活。2)交互方式: 在交互方式下,要提交的作業(yè)直接從Usage: at -m TIME臺輸入。在命令行下執(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è)被指定的時間,at 的時間格式很靈活,時間粒度可以是時分、月
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 為時間,可以是 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 隊列等待運行的作業(yè): at -l 或 atq2) 取消還未運行的作業(yè): at -r job_number 或 atrm job_number8.&命令 把作業(yè)放到執(zhí)行1) 當(dāng)在前臺運行某作業(yè)時,終端被該作業(yè)占據(jù),用戶不能使用終端;而把作業(yè)放在運行就占據(jù)終端。2) 當(dāng)在執(zhí)行作業(yè)時,用戶可以繼續(xù)使用終端做其他事情。但是作業(yè)在運行一樣會將結(jié)果輸出到屏幕上,干擾你的工作。如果放在運行的作業(yè)會產(chǎn)生大量的輸出,最好使用下面的把它的輸出重定向到某個文件中。比如 command out_file 2&1 &L
34、INUX 與 UNIX SHELL 編程指南讀書筆記- 7 -4) 適合運行的作業(yè)是那些非交互式的作業(yè)。需要用戶交互令不要放在執(zhí)行,否則系統(tǒng)就會始終等待用戶的輸入。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īng)的進(jìn)程作業(yè),那么在缺省情況下該作業(yè)的所有輸出都被重定向到一個名為nohup.out 的文件中,除非另外指定了輸出文件。3)舉例: nohup find /
35、 -name *.tmp -print /root/tmp.fnd 2&1 &第 4 章 文件名置換1.1)符 可在命令行上匹配文件名使用星號* : 可以匹配文件名中的任何字符串,空字符串。eg: ls app* / 此命令可以列出文件 app、appdva、appdva_SLA 等使用問號? : 可以匹配文件名中的任何單個字符。eg: ls conf.?.log / 此命令可以列出文件 conf.12.log、conf.25.log 等2)3) 使用. : 可以匹配方括號中出現(xiàn)的任何單個字符。還可以使用-來連接兩個字母或數(shù)字,以此來表示一個范圍。eg: ls log.0-5* / 此命令可以
36、列出文件 log.0321、log.2987、log.5367 等4) 使用 !. : 與.相反,匹配不屬于方括號!.中出現(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)移符,除非加上此選項。引號括起來。-n : echo 缺省在輸出 STRING 后輸出 NEWLINE(換行),使用此選項 echo 將不輸出 NEWLINE。echo 支持的轉(zhuǎn)移符:NNNaft舉例:ASCII 碼為 NNN(8 進(jìn)制)的字符,NNN 如果不是一個合理的值,將直接按照字面打印響鈴換頁水平制表符bnv退格換行垂直制表符cr/去除結(jié)尾 NWELINE 字符反斜線顯示 User: zqf3)echo -e User: $USERtUID: $UIDUID: 5002.read 從鍵盤或文件的某一行文本中讀入信息,并將其賦給
38、變量。1) Usage: read varible1 varible2 .2)3)4)如果只指定了一個變量,read 將會把輸入行的所有內(nèi)容賦給該變量,直至遇到第一個文件結(jié)束符或。如果指定了多個變量,read 用空格(環(huán)境變量 IFS)作為分隔符把輸入行分成多個域,分別賦給各個變量。輸入文本分隔出的域數(shù)量多于 read 給出的變量數(shù),read 將所有的超長部分賦予最后一個變量。3.cat 一個簡單而通用令,可以用它來顯示文件內(nèi)容,創(chuàng)建文件,還可以用它來顯示字符。1) 顯示文件內(nèi)容: cat myfile | more / cat 命令在文件分頁停下,它會一下顯示完整個文件2) 創(chuàng)建文件: ca
39、t file1 file2 file3 bigfile / 創(chuàng)建一個名為 bigfile 的文件,包含三個文件的內(nèi)容cat myfile / 創(chuàng)建一個新文件,并向其中輸入一些內(nèi)容,輸入完后按結(jié)束輸入3) 顯示文件中字符: cat -v filename4.管道 可以通過管道把一個命令的輸出傳遞給另一個命令作為輸入。管道用豎杠|表示。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 它把輸出的一個副本輸送到標(biāo)準(zhǔn)輸出,另一個副本拷貝到相應(yīng)的文件中1)Usage: tee -a filename -a : 表示追加到文件末尾。 tee 命令應(yīng)該和管道結(jié)合使用2) 舉例: who | tee who.out / who 命令的輸出不僅會輸出到標(biāo)準(zhǔn)輸出,還會輸入到文件 who.out6.標(biāo)準(zhǔn)輸入、輸出和錯誤1) 文件描述符: 文件描述符是從 0 開始的整數(shù),指向與進(jìn)程相關(guān)的特定數(shù)據(jù)流。當(dāng)進(jìn)程啟動時,通常打開三個文件描述符,分別對應(yīng)三種標(biāo)準(zhǔn)的 I/O: 標(biāo)準(zhǔn)輸入(文件描述符 0),標(biāo)準(zhǔn)輸出(文件描
41、述符 1),標(biāo)準(zhǔn)錯誤(文件描述符 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)錯誤(STDERR): 它是命令的錯誤信息輸出,缺省也和終端的屏幕關(guān)聯(lián)。如果進(jìn)程打開了額外的文件進(jìn)行輸入和輸出,則其被設(shè)置為下一個可用的文件描述符,從 3 到 9。7.文件重定向1) 在執(zhí)行命令時,命令的標(biāo)準(zhǔn)輸入、輸出和錯誤是和文件描述符 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)輸出重定向到一個文件中(如果文件,其被覆蓋)。: 把 CMD 命令的標(biāo)準(zhǔn)輸出重定向到一個文件中(追加文件尾部)。: 創(chuàng)建一個長度為 0 的空文件,如果文件清空該文件。舉例: ls -l | grep d files.out / 把當(dāng)前目錄下的子目錄的列表寫到文件 files.out中 zqf.log/ 清空日志文件 zqf.log 3) 4) 5)CMD filename 實際上是和 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 / 對文件 grade.txt 進(jìn)行排序(sort)CMD filename 實際上是和 CMD 0 filename 等效,CMD filename 和 CMD 0 filename : 把 CMD 命令的標(biāo)準(zhǔn)錯誤重定向到一個文件中(如果文件,其被覆蓋)。 filename : 把 CMD 命令的標(biāo)準(zhǔn)錯誤重定向到一個文件中(追加文件尾部)。find /
44、-name *.tmp -exec rm -rf ; 2/dev/null / 把命令的錯誤消息輸出丟棄結(jié)合使用標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤CMD 1 file1 2 file2 : 將輸出重定向到 file1 中,并把標(biāo)準(zhǔn)錯誤重定向到 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 命令的錯誤信息(比如沒有足夠權(quán)限搜索某些目錄)寫到文件 find.err 中
45、cat 2.txt / 實際是將 1.txt 的內(nèi)容寫到 2.txt,等效于文件6)合并標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤CMD filename 2&1 : 把標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤一起重定向到一個文件中CMD filename 2&1 : 把標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤一起重定向到一個文件中(追加)舉例: grep standard * grep.out 2&1 / 在當(dāng)前目錄下所有文本文件中搜索字符串standard CMD filename 2&1 實際上可以看作 2 部分, filename(重定向標(biāo)準(zhǔn)輸出)和2&1(把標(biāo)準(zhǔn)錯誤重定向到標(biāo)準(zhǔn)輸出)。7) 在使用一些接受文件名為參數(shù)令時,有時命令會把文件描述符當(dāng)文件
46、名參數(shù)而報錯。一般文件描述符和重定向符號之間留有不要有空格。第 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 中作為一個整體被執(zhí)行。只有在 中所有命令的輸出作為一個整體被重定向時,其中shell 執(zhí)行。3) ()、 一般和&或|一起使用令才被放到子 shell 中執(zhí)行,否則仍然在當(dāng)前eg: cp file1 file2 | (echo cp failed | mail zqf; exit) / 當(dāng)文件 file1 很大時,需要花費很多時間,如果4) 在編寫 shell 語句非常有用。過程中
48、出錯,將會一個郵件給用戶,然后當(dāng)前 shell其后面命令的執(zhí)行,對構(gòu)造時,使用&和|,可根據(jù)前面命令的返回值來LINUX 與 UNIX SHELL 編程指南讀書筆記- 10 -LINUX 與 UNIX SHELL 編程指南讀書筆記之二zqf(zqf620)第二部分文本過濾第 7 章 正則表(RE)1.當(dāng)從一個文件或命令輸出中抽取或過濾文本時,可以使用正則表(RE,regular expressions),正則表達(dá)式是一些特殊或不很特殊的字符串模式的集合。正則表符組成,當(dāng)然也可以使用規(guī)則字符。由一些特殊字符或進(jìn)行模式匹配操作時使用的2.使用句點.匹配單字符1) .: 匹配任意單 ASCII 字符
49、,可以為字母,或為數(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) $: 在行尾匹配字符串或字符,$符號放在匹配單詞后。2) 舉例: trouble$ 匹配以單詞 trouble 結(jié)尾的所有行$匹配所有空行5.使用*匹配字符串中的單字符或其重復(fù)序列(與文件名置換中的*不一樣)1) *: 一個單字符后緊跟*,匹配 0 個或多個此單
50、字符。2) 舉例: compu*t 將匹配字符 u 一次或多次,即匹配 computer computing compuuute 等1033* 可以匹配 101333 10133 1013444 等3) 在正則表中使用*,有時會產(chǎn)生非預(yù)期的結(jié)果。6.使用1) 義。一個特殊字符的含義:用來一個符的特殊含義。因為有時在 shell 中符有特殊含義??梢允蛊涫?yīng)有意2) 舉例: 在正則表中匹配以*.pas 結(jié)尾的所有文件: *.pas$7.使用匹配屬于一個范圍或集合單個字符1) : 匹配 內(nèi)的字符??梢允且粋€單字符,也可以是字符序列??梢允褂?表示括號 內(nèi)字符序列范圍,如用1-5代替12345???/p>
51、以用逗號,分隔括號內(nèi)的字符。2) 當(dāng)符號當(dāng)直接靠著,意指或不匹配括號3) 舉例: 0-9匹配任意一個數(shù)字;a-z匹配任意一個小寫字母;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 次的情形實際上真正的格式是 n n, ,m n,m,只不過對和應(yīng)用了 Esacpe 字符。6)9.經(jīng)常使用的正則表舉例SsignalL匹配單詞 signal、signaL、Signal、SignaL SsignalL. 同上,但加一句點LINUX 與 UNIX SHELL 編程指南讀書筆記- 11 -USER$.d.x.x.xlyYnN.*$.$ a-zA-Za-z*0-9$ 12
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020年日歷(A4版可直接打印)
- 生物質(zhì)快速熱解流化床的模擬與優(yōu)化
- 旋提手法聯(lián)合舒筋活絡(luò)洗劑對頸型頸椎病的臨床療效觀察
- 公司及項目部安全培訓(xùn)試題附參考答案【B卷】
- 重金屬污染耕地安全利用與替代種植行業(yè)跨境出海戰(zhàn)略研究報告
- 氟橡膠閥門密封件行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 特種潤滑脂添加劑行業(yè)跨境出海戰(zhàn)略研究報告
- 網(wǎng)球公園企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 用戶行為研究行業(yè)跨境出海戰(zhàn)略研究報告
- 注冊建筑師課程行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- T-CSCP 0019-2024 電網(wǎng)金屬設(shè)備防腐蝕運維診斷策略技術(shù)導(dǎo)則
- 2025中考道德與法治核心知識點+易錯易混改錯
- 2024年全國統(tǒng)一高考英語試卷(新課標(biāo)Ⅰ卷)含答案
- 電路圖及實物圖連接練習(xí)
- 《一起長大的玩具》課件
- 實驗三鉀離子對氣孔開度影響
- 市政學(xué)-張旭霞-第四章-城市土地管理和住房管理
- 特殊教育-資源中心-職能---ppt課件
- T∕ACSC 01-2022 輔助生殖醫(yī)學(xué)中心建設(shè)標(biāo)準(zhǔn)(高清最新版)
- 通力救援程序
- 1混凝土拌合站臨建方案
評論
0/150
提交評論