




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第2章Shell命令內(nèi)容提要Shell命令概述目錄和文件操作用戶和用戶組管理權(quán)限管理進(jìn)程管理輸入/輸出重定向和管道元字符與正則表達(dá)式網(wǎng)絡(luò)基礎(chǔ)2.1Shell命令概述shell命令概述Linux系統(tǒng)可簡單視作由內(nèi)核、系統(tǒng)工具和應(yīng)用程序等構(gòu)成的集合,它們通常被安裝在磁盤某分區(qū)建立的文件系統(tǒng)上,盡管源自不同的Linux發(fā)行版,但Linux系統(tǒng)所包含的內(nèi)容和組織結(jié)構(gòu)遵從相同的規(guī)則。根文件系統(tǒng)的目錄結(jié)構(gòu)/binetcdevbootusrmnthomerootzhangsliswwcdromfloppybinsbinincludeliblocalsrcgrubkernelsdasda1ttyxxcdromlscppwdmount根文件系統(tǒng)的目錄結(jié)構(gòu)(續(xù))目錄名內(nèi)容描述/bin普通用戶使用的系統(tǒng)工具/sbin管理員使用的系統(tǒng)工具/bootLinux內(nèi)核映像文件和與引導(dǎo)加載有關(guān)的文件/dev設(shè)備文件,包括字符設(shè)備和塊設(shè)備/etc系統(tǒng)配置文件/lib共享庫文件,供/bin和/sbin下的文件使用/mnt掛載點,常用于掛載文件系統(tǒng)/usr/usr/bin普通用戶使用的應(yīng)用程序/usr/includeC頭文件/usr/lib函數(shù)庫/usr/src/源代碼目錄/usr/sbin超級用戶使用的管理程序/proc基于內(nèi)存的文件系統(tǒng),用于顯示內(nèi)核信息/sys基于設(shè)備驅(qū)動模型的虛擬文件系統(tǒng)/tmp臨時文件目錄/var日志信息主目錄和工作目錄Linux系統(tǒng)中的每個用戶擁有各自的目錄,用于存放專屬的文檔,并通過工作目錄表達(dá)其在系統(tǒng)中當(dāng)前所處的位置。1.主目錄主目錄為用戶登錄系統(tǒng)時所處的目錄,,它在創(chuàng)建用戶時設(shè)定。2.工作目錄工作目錄為用戶當(dāng)前所處的目錄,它可隨時發(fā)生改變。文件路徑1.絕對路徑絕對路徑以根目錄為起點,到達(dá)目標(biāo)文件所經(jīng)歷的一系列目錄構(gòu)成的字符串,目錄名之間用/分割。2.相對路徑相對路徑以當(dāng)前工作目錄為起點,到達(dá)目標(biāo)文件所經(jīng)歷的目錄序列。假設(shè)用戶當(dāng)前工作目錄為/home/zhangs,該目錄下的文件demo.c的路徑可以表示為:/home/zhangs/demo.c//絕對路徑./demo.c//相對路徑shell命令的語法結(jié)構(gòu)cmd代表命令的名稱,通常為程序名稱。option表示可選項,選項通??山M合使用;list表示命令操作的對象序列,對象可為文件、目錄和用戶等,對象名以空格分割,其數(shù)量取決于具體的命令。選項有短格式和長格式兩種。短選項格式可表示為-x[xxx],字母x表示某功能,xxx代表可能攜帶的參數(shù),長選項格式可表示為--word[xxx],word表示某功能的全稱,xxx同樣代表可能攜帶的參數(shù)。命令語法的一般形式cmd[option][list]實例分析$
ls
-l
/home命令提示符命令字命令選項命令組成部分之間用空格進(jìn)行分隔命令參數(shù)Shell命令的分類1.內(nèi)部命令內(nèi)部命令由Shell實現(xiàn),具有功能簡潔和使用頻率高的特點。2.外部命令外部命令是指存儲于文件系統(tǒng)中的可執(zhí)文件。實例分析$typels #顯示為外部命令$typecd #顯示為內(nèi)部命令聯(lián)機幫助語法man[章節(jié)]term功能獲得對象term的聯(lián)機幫助信息,命令的常用選項如下表2-2所示。章節(jié)編號含義1Shell命令2核心函數(shù)/系統(tǒng)調(diào)用3庫函數(shù)4設(shè)備文件,位于/dev目錄5文件的格式與內(nèi)容,例如,/etc/passwd6游戲7雜項(包括宏、包和約定等)8系統(tǒng)管理命令9內(nèi)核函數(shù)實例分析$man1read $man2read 2.2目錄和文件操作目錄操作概述命令功能ls顯示目錄中的文件pwd顯示當(dāng)前工作目錄cd改變當(dāng)前工作目錄mkdir創(chuàng)建目錄rmdir刪除目錄
目錄是一種特殊文件,它由若干目錄項組成,每個目錄項包含文件名機器關(guān)聯(lián)的i節(jié)點。每個目錄均包含兩個特殊成員”.”和”..”,”.”指向當(dāng)前目錄,”..”指向父目錄。實例分析$ls-l~/ #瀏覽用戶主目錄$ls-a./ #瀏覽當(dāng)前目錄$ls-iR/usr#瀏覽/usr及其子目錄$pwd #顯示當(dāng)前工作目錄$cdtest #將當(dāng)前工作目錄切換至test$mkdir
mydir #創(chuàng)建目錄mydir$rmdir
mydir #刪除目錄mydir文件操作命令
文件是由若干字節(jié)構(gòu)成的字節(jié)流,在Linux系統(tǒng)中,文件具有廣泛的含義,可將外部設(shè)備、定時器和事件等抽象為文件。命令功能file顯示指定文件的類型touch改變文件的時間戳cp復(fù)制文件或目錄rm刪除文件或目錄mv移動文件或目錄,可用于文件重命名stat顯示文件屬性實例分析$cpfile1file2#復(fù)制文件$cp-rfdir1dir2#復(fù)制目錄$rmfile1file2#刪除文件$rm-rdir1 #刪除目錄$mvdemotest#將demo文件重命名為test命令功能cat顯示文本文件內(nèi)容more分頁顯示文本文件內(nèi)容less分頁顯示文本文件內(nèi)容,可上下翻頁head顯示文件首部內(nèi)容tail顯示文件尾部內(nèi)容文本文件概述
文本文件是指僅存儲文字編碼的文件,其內(nèi)容沒有格式。
Linux系統(tǒng)中的配置文件、shell腳本和各種高級語言的源代碼文件均為文本文件。實例分析$catdemo.c
#顯示文本文件內(nèi)容$moredemo.c
#分頁顯示文本文件內(nèi)容鏈接文件1.硬鏈接硬鏈接是指與鏈接的文件共享i節(jié)點,為同一文件定義多個名稱,硬鏈接不能跨越文件系統(tǒng)。2.符號鏈接符號鏈接又稱為軟鏈接,其內(nèi)容存儲的是鏈接文件的路徑,它可跨越不同的文件系統(tǒng).實例分析$lnsfile
dfile #創(chuàng)建硬連接$ln-ssfile
dfile#創(chuàng)建符號鏈接2.3用戶和用戶組管理用戶管理概述
為有效管理軟硬件資源的使用,Linux繼承了Unix的用戶和用戶組特性。用戶組是由具有某些共同特征的用戶構(gòu)成的集合。一個用戶可同時屬于多個用戶組,其中,一個為初始組,通常稱為用戶組,其余則稱為附加組。系統(tǒng)為每個用戶和用戶組設(shè)置唯一標(biāo)識ID,供內(nèi)核使用。用戶的分類1.超級用戶(root)
超級用戶也稱為特權(quán)用戶,用于系統(tǒng)管理,可不加限制地使用系統(tǒng)資源,其UID為0,通常在系統(tǒng)安裝是自動創(chuàng)建。2.系統(tǒng)用戶系統(tǒng)用戶為受限用戶,為滿足系統(tǒng)進(jìn)程對文件資源的訪問控制而建立,例如bin和lp等,用戶UID一般為1~999。3.普通用戶建立普通戶的目的是為了讓用戶登錄系統(tǒng),使用系統(tǒng)資源,普通用戶也為受限用戶,用戶的UID的值為1000~60000之間。用戶和用戶組的相關(guān)操作命令含義groupadd建一個新的用groupdel刪除用戶組useradd創(chuàng)建一個新的用戶Userdel刪除用戶Usermod修改用戶Passwd設(shè)置用戶登錄密碼chown修改文件的歸屬對用戶和用戶組的操作需要有管理員權(quán)限。相關(guān)文件文件名描述/etc/passwd保存用戶信息/etc/shadow存儲加密后的密碼/etc/group保存用戶組的相關(guān)信息新建用戶組合用戶的信息,存儲在位于/etc目錄的相關(guān)文件中。/etc/passwd文件 structpasswd{ char*pw_name;/.用戶名
char*pw_passwd;//用戶密碼
uid_tpw_uid;//用戶ID gid_tpw_gid;//用戶組ID char*pw_gecos;//用戶信息
char*pw_dir;//主目錄
char*pw_shell;//shell程序
};/etc/shadow文件 structspwd{ char*sp_namp;//登錄用戶名
char*sp_pwdp;//經(jīng)加密的密碼
longsp_lstchg;//最后一次修改時間
longsp_min;//最小間隔修改時間
longsp_max;//最大間隔修改時間
longsp_warn;//密碼過期前的天數(shù)以警告用戶
longsp_inact;//密碼過期后直至被禁用的天數(shù)
longsp_expire;//密碼的有效期
};/etc/group文件 structgroup{ char*gr_name;//用戶組名
char*gr_passwd;//用戶組密碼
gid_tgr_gid;//用戶組ID char**gr_mem;//包含的用戶名
};實例分析$groupaddstudent$groupaddmusic$groupaddFootball$useradd
zhangs-gstudent-Gmusic-md/home/zhangs$useradd
lis-gstudent-GFootball-md/home/lis$passwdzhangs
$passwdlis
2.4文件權(quán)限管理觀察ls–l命令的執(zhí)行結(jié)果zhangsrootrootzhangsstudentrootrootstudent6617877876Oct122:43Oct122:41Oct122:41Oct122:44demo.cexam12-11.cp1.ctest.c->demo.crwxr--r-xrwxr--r-xrwxr--r-xrwxrwxrwx1221---l最近修改日期和時間文件名文件大小權(quán)限分配引用次數(shù)文件類型文件歸屬(用戶和用戶組)在文件系統(tǒng)中,每個文件由目錄項和i節(jié)點組成,目錄項記錄文件名和i節(jié)點的地址,i節(jié)點記錄文件屬性的元數(shù)據(jù),其中包括文件類型、權(quán)限分配、引用次數(shù)和文件的歸屬等。用戶可通過ls–l命令顯示文件的詳細(xì)信息。
每個文件一行,其中,每行的第1個字符標(biāo)識文件的類型,第2個至第10個字符表示文件的權(quán)限分配。文件類型ls–l命令結(jié)果中每行的第一個字符表示文件的類型前綴類型前綴類型—普通文件l符號鏈接文件d目錄p命名管道c字符設(shè)備s本地套接字b塊設(shè)備文件的引用次數(shù)
指向同一i節(jié)點的文件數(shù)量,為該i節(jié)點關(guān)聯(lián)文件的引用次數(shù)。若為某個文件創(chuàng)建硬鏈接,則文件的引用數(shù)量加1,符號鏈接不會增加文件的引用次數(shù)。
由于每個目錄中均包含當(dāng)前目錄和父目錄,因此,新創(chuàng)空目錄的引用次數(shù)為2.權(quán)限普通文件目錄r(讀)查看文件內(nèi)容瀏覽目錄內(nèi)容w(寫)修改文件內(nèi)容在目錄中創(chuàng)建/刪除文件/目錄x(執(zhí)行)將文件投入運行在目錄中搜索文件rwxrw-r--八進(jìn)制表示
764用戶(u)用戶組(g)其他用戶(o)內(nèi)部表示2.文件權(quán)限的分配1.文件權(quán)限的定義權(quán)限的定義和分配
系統(tǒng)將訪問文件的用戶分為三類,用戶、用戶組和其他用戶。均為他們分配三種權(quán)限,依次為度、寫和執(zhí)行。Zhangsstudent
為了滿足某些特殊需求,Linux引入了三位擴展權(quán)限,它們分別為SUID、SGID和sticky。
i節(jié)點中的權(quán)限共計12位,分為四組,它們依次為擴展權(quán)限、用戶權(quán)限、用戶組權(quán)限和其他用戶權(quán)限。擴展權(quán)限100111110100擴展位用戶用戶組其他用戶擴展位的定義SUID標(biāo)志
SUID(Set-User-ID)標(biāo)志處于擴展權(quán)限中的第1位,八進(jìn)制值為04000,當(dāng)執(zhí)行設(shè)置了SUID位的程序時,進(jìn)程的有效用戶切換至程序的所屬用戶,使進(jìn)程擁有程序所屬用戶的的權(quán)限。2.SGID標(biāo)志
SGID(Set-Group-ID)標(biāo)志處于擴展權(quán)限的第2位,八進(jìn)制值為02000,與SUID類似,當(dāng)用戶執(zhí)行設(shè)置了SGID位的程序時,進(jìn)程的有效用戶組切換至該程序的所屬用戶組,若某目錄上設(shè)置SGID位,目錄下建立文件或子目錄的所屬用戶組取自該目錄的所屬用戶組。3.Sticky標(biāo)志
Sticky標(biāo)志處于擴展權(quán)限中的第3位,八進(jìn)制值為01000,當(dāng)在某個目錄設(shè)置sticky位時,該目錄下的文件只有其所屬用戶才有權(quán)刪除。擴展位的字符表示ls命令未為擴展位預(yù)留顯示位置,而是分別共享用戶、用戶組和其他用戶的可執(zhí)行位。SUID/SGIDu.x/g.x顯示00-01X10S(大寫)11S(小寫)suido.x顯示00-01X10T(大寫)11t(小寫)Suid/sgid分別共享用戶/用戶組的可執(zhí)行位,顯示規(guī)則如下表所示Stickyu共享其他用戶的可執(zhí)行位,字符顯示規(guī)則如下表所示。實例分析100111101101-rwsr-xr-x1rootroot57972May172017/usr/bin/passwddrwxrwxrwt8rootroot4096Jan2704:25tmp001111111111-rw-r-----1rootshadow1521Jan2500:50/etc/shadow1.passwd命令使普通用戶也可修改自身密碼2./tmp目錄僅允許用戶刪除自己的文件000110109000權(quán)限掩碼
為了提高權(quán)限管理的靈活性,系統(tǒng)引入權(quán)限掩碼,它用三位八進(jìn)制表示,分別對應(yīng)用戶、用戶組和其他用戶,若某位為1,則響對應(yīng)的權(quán)限被屏蔽。系統(tǒng)為每個登錄用戶分配一個權(quán)限掩碼,在shell上執(zhí)行的進(jìn)程將繼承該掩碼值。用戶可通過umask命令獲取或重新設(shè)置權(quán)限掩碼。新建文件權(quán)限的計算新建文件/目錄的進(jìn)程最終會執(zhí)行核心函數(shù)open/mkdir,它們會傳遞參數(shù)mode,用以指定權(quán)限,最終新建文件/目錄的權(quán)限還要取決于進(jìn)程的權(quán)限掩碼,計算公式如下。新建文件/目錄的權(quán)限=mode&~(umask&0777)在默認(rèn)情況下,新建普通文件的默認(rèn)mode值為0666,創(chuàng)建目錄的默認(rèn)mode為0777。假設(shè)新建文件時,mode參數(shù)設(shè)置為0666,用戶權(quán)限掩碼設(shè)置為022新建文件的權(quán)限=0666&~(022&0777)=0644文件權(quán)限的相關(guān)操作命令功能umask查詢/設(shè)置用戶的權(quán)限掩碼chmod修改文件的權(quán)限分配實例分析$chmoda-xdemo $chmodgo-wdemo $chmod
u+sdemo $chmod764demo $chmod5764demo $chown
zhangstest$chown:studenttest進(jìn)程的身份
進(jìn)程的身份源自登錄系統(tǒng)的用戶,另外還包括用戶所屬的用戶組和附加組。進(jìn)程訪問文件時,有時,發(fā)揮作用的未必是登錄用戶,為此,系統(tǒng)引入了實際用戶/實際用戶組和有效用戶/有效用戶組,通常實際用戶/實際用戶組與有效用戶/有效用戶組相同,但當(dāng)執(zhí)行設(shè)置了SUID/SGID的可執(zhí)行文件時,進(jìn)程的有效用戶/有效用戶組會發(fā)生改變。
因此,進(jìn)程的身份包括有效用戶、有效用戶組和附加組進(jìn)程訪問文件的權(quán)限檢查進(jìn)程訪問文件時,內(nèi)核除檢查文件的權(quán)限外,還需檢查路徑上每個目錄是否擁有可執(zhí)行權(quán),對于目標(biāo)文件,內(nèi)核按下列檢查次序執(zhí)行,一旦匹配成功,內(nèi)核將停止后續(xù)操作。(1)若進(jìn)程的有效用戶ID為0,表明進(jìn)程為特權(quán)級進(jìn)程,此時,進(jìn)程獲得文件的所有權(quán)限。(2)若進(jìn)程的有效用戶ID非0,且與文件所屬用戶ID相同,此時,進(jìn)程獲得文件所屬用戶的權(quán)限。(3)若進(jìn)程的有效用戶組ID或某附加組ID與文件所屬用戶組ID相同,則進(jìn)程獲得文件所屬用戶組的權(quán)限。(4)若上述三種情況均不符合,則進(jìn)程獲得文件賦予其他用戶的權(quán)限。綜合實例分析$
groupadd
B220301$
groupadd
B220302$groupaddproject$useradd
zhangs–gB220301–Gproject–md/project/zhangs$useradd
lis–gB220302–Gproject–md/project/lis$mkdir/project/share$mkdir/project/temp$chown:project/project/share$chmod2770/project/share$chown:project/project/temp$chmod3770/project/temp$passwdzhangs$passwdlis某軟件項目,項目成員擁有各自的用戶組和專屬目錄,同時,他們擁有一個共享目錄和一個臨時目錄,假設(shè)項目僅有兩個成員,下面在Linux系統(tǒng)中為他們創(chuàng)建相應(yīng)的用戶。2.5進(jìn)程管理進(jìn)程
進(jìn)程是正在執(zhí)行的程序,是程序的一次運行。程序是靜態(tài)的,而進(jìn)程是動態(tài)的。進(jìn)程在其生命周期內(nèi),會處于多種狀態(tài),在進(jìn)程調(diào)度算法的作用下,實現(xiàn)狀態(tài)間遷移。
init/systemd通常作為系統(tǒng)中第一個用戶態(tài)程序,其進(jìn)程號為1,系統(tǒng)中的所有其他用戶進(jìn)程均為init的子孫,它們之間以層次關(guān)系呈現(xiàn)。。pstree命令systemd-+-cron|-dbus-daemon|-dhclient|-exim4|-login---bash---pstree|-rsyslogd-+-{in:imklog}||-{in:imuxsock}|`-{rs:mainQ:Reg}|-systemd---(sd-pam)|-systemd-journal|-systemd-logind|-systemd-timesyn---{sd-resolve}`-systemd-udevd語法pstree功能顯示系統(tǒng)中進(jìn)程之間的繼承關(guān)系。作業(yè)控制
作業(yè)控制源自BSD系統(tǒng)的CShell,允許用戶在一個Shell終端上同時運行多個作業(yè),一個作業(yè)為以回車換行結(jié)尾的命令行。作業(yè)可運行于前臺或后臺,后臺可運行多個作業(yè),前臺最多只能一個,作業(yè)可在前后臺之間切換,僅前臺作業(yè)可獲得終端的控制權(quán),在無前臺作業(yè)的情況下,控制終端歸shell所有。一個作業(yè)可能由若干命令組成,命令的運行次序取決于作業(yè)的組織方式。作業(yè)的狀態(tài)遷移前臺運行終止后臺運行后臺停止fg命令&SIGSTOPSIGTTINSIGTTOTbg(SIGCONT)Comtrol-z(SIGTSTP)fg(SIGCONT)Control-c(SIGINT)Control-\(SIGQUIT)killkill命令實例分析$sleep100&[1]3655$sleep200&[2]3663$sleep300^Z[3]+Stoppedsleep300$jobs[1]Runningsleep100&[2]-Runningsleep200&[3]+Stoppedsleep300$fg%1sleep100控制終端
會話被創(chuàng)建時未關(guān)聯(lián)任何終端設(shè)備,Shell無法完成標(biāo)準(zhǔn)輸入輸出;為此,作為首會話進(jìn)程的登錄進(jìn)程login通過打開終端設(shè)備,實現(xiàn)與終端設(shè)備的關(guān)聯(lián),從而為其上創(chuàng)建的進(jìn)程提供標(biāo)準(zhǔn)輸入輸出服務(wù),故而終端也稱為控制終端,Shell也稱為終端的控制進(jìn)程。進(jìn)程的相關(guān)標(biāo)識進(jìn)程ID(PID)
用于標(biāo)識系統(tǒng)中的每一個進(jìn)程,初始化進(jìn)程init/systemd的進(jìn)程ID為1父進(jìn)程ID(PPID)
用于標(biāo)識進(jìn)程的創(chuàng)建者進(jìn)程組ID(PGID)
用于標(biāo)識進(jìn)程間的協(xié)作關(guān)系,進(jìn)程組ID取自領(lǐng)頭進(jìn)程的進(jìn)程ID會話ID(SID)
用于標(biāo)識用戶的一次登錄過程會話、進(jìn)程組和控制終端的關(guān)系作業(yè)控制進(jìn)程后臺作業(yè)1/后臺進(jìn)程組1后臺作業(yè)2/后臺進(jìn)程組2會話前臺作業(yè)/前臺進(jìn)程組控制終端proc6(領(lǐng)頭進(jìn)程)(738,641,738,353)proc7(739,641,738,353)proc3(領(lǐng)頭進(jìn)程)(735,641,735,353)proc4(736,735,735,353)proc5(737,735,735,353)proc1(領(lǐng)頭進(jìn)程)(733,641,733,353)proc2(734,641,733,353)登錄shell(641,353,641,353)進(jìn)程的表示:進(jìn)程名(進(jìn)程ID,父進(jìn)程ID,進(jìn)程組ID,會話ID)命令ps–efj列名含義C進(jìn)程占用CPU的百分比STIME進(jìn)程啟動的開始時間TTY進(jìn)程關(guān)聯(lián)的終端TIME進(jìn)程運行時間CMD命令的名稱和參數(shù)命令ps-aux列名含義USER用戶名%CPU進(jìn)程占用CPU的百分比%MEM進(jìn)程占用內(nèi)存的百分比VSZ進(jìn)程使用虛擬內(nèi)存數(shù)量(KB)RSS進(jìn)程占用物理內(nèi)存頁面的數(shù)量(KB)TTY進(jìn)程的關(guān)聯(lián)終端STAT進(jìn)程的狀態(tài)進(jìn)程的狀態(tài)遷移就緒狀態(tài)運行狀態(tài)停止?fàn)顟B(tài)可中斷狀態(tài)不可中斷狀態(tài)僵尸狀態(tài)調(diào)度時間片耗盡/占先信號(SIGCONT)事件到達(dá)/信號等待事件結(jié)束進(jìn)程信號(SIGSTOP,SIGTTIN,SIGTTOU)創(chuàng)建進(jìn)程等待事件事件到達(dá)進(jìn)程狀態(tài)進(jìn)程狀態(tài)含義D不可中斷的睡眠狀態(tài)R運行或就緒狀態(tài)S可中斷的睡眠狀態(tài)T停止?fàn)顟B(tài)t停止?fàn)顟B(tài)(由于調(diào)試追蹤)W頁交換X結(jié)束狀態(tài)(從未出現(xiàn))Z僵尸狀態(tài),進(jìn)程已結(jié)束,等待父進(jìn)程進(jìn)一步處理9內(nèi)核函數(shù)進(jìn)程和作業(yè)的相關(guān)操作命令功能pstree顯示系統(tǒng)中用戶進(jìn)程的繼承關(guān)系ps顯示進(jìn)程屬性kill結(jié)束進(jìn)程jobs顯示后臺作業(yè)的狀態(tài)fg將后臺作業(yè)置于前臺bg恢復(fù)后臺作業(yè)的運行實例分析$kill-1 #列出所有倍號$kill-sSIGSTOP323#暫停進(jìn)程運行$kill-9524#結(jié)束進(jìn)程$jobs#列出當(dāng)前會話的所有后合作業(yè)$bg%2#使2號作業(yè)在后臺恢復(fù)運行$fg%3#將3號后臺作業(yè)切換至前臺2.6輸入輸出重定向和管道概述
進(jìn)程通常將鍵盤/顯示器作為標(biāo)準(zhǔn)輸入/輸出設(shè)備,進(jìn)程從鍵盤上接受數(shù)據(jù),將輸出結(jié)果輸出至顯示器。為了在不修改程序的情況下,改變數(shù)據(jù)的來源和目的地,系統(tǒng)引入了輸入輸出重定向技術(shù),通過改變程序的運行環(huán)境,改變數(shù)據(jù)的輸入輸出方向。實例分析$ls–l>test
每個由shell創(chuàng)建的進(jìn)程都會繼承三個已打開的文件描述符,它們依次為標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出。文件文件描述符默認(rèn)設(shè)備輸入文件:標(biāo)準(zhǔn)輸入0鍵盤輸出文件:標(biāo)準(zhǔn)輸出1屏幕錯誤輸出文件:標(biāo)準(zhǔn)錯誤輸出2屏幕標(biāo)準(zhǔn)駛?cè)胼敵鲈O(shè)備輸入/輸出重定向1.輸入重定向語法cmd[n]<file功能命令cmd從文件描述符n的讀入轉(zhuǎn)向文件file。2.輸出重定向語法cmd[n]>filecmd[n]>>file功能命令cmd向文件描述符n的輸出寫入文件file。類別操作符說明標(biāo)準(zhǔn)輸入重定向<從指定文煥上輸入標(biāo)準(zhǔn)輸出重定向>將標(biāo)準(zhǔn)輸出寫入指定文件>>將標(biāo)準(zhǔn)輸出追加至指定文件標(biāo)準(zhǔn)錯誤輸出重定向2>將標(biāo)準(zhǔn)錯誤輸出寫入至指定文件2>>將標(biāo)準(zhǔn)錯誤輸出追加至指定文件標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出重定向&>將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出寫入至指定文件標(biāo)準(zhǔn)輸入/輸出重定向操作符實例分析$ls-l1>out2>err復(fù)制文件描述符(1)復(fù)制輸入文件描述符語法
[n]<&m功能 將文件描述符m復(fù)制至文件描述符n,用于輸入重定向。(2)復(fù)制輸出文件描述符語法
[n]>&m功能將文件描述符m復(fù)制至文件描述符n,用于輸出重定向。移動文件描述符(1)移動輸入文件描述符語法[n]<&m-功能將文件描述符m移動至文件描述符n,用于輸入重定向。(2)移動輸出文件描述符yufa[n]>&m-功能將文件描述符m移動至文件描述符n,用于輸出重定向?qū)嵗治鰧?biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出重定向至文件out$ls>out2>&1將標(biāo)準(zhǔn)輸出重定向至文件out$ls2>&1>out因復(fù)制發(fā)生在重定向前,故僅將標(biāo)準(zhǔn)輸出重定向至文件out管道
管道用于連接兩個進(jìn)程的輸入和輸出,將一個進(jìn)程的輸出作為另一個進(jìn)程的輸入。管道存在兩個端點,一個端點用于數(shù)據(jù)輸入,另一個端點用于數(shù)據(jù)輸出,采用單向模式,根據(jù)管道的實現(xiàn)方式,管道可分為無名管道和命名管道。無名管道語法cmd1|cmd2功能將命令cmd1的標(biāo)準(zhǔn)輸出作為命令cmd2的標(biāo)準(zhǔn)輸入。實例分析$ls-l|grep^d|more命名管道
命名管道為一種特殊的文件,存在于文件系統(tǒng)中,用戶可通過命令mkfifo創(chuàng)建。實例分析$mkfifomypipe$ls-lmypipeprw-r--r--1rootroot0Oct2417:28mypipe2.7元字符與正則表達(dá)式元字符對于某些軟件,例如Shell、vi和grep等,為了描述某些特征字符串構(gòu)成的集合,普通字符并非總能滿足要求,為此,引入了元字符。元字符是一類具有特定含義而非自身的特殊字符,通常用于匹配字符串等操作。元字符的定義取決于具體命令。Shell中的元字符Shell中的元字符也稱為通配符,經(jīng)常出現(xiàn)在Shell命令中,用于通配文件和目錄。元字符含義?匹配任意一個字符*匹配任意數(shù)量的字符[abc]匹配a、b和c中任意一個字符[a-z]匹配a-z范圍內(nèi)的任意字符[!a-z]匹配除a-z外的字符常用Shell通配符的定義實例分析$ls[a-z]*#查找以字母a到z開頭的所有文件$ls[!a-z]*#查找不以字母a到z開頭的所有文件$ls*.c#查找后綴名為c的所有文件屏蔽元字符的特殊含義
有時,需在命令中使用元字符本身,用戶可通過在元字符前使用反斜杠\實現(xiàn)。實例分析$lsa\*#列出當(dāng)前目錄下文件名為a*的文件正則表達(dá)式
正則表達(dá)式是一個字符串模板,由普通字符和元字符組成,用于文本匹配,在文本中搜索所需的字符串。正則表達(dá)式通常出現(xiàn)在文本處理軟件中,例如,shell、vi和grep等。元字符匹配字符^行首$行尾\char轉(zhuǎn)義后面的字符[^]不匹配方括號中的任意字符\<單詞的開始\>單詞的結(jié)尾()括號內(nèi)為一組|分組{m}前綴字符重復(fù)m次{m,}前綴字符至少重復(fù)m次{m,n}前綴字符重復(fù)m至n次.所有的單個字符?0個或1個前綴字符+至少一個前綴字符*0個或多個字符文本過濾器GREP是一款功能強大的文本過濾軟件,可從文本文件中過濾出包含某些字符串的行,字符串通常具有某種特征,可使用正則表達(dá)式進(jìn)行描述,文本過濾器擁有多種版本。這里僅介紹egrep,下面給出egrep所支持的元字符。實例分析$egrep'^abc|^def'textfile#過濾出以單詞abc和def為首的行$egrep'\.00$'textfile#過濾出以.00結(jié)尾的行$egrep'5\..'textfile#過濾出包含5.后隨任意一個字符的行$egrep'^[a-c]'textfile#過濾出不以字符a、b或c開頭的行$egrep'a(bc){2}'textfile#過濾出包含abcbc的行$egrep'[2-5][0-9]'textfile#過濾出包含20至59的行$egrep‘a(chǎn)(bc)+’textfile#過濾出包含abc、、abcbc…的行2.8網(wǎng)絡(luò)基礎(chǔ)TCP/IP概述TCP/IP協(xié)議已成為事實上的互聯(lián)網(wǎng)標(biāo)準(zhǔn)。正確配置網(wǎng)絡(luò)是保證Linux系統(tǒng)接入互聯(lián)網(wǎng)的基礎(chǔ)。在配置網(wǎng)絡(luò)前,需正確安裝網(wǎng)卡驅(qū)動和TCP/IP協(xié)議,由于Linux發(fā)行版存在一定差異,在配置網(wǎng)絡(luò)時也有所不同。網(wǎng)絡(luò)配置文件配置文件發(fā)行版描述/etc/sysconfig/network-scripts/ifcfg-ethNCentOS配置IP、網(wǎng)關(guān)和DNS地址/etc/network/interfacesDebian配置IP、網(wǎng)關(guān)和DNS地址/etc/hosts-配置主機名/etc/services-配置網(wǎng)絡(luò)服務(wù)/etc/resolv.conf-配置DNS服務(wù)器配置DHCP1.基于CentOS發(fā)行版$cat/etc/sysconfig/network-scripts/ifcfg-ethN#配置文件路徑DEVICE=eth0#設(shè)備名稱BOOTPROTO=dhcp#使用DHCP協(xié)議ONBOOT=yes#啟動時自動激活網(wǎng)卡2.基于Debian發(fā)行版$cat/etc/network/interfaces#顯示配置文件內(nèi)容autoeth0#啟動時自動激活網(wǎng)卡ifaceeth0inetdhcp#設(shè)置DHCP協(xié)議配置靜態(tài)地址(1)基于CentOS發(fā)行版$cat/etc/sysconfig/network-scripts/ifcfg-ethN#配置文件路徑DEVICE=eth0
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 維修工考試試題及答案
- 外科麻醉 試題及答案
- 2025年廣東省江門市江海區(qū)八年級英語第二學(xué)期期中監(jiān)測模擬試題含答案
- 天車工試題及答案
- 9.1.2-3 分層隨機抽樣、獲取數(shù)據(jù)的途徑-2025年高一數(shù)學(xué)新教材同步課堂精講練導(dǎo)學(xué)案(人教A版必修第二冊)含答案
- 2025年醫(yī)療機構(gòu)質(zhì)量與安全協(xié)議
- 2025年度員工離職福利策劃與審核協(xié)議書
- 2025年品質(zhì)審核協(xié)議
- 2025年合法住宅轉(zhuǎn)租協(xié)議范本
- 2025年結(jié)束勞動協(xié)議
- 民法司法考試題及答案
- 河南省修武縣西村鄉(xiāng)初中2024-2025學(xué)年九下5月語文中考模擬試題(含答案)
- Machine-Cmk-設(shè)備能力指數(shù)Cmk分析表
- (二模)青島市2025年高三年級第二次適應(yīng)性檢測歷史試卷(含標(biāo)準(zhǔn)答案)
- 2024年重慶市高考生物試卷(含答案解析)
- 中國歷史文化知識題庫100道附完整答案(必刷)
- 西安電子科技大學(xué)電子信息與通信工程類專業(yè)培養(yǎng)方案(本科層次)
- GB/T 42064-2022普通照明用設(shè)備閃爍特性光閃爍計測試法
- 網(wǎng)絡(luò)食品交易第三方平臺備案表
- Dell 2950 SAS5RAID完全配置手冊
- 柱下獨立基礎(chǔ)、雙柱聯(lián)合基礎(chǔ)設(shè)計
評論
0/150
提交評論