版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第七章、Linux檔案與目錄管理在第六章我們認識了Linux系統(tǒng)下的檔案權(quán)限概念以及目錄的配置說明。在這個章節(jié)當中,我們就直接來進一步的操作與管理檔案與目錄吧!包括在不同的目錄間變換、建立與刪除目錄、建立與刪除檔案,還有尋找檔案、查閱檔案內(nèi)容等等,都會在這個章節(jié)作個簡單的介紹??!1.目錄與路徑
1.1相對路徑與絕對路徑
1.2目錄的相關(guān)操作:cd,pwd,mkdir,rmdir
1.3關(guān)于執(zhí)行文件路徑的變量:$PATH
2.檔案與目錄管理
2.1檔案與目錄的檢視:ls
2.2復制、刪除與移動:cp,rm,mv
2.3取得路徑的文件名與目錄名稱
3.檔案內(nèi)容查閱:
3.1直接檢視檔案內(nèi)容:cat,tac,nl
3.2可翻頁檢視:more,less
3.3資料擷?。篽ead,tail
3.4非純文本檔:od
3.5修改檔案時間與建置新檔:touch
4.檔案與目錄的默認權(quán)限與隱藏權(quán)限
4.1檔案預設權(quán)限:umask
4.2檔案隱藏屬性:chattr,lsattr
4.4檔案特殊權(quán)限:SUID,SGID,SBIT,權(quán)限設定
4.3觀察文件類型:file
5.指令與檔案的搜尋:
5.1腳本文件名的搜尋:which
5.2檔案檔名的搜尋:whereis,locate,find
6.極重要!權(quán)限與指令間的關(guān)系:
7.重點回顧
8.本章習題
9.參考數(shù)據(jù)與延伸閱讀
10.針對本文的建議:/viewtopic.php?t=23879目錄與路徑:由第六章Linux的檔案權(quán)限與目錄配置中透過FHS了解了Linux的『樹狀目錄』概念之后,接下來就得要實際的來搞定一些基本的路徑問題了!這些目錄的問題當中,最重要的莫過于第六章也談過的『絕對路徑』與『相對路徑』的意義啦!絕對/相對路徑的寫法并不相同,要特別注意。此外,當妳下達指令時,該指令是透過什么功能來取得的?這與PATH這個變數(shù)有關(guān)呢!底下就讓我們來談談啰!相對路徑與絕對路徑:在開始目錄的切換之前,你必須要先了解一下所謂的『路徑(PATH)』,有趣的是:什么是『相對路徑』與『絕對路徑』?雖然前一章已經(jīng)稍微針對這個議題提過一次,不過,這里不厭其煩的再次的強調(diào)一下!絕對路徑:路徑的寫法『一定由根目錄/寫起』,例如:/usr/share/doc這個目錄。相對路徑:路徑的寫法『不是由/寫起』,例如由/usr/share/doc要到/usr/share/man底下時,可以寫成:『cd../man』這就是相對路徑的寫法啦!相對路徑意指『相對于目前工作目錄的路徑!』相對路徑的用途那么相對路徑與絕對路徑有什么了不起呀?喝!那可真的是了不起了!假設你寫了一個軟件,這個軟件共需要三個目錄,分別是etc,bin,man這三個目錄,然而由于不同的人喜歡安裝在不同的目錄之下,假設甲安裝的目錄是/usr/local/packages/etc,/usr/local/packages/bin及/usr/local/packages/man,不過乙卻喜歡安裝在/home/packages/etc,/home/packages/bin,/home/packages/man這三個目錄中,請問如果需要用到絕對路徑的話,那么是否很麻煩呢?是的!如此一來每個目錄下的東西就很難對應的起來!這個時候相對路徑的寫法就顯的特別的重要了!此外,如果你跟鳥哥一樣,喜歡將路徑的名字寫的很長,好讓自己知道那個目錄是在干什么的,例如:/cluster/raid/output/taiwan2006/smoke這個目錄,而另一個目錄在/cluster/raid/output/taiwan2006/cctm,那么我從第一個要到第二個目錄去的話,怎么寫比較方便?當然是『cd../cctm』比較方便啰!對吧!絕對路徑的用途但是對于檔名的正確性來說,『絕對路徑的正確度要比較好~』。一般來說,鳥哥會建議你,如果是在寫程序(shellscripts)來管理系統(tǒng)的條件下,務必使用絕對路徑的寫法。怎么說呢?因為絕對路徑的寫法雖然比較麻煩,但是可以肯定這個寫法絕對不會有問題。如果使用相對路徑在程序當中,則可能由于你執(zhí)行的工作環(huán)境不同,導致一些問題的發(fā)生。這個問題在工作排程(at,cron,第十六章)當中尤其重要!這個現(xiàn)象我們在十三章、shellscript時,會再次的提醒你喔!^_^目錄的相關(guān)操作:我們之前稍微提到變換目錄的指令是cd,還有哪些可以進行目錄操作的指令呢?例如建立目錄啊、刪除目錄之類的~還有,得要先知道的,就是有哪些比較特殊的目錄呢?舉例來說,底下這些就是比較特殊的目錄,得要用力的記下來才行:.代表此層目錄..代表上一層目錄-代表前一個工作目錄~代表『目前用戶身份』所在的家目錄~account代表account這個用戶的家目錄(account是個賬號名稱)需要特別注意的是:在所有目錄底下都會存在的兩個目錄,分別是『.』與『..』分別代表此層與上層目錄的意思。那么來思考一下底下這個例題:例題:請問在Linux底下,根目錄下有沒有上層目錄(..)存在?答:若使用『ls-al/』去查詢,可以看到根目錄下確實存在.與..兩個目錄,再仔細的查閱,可發(fā)現(xiàn)這兩個目錄的屬性與權(quán)限完全一致,這代表根目錄的上一層(..)與根目錄自己(.)是同一個目錄。底下我們就來談一談幾個常見的處理目錄的指令吧:cd:變換目錄pwd:顯示當前目錄mkdir:建立一個新的目錄rmdir:刪除一個空的目錄cd(變換目錄)我們知道vbird這個用戶的家目錄是/home/vbird/,而root家目錄則是/root/,假設我以root身份在Linux系統(tǒng)中,那么簡單的說明一下這幾個特殊的目錄的意義是:[root@www~]#cd[相對路徑或絕對路徑]#最重要的就是目錄的絕對路徑與相對路徑,還有一些特殊目錄的符號啰![root@www~]#cd~vbird#代表去到vbird這個用戶的家目錄,亦即/home/vbird[root@wwwvbird]#cd~#表示回到自己的家目錄,亦即是/root這個目錄[root@www~]#cd#沒有加上任何路徑,也還是代表回到自己家目錄的意思喔![root@www~]#cd..#表示去到目前的上層目錄,亦即是/root的上層目錄的意思;[root@www/]#cd-#表示回到剛剛的那個目錄,也就是/root啰~[root@www~]#cd/var/spool/mail#這個就是絕對路徑的寫法!直接指定要去的完整路徑名稱![root@wwwmail]#cd../mqueue#這個是相對路徑的寫法,我們由/var/spool/mail去到/var/spool/mqueue就這樣寫!cd是ChangeDirectory的縮寫,這是用來變換工作目錄的指令。注意,目錄名稱與cd指令之間存在一個空格。一登入Linux系統(tǒng)后,root會在root的家目錄!那回到上一層目錄可以用『cd..』。利用相對路徑的寫法必須要確認你目前的路徑才能正確的去到想要去的目錄。例如上表當中最后一個例子,你必須要確認你是在/var/spool/mail當中,并且知道在/var/spool當中有個mqueue的目錄才行啊~這樣才能使用cd../mqueue去到正確的目錄說,否則就要直接輸入cd/var/spool/mqueue啰~其實,我們的提示字符,亦即那個[root@www~]#當中,就已經(jīng)有指出當前目錄了,剛登入時會到自己的家目錄,而家目錄還有一個代碼,那就是『~』符號!例如上面的例子可以發(fā)現(xiàn),使用『cd~』可以回到個人的家目錄里頭去呢!另外,針對cd的使用方法,如果僅輸入cd時,代表的就是『cd~』的意思喔~亦即是會回到自己的家目錄啦!而那個『cd-』比較難以理解,請自行多做幾次練習,就會比較明白了。Tips:
還是要一再地提醒,我們的Linux的默認指令列模式(bashshell)具有檔案補齊功能,你要常常利用[tab]按鍵來達成你的目錄完整性??!這可是個好習慣啊~可以避免你按錯鍵盤輸入錯字說~^_^pwd(顯示目前所在的目錄)[root@www~]#pwd[-P]選項與參數(shù):-P:顯示出確實的路徑,而非使用鏈接(link)路徑。范例:單純顯示出目前的工作目錄:[root@www~]#pwd/root<==顯示出目錄啦~范例:顯示出實際的工作目錄,而非鏈接文件本身的目錄名而已[root@www~]#cd/var/mail<==注意,/var/mail是一個連結(jié)檔[root@wwwmail]#pwd/var/mail<==列出目前的工作目錄[root@wwwmail]#pwd-P/var/spool/mail<==怎么回事?有沒有加-P差很多~[root@wwwmail]#ls-ld/var/maillrwxrwxrwx1rootroot10Sep417:54/var/mail->spool/mail#看到這里應該知道為啥了吧?因為/var/mail是連結(jié)檔,連結(jié)到/var/spool/mail#所以,加上pwd-P的選項后,會不以連結(jié)文件的數(shù)據(jù)顯示,而是顯示正確的完整路徑啊!pwd是PrintWorkingDirectory的縮寫,也就是顯示目前所在目錄的指令,例如在上個表格最后的目錄是/var/mail這個目錄,但是提示字符僅顯示mail,如果你想要知道目前所在的目錄,可以輸入pwd即可。此外,由于很多的套件所使用的目錄名稱都相同,例如/usr/local/etc還有/etc,但是通常Linux僅列出最后面那一個目錄而已,這個時候你就可以使用pwd來知道你的所在目錄啰!免得搞錯目錄,結(jié)果...其實有趣的是那個-P的選項啦!他可以讓我們?nèi)〉谜_的目錄名稱,而不是以鏈接文件的路徑來顯示的。如果你使用的是CentOS5.x的話,剛剛好/var/mail是/var/spool/mail的連結(jié)檔,所以,透過到/var/mail下達pwd-P就能夠知道這個選項的意義啰~^_^mkdir(建立新目錄)[root@www~]#mkdir[-mp]目錄名稱選項與參數(shù):-m:配置文件案的權(quán)限喔!直接設定,不需要看預設權(quán)限(umask)的臉色~-p:幫助你直接將所需要的目錄(包含上層目錄)遞歸建立起來!范例:請到/tmp底下嘗試建立數(shù)個新目錄看看:[root@www~]#cd/tmp[root@wwwtmp]#mkdirtest<==建立一名為test的新目錄[root@wwwtmp]#mkdirtest1/test2/test3/test4mkdir:cannotcreatedirectory`test1/test2/test3/test4':Nosuchfileordirectory<==沒辦法直接建立此目錄?。root@wwwtmp]#mkdir-ptest1/test2/test3/test4#加了這個-p的選項,可以自行幫你建立多層目錄!范例:建立權(quán)限為rwx--x--x的目錄[root@wwwtmp]#mkdir-m711test2[root@wwwtmp]#ls-ldrwxr-xr-x3rootroot4096Jul1812:50testdrwxr-xr-x3rootroot4096Jul1812:53test1drwx--x--x2rootroot4096Jul1812:54test2#仔細看上面的權(quán)限部分,如果沒有加上-m來強制設定屬性,系統(tǒng)會使用默認屬性。#那么你的默認屬性為何?這要透過底下介紹的umask才能了解喔!^_^如果想要建立新的目錄的話,那么就使用mkdir(makedirectory)吧!不過,在預設的情況下,你所需要的目錄得一層一層的建立才行!例如:假如你要建立一個目錄為/home/bird/testing/test1,那么首先必須要有/home然后/home/bird,再來/home/bird/testing都必須要存在,才可以建立/home/bird/testing/test1這個目錄!假如沒有/home/bird/testing時,就沒有辦法建立test1的目錄啰!不過,現(xiàn)在有個更簡單有效的方法啦!那就是加上-p這個選項喔!你可以直接下達:『mkdir-p/home/bird/testing/test1』則系統(tǒng)會自動的幫你將/home,/home/bird,/home/bird/testing依序的建立起目錄!并且,如果該目錄本來就已經(jīng)存在時,系統(tǒng)也不會顯示錯誤訊息喔!挺快樂的吧!^_^。不過鳥哥不建議常用-p這個選項,因為擔心如果妳打錯字,那么目錄名稱就會變的亂七八糟的!另外,有個地方你必須要先有概念,那就是『預設權(quán)限』的地方。我們可以利用-m來強制給予一個新的目錄相關(guān)的權(quán)限,例如上表當中,我們給予-m711來給予新的目錄drwx--x--x的權(quán)限。不過,如果沒有給予-m選項時,那么默認的新建目錄權(quán)限又是什么呢?這個跟umask有關(guān),我們在本章后頭會加以介紹的。rmdir(刪除『空』的目錄)[root@www~]#rmdir[-p]目錄名稱選項與參數(shù):-p:連同上層『空的』目錄也一起刪除范例:將于mkdir范例中建立的目錄(/tmp底下)刪除掉![root@wwwtmp]#ls-l<==看看有多少目錄存在?drwxr-xr-x3rootroot4096Jul1812:50testdrwxr-xr-x3rootroot4096Jul1812:53test1drwx--x--x2rootroot4096Jul1812:54test2[root@wwwtmp]#rmdirtest<==可直接刪除掉,沒問題[root@wwwtmp]#rmdirtest1<==因為尚有內(nèi)容,所以無法刪除!rmdir:`test1':Directorynotempty[root@wwwtmp]#rmdir-ptest1/test2/test3/test4[root@wwwtmp]#ls-l<==您看看,底下的輸出中test與test1不見了!drwx--x--x2rootroot4096Jul1812:54test2#瞧!利用-p這個選項,立刻就可以將test1/test2/test3/test4一次刪除~#不過要注意的是,這個rmdir僅能『刪除空的目錄』喔!如果想要刪除舊有的目錄時,就使用rmdir吧!例如將剛剛建立的test殺掉,使用『rmdirtest』即可!請注意呦!目錄需要一層一層的刪除才行!而且被刪除的目錄里面必定不能存在其他的目錄或檔案!這也是所謂的空的目錄(emptydirectory)的意思啊!那如果要將所有目錄下的東西都殺掉呢?!這個時候就必須使用『rm-rtest』啰!不過,還是使用rmdir比較不危險!你也可以嘗試以-p的選項加入,來刪除上層的目錄喔!關(guān)于執(zhí)行文件路徑的變量:$PATH經(jīng)過第六章FHS的說明后,我們知道查閱文件屬性的指令ls完整文件名為:/bin/ls(這是絕對路徑),那你會不會覺得很奇怪:『為什么我可以在任何地方執(zhí)行/bin/ls這個指令呢?』為什么我在任何目錄下輸入ls就一定可以顯示出一些訊息而不會說找不到該/bin/ls指令呢?這是因為環(huán)境變量PATH的幫助所致呀!當我們在執(zhí)行一個指令的時候,舉例來說『ls』好了,系統(tǒng)會依照PATH的設定去每個PATH定義的目錄下搜尋文件名為ls的可執(zhí)行文件,如果在PATH定義的目錄中含有多個文件名為ls的可執(zhí)行文件,那么先搜尋到的同名指令先被執(zhí)行!現(xiàn)在,請下達『echo$PATH』來看看到底有哪些目錄被定義出來了?echo有『顯示、印出』的意思,而PATH前面加的$表示后面接的是變量,所以會顯示出目前的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#仔細看,一般用戶vbird的PATH中,并不包含任何『sbin』的目錄存在喔!PATH(一定是大寫)這個變量的內(nèi)容是由一堆目錄所組成的,每個目錄中間用冒號(:)來隔開,每個目錄是有『順序』之分的。仔細看一下上面的輸出,妳可以發(fā)現(xiàn)到無論是root還是vbird都有/bin這個目錄在PATH變量內(nèi),所以當然就能夠在任何地方執(zhí)行l(wèi)s來找到/bin/ls執(zhí)行檔啰!我們用幾個范例來讓你了解一下,為什么PATH是那么重要的項目!例題:請問你能不能使用一般身份使用者下達ifconfigeth0這個指令呢?答:如上面的范例所示,當你使用vbird這個賬號執(zhí)行ifconfig時,會出現(xiàn)『-bash:ifconfig:commandnotfound』的字樣,因為ifconfig的是放置到/sbin底下,而由上表的結(jié)果中我們可以發(fā)現(xiàn)vbird的PATH并沒有設置/sbin,所以預設無法執(zhí)行。
但是你可以使用『/sbin/ifconfigeth0』來執(zhí)行這個指令喔!因為一般用戶還是可以使用ifconfig來查詢系統(tǒng)IP的參數(shù),既然PATH沒有規(guī)范到/sbin,那么我們使用『絕對路徑』也可以執(zhí)行到該指令的!例題:假設你是root,如果你將ls由/bin/ls移動成為/root/ls(可用『mv/bin/ls/root』指令達成),然后你自己本身也在/root目錄下,請問(1)你能不能直接輸入ls來執(zhí)行?(2)若不能,你該如何執(zhí)行l(wèi)s這個指令?(3)若要直接輸入ls即可執(zhí)行,又該如何進行?答:由于這個例題的重點是將某個執(zhí)行文件移動到非正規(guī)目錄去,所以我們先要進行底下的動作才行:(務必使用root的身份)[root@www~]#mv/bin/ls/root#mv為移動,可將檔案在不同的目錄間進行移動作業(yè)(1)接下來不論你在那個目錄底下輸入任何與ls相關(guān)的指令,都沒有辦法順利的執(zhí)行l(wèi)s了!也就是說,你不能直接輸入ls來執(zhí)行,因為/root這個目錄并不在PATH指定的目錄中,所以,即使你在/root目錄下,也不能夠搜尋到ls這個指令!
(2)因為這個ls確實存在于/root底下,并不是被刪除了!所以我們可以透過使用絕對路徑或者是相對路徑直接指定這個執(zhí)行檔檔名,底下的兩個方法都能夠執(zhí)行l(wèi)s這個指令:[root@www~]#/root/ls<==直接用絕對路徑指定該文件名[root@www~]#./ls<==因為在/root目錄下,就用./ls來指定(3)如果想要讓root在任何目錄均可執(zhí)行/root底下的ls,那么就將/root加入PATH當中即可。加入的方法很簡單,就像底下這樣:[root@www~]#PATH="$PATH":/root上面這個作法就能夠?qū)?root加入到執(zhí)行文件搜尋路徑PATH中了!不相信的話請您自行使用『echo$PATH』去查看吧!如果確定這個例題進行沒有問題了,請將ls搬回/bin底下,不然系統(tǒng)會掛點的![root@www~]#mv/root/ls/bin例題:如果我有兩個ls指令在不同的目錄中,例如/usr/local/bin/ls與/bin/ls那么當我下達ls的時候,哪個ls會被執(zhí)行?答:那還用說,就找出PATH里面哪個目錄先被查詢,則那個目錄下的指令就會被先執(zhí)行了!例題:為什么PATH搜尋的目錄不加入本目錄(.)?加入本目錄的搜尋不是也不錯?答:如果在PATH中加入本目錄(.)后,確實我們就能夠在指令所在目錄進行指令的執(zhí)行了。但是由于你的工作目錄并非固定(常常會使用cd來切換到不同的目錄),因此能夠執(zhí)行的指令會有變動(因為每個目錄底下的可執(zhí)行文件都不相同嘛!),這對使用者來說并非好事。
另外,如果有個壞心使用者在/tmp底下做了一個指令,因為/tmp是大家都能夠?qū)懭氲沫h(huán)境,所以他當然可以這樣做。假設該指令可能會竊取用戶的一些數(shù)據(jù),如果你使用root的身份來執(zhí)行這個指令,那不是很糟糕?如果這個指令的名稱又是經(jīng)常會被用到的ls時,那『中標』的機率就更高了!
所以,為了安全起見,不建議將『.』加入PATH的搜尋目錄中。而由上面的幾個例題我們也可以知道幾件事情:不同身份使用者預設的PATH不同,默認能夠隨意執(zhí)行的指令也不同(如root與vbird);PATH是可以修改的,所以一般使用者還是可以透過修改PATH來執(zhí)行某些位于/sbin或/usr/sbin下的指令來查詢;使用絕對路徑或相對路徑直接指定某個指令的文件名來執(zhí)行,會比搜尋PATH來的正確;指令應該要放置到正確的目錄下,執(zhí)行才會比較方便;本目錄(.)最好不要放到PATH當中。對于PATH更詳細的『變量』說明,我們會在第三篇的bashshell中詳細說明的!檔案與目錄管理:談了談目錄與路徑之后,再來討論一下關(guān)于檔案的一些基本管理吧!檔案與目錄的管理上,不外乎『顯示屬性』、『拷貝』、『刪除檔案』及『移動檔案或目錄』等等,由于檔案與目錄的管理在Linux當中是很重要的,尤其是每個人自己家目錄的數(shù)據(jù)也都需要注意管理!所以我們來談一談有關(guān)檔案與目錄的一些基礎管理部分吧!檔案與目錄的檢視:ls[root@www~]#ls[-aAdfFhilnrRSt]目錄名稱[root@www~]#ls[--color={never,auto,always}]目錄名稱[root@www~]#ls[--full-time]目錄名稱選項與參數(shù):-a:全部的檔案,連同隱藏檔(開頭為.的檔案)一起列出來(常用)-A:全部的檔案,連同隱藏檔,但不包括.與..這兩個目錄-d:僅列出目錄本身,而不是列出目錄內(nèi)的檔案數(shù)據(jù)(常用)-f:直接列出結(jié)果,而不進行排序(ls預設會以檔名排序!)-F:根據(jù)檔案、目錄等信息,給予附加數(shù)據(jù)結(jié)構(gòu),例如:*:代表可執(zhí)行文件;/:代表目錄;=:代表socket檔案;|:代表FIFO檔案;-h:將檔案容量以人類較易讀的方式(例如GB,KB等等)列出來;-i:列出inode號碼,inode的意義下一章將會介紹;-l:長數(shù)據(jù)串行出,包含檔案的屬性與權(quán)限等等數(shù)據(jù);(常用)-n:列出UID與GID而非使用者與群組的名稱(UID與GID會在賬號管理提到!)-r:將排序結(jié)果反向輸出,例如:原本檔名由小到大,反向則為由大到小;-R:連同子目錄內(nèi)容一起列出來,等于該目錄下的所有檔案都會顯示出來;-S:以檔案容量大小排序,而不是用檔名排序;-t:依時間排序,而不是用檔名。--color=never:不要依據(jù)檔案特性給予顏色顯示;--color=always:顯示顏色--color=auto:讓系統(tǒng)自行依據(jù)設定來判斷是否給予顏色--full-time:以完整時間模式(包含年、月、日、時、分)輸出--time={atime,ctime}:輸出access時間或改變權(quán)限屬性時間(ctime)而非內(nèi)容變更時間(modificationtime)在Linux系統(tǒng)當中,這個ls指令可能是最常被執(zhí)行的吧!因為我們隨時都要知道檔案或者是目錄的相關(guān)信息啊~不過,我們Linux的檔案所記錄的信息實在是太多了,ls沒有需要全部都列出來呢~所以,當你只有下達ls時,默認顯示的只有:非隱藏檔的檔名、以檔名進行排序及文件名代表的顏色顯示如此而已。舉例來說,你下達『ls/etc』之后,只有經(jīng)過排序的文件名以及以藍色顯示目錄及白色顯示一般檔案,如此而已。那如果我還想要加入其他的顯示信息時,可以加入上頭提到的那些有用的選項呢~舉例來說,我們之前一直用到的-l這個長串顯示數(shù)據(jù)內(nèi)容,以及將隱藏檔也一起列示出來的-a選項等等。底下則是一些常用的范例,實際試做看看:范例一:將家目錄下的所有檔案列出來(含屬性與隱藏文件)[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#這個時候你會看到以.為開頭的幾個檔案,以及目錄文件(.)(..).gconf等等,#不過,目錄文件文件名都是以深藍色顯示,有點不容易看清楚就是了。范例二:承上題,不顯示顏色,但在文件名末顯示出該文件名代表的類型(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é)果的第一行,嘿嘿~知道為何我們會下達類似./command#之類的指令了吧?因為./代表的是『目前目錄下』的意思啊!至于什么是FIFO/Socket?#請參考前一章節(jié)的介紹??!另外,那個.bashrc時間僅寫2007,能否知道詳細時間?范例三:完整的呈現(xiàn)檔案的修改時間*(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#請仔細看,上面的『時間』字段變了喔!變成較為完整的格式。#一般來說,ls-al僅列出目前短格式的時間,有時不會列出年份,#藉由--full-time可以查閱到比較正確的完整時間格式?。∑鋵峫s的用法還有很多,包括查閱檔案所在i-node號碼的ls-i選項,以及用來進行檔案排序的-S選項,還有用來查閱不同時間的動作的--time=atime等選項(更多時間說明請參考本章后面touch的說明)。而這些選項的存在都是因為Linux文件系統(tǒng)記錄了很多有用的信息的緣故。那么Linux的文件系統(tǒng)中,這些與權(quán)限、屬性有關(guān)的數(shù)據(jù)放在哪里呢?放在i-node里面。關(guān)于這部分,我們會在下一章繼續(xù)為你作比較深入的介紹??!無論如何,ls最常被使用到的功能還是那個-l的選項,為此,很多distribution在預設的情況中,已經(jīng)將ll(L的小寫)設定成為ls-l的意思了!其實,那個功能是Bashshell的alias功能呢~也就是說,我們直接輸入ll就等于是輸入ls-l是一樣的~關(guān)于這部分,我們會在后續(xù)bashshell時再次的強調(diào)滴~復制、刪除與移動:cp,rm,mv要復制檔案,請使用cp(copy)這個指令即可~不過,cp這個指令的用途可多了~除了單純的復制之外,還可以建立連結(jié)檔(就是快捷方式啰),比對兩檔案的新舊而予以更新,以及復制整個目錄等等的功能呢!至于移動目錄與檔案,則使用mv(move),這個指令也可以直接拿來作更名(rename)的動作喔!至于移除嗎?那就是rm(remove)這個指令啰~底下我們就來瞧一瞧先~cp(復制檔案或目錄)[root@www~]#cp[-adfilprsu]來源文件(source)目標文件(destination)[root@www~]#cp[options]source1source2source3directory選項與參數(shù):-a:相當于-pdr的意思,至于pdr請參考下列說明;(常用)-d:若來源文件為鏈接文件的屬性(linkfile),則復制鏈接文件屬性而非檔案本身;-f:為強制(force)的意思,若目標檔案已經(jīng)存在且無法開啟,則移除后再嘗試一次;-i:若目標文件(destination)已經(jīng)存在時,在覆蓋時會先詢問動作的進行(常用)-l:進行硬式連結(jié)(hardlink)的連結(jié)檔建立,而非復制檔案本身;-p:連同檔案的屬性一起復制過去,而非使用默認屬性(備份常用);-r:遞歸持續(xù)復制,用于目錄的復制行為;(常用)-s:復制成為符號鏈接文件(symboliclink),亦即『快捷方式』檔案;-u:若destination比source舊才更新destination!最后需要注意的,如果來源檔有兩個以上,則最后一個目的文件一定要是『目錄』才行!復制(cp)這個指令是非常重要的,不同身份者執(zhí)行這個指令會有不同的結(jié)果產(chǎn)生,尤其是那個-a,-p的選項,對于不同身份來說,差異則非常的大!底下的練習中,有的身份為root有的身份為一般賬號(在我這里用vbird這個賬號),練習時請?zhí)貏e注意身份的差別喔!好!開始來做復制的練習與觀察:范例一:用root身份,將家目錄下的.bashrc復制到/tmp下,并更名為bashrc[root@www~]#cp~/.bashrc/tmp/bashrc[root@www~]#cp-i~/.bashrc/tmp/bashrccp:overwrite`/tmp/bashrc'?n<==n不覆蓋,y為覆蓋#重復作兩次動作,由于/tmp底下已經(jīng)存在bashrc了,加上-i選項后,#則在覆蓋前會詢問使用者是否確定!可以按下n或者y來二次確認呢!范例二:變換目錄到/tmp,并將/var/log/wtmp復制到/tmp且觀察屬性:[root@www~]#cd/tmp[root@wwwtmp]#cp/var/log/wtmp.<==想要復制到當前目錄,最后的.不要忘[root@wwwtmp]#ls-l/var/log/wtmpwtmp-rw-rw-r--1rootutmp96384Sep2411:54/var/log/wtmp-rw-r--r--1rootroot96384Sep2414:06wtmp#注意上面的特殊字體,在不加任何選項的情況下,檔案的某些屬性/權(quán)限會改變;#這是個很重要的特性!要注意喔!還有,連檔案建立的時間也不一樣了!#那如果你想要將檔案的所有特性都一起復制過來該怎辦?可以加上-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#瞭了吧!整個資料特性完全一模一樣ㄟ!真是不賴~這就是-a的特性!這個cp的功能很多,由于我們常常會進行一些數(shù)據(jù)的復制,所以也會常常用到這個指令的。一般來說,我們?nèi)绻椭苿e人的數(shù)據(jù)(當然,該檔案你必須要有read的權(quán)限才行??!^_^)時,總是希望復制到的數(shù)據(jù)最后是我們自己的,所以,在預設的條件中,cp的來源檔與目的檔的權(quán)限是不同的,目的檔的擁有者通常會是指令操作者本身。舉例來說,上面的范例二中,由于我是root的身份,因此復制過來的檔案擁有者與群組就改變成為root所有了!這樣說,可以明白嗎?^_^由于具有這個特性,因此當我們在進行備份的時候,某些需要特別注意的特殊權(quán)限檔案,例如密碼文件(/etc/shadow)以及一些配置文件,就不能直接以cp來復制,而必須要加上-a或者是-p等等可以完整復制檔案權(quán)限的選項才行!另外,如果你想要復制檔案給其他的使用者,也必須要注意到檔案的權(quán)限(包含讀、寫、執(zhí)行以及檔案擁有者等等),否則,其他人還是無法針對你給予的檔案進行修訂的動作喔!注意注意!范例三:復制/etc/這個目錄下的所有內(nèi)容到/tmp底下[root@wwwtmp]#cp/etc//tmpcp:omittingdirectory`/etc'<==如果是目錄則不能直接復制,要加上-r的選項[root@wwwtmp]#cp-r/etc//tmp#還是要再次的強調(diào)喔!-r是可以復制目錄,但是,檔案與目錄的權(quán)限可能會被改變#所以,也可以利用『cp-a/etc/tmp』來下達指令喔!尤其是在備份的情況下!范例四:將范例一復制的bashrc建立一個連結(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都會建立所謂的連結(jié)檔(linkfile),但是這兩種連結(jié)檔卻有不一樣的情況。這是怎么一回事?。磕莻€-l就是所謂的實體鏈接(hardlink),至于-s則是符號鏈接(symboliclink),簡單來說,bashrc_slink是一個『快捷方式』,這個快捷方式會連結(jié)到bashrc去!所以你會看到檔名右側(cè)會有個指向(->)的符號!至于bashrc_hlink檔案與bashrc的屬性與權(quán)限完全一模一樣,與尚未進行連結(jié)前的差異則是第二欄的link數(shù)由1變成2了!鳥哥這里先不介紹實體鏈接,因為實體鏈接涉及i-node的相關(guān)知識,我們下一章談到文件系統(tǒng)(filesystem)時再來討論這個問題。范例五:若~/.bashrc比/tmp/bashrc新才復制過來[root@wwwtmp]#cp-u~/.bashrc/tmp/bashrc#這個-u的特性,是在目標檔案與來源檔案有差異時,才會復制的。#所以,比較常被用于『備份』的工作當中喔!^_^范例六:將范例四造成的bashrc_slink復制成為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é)檔!#這個例子也是很有趣喔!原本復制的是連結(jié)檔,但是卻將連結(jié)檔的實際檔案復制過來了#也就是說,如果沒有加上任何選項時,cp復制的是源文件,而非鏈接文件的屬性!#若要復制鏈接文件的屬性,就得要使用-d的選項了!如bashrc_slink_2所示。范例七:將家目錄的.bashrc及.bash_history復制到/tmp底下[root@wwwtmp]#cp~/.bashrc~/.bash_history/tmp#可以將多個數(shù)據(jù)一次復制到同一個目錄去!最后面一定是目錄!例題:你能否使用vbird的身份,完整的復制/var/log/wtmp檔案到/tmp底下,并更名為vbird_wtmp呢?答:實際做看看的結(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的身份并不能隨意修改檔案的擁有者與群組,因此雖然能夠復制wtmp的相關(guān)權(quán)限與時間等屬性,但是與擁有者、群組相關(guān)的,原本vbird身份無法進行的動作,即使加上-a選項,也是無法達成完整復制權(quán)限的!總之,由于cp有種種的文件屬性與權(quán)限的特性,所以,在復制時,你必須要清楚的了解到:是否需要完整的保留來源檔案的信息?來源檔案是否為連結(jié)檔(symboliclinkfile)?來源檔是否為特殊的檔案,例如FIFO,socket等?來源文件是否為目錄?rm(移除檔案或目錄)[root@www~]#rm[-fir]檔案或目錄選項與參數(shù):-f:就是force的意思,忽略不存在的檔案,不會出現(xiàn)警告訊息;-i:互動模式,在刪除前會詢問使用者是否動作-r:遞歸刪除啊!最常用在目錄的刪除了!這是非常危險的選項?。?!范例一:將剛剛在cp的范例中建立的bashrc刪除掉![root@www~]#cd/tmp[root@wwwtmp]#rm-ibashrcrm:removeregularfile`bashrc'?y#如果加上-i的選項就會主動詢問喔,避免你刪除到錯誤的檔名!范例二:透過通配符*的幫忙,將/tmp底下開頭為bashrc的檔名通通刪除:[root@wwwtmp]#rm-ibashrc*#注意那個星號,代表的是0到無窮多個任意字符喔!很好用的東西!范例三:將cp范例中所建立的/tmp/etc/這個目錄刪除掉![root@wwwtmp]#rmdir/tmp/etcrmdir:etc:Directorynotempty<==刪不掉啊!因為這不是空的目錄![root@wwwtmp]#rm-r/tmp/etcrm:descendintodirectory`/tmp/etc'?y(中間省略)#因為身份是root,預設已經(jīng)加入了-i的選項,所以你要一直按y才會刪除!#如果不想要繼續(xù)按y,可以按下『[ctrl]-c』來結(jié)束rm的工作。#這是一種保護的動作,如果確定要刪除掉此目錄而不要詢問,可以這樣做:[root@wwwtmp]#\rm-r/tmp/etc#在指令前加上反斜杠,可以忽略掉alias的指定選項喔!至于alias我們在bash再談!范例四:刪除一個帶有-開頭的檔案[root@wwwtmp]#touch./-aaa-<==touch這個指令可以建立空檔案![root@wwwtmp]#ls-l-rw-r--r--1rootroot0Sep2415:03-aaa-<==檔案大小為0,所以是空檔案[root@wwwtmp]#rm-aaa-Try`rm--help'formoreinformation.<==因為"-"是選項嘛!所以系統(tǒng)誤判了![root@wwwtmp]#rm./-aaa-這是移除的指令(remove),要注意的是,通常在Linux系統(tǒng)下,為了怕檔案被誤殺,所以很多distributions都已經(jīng)默認加入-i這個選項了!而如果要連目錄下的東西都一起殺掉的話,例如子目錄里面還有子目錄時,那就要使用-r這個選項了!不過,使用『rm-r』這個指令之前,請千萬注意了,因為該目錄或檔案『肯定』會被root殺掉!因為系統(tǒng)不會再次詢問你是否要砍掉呦!所以那是個超級嚴重的指令下達呦!得特別注意!不過,如果你確定該目錄不要了,那么使用rm-r來循環(huán)殺掉是不錯的方式!另外,范例四也是很有趣的例子,我們在之前就談過,檔名最好不要使用"-"號開頭,因為"-"后面接的是選項,因此,單純的使用『rm-aaa-』系統(tǒng)的指令就會誤判啦!那如果使用后面會談到的正規(guī)表示法時,還是會出問題的!所以,只能用避過首位字符是"-"的方法啦!就是加上本目錄『./』即可!如果manrm的話,其實還有一種方法,那就是『rm---aaa-』也可以啊!mv(移動檔案與目錄,或更名)[root@www~]#mv[-fiu]sourcedestination[root@www~]#mv[options]source1source2source3directory選項與參數(shù):-f:force強制的意思,如果目標檔案已經(jīng)存在,不會詢問而直接覆蓋;-i:若目標檔案(destination)已經(jīng)存在時,就會詢問是否覆蓋!-u:若目標檔案已經(jīng)存在,且source比較新,才會更新(update)范例一:復制一檔案,建立一目錄,將檔案移動到目錄中[root@www~]#cd/tmp[root@wwwtmp]#cp~/.bashrcbashrc[root@wwwtmp]#mkdirmvtest[root@wwwtmp]#mvbashrcmvtest#將某個檔案移動到某個目錄去,就是這樣做!范例二:將剛剛的目錄名稱更名為mvtest2[root@wwwtmp]#mvmvtestmvtest2<==這樣就更名了!簡單~#其實在Linux底下還有個有趣的指令,名稱為rename,#該指令專職進行多個檔名的同時更名,并非針對單一檔名變更,與mv不同。請manrename。范例三:再建立兩個檔案,再全部移動到/tmp/mvtest2當中[root@wwwtmp]#cp~/.bashrcbashrc1[root@wwwtmp]#cp~/.bashrcbashrc2[root@wwwtmp]#mvbashrc1bashrc2mvtest2#注意到這邊,如果有多個來源檔案或目錄,則最后一個目標文件一定是『目錄!』#意思是說,將所有的數(shù)據(jù)移動到該目錄的意思!這是搬移(move)的意思!當你要移動檔案或目錄的時后,呵呵!這個指令就很重要啦!同樣的,你也可以使用-u(update)來測試新舊檔案,看看是否需要搬移啰!另外一個用途就是『變更檔名!』,我們可以很輕易的使用mv來變更一個檔案的檔名呢!不過,在Linux才有的指令當中,有個rename,可以用來更改大量檔案的檔名,你可以利用manrename來查閱一下,也是挺有趣的指令喔!取得路徑的文件名與目錄名稱我們前面介紹的完整文件名(包含目錄名稱與文件名)當中提到,完整檔名最長可以到達4096個字符。那么你怎么知道那個是檔名?那個是目錄名?嘿嘿!就是利用斜線(/)來分辨??!其實,取得文件名或者是目錄名稱,一般的用途應該是在寫程序的時候,用來判斷之用的啦~所以,這部分的指令可以用在第三篇內(nèi)的shellscripts里頭喔!底下我們簡單的以幾個范例來談一談basename與dirname的用途![root@www~]#basename/etc/sysconfig/networknetwork<==很簡單!就取得最后的檔名~[root@www~]#dirname/etc/sysconfig/network/etc/sysconfig<==取得的變成目錄名了!檔案內(nèi)容查閱:如果我們要查閱一個檔案的內(nèi)容時,該如何是好呢?這里有相當多有趣的指令可以來分享一下:最常使用的顯示檔案內(nèi)容的指令可以說是cat與more及l(fā)ess了!此外,如果我們要查看一個很大型的檔案(好幾百MB時),但是我們只需要后端的幾行字而已,那么該如何是好?呵呵!用tail呀,此外,tac這個指令也可以達到!好了,說說各個指令的用途吧!cat
由第一行開始顯示檔案內(nèi)容tac
從最后一行開始顯示,可以看出tac是cat的倒著寫!nl
顯示的時候,順道輸出行號!more一頁一頁的顯示檔案內(nèi)容less與more類似,但是比more更好的是,他可以往前翻頁!head只看頭幾行tail只看尾巴幾行od
以二進制的方式讀取檔案內(nèi)容!直接檢視檔案內(nèi)容直接查閱一個檔案的內(nèi)容可以使用cat/tac/nl這幾個指令??!cat(concatenate)[root@www~]#cat[-AbEnTv]選項與參數(shù):-A:相當于-vET的整合選項,可列出一些特殊字符而不是空白而已;-b:列出行號,僅針對非空白行做行號顯示,空白行不標行號!-E:將結(jié)尾的斷行字符$顯示出來;-n:打印出行號,連同空白行也會有行號,與-b的選項不同;-T:將[tab]按鍵以^I顯示出來;-v:列出一些看不出來的特殊字符范例一:檢閱/etc/issue這個檔案的內(nèi)容[root@www~]#cat/etc/issueCentOSrelease5.3(Final)Kernel\ronan\m范例二:承上題,如果還要加印行號呢?[root@www~]#cat-n/etc/issue1CentOSrelease5.3(Final)2Kernel\ronan\m3#看到了吧!可以印出行號呢!這對于大檔案要找某個特定的行時,有點用處!#如果不想要編排空白行的行號,可以使用『cat-b/etc/issue』,自己測試看看:范例三:將/etc/xinetd.conf的內(nè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é)果限于篇幅,鳥哥刪除掉很多數(shù)據(jù)了。另外,輸出的結(jié)果并不會有特殊字體,#鳥哥上面的特殊字體是要讓您發(fā)現(xiàn)差異點在哪里就是了?;旧希谝话愕沫h(huán)境中,#使用[tab]與空格鍵的效果差不多,都是一堆空白?。∥覀儫o法知道兩者的差別。#此時使用cat-A就能夠發(fā)現(xiàn)那些空白的地方是啥鬼東西了![tab]會以^I表示,#斷行字符則是以$表示,所以你可以發(fā)現(xiàn)每一行后面都是$??!不過斷行字符#在Windows/Linux則不太相同,Windows的斷行字符是^M$啰。#這部分我們會在第十章vim軟件的介紹時,再次的說明到喔!嘿嘿!Linux里面有『貓』指令?喔!不是的,cat是Concatenate(連續(xù))的簡寫,主要的功能是將一個檔案的內(nèi)容連續(xù)的印出在屏幕上面!例如上面的例子中,我們將/etc/issue印出來!如果加上-n或-b的話,則每一行前面還會加上行號呦!鳥哥個人是比較少用cat啦!畢竟當你的檔案內(nèi)容的行數(shù)超過40行以上,嘿嘿!根本來不及在屏幕上看到結(jié)果!所以,配合等一下要介紹的more或者是less來執(zhí)行比較好!此外,如果是一般的DOS檔案時,就需要特別留意一些奇奇怪怪的符號了,例如斷行與[tab]等,要顯示出來,就得加入-A之類的選項了!tac(反向列示)[root@www~]#tac/etc/issueKernel\ronan\mCentOSrelease5.3(Final)#嘿嘿!與剛剛上面的范例一比較,是由最后一行先顯示喔!tac這個好玩了!怎么說呢?詳細的看一下,cat與tac,有沒有發(fā)現(xiàn)呀!對啦!tac剛好是將cat反寫過來,所以他的功能就跟cat相反啦,cat是由『第一行到最后一行連續(xù)顯示在屏幕上』,而tac則是『由最后一行到第一行反向在屏幕上顯示出來』,很好玩吧!nl(添加行號打印)[root@www~]#nl[-bnw]檔案選項與參數(shù):-b:指定行號指定的方式,主要有兩種:-ba:表示不論是否為空行,也同樣列出行號(類似cat-n);-bt:如果有空行,空的那一行不要列出行號(默認值);-n:列出行號表示的方法,主要有三種:-nln:行號在屏幕的最左方顯示;-nrn:行號在自己字段的最右方顯示,且不加0;-nrz:行號在自己字段的最右方顯示,且加0;-w:行號字段的占用的位數(shù)。范例一:用nl列出/etc/issue的內(nèi)容[root@www~]#nl/etc/issue1CentOSrelease5.3(Final)2Kernel\ronan\m#注意看,這個檔案其實有三行,第三行為空白(沒有任何字符),#因為他是空白行,所以nl不會加上行號喔!如果確定要加上行號,可以這樣做:[root@www~]#nl-ba/etc/issue1CentOSrelease5.3(Final)2Kernel\ronan\m3#呵呵!行號加上來啰~那么如果要讓行號前面自動補上0呢?可這樣[root@www~]#nl-ba-nrz/etc/issue000001CentOSrelease5.3(Final)000002Kernel\ronan\m000003#嘿嘿!自動在自己字段的地方補上0了~預設字段是六位數(shù),如果想要改成3位數(shù)?[root@www~]#nl-ba-nrz-w3/etc/issue001CentOSrelease5.3(Final)002Kernel\ronan\m003#變成僅有3位數(shù)啰~nl可以將輸出的檔案內(nèi)容自動的加上行號!其預設的結(jié)果與cat-n有點不太一樣,nl可以將行號做比較多的顯示設計,包括位數(shù)與是否自動補齊0等等的功能呢??煞摍z視前面提到的nl與cat,tac等等,都是一次性的將數(shù)據(jù)一口氣顯示到屏幕上面,那有沒有可以進行一頁一頁翻動的指令???讓我們可以一頁一頁的觀察,才不會前面的數(shù)據(jù)看不到啊~呵呵!有的!那就是more與less啰~more(一頁一頁翻動)[root@www~]#more/etc/man.config##Generatedautomaticallyfromman.conf.inbythe#configurescript.##man.conffromman-1.6d(中間省略)--More--(28%)<==重點在這一行喔!你的光標也會在這里等待你的指令仔細的給他看到上面的范例,如果more后面接的檔案內(nèi)容行數(shù)大于屏幕輸出的行數(shù)時,就會出現(xiàn)類似上面的圖示。重點在最后一行,最后一行會顯示出目前顯示的百分比,而且還可以在最后一行輸入一些有用的指令喔!在more這個程序的運作過程中,你有幾個按鍵可以按的:空格鍵(space):代表向下翻一頁;Enter
:代表向下翻『一行』;/字符串
:代表在這個顯示的內(nèi)容當中,向下搜尋『字符串』這個關(guān)鍵詞;:f
:立刻顯示出文件名以及目前顯示的行數(shù);q
:代表立刻離開more,不再顯示該檔案內(nèi)容。b或[ctrl]-b:代表往回翻頁,不過這動作只對檔案有用,對管線無用。要離開more這個指令的顯示工作,可以按下q就能夠離開了。而要向下翻頁,就使用空格鍵即可。比較有用的是搜尋字符串的功能,舉例來說,我們使用『more/etc/man.config』來觀察該檔案,若想要在該檔案內(nèi)搜尋MANPATH這個字符串時,可以這樣做:[root@www~]#more/etc/man.config##Generatedautomaticallyfromman.conf.inbythe#configurescript.##man.conffromman-1.6d(中間省略)/MANPATH<==輸入了/之后,光標就會自動跑到最底下一行等待輸入!如同上面的說明,輸入了/之后,光標就會跑到最底下一行,并且等待你的輸入,你輸入了字符串并按下[enter]之后,嘿嘿!more就會開始向下搜尋該字符串啰~而重復搜尋同一個字符串,可以直接按下n即可??!最后,不想要看了,就按下q即可離開more啦!less(一頁一頁翻動)[root@www~]#less/etc/man.config##Generatedautomaticallyfromman.conf.inbythe#configurescript.##man.conffromman-1.6d(中間省略):<==這里可以等待你輸入指令!less的用法比起more又更加的有彈性,怎么說呢?在more的時候,我們并沒有辦法向前面翻,只能往后面看,但若使用了less時,呵呵!就可以使用[pageup][pagedown]等按鍵的功能來往前往后翻看文件,你瞧,是不是更容易使用來觀看一個檔案的內(nèi)容了呢!除此之外,在less里頭可以擁有更多的『搜尋』功能喔!不止可以向下搜尋,也可以向上搜尋~實在是很不錯用~基本上,可以輸入的指令有:空格鍵
:向下翻動一頁;[pagedown]:向下翻動一頁;[pageup]
:向上翻動一頁;/字符串
:向下搜尋『字符串』的功能;?字符串
:向上搜尋『字符串』的功能;n
:重復前一個搜尋(與/或?有關(guān)!)N
:反向的重復前一個搜尋(與/或?有關(guān)!)q
:離開less這個程序;查閱檔案內(nèi)容還可以進行搜尋的動作~瞧~less是否很不錯用?。∑鋵峫ess還有很多的功能喔!詳細的使用方式請使用manless查詢一下??!^_^你是否會覺得less使用的畫面與環(huán)境與manpage非常的類似呢?沒錯啦!因為man這個指令就是呼叫l(wèi)ess來顯示說明文件的內(nèi)容的!現(xiàn)在你是否覺得less很重要呢?^_^資料擷取我們可以將輸出的資料作一個最簡單的擷取,那就是取出前面(head)與取出后面(tail)文字的功能。不過,要注意的是,head與tail都是以『行』為單位來進行數(shù)據(jù)擷取的喔!head(取出前面幾行)[root@www~]#head[-nnumber]檔案選項與參數(shù):-n:后面接數(shù)字,代表顯示幾行的意思[root@www~]#head/etc/man.config#默認的情況中,顯示前面十行!若要顯示前20行,就得要這樣:[root@www~]#head-n20/etc/man.config范例:如果后面100行的數(shù)據(jù)都不打印,只打印/etc/man.config的前面幾行,該如何是好?[root@www~]#head-n-100/etc/man.confighead的英文意思就是『頭』啦,那么這個東西的用法自然就是顯示出一個檔案的前幾行啰!沒錯!就是這樣!若沒有加上-n這個選項時,默認只顯示十行,若只要一行呢?那就加入『head-n1filename』即可!另外那個-n選項后面的參數(shù)較有趣,如果接的是負數(shù),例如上面范例的-n-100時,代表列前的所有行數(shù),但不包括后面100行。舉例來說,/etc/man.config共有141行,則上述的指令『head-n-100/etc/man.config』就會列出前面41行,后面100行不會打印出來了。這樣說,比較容易懂了吧?^_^tail(取出后面幾行)[root@www~]#tail[-nnumber]檔案選項與參數(shù):-n:后面接數(shù)字,代表顯示幾行的意思-f:表示持續(xù)偵測后面所接的檔名,要等到按下[ctrl]-c才會結(jié)束tail的偵測[root@www~]#tail/etc/man.config#默認的情況中,顯示最后的十行!若要顯示最后的20行,就得要這樣:[root@www~]#tail-n20/etc/man.config范例一:如果不知道/etc/man.config有幾行,卻只想列出100行以后的數(shù)據(jù)時?[root@www~]#tail-n+100/etc/man.config范例二:持續(xù)偵測/var/log/messages的內(nèi)容[root@www~]#tail-f/var/log/messages<==要等到輸入[crtl]-c之后才會離開tail這個指令的偵測!有head自然就有tail(尾巴)啰!沒錯!這個tail的用法跟head的用法差不多類似,只是顯示的是后面幾行就是了!默認也是顯示十行,若要顯示非十行,就加-nnumber的選項即可。范例一的內(nèi)容就有趣啦!其實與head-n-xx有異曲同工之妙。當下達『tail
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨部門合作的架構(gòu)設計計劃
- 2024校企合作創(chuàng)新創(chuàng)業(yè)孵化基地建設及運營管理協(xié)議3篇
- 2024框架勞務分包合同范本
- 2024年度生日蛋糕定制與慈善機構(gòu)合作銷售合同3篇
- 建筑材料行業(yè)話務員工作總結(jié)
- 2024年藥店專業(yè)技術(shù)工種用工協(xié)議版
- 2024年物流行業(yè)運輸服務協(xié)議樣本集一
- 二零二五年員工安全責任與安全文化建設協(xié)議3篇
- 2024智能家居系統(tǒng)集成商與多家家電廠商合作協(xié)議
- 2024年預售商品房權(quán)益保證協(xié)議
- 基于CAN通訊的儲能變流器并機方案及應用分析報告-培訓課件
- 園藝療法共課件
- 布氏、韋氏、洛氏硬度換算表
- 鋼筋混凝土地下通道課程設計
- 韓流對中國文化的影響課件
- 檢驗檢測服務公司市場營銷計劃
- 醫(yī)務人員外出進修流程圖
- DB32∕T 2349-2013 楊樹一元立木材積表
- 昌樂二中271高效課堂培訓與評價ppt課件
- 豬場名詞及指標講義
- T∕CHTS 10040-2021 公路無機結(jié)合料穩(wěn)定粒料基層振動法施工技術(shù)指南
評論
0/150
提交評論