第七章、Linux檔案與目錄管理_第1頁(yè)
第七章、Linux檔案與目錄管理_第2頁(yè)
第七章、Linux檔案與目錄管理_第3頁(yè)
第七章、Linux檔案與目錄管理_第4頁(yè)
第七章、Linux檔案與目錄管理_第5頁(yè)
已閱讀5頁(yè),還剩51頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第七章、Linux檔案與目錄管理在第六章我們認(rèn)識(shí)了Linux系統(tǒng)下的檔案權(quán)限概念以及目錄的配置說(shuō)明。在這個(gè)章節(jié)當(dāng)中,我們就直接來(lái)進(jìn)一步的操作與管理檔案與目錄吧!包括在不同的目錄間變換、建立與刪除目錄、建立與刪除檔案,還有尋找檔案、查閱檔案內(nèi)容等等,都會(huì)在這個(gè)章節(jié)作個(gè)簡(jiǎn)單的介紹??!1.目錄與路徑

1.1相對(duì)路徑與絕對(duì)路徑

1.2目錄的相關(guān)操作:cd,pwd,mkdir,rmdir

1.3關(guān)于執(zhí)行文件路徑的變量:$PATH

2.檔案與目錄管理

2.1檔案與目錄的檢視:ls

2.2復(fù)制、刪除與移動(dòng):cp,rm,mv

2.3取得路徑的文件名與目錄名稱(chēng)

3.檔案內(nèi)容查閱:

3.1直接檢視檔案內(nèi)容:cat,tac,nl

3.2可翻頁(yè)檢視:more,less

3.3資料擷?。篽ead,tail

3.4非純文本檔:od

3.5修改檔案時(shí)間與建置新檔:touch

4.檔案與目錄的默認(rèn)權(quán)限與隱藏權(quán)限

4.1檔案預(yù)設(shè)權(quán)限:umask

4.2檔案隱藏屬性:chattr,lsattr

4.4檔案特殊權(quán)限:SUID,SGID,SBIT,權(quán)限設(shè)定

4.3觀察文件類(lèi)型:file

5.指令與檔案的搜尋:

5.1腳本文件名的搜尋:which

5.2檔案檔名的搜尋:whereis,locate,find

6.極重要!權(quán)限與指令間的關(guān)系:

7.重點(diǎn)回顧

8.本章習(xí)題

9.參考數(shù)據(jù)與延伸閱讀

10.針對(duì)本文的建議:/viewtopic.php?t=23879目錄與路徑:由第六章Linux的檔案權(quán)限與目錄配置中透過(guò)FHS了解了Linux的『樹(shù)狀目錄』概念之后,接下來(lái)就得要實(shí)際的來(lái)搞定一些基本的路徑問(wèn)題了!這些目錄的問(wèn)題當(dāng)中,最重要的莫過(guò)于第六章也談過(guò)的『絕對(duì)路徑』與『相對(duì)路徑』的意義啦!絕對(duì)/相對(duì)路徑的寫(xiě)法并不相同,要特別注意。此外,當(dāng)妳下達(dá)指令時(shí),該指令是透過(guò)什么功能來(lái)取得的?這與PATH這個(gè)變數(shù)有關(guān)呢!底下就讓我們來(lái)談?wù)剢∠鄬?duì)路徑與絕對(duì)路徑:在開(kāi)始目錄的切換之前,你必須要先了解一下所謂的『路徑(PATH)』,有趣的是:什么是『相對(duì)路徑』與『絕對(duì)路徑』?雖然前一章已經(jīng)稍微針對(duì)這個(gè)議題提過(guò)一次,不過(guò),這里不厭其煩的再次的強(qiáng)調(diào)一下!絕對(duì)路徑:路徑的寫(xiě)法『一定由根目錄/寫(xiě)起』,例如:/usr/share/doc這個(gè)目錄。相對(duì)路徑:路徑的寫(xiě)法『不是由/寫(xiě)起』,例如由/usr/share/doc要到/usr/share/man底下時(shí),可以寫(xiě)成:『cd../man』這就是相對(duì)路徑的寫(xiě)法啦!相對(duì)路徑意指『相對(duì)于目前工作目錄的路徑!』相對(duì)路徑的用途那么相對(duì)路徑與絕對(duì)路徑有什么了不起呀?喝!那可真的是了不起了!假設(shè)你寫(xiě)了一個(gè)軟件,這個(gè)軟件共需要三個(gè)目錄,分別是etc,bin,man這三個(gè)目錄,然而由于不同的人喜歡安裝在不同的目錄之下,假設(shè)甲安裝的目錄是/usr/local/packages/etc,/usr/local/packages/bin及/usr/local/packages/man,不過(guò)乙卻喜歡安裝在/home/packages/etc,/home/packages/bin,/home/packages/man這三個(gè)目錄中,請(qǐng)問(wèn)如果需要用到絕對(duì)路徑的話,那么是否很麻煩呢?是的!如此一來(lái)每個(gè)目錄下的東西就很難對(duì)應(yīng)的起來(lái)!這個(gè)時(shí)候相對(duì)路徑的寫(xiě)法就顯的特別的重要了!此外,如果你跟鳥(niǎo)哥一樣,喜歡將路徑的名字寫(xiě)的很長(zhǎng),好讓自己知道那個(gè)目錄是在干什么的,例如:/cluster/raid/output/taiwan2006/smoke這個(gè)目錄,而另一個(gè)目錄在/cluster/raid/output/taiwan2006/cctm,那么我從第一個(gè)要到第二個(gè)目錄去的話,怎么寫(xiě)比較方便?當(dāng)然是『cd../cctm』比較方便啰!對(duì)吧!絕對(duì)路徑的用途但是對(duì)于檔名的正確性來(lái)說(shuō),『絕對(duì)路徑的正確度要比較好~』。一般來(lái)說(shuō),鳥(niǎo)哥會(huì)建議你,如果是在寫(xiě)程序(shellscripts)來(lái)管理系統(tǒng)的條件下,務(wù)必使用絕對(duì)路徑的寫(xiě)法。怎么說(shuō)呢?因?yàn)榻^對(duì)路徑的寫(xiě)法雖然比較麻煩,但是可以肯定這個(gè)寫(xiě)法絕對(duì)不會(huì)有問(wèn)題。如果使用相對(duì)路徑在程序當(dāng)中,則可能由于你執(zhí)行的工作環(huán)境不同,導(dǎo)致一些問(wèn)題的發(fā)生。這個(gè)問(wèn)題在工作排程(at,cron,第十六章)當(dāng)中尤其重要!這個(gè)現(xiàn)象我們?cè)谑?、shellscript時(shí),會(huì)再次的提醒你喔!^_^目錄的相關(guān)操作:我們之前稍微提到變換目錄的指令是cd,還有哪些可以進(jìn)行目錄操作的指令呢?例如建立目錄啊、刪除目錄之類(lèi)的~還有,得要先知道的,就是有哪些比較特殊的目錄呢?舉例來(lái)說(shuō),底下這些就是比較特殊的目錄,得要用力的記下來(lái)才行:.代表此層目錄..代表上一層目錄-代表前一個(gè)工作目錄~代表『目前用戶(hù)身份』所在的家目錄~account代表account這個(gè)用戶(hù)的家目錄(account是個(gè)賬號(hào)名稱(chēng))需要特別注意的是:在所有目錄底下都會(huì)存在的兩個(gè)目錄,分別是『.』與『..』分別代表此層與上層目錄的意思。那么來(lái)思考一下底下這個(gè)例題:例題:請(qǐng)問(wèn)在Linux底下,根目錄下有沒(méi)有上層目錄(..)存在?答:若使用『ls-al/』去查詢(xún),可以看到根目錄下確實(shí)存在.與..兩個(gè)目錄,再仔細(xì)的查閱,可發(fā)現(xiàn)這兩個(gè)目錄的屬性與權(quán)限完全一致,這代表根目錄的上一層(..)與根目錄自己(.)是同一個(gè)目錄。底下我們就來(lái)談一談幾個(gè)常見(jiàn)的處理目錄的指令吧:cd:變換目錄pwd:顯示當(dāng)前目錄mkdir:建立一個(gè)新的目錄rmdir:刪除一個(gè)空的目錄cd(變換目錄)我們知道vbird這個(gè)用戶(hù)的家目錄是/home/vbird/,而root家目錄則是/root/,假設(shè)我以root身份在Linux系統(tǒng)中,那么簡(jiǎn)單的說(shuō)明一下這幾個(gè)特殊的目錄的意義是:[root@www~]#cd[相對(duì)路徑或絕對(duì)路徑]#最重要的就是目錄的絕對(duì)路徑與相對(duì)路徑,還有一些特殊目錄的符號(hào)啰![root@www~]#cd~vbird#代表去到vbird這個(gè)用戶(hù)的家目錄,亦即/home/vbird[root@wwwvbird]#cd~#表示回到自己的家目錄,亦即是/root這個(gè)目錄[root@www~]#cd#沒(méi)有加上任何路徑,也還是代表回到自己家目錄的意思喔![root@www~]#cd..#表示去到目前的上層目錄,亦即是/root的上層目錄的意思;[root@www/]#cd-#表示回到剛剛的那個(gè)目錄,也就是/root啰~[root@www~]#cd/var/spool/mail#這個(gè)就是絕對(duì)路徑的寫(xiě)法!直接指定要去的完整路徑名稱(chēng)![root@wwwmail]#cd../mqueue#這個(gè)是相對(duì)路徑的寫(xiě)法,我們由/var/spool/mail去到/var/spool/mqueue就這樣寫(xiě)!cd是ChangeDirectory的縮寫(xiě),這是用來(lái)變換工作目錄的指令。注意,目錄名稱(chēng)與cd指令之間存在一個(gè)空格。一登入Linux系統(tǒng)后,root會(huì)在root的家目錄!那回到上一層目錄可以用『cd..』。利用相對(duì)路徑的寫(xiě)法必須要確認(rèn)你目前的路徑才能正確的去到想要去的目錄。例如上表當(dāng)中最后一個(gè)例子,你必須要確認(rèn)你是在/var/spool/mail當(dāng)中,并且知道在/var/spool當(dāng)中有個(gè)mqueue的目錄才行啊~這樣才能使用cd../mqueue去到正確的目錄說(shuō),否則就要直接輸入cd/var/spool/mqueue啰~其實(shí),我們的提示字符,亦即那個(gè)[root@www~]#當(dāng)中,就已經(jīng)有指出當(dāng)前目錄了,剛登入時(shí)會(huì)到自己的家目錄,而家目錄還有一個(gè)代碼,那就是『~』符號(hào)!例如上面的例子可以發(fā)現(xiàn),使用『cd~』可以回到個(gè)人的家目錄里頭去呢!另外,針對(duì)cd的使用方法,如果僅輸入cd時(shí),代表的就是『cd~』的意思喔~亦即是會(huì)回到自己的家目錄啦!而那個(gè)『cd-』比較難以理解,請(qǐng)自行多做幾次練習(xí),就會(huì)比較明白了。Tips:

