- 論壇徽章:
- 0
|
目標(biāo)
完成這一節(jié),你能做以下事情:
描述UNIX文件系統(tǒng)的布局
了解文件與目錄的不同之處
自如地操作一個(gè)UNIX 文件系統(tǒng)。
建立和刪除目錄
描述絕對路徑和相對路徑的不同
在可能的情況下,使用相對路徑來簡化你的輸入。
3.1 什么是文件系統(tǒng)
UNIX系統(tǒng)提供文件系統(tǒng)來管理和組織你的文件和目錄。文件通常是數(shù)據(jù)的一個(gè)容器,而目錄是文件和(或)其他目錄的容器,一個(gè)目錄包含下的另一個(gè)目錄通常被稱為子目錄,
UNIX的文件系統(tǒng)與文件柜十分相似。整個(gè)文件系統(tǒng)就象一個(gè)文件柜,文件柜包含所有的抽屜,文件夾,和報(bào)表。抽屜同子目錄一樣能夠包含報(bào)告和文件夾。一個(gè)文件夾當(dāng)它包含報(bào)表時(shí)就像一個(gè)子目錄。報(bào)表就代表一個(gè)文件,因?yàn)樗鎯?shí)際的數(shù)據(jù)。
3.2 樹型結(jié)構(gòu)
目錄結(jié)構(gòu)能夠用一個(gè)層次化的樹形結(jié)構(gòu)來表示。樹上的每一個(gè)分支可以是目錄或者文件。目錄用橢圓來表示,文件用矩形來表示,以便在圖中能夠區(qū)別它們。
3.3 文件系統(tǒng)層次
象整齊的文件柜一樣,UNIX文件系統(tǒng)層次提供了一種簡單有效的機(jī)制來組織你的文件。由于一個(gè)UNIX發(fā)布版本通常包括幾百個(gè)文件和程序,所以每個(gè)UNIX系統(tǒng)都使用一種默認(rèn)的目錄結(jié)構(gòu)。在目錄的頂端是根目錄(因?yàn)樗谝粋(gè)倒轉(zhuǎn)的樹的頂部),根目錄由一個(gè)反斜杠(/)來表示。
UNIX 系統(tǒng)同時(shí)提供了一些命令,可以讓你在你需要時(shí)很容易地創(chuàng)建新的目錄,也可以從一個(gè)目錄移動或是拷貝文件到另一個(gè)目錄。就象加入一個(gè)新的文件夾到一個(gè)文件柜的抽屜中和將新的文件夾移動一個(gè)報(bào)表到一個(gè)老的文件夾一樣容易。
UNIX系統(tǒng)中的文件可以分為兩類:靜態(tài)文件和動態(tài)文件。
靜態(tài)文件(共享的文件)主要存在于三個(gè)目錄中:/opt, /usr , /sbin
/opt:這個(gè)目錄一般用來存放應(yīng)用程序。開發(fā)人員和系統(tǒng)管理員會用它來安裝新的產(chǎn)品和本地使用的應(yīng)用程序。
/usr/bin:這個(gè)目錄包含了基礎(chǔ)的UNIX系統(tǒng)操作和文件處理的命令,所有的用戶都有權(quán)限讀取這個(gè)目錄("bin" 是 binary 的縮寫)。
/usr/sbin: 這個(gè)目錄中有所有的在幫助手冊1m章節(jié)中的命令,這些命令都是系統(tǒng)管理命令。其中的大多數(shù)命令只有超級用戶才能使用。在幫助手冊 1m中有關(guān)于這些命令的文檔。
/usr/lib:這個(gè)目錄包括應(yīng)用程序使用的文檔和共享的庫
/usr/share:這個(gè)目錄包括獨(dú)立提供的文件(其中最重要的是幫助手冊)
/usr/share/man:這個(gè)目錄包括所有的語在線幫助頁有關(guān)的所有的文件。
/uar/local/bin:這個(gè)目錄通常用來存放本地開發(fā)的程序和工具。
/usr/contrib/bin:這個(gè)目錄通常用來存放公用的程序和工具
/sbin:這個(gè)目錄包括基本的用于啟動與關(guān)閉系統(tǒng)的命令。
動態(tài)文件
動態(tài)文件(私有的文件)主要存在于七個(gè)目錄中:
/home, /etc, /stand , /tmp , /dev, /mnt , 和/var;
?/home 每一個(gè)UNIX系統(tǒng)的用戶都有他或她自己的帳號。同登錄id和口令一起,系統(tǒng)管理員會分配給你一個(gè)你自己的目錄。 而這個(gè)目錄一般都存放在 /home目錄下。用戶對自己的目錄有完全的控制權(quán),并負(fù)責(zé)對自己的目錄下面的子目錄和文件進(jìn)行組織和管理。當(dāng)你登錄進(jìn)一個(gè)系統(tǒng),你會進(jìn)入與你帳號相聯(lián)系的目錄中,這個(gè)目錄,通常被稱為HOME目錄或是登錄目錄。從這個(gè)目錄出發(fā),你可以進(jìn)入任何你有權(quán)進(jìn)入的其它目錄,至少你可以存取在你HOME目錄中的任何東西;甚至你還可移動到UNIX系統(tǒng)的其它目錄中(默認(rèn)情況如此),除非系統(tǒng)管理員限制用戶對系統(tǒng)中特殊目錄的存取。
/etc??這個(gè)目錄中有許多的系統(tǒng)配置文件,這些文件在幫助手冊第四節(jié)有說明文檔。
/stand/vmUNIX ??這個(gè)文件存儲的是UNIX系統(tǒng)內(nèi)核的文件。當(dāng)系統(tǒng)啟動時(shí),會將這個(gè)文件裝載入內(nèi)存,對通過內(nèi)核對所有的系統(tǒng)操作進(jìn)行控制。
/tmp 這個(gè)目錄通常用作操作系統(tǒng)的一個(gè)臨時(shí)空間,操作系統(tǒng)創(chuàng)建中間文件,或是應(yīng)用程序或者用戶的臨時(shí)文件通常都是放在這個(gè)目錄下面。
注意:UNIX系統(tǒng)的慣例:無論何時(shí),都可以刪除tmp目錄下的任何文件。
/dev 這個(gè)目錄下有那些可以被聯(lián)接到你系統(tǒng)中的硬件設(shè)備的文件,由于這些設(shè)備是作為一個(gè)到設(shè)備之間的聯(lián)接,數(shù)據(jù)從來不會被直接存儲到這些文件中,這些問文件通常被叫 做特殊文件或是設(shè)備文件。
/mnt ?這個(gè)用來安裝其它的設(shè)備 (例如:光驅(qū))
/var/mail 這個(gè)目錄包括每一個(gè)有郵件的用戶的信箱。
/var/news 這個(gè)目錄包括當(dāng)前的新聞信息的所有的文件。他的內(nèi)容可以通過鍵入news -a 來顯示。
/var/tmp 這個(gè)目錄通常被用于用戶的臨時(shí)空間。
3.4 目錄名稱
絕對路徑: ?????????相對于/home/user3的路徑
???/home/user3/f1???????? f1
???/home/user3/memo ???????memo
???/home/user3/memo/f1 ?????memo/f1
???????????????相對/home/user1的路徑
???/home/user1/f1 ????????f1
許多的UNIX系統(tǒng)命令的操作對象是文件和目錄。由于系統(tǒng)中的文件和目錄很多,并且有可能有同名的文件名或者目錄名。為了指明你需要對哪個(gè)文件或目錄進(jìn)行操作,需要提供一個(gè)路徑名作為這個(gè)命令的一個(gè)參數(shù)。路徑名代表遍歷一個(gè)層次結(jié)構(gòu)來找到你所需要的文件或目錄所經(jīng)歷的路由。
$ command [options] [pathname pathname.......]
為了闡明目錄名的概念,我們使用模擬的方法,用一只鉛筆從沿著UNIX系統(tǒng)的樹形結(jié)構(gòu)從一個(gè)位置畫到另一個(gè)位置。路徑名也就是鉛筆的筆跡通過的層次結(jié)構(gòu)所遇到的節(jié)點(diǎn)(即目錄)的一個(gè)列表,這個(gè)列表直到你想要到達(dá)的目錄或文件為止。
當(dāng)指明文件或目錄的路徑名時(shí),反斜杠(/)被用來分割目錄或文件名。
???Directory/directory/directory(目錄/目錄/目錄)
???Directory/file(目錄/文件)
??每當(dāng)你登錄一個(gè)UNIX系統(tǒng),你都會發(fā)現(xiàn)你存在于層次結(jié)構(gòu)的一個(gè)目錄下,你可以 通過UNIX系統(tǒng)命令來將你更換到另外的目錄中去,但無論什么時(shí)候你都是在處在一個(gè)目錄下。舉個(gè)例子:當(dāng)你登錄一個(gè)系統(tǒng),系統(tǒng)會初始化將你置于你的HOME目錄中。
??絕對路徑和相對路徑都能夠指明文件和目錄的位置
絕對路徑
給出文件或目錄的位置的完全的描述。
通常由層次結(jié)構(gòu)的頂端開始(根目錄)。
通常第一個(gè)字符是 /。
不關(guān)心你當(dāng)前在目錄結(jié)構(gòu)中所處的位置。
整個(gè)目錄結(jié)構(gòu)只有一條路線。
絕對路徑名的例子
以下的路徑名指明目錄結(jié)構(gòu)中的所有的叫做 f1 的文件的位置。請注意,有許多f1 文件,但是每一個(gè)文件的絕對路徑都是不相同的。
/tmp/f1
/home/user1/f1
/home/user2/f1
/home/user2/f1
/home/user2/f1
/home/user3/memo/f1
相對路徑
通常由目錄結(jié)構(gòu)中的當(dāng)前的位置開始
不由 "/" 開始。
相對當(dāng)前的位置只有唯一表示方法。
一般都比絕對路徑要短。
相對路徑的例子
以下的例子再次指明名為 f1 的文件的路徑,但是這些路徑的定義必須依靠用戶在目錄結(jié)構(gòu)中的當(dāng)前位置。
假設(shè)當(dāng)前的位置是 /home:
user1/f1
user2/f1
user3/f1
user3/memo/f1
假設(shè)當(dāng)前的位置是/home/user3:
f1
memo/f1
假設(shè)當(dāng)前的位置是/home/user3/memo
f1
請f1不是唯一的,但是UNIX系統(tǒng)知道應(yīng)該去找哪個(gè)文件,因?yàn)橄到y(tǒng)知道你是在/home/user1檢索/home/user1/f1,還是在/home/user3/memo的位置檢索/home/user3/memo/f1。同時(shí),你可能已經(jīng)注意到:相對路徑可能比絕對路徑要短的多,例如,如果在目錄/home/user3/mem中,你可以用一下兩個(gè)命令來打印文件f1:
絕對路徑: lp /home/user3/memo/f1
相對路徑: lp f1
這表明使用相對路徑名可以減少你大量的鍵盤操作。
注意:如果系統(tǒng)中有同名的文件存在于不同的目錄中,而你又要使用相對路徑來存取文件,這時(shí),知道你當(dāng)前的位置是非常重要的。
在 UNIX 系統(tǒng)內(nèi)部是通過絕對路徑來查找所有的目錄和文件。因?yàn)榻^對路徑名可以絕對并且唯一地確定一個(gè)文件和目錄,(由于只有一個(gè)根(/)),UNIX系統(tǒng)允許使用相對路徑僅僅是為了方便用戶的鍵入。
3.5 一些特殊的目錄
絕對路徑 ???? ??相對于/home/user3的路徑
/home ???????..
/home/user2 ????../user2
/home/user1/f1 ??../user1/f1
/ ?????????../..
/tmp/f1 ??????../../tmp/f1
/usr/bin/vi ????../../bin/vi
任何目錄在創(chuàng)建時(shí),兩個(gè)條目會自動被創(chuàng)建,它們分別是 點(diǎn)(.),和點(diǎn)點(diǎn)(..)。在使用相對路徑的時(shí)候通常會用到這兩個(gè)條目。在上一個(gè)例子中,你也許已經(jīng)注意到:相對路徑的例子僅僅只能向下穿越文件結(jié)構(gòu),但如果使用.. ,你也能夠向上穿越文件系統(tǒng)。
登錄目錄
當(dāng)一個(gè)新的用戶被加入到系統(tǒng)中,他(或她)會被分配一個(gè)登錄id,可能還有一個(gè)密碼,和一個(gè)用戶自己擁有和控制的目錄。這個(gè)目錄通常創(chuàng)建在/home目錄下,與用戶的登錄id名相同,然后這個(gè)用戶就可以在此目錄下任意創(chuàng)建自己的文件和子目錄。
當(dāng)你登錄一個(gè)系統(tǒng)時(shí),你會自動處于這個(gè)目錄中,這個(gè)目錄被稱為你的登錄目錄或者是你的HOME目錄。
點(diǎn)(.)
這個(gè)稱為點(diǎn)的條目代表你當(dāng)前所在地目錄。
點(diǎn)(.)的例子
如果你當(dāng)前正處于目錄/home/user3中:
. 代表你當(dāng)前的,目錄/home/user3
./f1 代表 /home/user3/f1
./memo/f1 代表/home/user3/memo/f1
點(diǎn)點(diǎn)(..)
這個(gè)稱為點(diǎn)點(diǎn)的條目代表當(dāng)前目錄的上一級目錄。通常被稱為父目錄。每一個(gè)目錄在自己的下面都可以有多個(gè)文件和多個(gè)子目錄。但是每一個(gè)目錄只能有一個(gè)父目錄。這樣,當(dāng)向上進(jìn)入文件系統(tǒng)的結(jié)構(gòu)時(shí)不會混淆。
根目錄(/)象其他的目錄一樣,包含有點(diǎn),和點(diǎn)點(diǎn)條目,但是由于根目錄沒有父目錄,所以它的點(diǎn)點(diǎn)代表是根目錄本身。
點(diǎn)點(diǎn)(..)的例子:
如果你當(dāng)前所在地目錄是/home
.. 代表/ 目錄
../.. 同樣代表/目錄
../tmp 代表 /tmp
../tmp/f1 代表/tmp/f1
如果你當(dāng)前的目錄是/home/user3
.. 代表 /home目錄
../.. 代表/ 目錄
../user2 代表/home/user2
../user1/f1 代表/home/user1/f1
../../tmp/f1 代表/tmp/f1
在例子的最后,你會發(fā)現(xiàn)絕對路徑比相對路徑還要短,所以有一個(gè)原則就是:如果相對路徑使你穿越 / 目錄,使用絕對路徑會比相對路徑更方便。
3.6 基本的文件系統(tǒng)命令
??目錄,就像一個(gè)文件夾,是組織你的文件的一種方式。下部分會介紹基本的目錄操作命令,這些命令可以:
顯示你當(dāng)前所處的位置的目錄名
了解當(dāng)前目錄下有什么文件和目錄。
使你進(jìn)入文件系統(tǒng)中的另一個(gè)目錄中去
創(chuàng)建一個(gè)目錄
刪除一個(gè)目錄
在這一節(jié)中,我們不會去操作一個(gè)目錄中的文件,我們只操作目錄。
3.7 pwd―Prenset working Directory (呈現(xiàn)工作中的目錄)
無論何時(shí)你登錄你的UNIX系統(tǒng),你都會被置于文件系統(tǒng)中的某個(gè)目錄下,這個(gè)目錄通常被認(rèn)為是你的工作目錄。
pwd命令會報(bào)告你當(dāng)前在UNIX文件系統(tǒng)中位置的絕對路徑名,pwd是英文“呈現(xiàn)工作目錄”的一個(gè)縮寫。
由于UNIX系統(tǒng)允許用戶在文件系統(tǒng)中任意地移動位置,所以用戶都會依靠這個(gè)命令來確定他們在系統(tǒng)中的位置。新用戶在文件系統(tǒng)中移動的時(shí)候,會頻繁地使用這個(gè)命令來了解他們的當(dāng)前的位置
3.8 ls ―列出目錄中的內(nèi)容
ls 命令的作用是列出目錄和文件的名稱
如果沒有參數(shù),ls 會列出當(dāng)前目錄下的文件和目錄名。
ls 也可以接收指定文件或目錄的相對和絕對路徑名作為參數(shù)。當(dāng)文件的路徑被提供給ls,ls 會報(bào)告指定文件的信息。當(dāng)一個(gè)目錄的路徑被提供給ls ,ls 會顯示指定目錄中的內(nèi)容。
ls 有許多選項(xiàng)。這些選項(xiàng)提供附加的信息。一個(gè)命令行可以支持多個(gè)選項(xiàng),以顯示更多更全的文件或目錄的信息。其中常用的選項(xiàng)如下:
-a ?列出所有的文件,包括以點(diǎn)(.)開頭的文件,通常,這些文件是隱藏的,除非 使用–a選項(xiàng)才會顯現(xiàn)出來,這些以點(diǎn)開始的文件通常記錄你用戶線索 和應(yīng)用的配置信息。
-d ?列出目錄的描述,而不是列出目錄的內(nèi)容。通常與-l一起使用來顯示目錄的狀態(tài)。
-l ?提供一個(gè)關(guān)于每個(gè)文件德描述屬性的長列表,包括類型,模式,鏈接數(shù),屬
主,組,大。ㄗ止(jié)),更改日期,和名稱。
-F 在每個(gè)目錄后面添加反斜杠(/),在可執(zhí)行文件后面添加星號(*)。
-R 遞歸地列出給出的目錄和所有子目錄中的文件。
例子:
$pwd
$/home/user3 絕對路徑作為一個(gè)參數(shù)
$ls –F .. 相對路徑作為一個(gè)參數(shù)
user1/user2/user3/
$ls –F ../user1 相對路徑作為一個(gè)參數(shù)
f1
$ls –l memo 一個(gè)目錄的相對路徑作為一個(gè)參數(shù)
-rw-rw-rw 1 user3 class 27 Jan 24 06:11 f1
-rw-rw-rw 1 user3 class 37 Jan 23 19:03 f2
$ls –ld memo 顯示目錄memo的信息
drwxr-xr-x 2 user3 class 1024 Jan 20 10:23 memo
$ls –l f1 f2 多個(gè)參數(shù),文件的相對路徑
-rw-rw-rw 1 user3 class 27 Jan 24 06:11 f1
-rw-rw-rw 1 user3 class 37 Jan 37 19:03 f2
$ls –R 子目錄的遞歸列表
./memo:
f1 f2
$ls user2
user2 not found 當(dāng)前目錄中不存在user2
3.9 cd ―Change Directory(改變目錄)
??目錄的樹形結(jié)構(gòu)可以看成一個(gè)顯示你系統(tǒng)中的所有的目錄和文件的位置的一個(gè)道路交通圖。你通常在一個(gè)目錄中, cd 命令讓你改變目錄,并且移動到層次結(jié)構(gòu)中的其他位置。
語法:
cd path_name
其中,路徑名是你想要去的目錄相對或絕對的路徑名。當(dāng)執(zhí)行cd命令不帶參數(shù)時(shí),你會回到你的HOME目錄,所以,如果你在目錄中迷路,簡單地鍵入cd 會讓你回到HOME目錄。
注釋:當(dāng)使用cd命令在文件系統(tǒng)中移動時(shí),切記要經(jīng)常使用pwd命令來確認(rèn)你所處的位置
POSIX Shell 中的 cd命令
POSIX shell 記錄有你上一次進(jìn)入的目錄的位置,cd 命令同樣有改變目錄到你期望的目錄的功能。但它還有一些附加的特征可以減少你的鍵入。
cd 命令有一個(gè)你先前進(jìn)入的目錄的儲存器,(存儲在環(huán)境變量OLDPWD中),這個(gè)目錄可以通過 cd – 來存取。
$pwd
/home/user3/tree
$cd /tmp
$ pwd
/tmp
$cd – 讓你進(jìn)入到先前進(jìn)入的目錄
$pwd
/home/user3/tree
3.10 find 命令
find命令是在唯一個(gè)在文件系統(tǒng)中進(jìn)行查找的命令。這個(gè)命令執(zhí)行非常慢,并且會耗費(fèi)許多CPU資源。因此建議不要經(jīng)常使用。
路徑列表是一個(gè)路徑名的列表,典型的情況是一個(gè)目錄的情況。通常是點(diǎn)文件。在查找一個(gè)文件時(shí)會被遞歸地搜尋路徑名,查找符合表達(dá)式定義的文件。一個(gè)最普通的查找任務(wù)就是顯示出匹配的路徑名。
表達(dá)式由關(guān)鍵字和參數(shù)組成,參數(shù)能指明查找標(biāo)準(zhǔn)和查找一個(gè)匹配的任務(wù),一件使查找操作更復(fù)雜的事情是表達(dá)式中使用的關(guān)鍵字都以-開頭,這樣看上去參數(shù)在選項(xiàng)之前似的
3.11 mkdir 和 rmddir 創(chuàng)建和刪除目錄
mkdir 命令可以創(chuàng)建目錄,這些目錄能被用來幫助組織我們的文件。每當(dāng)一個(gè)目錄被創(chuàng)建,兩個(gè)子目錄會被自動地創(chuàng)建,它們是代表當(dāng)前目錄的點(diǎn)(.),和代表父母目錄的點(diǎn)點(diǎn)(..),請注意,創(chuàng)建目錄不會改變你當(dāng)前在文件系統(tǒng)中的位置。
在默認(rèn)的情況下,創(chuàng)建目錄時(shí)指明的相對或絕對路徑中的所有的中間目錄都必須是已存在的目錄,但另外一種情況,你可以使用一下的選項(xiàng):
-p 如果中間目錄不存在,將會創(chuàng)建這些目錄
-m mode (模式) 在創(chuàng)建了指定的目錄后,目錄被設(shè)置成默認(rèn)的權(quán)限。
以下的命令創(chuàng)建fruit 目錄 ,假設(shè)這個(gè)目錄并不存在。
$mkdir –p fruit/apple fruit/grape fruit/orange
rmdir命令可以刪除一個(gè)目錄,被刪除的目錄必須是空的(也就是除了點(diǎn)和點(diǎn)點(diǎn)外沒有其他的東西),同時(shí),你不能刪除在你當(dāng)前目錄和根目錄之間的目錄。
兩個(gè)命令都可以有多個(gè)參數(shù),mkdir的參數(shù)代表的是新的目錄名,rmdir 的參數(shù)必須是已經(jīng)存在的目錄名。
3.12 復(fù)習(xí)
使用上圖來復(fù)習(xí)cd 和 pwd 命令的用法,和絕對路徑和相對路徑的用法
在上圖中,如果你從目錄user3開始,每一個(gè)cd 命令的結(jié)果會使你處于上什么位置?
$pwd ???/home/user3
$cd ..
$pwd ???........................
$cd usr
$pwd???..........................
$cd /usr
$pwd???............................
$cd ../tmp
$pwd???.............................
$cd .
$pwd???..............................
3.13 文件系統(tǒng)―總結(jié)
文件 ??? ?一個(gè)數(shù)據(jù)的容器
目錄 ??? ?文件和其他目錄的容器
樹形結(jié)構(gòu) ? ?UNIX系統(tǒng)的一種層次化的結(jié)構(gòu)
路徑名 ?? ?文件和目錄在層次結(jié)構(gòu)中的位置的一種確認(rèn)標(biāo)識。
HOME? ?? ?代表你登錄目錄的路徑名
pwd ? 顯示你當(dāng)前在系統(tǒng)中的位置
cd 更改你當(dāng)前的位置到其他的目錄中去
ls 列出目錄中的內(nèi)容
find 查找指定的文件
mkdir 創(chuàng)建目錄
rmdir 刪除目錄 |
|