linux的基本操作(下)
2024-07-21 02:37:24
供稿:網(wǎng)友
3、文件系統(tǒng)與目錄樹(shù)
在dos-windows體系中,每個(gè)磁盤(pán)或硬盤(pán)分區(qū)有獨(dú)立的根目錄,并且用唯一的驅(qū)動(dòng)器標(biāo)識(shí)符表示,如A:,C:等。
而linux的文件系統(tǒng)則不一樣,它采用了一種虛擬文件系統(tǒng)技術(shù),使不同的磁盤(pán)和分區(qū)組合成一個(gè)整體。單個(gè)磁盤(pán)或硬盤(pán)分區(qū)構(gòu)成單獨(dú)的文件系統(tǒng)(可以是fat、NTFS等等格式的),有其各自的目錄樹(shù)結(jié)構(gòu)。但是,在操作系統(tǒng)能夠使用這些文件系統(tǒng)之前,必須通過(guò)稱(chēng)為“掛裝”的操作將單獨(dú)的文件系統(tǒng)附加到虛擬文件系統(tǒng)的某一個(gè)子目錄上——也就是說(shuō)這個(gè)子目錄就是實(shí)際文件系統(tǒng)的根,通過(guò)訪問(wèn)這個(gè)子目錄來(lái)訪問(wèn)該分區(qū)或磁盤(pán)。如此操作,最終可使所有的文件系統(tǒng)結(jié)合成一個(gè)無(wú)縫的統(tǒng)一整體,組織到一個(gè)大的樹(shù)型目錄結(jié)構(gòu)中。該目錄樹(shù)的頂部是一個(gè)單獨(dú)的根目錄,名為root,用/表示。根目錄下是一些標(biāo)準(zhǔn)的子目錄和文件。
在文件系統(tǒng)模型中,仍然體現(xiàn)了linux的設(shè)計(jì)哲學(xué),即將不同的文件系統(tǒng)組合成一個(gè)有機(jī)的整體,進(jìn)而為用戶提供一致的文件系統(tǒng)結(jié)構(gòu)。
對(duì)大多數(shù)Linux發(fā)行版本而言,文件系統(tǒng)的目錄樹(shù)布局遵循FSSTND標(biāo)準(zhǔn),這有利于編寫(xiě)或移植軟件,同時(shí)也有利于進(jìn)行系統(tǒng)治理和維護(hù)。
完整的目錄樹(shù)可劃分為小的部分,這些小部分又可以單獨(dú)的存放在自己的磁盤(pán)或者分區(qū)上。這樣相對(duì)穩(wěn)定的部分和經(jīng)常變化的部分可以單獨(dú)放在不同的分區(qū)里,從而方便了備份和系統(tǒng)治理。目錄樹(shù)的主要部分有root(/)、/usr、/var、/home等等。下面是一個(gè)典型的linux目錄結(jié)構(gòu)如下:
/ 根目錄
/bin 存放必要的命令
/boot 存放內(nèi)核以及啟動(dòng)所需的文件等
/dev 存放設(shè)備文件
/etc 存放系統(tǒng)的配置文件
/home 用戶文件的主目錄,用戶數(shù)據(jù)存放在其主目錄中
/lib 存放必要的運(yùn)行庫(kù)
/mnt 存放臨時(shí)的映射文件系統(tǒng),我們常把軟驅(qū)和光驅(qū)掛裝在這里的floppy和cdrom子目錄下。
/PRoc 存放存儲(chǔ)進(jìn)程和系統(tǒng)信息
/root 超級(jí)用戶的主目錄
/sbin 存放系統(tǒng)治理程序
/tmp 存放臨時(shí)文件的目錄
/usr 包含了一般不需要修改的應(yīng)用程序,命令程序文件、程序庫(kù)、手冊(cè)和其它文檔。
/var 包含系統(tǒng)產(chǎn)生的經(jīng)常變化的文件,例如打印機(jī)、郵件、新聞等假脫機(jī)目錄、日志文件、格式化后的手冊(cè)頁(yè)以及一些應(yīng)用程序的數(shù)據(jù)文件等等。建議單獨(dú)的放在一個(gè)分區(qū)。
典型的/usr目錄如下:
/X11R6 存放X window系統(tǒng)
/bin 存放增加的用戶程序
/dict 存放字典
/doc 存放追加的文檔
/etc 存放設(shè)置文件
/games 存放游戲和教學(xué)文件
/include 存放C開(kāi)發(fā)工具的頭文件
/info 存放GNU信息文件
/lib 存放庫(kù)文件
/local 存放本地產(chǎn)生的增加的應(yīng)用程序
/man 存放在線幫助文件
/sbin 存放增加的治理程序
/share 存放結(jié)構(gòu)獨(dú)立的數(shù)據(jù)
/src 存放程序的源代碼
由于/usr中的文件不和特定的計(jì)算機(jī)相關(guān),也不會(huì)在通常使用中修改,因此可以通過(guò)網(wǎng)絡(luò)共享這個(gè)目錄(文件系統(tǒng)),這樣,當(dāng)治理員安裝了新的軟件之后,所有共享這一文件系統(tǒng)的計(jì)算機(jī)均可以使用新的軟件。
4、目錄操作和文件操作
在介紹文件的操作之前,我們先了解一下文件的類(lèi)型。目錄樹(shù)包括以下文件類(lèi)型:
a、普通文件:包括文檔文件、數(shù)據(jù)文件、程序、shell腳本等我們常接觸到的文件。
b、目錄文件:目錄文件包含著一個(gè)該目錄下的文件和本身以及上一級(jí)的鏈表。這是由操作系統(tǒng)維護(hù)的文件。它至少包括兩個(gè)記錄,一個(gè)是它自身(“.”),一個(gè)是它的上一級(jí)目錄(“..”)。注重,根目錄的上一級(jí)目錄還是它自身。
c、設(shè)備文件:和所有UNIX一樣,linux把所有設(shè)備都作為一個(gè)文件來(lái)處理,包括IO設(shè)備。
d、進(jìn)程通信文件:即所謂的先進(jìn)先出文件,主要是為進(jìn)程間通信用的。
我們一般登入系統(tǒng)后,當(dāng)前的工作目錄都是自己的主目錄,想看看主目錄里有什么東東?你可以使用ls命令試試。
輸出就如同dir /w一樣^_^。要查看隱含文件使用命令行:
ls -a
可以看見(jiàn)多了不少以點(diǎn)(“.”)開(kāi)頭的隱藏文件。假如還想進(jìn)一步查看文件的具體信息,那就查看長(zhǎng)格式的輸出吧,使用
ls -l
當(dāng)然,我們完全可以組合使用多參數(shù),有兩種方法:
ls -a -l 或者 ls -al
都可以得到該目錄下所有文件的具體列表,比dos下dir的輸出還具體——只不過(guò)文件的名卻在右邊。假如文件太多,一屏顯示不下怎么辦呢?ls命令并沒(méi)有提供dir的/p開(kāi)關(guān)的功能,不過(guò)按照UNIX系統(tǒng)設(shè)計(jì)的積木原則,我們可以用命令的組合獲得我們需要的任何功能。象這次我們可以使用輸出重定向,使用通道,對(duì)于下面這個(gè)命令,你應(yīng)該不會(huì)覺(jué)得別扭吧?
la -l more
這和dos下的管道一模一樣嘛:),還不只這個(gè),連改變當(dāng)前目錄的cd命令,也是和dos中的用法一樣,看來(lái)dos還是沒(méi)有完全拋棄UNIX的影響。
cd命令的用法和dos中相似,不同的是cd和后邊的目錄(包括代表上一級(jí)目錄的..)之間必須有空格隔開(kāi)。多出幾次錯(cuò)誤信息你就會(huì)記得這一點(diǎn)了,呵呵。記住:
cd.. ------wrong
cd .. or cd / ------right
查看當(dāng)前的路徑的命令是pwd,如前所說(shuō)的,它是bash的內(nèi)部命令,cd也是。它存在價(jià)值在于你不用時(shí)刻面對(duì)著一個(gè)可能非常長(zhǎng)的路徑,當(dāng)然你覺(jué)得有必要,也可以通過(guò)對(duì)bash的適當(dāng)配置使得它的提示符類(lèi)似于dos模式。
建立和刪除的目錄命令也很輕易從字面上理解,建立目錄使用mkdir,刪除空目錄用rmdir。注重,你建立目錄、刪除目錄的操作,都需要相應(yīng)的權(quán)限。
要想做到dos下的deltree的功能,需要使用文件的刪除命令rm的遞歸刪除參數(shù)-r或-R。這個(gè)命令的基本格式是
rm [-option] filename
例如要?jiǎng)h除/tmp/newtemp所有文件和子目錄,可以使用如下命令:
rm -r /tmp/newtemp
這樣的話,系統(tǒng)會(huì)一個(gè)一個(gè)文件問(wèn)你是否需要?jiǎng)h除,假如你可以確信這個(gè)目錄下的所有東西都沒(méi)有保留的價(jià)值的話,你可以加上一個(gè)-f的參數(shù),表示強(qiáng)制刪除,不再詢問(wèn),如:
rm -rf /tmp/newtemp (還記得我們使用多個(gè)參數(shù)的兩種方法么?)
注重,在linux中沒(méi)有類(lèi)似undelete的命令,不要隨意使用帶-f、-r、-R參數(shù)的rm命令哦:)
文件的拷貝使用cp命令,使用的格式如下:
cp [-option] soursefile targetfile
注重,和dos中的copy不同的是:
soursefile和targetfile不能相同;
cp需要使用遞歸選項(xiàng)-r來(lái)完成帶文件的目錄的拷貝;
cp可以使用-u開(kāi)關(guān)來(lái)保留文檔的最新版本。當(dāng)使用-u選項(xiàng)時(shí),假如目標(biāo)文件存在且最后修改時(shí)間比源文件晚,則不覆蓋。
我們常用的還有重命名操作命令,或者說(shuō)移動(dòng)文件命令,mv,格式如下:
mv [-option] source target
mv有個(gè)非常有用的選項(xiàng) -b,表示給被覆蓋的文件產(chǎn)生一個(gè)備份。
cat命令用于把所給的文件以所給順序在標(biāo)準(zhǔn)輸出上輸出。格式如下:
cat [-ption] [file]
假如沒(méi)有設(shè)置參數(shù)file,則把從標(biāo)準(zhǔn)輸入中讀入的文件從標(biāo)準(zhǔn)輸出上輸出。假如file以一個(gè)減號(hào)來(lái)代替,則cat仍然從標(biāo)準(zhǔn)輸入上讀入數(shù)據(jù)。例如:
cat - file1 - >file2
這個(gè)命令表示先從標(biāo)準(zhǔn)輸入讀入數(shù)據(jù),直到輸入結(jié)束字符Ctrl+d,接下來(lái)從文件file1中輸入,接著又從鍵盤(pán)輸入直到輸入結(jié)束字符,把這些結(jié)構(gòu)都輸出到file2文件中。實(shí)際上做了個(gè)在file1前后均加了一段文字然后存成了file2文件的操作。
用這個(gè)命令還可以把多個(gè)文件連接在一起。例如:
cat *.txt > outall.txt
表示把所有的txt后綴的文件按照字母順序連接起來(lái),然后再寫(xiě)到outall.txt文件里。
假如[file]選項(xiàng)是二進(jìn)制文件,而又不是把它輸出到一個(gè)文件而是標(biāo)準(zhǔn)輸出的話,由于終端可能要對(duì)不可打印字符進(jìn)行處理,可能會(huì)出現(xiàn)亂碼??梢允褂?v選項(xiàng)來(lái)解決這個(gè)問(wèn)題。這個(gè)選項(xiàng)把不可打印字符(從ASCII碼的000到037的字符)用^和ASCII碼從100到137的字符組合來(lái)表示。
還有三個(gè)用來(lái)顯示文件的命令,它們分別是head、tail、more。
head [-option] [file] 是用來(lái)顯示文件的前面一部分的。可以使用-num選項(xiàng)來(lái)顯示前num行,也可以使用選項(xiàng)-c num使head輸出前num個(gè)字節(jié)。其它的使用和cat相似。
tail [-option] [file] 是和head對(duì)應(yīng)的顯示文件后一部分的命令。選項(xiàng)和head命令一樣。
more命令就是前面我們?cè)?jīng)借助它進(jìn)行分頁(yè)顯示的命令,它也可以直接用來(lái)分頁(yè)顯示文本文檔。命令格式和前面幾個(gè)命令一樣。在顯示完一頁(yè)后,more會(huì)提示用戶輸入:假如輸入空格鍵或是f,則顯示下一頁(yè);假如輸出n加空格鍵,則用來(lái)顯示后面的n 行;回車(chē)鍵用來(lái)顯示下一行。
這幾個(gè)命令都是網(wǎng)絡(luò)治理比較常用的查看日志文件的工具,可以用man命令獲得它們更具體的幫助。
還有幾個(gè)顯示二進(jìn)制文件的命令,例如od、mn和strings,你也可以通過(guò)man獲得幫助。