還是要一再地提醒,我們的Linux的默認(rèn)指令列模式(bashshell)具有檔案補(bǔ)齊功能,你要常常利用[tab]按鍵來(lái)達(dá)成你的目錄完整性??!這可是個(gè)好習(xí)慣啊~可以避免你按錯(cuò)鍵盤(pán)輸入錯(cuò)字說(shuō)~^_^pwd(顯示目前所在的目錄)[root@www~]#pwd[-P]選項(xiàng)與參數(shù):-P:顯示出確實(shí)的路徑,而非使用鏈接(link)路徑。范例:?jiǎn)渭冿@示出目前的工作目錄:[root@www~]#pwd/root<==顯示出目錄啦~范例:顯示出實(shí)際的工作目錄,而非鏈接文件本身的目錄名而已[root@www~]#cd/var/mail<==注意,/var/mail是一個(gè)連結(jié)檔[root@wwwmail]#pwd/var/mail<==列出目前的工作目錄[root@wwwmail]#pwd-P/var/spool/mail<==怎么回事?有沒(méi)有加-P差很多~[root@wwwmail]#ls-ld/var/maillrwxrwxrwx1rootroot10Sep417:54/var/mail->spool/mail#看到這里應(yīng)該知道為啥了吧?因?yàn)?var/mail是連結(jié)檔,連結(jié)到/var/spool/mail#所以,加上pwd-P的選項(xiàng)后,會(huì)不以連結(jié)文件的數(shù)據(jù)顯示,而是顯示正確的完整路徑?。wd是PrintWorkingDirectory的縮寫(xiě),也就是顯示目前所在目錄的指令,例如在上個(gè)表格最后的目錄是/var/mail這個(gè)目錄,但是提示字符僅顯示mail,如果你想要知道目前所在的目錄,可以輸入pwd即可。此外,由于很多的套件所使用的目錄名稱(chēng)都相同,例如/usr/local/etc還有/etc,但是通常Linux僅列出最后面那一個(gè)目錄而已,這個(gè)時(shí)候你就可以使用pwd來(lái)知道你的所在目錄啰!免得搞錯(cuò)目錄,結(jié)果...其實(shí)有趣的是那個(gè)-P的選項(xiàng)啦!他可以讓我們?nèi)〉谜_的目錄名稱(chēng),而不是以鏈接文件的路徑來(lái)顯示的。如果你使用的是CentOS5.x的話,剛剛好/var/mail是/var/spool/mail的連結(jié)檔,所以,透過(guò)到/var/mail下達(dá)pwd-P就能夠知道這個(gè)選項(xiàng)的意義啰~^_^mkdir(建立新目錄)[root@www~]#mkdir[-mp]目錄名稱(chēng)選項(xiàng)與參數(shù):-m:配置文件案的權(quán)限喔!直接設(shè)定,不需要看預(yù)設(shè)權(quán)限(umask)的臉色~-p:幫助你直接將所需要的目錄(包含上層目錄)遞歸建立起來(lái)!范例:請(qǐng)到/tmp底下嘗試建立數(shù)個(gè)新目錄看看:[root@www~]#cd/tmp[root@wwwtmp]#mkdirtest<==建立一名為test的新目錄[root@wwwtmp]#mkdirtest1/test2/test3/test4mkdir:cannotcreatedirectory`test1/test2/test3/test4':Nosuchfileordirectory<==沒(méi)辦法直接建立此目錄啊![root@wwwtmp]#mkdir-ptest1/test2/test3/test4#加了這個(gè)-p的選項(xiàng),可以自行幫你建立多層目錄!范例:建立權(quán)限為rwx--x--x的目錄[root@wwwtmp]#mkdir-m711test2[root@wwwtmp]#ls-ldrwxr-xr-x3rootroot4096Jul1812:50testdrwxr-xr-x3rootroot4096Jul1812:53test1drwx--x--x2rootroot4096Jul1812:54test2#仔細(xì)看上面的權(quán)限部分,如果沒(méi)有加上-m來(lái)強(qiáng)制設(shè)定屬性,系統(tǒng)會(huì)使用默認(rèn)屬性。#那么你的默認(rèn)屬性為何?這要透過(guò)底下介紹的umask才能了解喔!^_^如果想要建立新的目錄的話,那么就使用mkdir(makedirectory)吧!不過(guò),在預(yù)設(shè)的情況下,你所需要的目錄得一層一層的建立才行!例如:假如你要建立一個(gè)目錄為/home/bird/testing/test1,那么首先必須要有/home然后/home/bird,再來(lái)/home/bird/testing都必須要存在,才可以建立/home/bird/testing/test1這個(gè)目錄!假如沒(méi)有/home/bird/testing時(shí),就沒(méi)有辦法建立test1的目錄啰!不過(guò),現(xiàn)在有個(gè)更簡(jiǎn)單有效的方法啦!那就是加上-p這個(gè)選項(xiàng)喔!你可以直接下達(dá):『mkdir-p/home/bird/testing/test1』則系統(tǒng)會(huì)自動(dòng)的幫你將/home,/home/bird,/home/bird/testing依序的建立起目錄!并且,如果該目錄本來(lái)就已經(jīng)存在時(shí),系統(tǒng)也不會(huì)顯示錯(cuò)誤訊息喔!挺快樂(lè)的吧!^_^。不過(guò)鳥(niǎo)哥不建議常用-p這個(gè)選項(xiàng),因?yàn)閾?dān)心如果妳打錯(cuò)字,那么目錄名稱(chēng)就會(huì)變的亂七八糟的!另外,有個(gè)地方你必須要先有概念,那就是『預(yù)設(shè)權(quán)限』的地方。我們可以利用-m來(lái)強(qiáng)制給予一個(gè)新的目錄相關(guān)的權(quán)限,例如上表當(dāng)中,我們給予-m711來(lái)給予新的目錄drwx--x--x的權(quán)限。不過(guò),如果沒(méi)有給予-m選項(xiàng)時(shí),那么默認(rèn)的新建目錄權(quán)限又是什么呢?這個(gè)跟umask有關(guān),我們?cè)诒菊潞箢^會(huì)加以介紹的。rmdir(刪除『空』的目錄)[root@www~]#rmdir[-p]目錄名稱(chēng)選項(xiàng)與參數(shù):-p:連同上層『空的』目錄也一起刪除范例:將于mkdir范例中建立的目錄(/tmp底下)刪除掉![root@wwwtmp]#ls-l<==看看有多少目錄存在?drwxr-xr-x3rootroot4096Jul1812:50testdrwxr-xr-x3rootroot4096Jul1812:53test1drwx--x--x2rootroot4096Jul1812:54test2[root@wwwtmp]#rmdirtest<==可直接刪除掉,沒(méi)問(wèn)題[root@wwwtmp]#rmdirtest1<==因?yàn)樯杏袃?nèi)容,所以無(wú)法刪除!rmdir:`test1':Directorynotempty[root@wwwtmp]#rmdir-ptest1/test2/test3/test4[root@wwwtmp]#ls-l<==您看看,底下的輸出中test與test1不見(jiàn)了!drwx--x--x2rootroot4096Jul1812:54test2#瞧!利用-p這個(gè)選項(xiàng),立刻就可以將test1/test2/test3/test4一次刪除~#不過(guò)要注意的是,這個(gè)rmdir僅能『刪除空的目錄』喔!如果想要?jiǎng)h除舊有的目錄時(shí),就使用rmdir吧!例如將剛剛建立的test殺掉,使用『rmdirtest』即可!請(qǐng)注意呦!目錄需要一層一層的刪除才行!而且被刪除的目錄里面必定不能存在其他的目錄或檔案!這也是所謂的空的目錄(emptydirectory)的意思啊!那如果要將所有目錄下的東西都?xì)⒌裟??!這個(gè)時(shí)候就必須使用『rm-rtest』啰!不過(guò),還是使用rmdir比較不危險(xiǎn)!你也可以嘗試以-p的選項(xiàng)加入,來(lái)刪除上層的目錄喔!關(guān)于執(zhí)行文件路徑的變量:$PATH經(jīng)過(guò)第六章FHS的說(shuō)明后,我們知道查閱文件屬性的指令ls完整文件名為:/bin/ls(這是絕對(duì)路徑),那你會(huì)不會(huì)覺(jué)得很奇怪:『為什么我可以在任何地方執(zhí)行/bin/ls這個(gè)指令呢?』為什么我在任何目錄下輸入ls就一定可以顯示出一些訊息而不會(huì)說(shuō)找不到該/bin/ls指令呢?這是因?yàn)榄h(huán)境變量PATH的幫助所致呀!當(dāng)我們?cè)趫?zhí)行一個(gè)指令的時(shí)候,舉例來(lái)說(shuō)『ls』好了,系統(tǒng)會(huì)依照PATH的設(shè)定去每個(gè)PATH定義的目錄下搜尋文件名為ls的可執(zhí)行文件,如果在PATH定義的目錄中含有多個(gè)文件名為ls的可執(zhí)行文件,那么先搜尋到的同名指令先被執(zhí)行!現(xiàn)在,請(qǐng)下達(dá)『echo$PATH』來(lái)看看到底有哪些目錄被定義出來(lái)了?echo有『顯示、印出』的意思,而PATH前面加的$表示后面接的是變量,所以會(huì)顯示出目前的PATH!范例:先用root的身份列出搜尋的路徑為何?[root@www~]#echo$PATH/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin<==這是同一行!范例:用vbird的身份列出搜尋的路徑為何?[root@www~]#su-vbird[vbird@www~]#echo$PATH/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/vbird/bin#仔細(xì)看,一般用戶(hù)vbird的PATH中,并不包含任何『sbin』的目錄存在喔!PATH(一定是大寫(xiě))這個(gè)變量的內(nèi)容是由一堆目錄所組成的,每個(gè)目錄中間用冒號(hào)(:)來(lái)隔開(kāi),每個(gè)目錄是有『順序』之分的。仔細(xì)看一下上面的輸出,妳可以發(fā)現(xiàn)到無(wú)論是root還是vbird都有/bin這個(gè)目錄在PATH變量?jī)?nèi),所以當(dāng)然就能夠在任何地方執(zhí)行l(wèi)s來(lái)找到/bin/ls執(zhí)行檔啰!我們用幾個(gè)范例來(lái)讓你了解一下,為什么PATH是那么重要的項(xiàng)目!例題:請(qǐng)問(wèn)你能不能使用一般身份使用者下達(dá)ifconfigeth0這個(gè)指令呢?答:如上面的范例所示,當(dāng)你使用vbird這個(gè)賬號(hào)執(zhí)行ifconfig時(shí),會(huì)出現(xiàn)『-bash:ifconfig:commandnotfound』的字樣,因?yàn)閕fconfig的是放置到/sbin底下,而由上表的結(jié)果中我們可以發(fā)現(xiàn)vbird的PATH并沒(méi)有設(shè)置/sbin,所以預(yù)設(shè)無(wú)法執(zhí)行。

但是你可以使用『/sbin/ifconfigeth0』來(lái)執(zhí)行這個(gè)指令喔!因?yàn)橐话阌脩?hù)還是可以使用ifconfig來(lái)查詢(xún)系統(tǒng)IP的參數(shù),既然PATH沒(méi)有規(guī)范到/sbin,那么我們使用『絕對(duì)路徑』也可以執(zhí)行到該指令的!例題:假設(shè)你是root,如果你將ls由/bin/ls移動(dòng)成為/root/ls(可用『mv/bin/ls/root』指令達(dá)成),然后你自己本身也在/root目錄下,請(qǐng)問(wèn)(1)你能不能直接輸入ls來(lái)執(zhí)行?(2)若不能,你該如何執(zhí)行l(wèi)s這個(gè)指令?(3)若要直接輸入ls即可執(zhí)行,又該如何進(jìn)行?答:由于這個(gè)例題的重點(diǎn)是將某個(gè)執(zhí)行文件移動(dòng)到非正規(guī)目錄去,所以我們先要進(jìn)行底下的動(dòng)作才行:(務(wù)必使用root的身份)[root@www~]#mv/bin/ls/root#mv為移動(dòng),可將檔案在不同的目錄間進(jìn)行移動(dòng)作業(yè)(1)接下來(lái)不論你在那個(gè)目錄底下輸入任何與ls相關(guān)的指令,都沒(méi)有辦法順利的執(zhí)行l(wèi)s了!也就是說(shuō),你不能直接輸入ls來(lái)執(zhí)行,因?yàn)?root這個(gè)目錄并不在PATH指定的目錄中,所以,即使你在/root目錄下,也不能夠搜尋到ls這個(gè)指令!

(2)因?yàn)檫@個(gè)ls確實(shí)存在于/root底下,并不是被刪除了!所以我們可以透過(guò)使用絕對(duì)路徑或者是相對(duì)路徑直接指定這個(gè)執(zhí)行檔檔名,底下的兩個(gè)方法都能夠執(zhí)行l(wèi)s這個(gè)指令:[root@www~]#/root/ls<==直接用絕對(duì)路徑指定該文件名[root@www~]#./ls<==因?yàn)樵?root目錄下,就用./ls來(lái)指定(3)如果想要讓root在任何目錄均可執(zhí)行/root底下的ls,那么就將/root加入PATH當(dāng)中即可。加入的方法很簡(jiǎn)單,就像底下這樣:[root@www~]#PATH="$PATH":/root上面這個(gè)作法就能夠?qū)?root加入到執(zhí)行文件搜尋路徑PATH中了!不相信的話請(qǐng)您自行使用『echo$PATH』去查看吧!如果確定這個(gè)例題進(jìn)行沒(méi)有問(wèn)題了,請(qǐng)將ls搬回/bin底下,不然系統(tǒng)會(huì)掛點(diǎn)的![root@www~]#mv/root/ls/bin例題:如果我有兩個(gè)ls指令在不同的目錄中,例如/usr/local/bin/ls與/bin/ls那么當(dāng)我下達(dá)ls的時(shí)候,哪個(gè)ls會(huì)被執(zhí)行?答:那還用說(shuō),就找出PATH里面哪個(gè)目錄先被查詢(xún),則那個(gè)目錄下的指令就會(huì)被先執(zhí)行了!例題:為什么PATH搜尋的目錄不加入本目錄(.)?加入本目錄的搜尋不是也不錯(cuò)?答:如果在PATH中加入本目錄(.)后,確實(shí)我們就能夠在指令所在目錄進(jìn)行指令的執(zhí)行了。但是由于你的工作目錄并非固定(常常會(huì)使用cd來(lái)切換到不同的目錄),因此能夠執(zhí)行的指令會(huì)有變動(dòng)(因?yàn)槊總€(gè)目錄底下的可執(zhí)行文件都不相同嘛!),這對(duì)使用者來(lái)說(shuō)并非好事。

另外,如果有個(gè)壞心使用者在/tmp底下做了一個(gè)指令,因?yàn)?tmp是大家都能夠?qū)懭氲沫h(huán)境,所以他當(dāng)然可以這樣做。假設(shè)該指令可能會(huì)竊取用戶(hù)的一些數(shù)據(jù),如果你使用root的身份來(lái)執(zhí)行這個(gè)指令,那不是很糟糕?如果這個(gè)指令的名稱(chēng)又是經(jīng)常會(huì)被用到的ls時(shí),那『中標(biāo)』的機(jī)率就更高了!

所以,為了安全起見(jiàn),不建議將『.』加入PATH的搜尋目錄中。而由上面的幾個(gè)例題我們也可以知道幾件事情:不同身份使用者預(yù)設(shè)的PATH不同,默認(rèn)能夠隨意執(zhí)行的指令也不同(如root與vbird);PATH是可以修改的,所以一般使用者還是可以透過(guò)修改PATH來(lái)執(zhí)行某些位于/sbin或/usr/sbin下的指令來(lái)查詢(xún);使用絕對(duì)路徑或相對(duì)路徑直接指定某個(gè)指令的文件名來(lái)執(zhí)行,會(huì)比搜尋PATH來(lái)的正確;指令應(yīng)該要放置到正確的目錄下,執(zhí)行才會(huì)比較方便;本目錄(.)最好不要放到PATH當(dāng)中。對(duì)于PATH更詳細(xì)的『變量』說(shuō)明,我們會(huì)在第三篇的bashshell中詳細(xì)說(shuō)明的!檔案與目錄管理:談了談目錄與路徑之后,再來(lái)討論一下關(guān)于檔案的一些基本管理吧!檔案與目錄的管理上,不外乎『顯示屬性』、『拷貝』、『刪除檔案』及『移動(dòng)檔案或目錄』等等,由于檔案與目錄的管理在Linux當(dāng)中是很重要的,尤其是每個(gè)人自己家目錄的數(shù)據(jù)也都需要注意管理!所以我們來(lái)談一談?dòng)嘘P(guān)檔案與目錄的一些基礎(chǔ)管理部分吧!檔案與目錄的檢視:ls[root@www~]#ls[-aAdfFhilnrRSt]目錄名稱(chēng)[root@www~]#ls[--color={never,auto,always}]目錄名稱(chēng)[root@www~]#ls[--full-time]目錄名稱(chēng)選項(xiàng)與參數(shù):-a:全部的檔案,連同隱藏檔(開(kāi)頭為.的檔案)一起列出來(lái)(常用)-A:全部的檔案,連同隱藏檔,但不包括.與..這兩個(gè)目錄-d:僅列出目錄本身,而不是列出目錄內(nèi)的檔案數(shù)據(jù)(常用)-f:直接列出結(jié)果,而不進(jìn)行排序(ls預(yù)設(shè)會(huì)以檔名排序!)-F:根據(jù)檔案、目錄等信息,給予附加數(shù)據(jù)結(jié)構(gòu),例如:*:代表可執(zhí)行文件;/:代表目錄;=:代表socket檔案;|:代表FIFO檔案;-h:將檔案容量以人類(lèi)較易讀的方式(例如GB,KB等等)列出來(lái);-i:列出inode號(hào)碼,inode的意義下一章將會(huì)介紹;-l:長(zhǎng)數(shù)據(jù)串行出,包含檔案的屬性與權(quán)限等等數(shù)據(jù);(常用)-n:列出UID與GID而非使用者與群組的名稱(chēng)(UID與GID會(huì)在賬號(hào)管理提到!)-r:將排序結(jié)果反向輸出,例如:原本檔名由小到大,反向則為由大到??;-R:連同子目錄內(nèi)容一起列出來(lái),等于該目錄下的所有檔案都會(huì)顯示出來(lái);-S:以檔案容量大小排序,而不是用檔名排序;-t:依時(shí)間排序,而不是用檔名。--color=never:不要依據(jù)檔案特性給予顏色顯示;--color=always:顯示顏色--color=auto:讓系統(tǒng)自行依據(jù)設(shè)定來(lái)判斷是否給予顏色--full-time:以完整時(shí)間模式(包含年、月、日、時(shí)、分)輸出--time={atime,ctime}:輸出access時(shí)間或改變權(quán)限屬性時(shí)間(ctime)而非內(nèi)容變更時(shí)間(modificationtime)在Linux系統(tǒng)當(dāng)中,這個(gè)ls指令可能是最常被執(zhí)行的吧!因?yàn)槲覀冸S時(shí)都要知道檔案或者是目錄的相關(guān)信息啊~不過(guò),我們Linux的檔案所記錄的信息實(shí)在是太多了,ls沒(méi)有需要全部都列出來(lái)呢~所以,當(dāng)你只有下達(dá)ls時(shí),默認(rèn)顯示的只有:非隱藏檔的檔名、以檔名進(jìn)行排序及文件名代表的顏色顯示如此而已。舉例來(lái)說(shuō),你下達(dá)『ls/etc』之后,只有經(jīng)過(guò)排序的文件名以及以藍(lán)色顯示目錄及白色顯示一般檔案,如此而已。那如果我還想要加入其他的顯示信息時(shí),可以加入上頭提到的那些有用的選項(xiàng)呢~舉例來(lái)說(shuō),我們之前一直用到的-l這個(gè)長(zhǎng)串顯示數(shù)據(jù)內(nèi)容,以及將隱藏檔也一起列示出來(lái)的-a選項(xiàng)等等。底下則是一些常用的范例,實(shí)際試做看看:范例一:將家目錄下的所有檔案列出來(lái)(含屬性與隱藏文件)[root@www~]#ls-al~total156drwxr-x4rootroot4096Sep2400:07.drwxr-xr-x23rootroot4096Sep2212:09..-rw1rootroot1474Sep418:27anaconda-ks.cfg-rw1rootroot955Sep2400:08.bash_history-rw-r--r--1rootroot24Jan62007.bash_logout-rw-r--r--1rootroot191Jan62007.bash_profile-rw-r--r--1rootroot176Jan62007.bashrcdrwx3rootroot4096Sep510:37.gconf-rw-r--r--1rootroot42304Sep418:26install.log-rw-r--r--1rootroot5661Sep418:25install.log.syslog#這個(gè)時(shí)候你會(huì)看到以.為開(kāi)頭的幾個(gè)檔案,以及目錄文件(.)(..).gconf等等,#不過(guò),目錄文件文件名都是以深藍(lán)色顯示,有點(diǎn)不容易看清楚就是了。范例二:承上題,不顯示顏色,但在文件名末顯示出該文件名代表的類(lèi)型(type)[root@www~]#ls-alF--color=never~total156drwxr-x4rootroot4096Sep2400:07./drwxr-xr-x23rootroot4096Sep2212:09../-rw1rootroot1474Sep418:27anaconda-ks.cfg-rw1rootroot955Sep2400:08.bash_history-rw-r--r--1rootroot24Jan62007.bash_logout-rw-r--r--1rootroot191Jan62007.bash_profile-rw-r--r--1rootroot176Jan62007.bashrcdrwx3rootroot4096Sep510:37.gconf/-rw-r--r--1rootroot42304Sep418:26install.log-rw-r--r--1rootroot5661Sep418:25install.log.syslog#注意看到顯示結(jié)果的第一行,嘿嘿~知道為何我們會(huì)下達(dá)類(lèi)似./command#之類(lèi)的指令了吧?因?yàn)?/代表的是『目前目錄下』的意思??!至于什么是FIFO/Socket?#請(qǐng)參考前一章節(jié)的介紹??!另外,那個(gè).bashrc時(shí)間僅寫(xiě)2007,能否知道詳細(xì)時(shí)間?范例三:完整的呈現(xiàn)檔案的修改時(shí)間*(modificationtime)[root@www~]#ls-al--full-time~total156drwxr-x4rootroot40962008-09-2400:07:00.000000+0800.drwxr-xr-x23rootroot40962008-09-2212:09:32.000000+0800..-rw1rootroot14742008-09-0418:27:10.000000+0800anaconda-ks.cfg-rw1rootroot9552008-09-2400:08:14.000000+0800.bash_history-rw-r--r--1rootroot242007-01-0617:05:04.000000+0800.bash_logout-rw-r--r--1rootroot1912007-01-0617:05:04.000000+0800.bash_profile-rw-r--r--1rootroot1762007-01-0617:05:04.000000+0800.bashrcdrwx3rootroot40962008-09-0510:37:49.000000+0800.gconf-rw-r--r--1rootroot423042008-09-0418:26:57.000000+0800install.log-rw-r--r--1rootroot56612008-09-0418:25:55.000000+0800install.log.syslog#請(qǐng)仔細(xì)看,上面的『時(shí)間』字段變了喔!變成較為完整的格式。#一般來(lái)說(shuō),ls-al僅列出目前短格式的時(shí)間,有時(shí)不會(huì)列出年份,#藉由--full-time可以查閱到比較正確的完整時(shí)間格式??!其實(shí)ls的用法還有很多,包括查閱檔案所在i-node號(hào)碼的ls-i選項(xiàng),以及用來(lái)進(jìn)行檔案排序的-S選項(xiàng),還有用來(lái)查閱不同時(shí)間的動(dòng)作的--time=atime等選項(xiàng)(更多時(shí)間說(shuō)明請(qǐng)參考本章后面touch的說(shuō)明)。而這些選項(xiàng)的存在都是因?yàn)長(zhǎng)inux文件系統(tǒng)記錄了很多有用的信息的緣故。那么Linux的文件系統(tǒng)中,這些與權(quán)限、屬性有關(guān)的數(shù)據(jù)放在哪里呢?放在i-node里面。關(guān)于這部分,我們會(huì)在下一章繼續(xù)為你作比較深入的介紹??!無(wú)論如何,ls最常被使用到的功能還是那個(gè)-l的選項(xiàng),為此,很多distribution在預(yù)設(shè)的情況中,已經(jīng)將ll(L的小寫(xiě))設(shè)定成為ls-l的意思了!其實(shí),那個(gè)功能是Bashshell的alias功能呢~也就是說(shuō),我們直接輸入ll就等于是輸入ls-l是一樣的~關(guān)于這部分,我們會(huì)在后續(xù)bashshell時(shí)再次的強(qiáng)調(diào)滴~復(fù)制、刪除與移動(dòng):cp,rm,mv要復(fù)制檔案,請(qǐng)使用cp(copy)這個(gè)指令即可~不過(guò),cp這個(gè)指令的用途可多了~除了單純的復(fù)制之外,還可以建立連結(jié)檔(就是快捷方式啰),比對(duì)兩檔案的新舊而予以更新,以及復(fù)制整個(gè)目錄等等的功能呢!至于移動(dòng)目錄與檔案,則使用mv(move),這個(gè)指令也可以直接拿來(lái)作更名(rename)的動(dòng)作喔!至于移除嗎?那就是rm(remove)這個(gè)指令啰~底下我們就來(lái)瞧一瞧先~cp(復(fù)制檔案或目錄)[root@www~]#cp[-adfilprsu]來(lái)源文件(source)目標(biāo)文件(destination)[root@www~]#cp[options]source1source2source3directory選項(xiàng)與參數(shù):-a:相當(dāng)于-pdr的意思,至于pdr請(qǐng)參考下列說(shuō)明;(常用)-d:若來(lái)源文件為鏈接文件的屬性(linkfile),則復(fù)制鏈接文件屬性而非檔案本身;-f:為強(qiáng)制(force)的意思,若目標(biāo)檔案已經(jīng)存在且無(wú)法開(kāi)啟,則移除后再?lài)L試一次;-i:若目標(biāo)文件(destination)已經(jīng)存在時(shí),在覆蓋時(shí)會(huì)先詢(xún)問(wèn)動(dòng)作的進(jìn)行(常用)-l:進(jìn)行硬式連結(jié)(hardlink)的連結(jié)檔建立,而非復(fù)制檔案本身;-p:連同檔案的屬性一起復(fù)制過(guò)去,而非使用默認(rèn)屬性(備份常用);-r:遞歸持續(xù)復(fù)制,用于目錄的復(fù)制行為;(常用)-s:復(fù)制成為符號(hào)鏈接文件(symboliclink),亦即『快捷方式』檔案;-u:若destination比source舊才更新destination!最后需要注意的,如果來(lái)源檔有兩個(gè)以上,則最后一個(gè)目的文件一定要是『目錄』才行!復(fù)制(cp)這個(gè)指令是非常重要的,不同身份者執(zhí)行這個(gè)指令會(huì)有不同的結(jié)果產(chǎn)生,尤其是那個(gè)-a,-p的選項(xiàng),對(duì)于不同身份來(lái)說(shuō),差異則非常的大!底下的練習(xí)中,有的身份為root有的身份為一般賬號(hào)(在我這里用vbird這個(gè)賬號(hào)),練習(xí)時(shí)請(qǐng)?zhí)貏e注意身份的差別喔!好!開(kāi)始來(lái)做復(fù)制的練習(xí)與觀察:范例一:用root身份,將家目錄下的.bashrc復(fù)制到/tmp下,并更名為bashrc[root@www~]#cp~/.bashrc/tmp/bashrc[root@www~]#cp-i~/.bashrc/tmp/bashrccp:overwrite`/tmp/bashrc'?n<==n不覆蓋,y為覆蓋#重復(fù)作兩次動(dòng)作,由于/tmp底下已經(jīng)存在bashrc了,加上-i選項(xiàng)后,#則在覆蓋前會(huì)詢(xún)問(wèn)使用者是否確定!可以按下n或者y來(lái)二次確認(rèn)呢!范例二:變換目錄到/tmp,并將/var/log/wtmp復(fù)制到/tmp且觀察屬性:[root@www~]#cd/tmp[root@wwwtmp]#cp/var/log/wtmp.<==想要復(fù)制到當(dāng)前目錄,最后的.不要忘[root@wwwtmp]#ls-l/var/log/wtmpwtmp-rw-rw-r--1rootutmp96384Sep2411:54/var/log/wtmp-rw-r--r--1rootroot96384Sep2414:06wtmp#注意上面的特殊字體,在不加任何選項(xiàng)的情況下,檔案的某些屬性/權(quán)限會(huì)改變;#這是個(gè)很重要的特性!要注意喔!還有,連檔案建立的時(shí)間也不一樣了!#那如果你想要將檔案的所有特性都一起復(fù)制過(guò)來(lái)該怎辦?可以加上-a喔!如下所示:[root@wwwtmp]#cp-a/var/log/wtmpwtmp_2[root@wwwtmp]#ls-l/var/log/wtmpwtmp_2-rw-rw-r--1rootutmp96384Sep2411:54/var/log/wtmp-rw-rw-r--1rootutmp96384Sep2411:54wtmp_2#瞭了吧!整個(gè)資料特性完全一模一樣ㄟ!真是不賴(lài)~這就是-a的特性!這個(gè)cp的功能很多,由于我們常常會(huì)進(jìn)行一些數(shù)據(jù)的復(fù)制,所以也會(huì)常常用到這個(gè)指令的。一般來(lái)說(shuō),我們?nèi)绻?fù)制別人的數(shù)據(jù)(當(dāng)然,該檔案你必須要有read的權(quán)限才行?。_^)時(shí),總是希望復(fù)制到的數(shù)據(jù)最后是我們自己的,所以,在預(yù)設(shè)的條件中,cp的來(lái)源檔與目的檔的權(quán)限是不同的,目的檔的擁有者通常會(huì)是指令操作者本身。舉例來(lái)說(shuō),上面的范例二中,由于我是root的身份,因此復(fù)制過(guò)來(lái)的檔案擁有者與群組就改變成為root所有了!這樣說(shuō),可以明白嗎?^_^由于具有這個(gè)特性,因此當(dāng)我們?cè)谶M(jìn)行備份的時(shí)候,某些需要特別注意的特殊權(quán)限檔案,例如密碼文件(/etc/shadow)以及一些配置文件,就不能直接以cp來(lái)復(fù)制,而必須要加上-a或者是-p等等可以完整復(fù)制檔案權(quán)限的選項(xiàng)才行!另外,如果你想要復(fù)制檔案給其他的使用者,也必須要注意到檔案的權(quán)限(包含讀、寫(xiě)、執(zhí)行以及檔案擁有者等等),否則,其他人還是無(wú)法針對(duì)你給予的檔案進(jìn)行修訂的動(dòng)作喔!注意注意!范例三:復(fù)制/etc/這個(gè)目錄下的所有內(nèi)容到/tmp底下[root@wwwtmp]#cp/etc//tmpcp:omittingdirectory`/etc'<==如果是目錄則不能直接復(fù)制,要加上-r的選項(xiàng)[root@wwwtmp]#cp-r/etc//tmp#還是要再次的強(qiáng)調(diào)喔!-r是可以復(fù)制目錄,但是,檔案與目錄的權(quán)限可能會(huì)被改變#所以,也可以利用『cp-a/etc/tmp』來(lái)下達(dá)指令喔!尤其是在備份的情況下!范例四:將范例一復(fù)制的bashrc建立一個(gè)連結(jié)檔(symboliclink)[root@wwwtmp]#ls-lbashrc-rw-r--r--1rootroot176Sep2414:02bashrc<==先觀察一下檔案情況[root@wwwtmp]#cp-sbashrcbashrc_slink[root@wwwtmp]#cp-lbashrcbashrc_hlink[root@wwwtmp]#ls-lbashrc*-rw-r--r--2rootroot176Sep2414:02bashrc<==與源文件不太一樣了!-rw-r--r--2rootroot176Sep2414:02bashrc_hlinklrwxrwxrwx1rootroot6Sep2414:20bashrc_slink->bashrc范例四可有趣了!使用-l及-s都會(huì)建立所謂的連結(jié)檔(linkfile),但是這兩種連結(jié)檔卻有不一樣的情況。這是怎么一回事???那個(gè)-l就是所謂的實(shí)體鏈接(hardlink),至于-s則是符號(hào)鏈接(symboliclink),簡(jiǎn)單來(lái)說(shuō),bashrc_slink是一個(gè)『快捷方式』,這個(gè)快捷方式會(huì)連結(jié)到bashrc去!所以你會(huì)看到檔名右側(cè)會(huì)有個(gè)指向(->)的符號(hào)!至于bashrc_hlink檔案與bashrc的屬性與權(quán)限完全一模一樣,與尚未進(jìn)行連結(jié)前的差異則是第二欄的link數(shù)由1變成2了!鳥(niǎo)哥這里先不介紹實(shí)體鏈接,因?yàn)閷?shí)體鏈接涉及i-node的相關(guān)知識(shí),我們下一章談到文件系統(tǒng)(filesystem)時(shí)再來(lái)討論這個(gè)問(wèn)題。范例五:若~(yú)/.bashrc比/tmp/bashrc新才復(fù)制過(guò)來(lái)[root@wwwtmp]#cp-u~/.bashrc/tmp/bashrc#這個(gè)-u的特性,是在目標(biāo)檔案與來(lái)源檔案有差異時(shí),才會(huì)復(fù)制的。#所以,比較常被用于『備份』的工作當(dāng)中喔!^_^范例六:將范例四造成的bashrc_slink復(fù)制成為bashrc_slink_1與bashrc_slink_2[root@wwwtmp]#cpbashrc_slinkbashrc_slink_1[root@wwwtmp]#cp-dbashrc_slinkbashrc_slink_2[root@wwwtmp]#ls-lbashrcbashrc_slink*-rw-r--r--2rootroot176Sep2414:02bashrclrwxrwxrwx1rootroot6Sep2414:20bashrc_slink->bashrc-rw-r--r--1rootroot176Sep2414:32bashrc_slink_1<==與源文件相同lrwxrwxrwx1rootroot6Sep2414:33bashrc_slink_2->bashrc<==是連結(jié)檔!#這個(gè)例子也是很有趣喔!原本復(fù)制的是連結(jié)檔,但是卻將連結(jié)檔的實(shí)際檔案復(fù)制過(guò)來(lái)了#也就是說(shuō),如果沒(méi)有加上任何選項(xiàng)時(shí),cp復(fù)制的是源文件,而非鏈接文件的屬性!#若要復(fù)制鏈接文件的屬性,就得要使用-d的選項(xiàng)了!如bashrc_slink_2所示。范例七:將家目錄的.bashrc及.bash_history復(fù)制到/tmp底下[root@wwwtmp]#cp~/.bashrc~/.bash_history/tmp#可以將多個(gè)數(shù)據(jù)一次復(fù)制到同一個(gè)目錄去!最后面一定是目錄!例題:你能否使用vbird的身份,完整的復(fù)制/var/log/wtmp檔案到/tmp底下,并更名為vbird_wtmp呢?答:實(shí)際做看看的結(jié)果如下:[vbird@www~]$cp-a/var/log/wtmp/tmp/vbird_wtmp[vbird@www~]$ls-l/var/log/wtmp/tmp/vbird_wtmp-rw-rw-r--1vbirdvbird963849月2411:54/tmp/vbird_wtmp-rw-rw-r--1rootutmp963849月2411:54/var/log/wtmp由于vbird的身份并不能隨意修改檔案的擁有者與群組,因此雖然能夠復(fù)制wtmp的相關(guān)權(quán)限與時(shí)間等屬性,但是與擁有者、群組相關(guān)的,原本vbird身份無(wú)法進(jìn)行的動(dòng)作,即使加上-a選項(xiàng),也是無(wú)法達(dá)成完整復(fù)制權(quán)限的!總之,由于cp有種種的文件屬性與權(quán)限的特性,所以,在復(fù)制時(shí),你必須要清楚的了解到:是否需要完整的保留來(lái)源檔案的信息?來(lái)源檔案是否為連結(jié)檔(symboliclinkfile)?來(lái)源檔是否為特殊的檔案,例如FIFO,socket等?來(lái)源文件是否為目錄?rm(移除檔案或目錄)[root@www~]#rm[-fir]檔案或目錄選項(xiàng)與參數(shù):-f:就是force的意思,忽略不存在的檔案,不會(huì)出現(xiàn)警告訊息;-i:互動(dòng)模式,在刪除前會(huì)詢(xún)問(wèn)使用者是否動(dòng)作-r:遞歸刪除啊!最常用在目錄的刪除了!這是非常危險(xiǎn)的選項(xiàng)!??!范例一:將剛剛在cp的范例中建立的bashrc刪除掉![root@www~]#cd/tmp[root@wwwtmp]#rm-ibashrcrm:removeregularfile`bashrc'?y#如果加上-i的選項(xiàng)就會(huì)主動(dòng)詢(xún)問(wèn)喔,避免你刪除到錯(cuò)誤的檔名!范例二:透過(guò)通配符*的幫忙,將/tmp底下開(kāi)頭為bashrc的檔名通通刪除:[root@wwwtmp]#rm-ibashrc*#注意那個(gè)星號(hào),代表的是0到無(wú)窮多個(gè)任意字符喔!很好用的東西!范例三:將cp范例中所建立的/tmp/etc/這個(gè)目錄刪除掉![root@wwwtmp]#rmdir/tmp/etcrmdir:etc:Directorynotempty<==刪不掉啊!因?yàn)檫@不是空的目錄![root@wwwtmp]#rm-r/tmp/etcrm:descendintodirectory`/tmp/etc'?y(中間省略)#因?yàn)樯矸菔莚oot,預(yù)設(shè)已經(jīng)加入了-i的選項(xiàng),所以你要一直按y才會(huì)刪除!#如果不想要繼續(xù)按y,可以按下『[ctrl]-c』來(lái)結(jié)束rm的工作。#這是一種保護(hù)的動(dòng)作,如果確定要?jiǎng)h除掉此目錄而不要詢(xún)問(wèn),可以這樣做:[root@wwwtmp]#\rm-r/tmp/etc#在指令前加上反斜杠,可以忽略掉alias的指定選項(xiàng)喔!至于alias我們?cè)赽ash再談!范例四:刪除一個(gè)帶有-開(kāi)頭的檔案[root@wwwtmp]#touch./-aaa-<==touch這個(gè)指令可以建立空檔案![root@wwwtmp]#ls-l-rw-r--r--1rootroot0Sep2415:03-aaa-<==檔案大小為0,所以是空檔案[root@wwwtmp]#rm-aaa-Try`rm--help'formoreinformation.<==因?yàn)?-"是選項(xiàng)嘛!所以系統(tǒng)誤判了![root@wwwtmp]#rm./-aaa-這是移除的指令(remove),要注意的是,通常在Linux系統(tǒng)下,為了怕檔案被誤殺,所以很多distributions都已經(jīng)默認(rèn)加入-i這個(gè)選項(xiàng)了!而如果要連目錄下的東西都一起殺掉的話,例如子目錄里面還有子目錄時(shí),那就要使用-r這個(gè)選項(xiàng)了!不過(guò),使用『rm-r』這個(gè)指令之前,請(qǐng)千萬(wàn)注意了,因?yàn)樵撃夸浕驒n案『肯定』會(huì)被root殺掉!因?yàn)橄到y(tǒng)不會(huì)再次詢(xún)問(wèn)你是否要砍掉呦!所以那是個(gè)超級(jí)嚴(yán)重的指令下達(dá)呦!得特別注意!不過(guò),如果你確定該目錄不要了,那么使用rm-r來(lái)循環(huán)殺掉是不錯(cuò)的方式!另外,范例四也是很有趣的例子,我們?cè)谥熬驼勥^(guò),檔名最好不要使用"-"號(hào)開(kāi)頭,因?yàn)?-"后面接的是選項(xiàng),因此,單純的使用『rm-aaa-』系統(tǒng)的指令就會(huì)誤判啦!那如果使用后面會(huì)談到的正規(guī)表示法時(shí),還是會(huì)出問(wèn)題的!所以,只能用避過(guò)首位字符是"-"的方法啦!就是加上本目錄『./』即可!如果manrm的話,其實(shí)還有一種方法,那就是『rm---aaa-』也可以??!mv(移動(dòng)檔案與目錄,或更名)[root@www~]#mv[-fiu]sourcedestination[root@www~]#mv[options]source1source2source3directory選項(xiàng)與參數(shù):-f:force強(qiáng)制的意思,如果目標(biāo)檔案已經(jīng)存在,不會(huì)詢(xún)問(wèn)而直接覆蓋;-i:若目標(biāo)檔案(destination)已經(jīng)存在時(shí),就會(huì)詢(xún)問(wèn)是否覆蓋!-u:若目標(biāo)檔案已經(jīng)存在,且source比較新,才會(huì)更新(update)范例一:復(fù)制一檔案,建立一目錄,將檔案移動(dòng)到目錄中[root@www~]#cd/tmp[root@wwwtmp]#cp~/.bashrcbashrc[root@wwwtmp]#mkdirmvtest[root@wwwtmp]#mvbashrcmvtest#將某個(gè)檔案移動(dòng)到某個(gè)目錄去,就是這樣做!范例二:將剛剛的目錄名稱(chēng)更名為mvtest2[root@wwwtmp]#mvmvtestmvtest2<==這樣就更名了!簡(jiǎn)單~#其實(shí)在Linux底下還有個(gè)有趣的指令,名稱(chēng)為rename,#該指令專(zhuān)職進(jìn)行多個(gè)檔名的同時(shí)更名,并非針對(duì)單一檔名變更,與mv不同。請(qǐng)manrename。范例三:再建立兩個(gè)檔案,再全部移動(dòng)到/tmp/mvtest2當(dāng)中[root@wwwtmp]#cp~/.bashrcbashrc1[root@wwwtmp]#cp~/.bashrcbashrc2[root@wwwtmp]#mvbashrc1bashrc2mvtest2#注意到這邊,如果有多個(gè)來(lái)源檔案或目錄,則最后一個(gè)目標(biāo)文件一定是『目錄!』#意思是說(shuō),將所有的數(shù)據(jù)移動(dòng)到該目錄的意思!這是搬移(move)的意思!當(dāng)你要移動(dòng)檔案或目錄的時(shí)后,呵呵!這個(gè)指令就很重要啦!同樣的,你也可以使用-u(update)來(lái)測(cè)試新舊檔案,看看是否需要搬移啰!另外一個(gè)用途就是『變更檔名!』,我們可以很輕易的使用mv來(lái)變更一個(gè)檔案的檔名呢!不過(guò),在Linux才有的指令當(dāng)中,有個(gè)rename,可以用來(lái)更改大量檔案的檔名,你可以利用manrename來(lái)查閱一下,也是挺有趣的指令喔!取得路徑的文件名與目錄名稱(chēng)我們前面介紹的完整文件名(包含目錄名稱(chēng)與文件名)當(dāng)中提到,完整檔名最長(zhǎng)可以到達(dá)4096個(gè)字符。那么你怎么知道那個(gè)是檔名?那個(gè)是目錄名?嘿嘿!就是利用斜線(/)來(lái)分辨??!其實(shí),取得文件名或者是目錄名稱(chēng),一般的用途應(yīng)該是在寫(xiě)程序的時(shí)候,用來(lái)判斷之用的啦~所以,這部分的指令可以用在第三篇內(nèi)的shellscripts里頭喔!底下我們簡(jiǎn)單的以幾個(gè)范例來(lái)談一談basename與dirname的用途![root@www~]#basename/etc/sysconfig/networknetwork<==很簡(jiǎn)單!就取得最后的檔名~[root@www~]#dirname/etc/sysconfig/network/etc/sysconfig<==取得的變成目錄名了!檔案內(nèi)容查閱:如果我們要查閱一個(gè)檔案的內(nèi)容時(shí),該如何是好呢?這里有相當(dāng)多有趣的指令可以來(lái)分享一下:最常使用的顯示檔案內(nèi)容的指令可以說(shuō)是cat與more及l(fā)ess了!此外,如果我們要查看一個(gè)很大型的檔案(好幾百M(fèi)B時(shí)),但是我們只需要后端的幾行字而已,那么該如何是好?呵呵!用tail呀,此外,tac這個(gè)指令也可以達(dá)到!好了,說(shuō)說(shuō)各個(gè)指令的用途吧!cat

由第一行開(kāi)始顯示檔案內(nèi)容tac

從最后一行開(kāi)始顯示,可以看出tac是cat的倒著寫(xiě)!nl

顯示的時(shí)候,順道輸出行號(hào)!more一頁(yè)一頁(yè)的顯示檔案內(nèi)容less與more類(lèi)似,但是比more更好的是,他可以往前翻頁(yè)!head只看頭幾行tail只看尾巴幾行od

以二進(jìn)制的方式讀取檔案內(nèi)容!直接檢視檔案內(nèi)容直接查閱一個(gè)檔案的內(nèi)容可以使用cat/tac/nl這幾個(gè)指令?。at(concatenate)[root@www~]#cat[-AbEnTv]選項(xiàng)與參數(shù):-A:相當(dāng)于-vET的整合選項(xiàng),可列出一些特殊字符而不是空白而已;-b:列出行號(hào),僅針對(duì)非空白行做行號(hào)顯示,空白行不標(biāo)行號(hào)!-E:將結(jié)尾的斷行字符$顯示出來(lái);-n:打印出行號(hào),連同空白行也會(huì)有行號(hào),與-b的選項(xiàng)不同;-T:將[tab]按鍵以^I顯示出來(lái);-v:列出一些看不出來(lái)的特殊字符范例一:檢閱/etc/issue這個(gè)檔案的內(nèi)容[root@www~]#cat/etc/issueCentOSrelease5.3(Final)Kernel\ronan\m范例二:承上題,如果還要加印行號(hào)呢?[root@www~]#cat-n/etc/issue1CentOSrelease5.3(Final)2Kernel\ronan\m3#看到了吧!可以印出行號(hào)呢!這對(duì)于大檔案要找某個(gè)特定的行時(shí),有點(diǎn)用處!#如果不想要編排空白行的行號(hào),可以使用『cat-b/etc/issue』,自己測(cè)試看看:范例三:將/etc/xinetd.conf的內(nèi)容完整的顯示出來(lái)(包含特殊字符)[root@www~]#cat-A/etc/xinetd.conf#$(中間省略)$defaults${$#Thenexttwoitemsareintendedtobeaquickaccessplaceto$(中間省略)^Ilog_type^I=SYSLOGdaemoninfo$^Ilog_on_failure^I=HOST$^Ilog_on_success^I=PIDHOSTDURATIONEXIT$(中間省略)includedir/etc/xinetd.d$$#上面的結(jié)果限于篇幅,鳥(niǎo)哥刪除掉很多數(shù)據(jù)了。另外,輸出的結(jié)果并不會(huì)有特殊字體,#鳥(niǎo)哥上面的特殊字體是要讓您發(fā)現(xiàn)差異點(diǎn)在哪里就是了?;旧?,在一般的環(huán)境中,#使用[tab]與空格鍵的效果差不多,都是一堆空白?。∥覀儫o(wú)法知道兩者的差別。#此時(shí)使用cat-A就能夠發(fā)現(xiàn)那些空白的地方是啥鬼東西了![tab]會(huì)以^I表示,#斷行字符則是以$表示,所以你可以發(fā)現(xiàn)每一行后面都是$??!不過(guò)斷行字符#在Windows/Linux則不太相同,Windows的斷行字符是^M$啰。#這部分我們會(huì)在第十章vim軟件的介紹時(shí),再次的說(shuō)明到喔!嘿嘿!Linux里面有『貓』指令?喔!不是的,cat是Concatenate(連續(xù))的簡(jiǎn)寫(xiě),主要的功能是將一個(gè)檔案的內(nèi)容連續(xù)的印出在屏幕上面!例如上面的例子中,我們將/etc/issue印出來(lái)!如果加上-n或-b的話,則每一行前面還會(huì)加上行號(hào)呦!鳥(niǎo)哥個(gè)人是比較少用cat啦!畢竟當(dāng)你的檔案內(nèi)容的行數(shù)超過(guò)40行以上,嘿嘿!根本來(lái)不及在屏幕上看到結(jié)果!所以,配合等一下要介紹的more或者是less來(lái)執(zhí)行比較好!此外,如果是一般的DOS檔案時(shí),就需要特別留意一些奇奇怪怪的符號(hào)了,例如斷行與[tab]等,要顯示出來(lái),就得加入-A之類(lèi)的選項(xiàng)了!tac(反向列示)[root@www~]#tac/etc/issueKernel\ronan\mCentOSrelease5.3(Final)#嘿嘿!與剛剛上面的范例一比較,是由最后一行先顯示喔!tac這個(gè)好玩了!怎么說(shuō)呢?詳細(xì)的看一下,cat與tac,有沒(méi)有發(fā)現(xiàn)呀!對(duì)啦!tac剛好是將cat反寫(xiě)過(guò)來(lái),所以他的功能就跟cat相反啦,cat是由『第一行到最后一行連續(xù)顯示在屏幕上』,而tac則是『由最后一行到第一行反向在屏幕上顯示出來(lái)』,很好玩吧!nl(添加行號(hào)打印)[root@www~]#nl[-bnw]檔案選項(xiàng)與參數(shù):-b:指定行號(hào)指定的方式,主要有兩種:-ba:表示不論是否為空行,也同樣列出行號(hào)(類(lèi)似cat-n);-bt:如果有空行,空的那一行不要列出行號(hào)(默認(rèn)值);-n:列出行號(hào)表示的方法,主要有三種:-nln:行號(hào)在屏幕的最左方顯示;-nrn:行號(hào)在自己字段的最右方顯示,且不加0;-nrz:行號(hào)在自己字段的最右方顯示,且加0;-w:行號(hào)字段的占用的位數(shù)。范例一:用nl列出/etc/issue的內(nèi)容[root@www~]#nl/etc/issue1CentOSrelease5.3(Final)2Kernel\ronan\m#注意看,這個(gè)檔案其實(shí)有三行,第三行為空白(沒(méi)有任何字符),#因?yàn)樗强瞻仔?,所以nl不會(huì)加上行號(hào)喔!如果確定要加上行號(hào),可以這樣做:[root@www~]#nl-ba/etc/issue1CentOSrelease5.3(Final)2Kernel\ronan\m3#呵呵!行號(hào)加上來(lái)啰~那么如果要讓行號(hào)前面自動(dòng)補(bǔ)上0呢?可這樣[root@www~]#nl-ba-nrz/etc/issue000001CentOSrelease5.3(Final)000002Kernel\ronan\m000003#嘿嘿!自動(dòng)在自己字段的地方補(bǔ)上0了~預(yù)設(shè)字段是六位數(shù),如果想要改成3位數(shù)?[root@www~]#nl-ba-nrz-w3/etc/issue001CentOSrelease5.3(Final)002Kernel\ronan\m003#變成僅有3位數(shù)啰~nl可以將輸出的檔案內(nèi)容自動(dòng)的加上行號(hào)!其預(yù)設(shè)的結(jié)果與cat-n有點(diǎn)不太一樣,nl可以將行號(hào)做比較多的顯示設(shè)計(jì),包括位數(shù)與是否自動(dòng)補(bǔ)齊0等等的功能呢。可翻頁(yè)檢視前面提到的nl與cat,tac等等,都是一次性的將數(shù)據(jù)一口氣顯示到屏幕上面,那有沒(méi)有可以進(jìn)行一頁(yè)一頁(yè)翻動(dòng)的指令???讓我們可以一頁(yè)一頁(yè)的觀察,才不會(huì)前面的數(shù)據(jù)看不到啊~呵呵!有的!那就是more與less啰~more(一頁(yè)一頁(yè)翻動(dòng))[root@www~]#more/etc/man.config##Generatedautomaticallyfromman.conf.inbythe#configurescript.##man.conffromman-1.6d(中間省略)--More--(28%)<==重點(diǎn)在這一行喔!你的光標(biāo)也會(huì)在這里等待你的指令仔細(xì)的給他看到上面的范例,如果more后面接的檔案內(nèi)容行數(shù)大于屏幕輸出的行數(shù)時(shí),就會(huì)出現(xiàn)類(lèi)似上面的圖示。重點(diǎn)在最后一行,最后一行會(huì)顯示出目前顯示的百分比,而且還可以在最后一行輸入一些有用的指令喔!在more這個(gè)程序的運(yùn)作過(guò)程中,你有幾個(gè)按鍵可以按的:空格鍵(space):代表向下翻一頁(yè);Enter

:代表向下翻『一行』;/字符串

:代表在這個(gè)顯示的內(nèi)容當(dāng)中,向下搜尋『字符串』這個(gè)關(guān)鍵詞;:f

:立刻顯示出文件名以及目前顯示的行數(shù);q

:代表立刻離開(kāi)more,不再顯示該檔案內(nèi)容。b或[ctrl]-b:代表往回翻頁(yè),不過(guò)這動(dòng)作只對(duì)檔案有用,對(duì)管線無(wú)用。要離開(kāi)more這個(gè)指令的顯示工作,可以按下q就能夠離開(kāi)了。而要向下翻頁(yè),就使用空格鍵即可。比較有用的是搜尋字符串的功能,舉例來(lái)說(shuō),我們使用『more/etc/man.config』來(lái)觀察該檔案,若想要在該檔案內(nèi)搜尋MANPATH這個(gè)字符串時(shí),可以這樣做:[root@www~]#more/etc/man.config##Generatedautomaticallyfromman.conf.inbythe#configurescript.##man.conffromman-1.6d(中間省略)/MANPATH<==輸入了/之后,光標(biāo)就會(huì)自動(dòng)跑到最底下一行等待輸入!如同上面的說(shuō)明,輸入了/之后,光標(biāo)就會(huì)跑到最底下一行,并且等待你的輸入,你輸入了字符串并按下[enter]之后,嘿嘿!more就會(huì)開(kāi)始向下搜尋該字符串啰~而重復(fù)搜尋同一個(gè)字符串,可以直接按下n即可?。∽詈?,不想要看了,就按下q即可離開(kāi)more啦!less(一頁(yè)一頁(yè)翻動(dòng))[root@www~]#less/etc/man.config##Generatedautomaticallyfromman.conf.inbythe#configurescript.##man.conffromman-1.6d(中間省略):<==這里可以等待你輸入指令!less的用法比起more又更加的有彈性,怎么說(shuō)呢?在more的時(shí)候,我們并沒(méi)有辦法向前面翻,只能往后面看,但若使用了less時(shí),呵呵!就可以使用[pageup][pagedown]等按鍵的功能來(lái)往前往后翻看文件,你瞧,是不是更容易使用來(lái)觀看一個(gè)檔案的內(nèi)容了呢!除此之外,在less里頭可以擁有更多的『搜尋』功能喔!不止可以向下搜尋,也可以向上搜尋~實(shí)在是很不錯(cuò)用~基本上,可以輸入的指令有:空格鍵

:向下翻動(dòng)一頁(yè);[pagedown]:向下翻動(dòng)一頁(yè);[pageup]

:向上翻動(dòng)一頁(yè);/字符串

:向下搜尋『字符串』的功能;?字符串

:向上搜尋『字符串』的功能;n

:重復(fù)前一個(gè)搜尋(與/或?有關(guān)!)N

:反向的重復(fù)前一個(gè)搜尋(與/或?有關(guān)!)q

:離開(kāi)less這個(gè)程序;查閱檔案內(nèi)容還可以進(jìn)行搜尋的動(dòng)作~瞧~less是否很不錯(cuò)用啊!其實(shí)less還有很多的功能喔!詳細(xì)的使用方式請(qǐng)使用manless查詢(xún)一下??!^_^你是否會(huì)覺(jué)得less使用的畫(huà)面與環(huán)境與manpage非常的類(lèi)似呢?沒(méi)錯(cuò)啦!因?yàn)閙an這個(gè)指令就是呼叫l(wèi)ess來(lái)顯示說(shuō)明文件的內(nèi)容的!現(xiàn)在你是否覺(jué)得less很重要呢?^_^資料擷取我們可以將輸出的資料作一個(gè)最簡(jiǎn)單的擷取,那就是取出前面(head)與取出后面(tail)文字的功能。不過(guò),要注意的是,head與tail都是以『行』為單位來(lái)進(jìn)行數(shù)據(jù)擷取的喔!head(取出前面幾行)[root@www~]#head[-nnumber]檔案選項(xiàng)與參數(shù):-n:后面接數(shù)字,代表顯示幾行的意思[root@www~]#head/etc/man.config#默認(rèn)的情況中,顯示前面十行!若要顯示前20行,就得要這樣:[root@www~]#head-n20/etc/man.config范例:如果后面100行的數(shù)據(jù)都不打印,只打印/etc/man.config的前面幾行,該如何是好?[root@www~]#head-n-100/etc/man.confighead的英文意思就是『頭』啦,那么這個(gè)東西的用法自然就是顯示出一個(gè)檔案的前幾行啰!沒(méi)錯(cuò)!就是這樣!若沒(méi)有加上-n這個(gè)選項(xiàng)時(shí),默認(rèn)只顯示十行,若只要一行呢?那就加入『head-n1filename』即可!另外那個(gè)-n選項(xiàng)后面的參數(shù)較有趣,如果接的是負(fù)數(shù),例如上面范例的-n-100時(shí),代表列前的所有行數(shù),但不包括后面100行。舉例來(lái)說(shuō),/etc/man.config共有141行,則上述的指令『head-n-100/etc/man.config』就會(huì)列出前面41行,后面100行不會(huì)打印出來(lái)了。這樣說(shuō),比較容易懂了吧?^_^tail(取出后面幾行)[root@www~]#tail[-nnumber]檔案選項(xiàng)與參數(shù):-n:后面接數(shù)字,代表顯示幾行的意思-f:表示持續(xù)偵測(cè)后面所接的檔名,要等到按下[ctrl]-c才會(huì)結(jié)束tail的偵測(cè)[root@www~]#tail/etc/man.config#默認(rèn)的情況中,顯示最后的十行!若要顯示最后的20行,就得要這樣:[root@www~]#tail-n20/etc/man.config范例一:如果不知道/etc/man.config有幾行,卻只想列出100行以后的數(shù)據(jù)時(shí)?[root@www~]#tail-n+100/etc/man.config范例二:持續(xù)偵測(cè)/var/log/messages的內(nèi)容[root@www~]#tail-f/var/log/messages<==要等到輸入[crtl]-c之后才會(huì)離開(kāi)tail這個(gè)指令的偵測(cè)!有head自然就有tail(尾巴)啰!沒(méi)錯(cuò)!這個(gè)tail的用法跟head的用法差不多類(lèi)似,只是顯示的是后面幾行就是了!默認(rèn)也是顯示十行,若要顯示非十行,就加-nnumber的選項(xiàng)即可。范例一的內(nèi)容就有趣啦!其實(shí)與head-n-xx有異曲同工之妙。當(dāng)下達(dá)『tail

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論