絕對(duì)路徑和相對(duì)路徑
文件和目錄名可以是絕對(duì)的,這表示名稱以 /
開(kāi)頭。
也可以相對(duì)于當(dāng)前工作目錄,這表示不是以 /
開(kāi)頭。
文件或目錄的絕對(duì)路徑的組成為:
在 0 個(gè)或多個(gè)目錄名后附加一個(gè) /,其中每個(gè)目錄名的后面都有一個(gè) /,然后是一個(gè)最終文件名。
列出詳細(xì)內(nèi)容
在一臺(tái)存儲(chǔ)設(shè)備中,文件或目錄被包含到一個(gè)塊(block)組合中。有關(guān)文件的信息被包含在一個(gè)索引節(jié)點(diǎn)(inode)中,其中記錄如下信息:所有者、最后一次訪問(wèn)文件的時(shí)間、文件大小、是否為目錄以及誰(shuí)可以讀取或?qū)懭霐?shù)據(jù)。inode 編號(hào)也被稱為文件序列號(hào)(file serial number),并且在一個(gè)特定文件系統(tǒng)中是唯一的。我們可以使用-l
(或--format=long
)選項(xiàng)來(lái)顯示存儲(chǔ)在 inode 中的某些信息。
默認(rèn)情況下,ls 命令不會(huì)列出特殊文件,這些文件的文件名以點(diǎn)號(hào) (.) 開(kāi)頭。除根目錄外的所有目錄都至少包含兩個(gè)特殊條目:目錄本身 (.) 和父目錄 (..)。根目錄沒(méi)有父目錄。
[ian@echidna lpi103-2]$ ls -al
total 52
drwxrwxr-x. 2 ian ian 4096 2009-08-11 21:21 .
drwx------. 35 ian ian 4096 2009-08-12 10:55 ..
-rw-rw-r--. 1 ian ian 8 2009-08-11 21:17 sedtab
-rw-rw-r--. 1 ian ian 24 2009-08-11 14:02 text1
-rw-rw-r--. 1 ian ian 25 2009-08-11 14:27 text2
-rw-rw-r--. 1 ian ian 63 2009-08-11 15:41 text3
-rw-rw-r--. 1 ian ian 26 2009-08-11 15:42 text4
-rw-rw-r--. 1 ian ian 24 2009-08-11 18:47 text5
-rw-rw-r--. 1 ian ian 98 2009-08-11 21:21 text6
-rw-rw-r--. 1 ian ian 15 2009-08-11 14:41 xaa
-rw-rw-r--. 1 ian ian 9 2009-08-11 14:41 xab
-rw-rw-r--. 1 ian ian 17 2009-08-11 14:41 yaa
-rw-rw-r--. 1 ian ian 8 2009-08-11 14:41 yab
第一個(gè)字段(本例中為 drwxrwxr-x 或 -rw-rw-r--)告訴我們,文件是一個(gè)目錄 (d) 還是一個(gè)普通文件 (-)。類型之后是針對(duì)所有者、所有者所在組的成員、每一個(gè)成員的三組特權(quán)。這三個(gè)值分別表示用戶、組、組成員是否擁有讀 (r)、寫 (w) 或 (x) 執(zhí)行權(quán)限。
下一個(gè)字段是一個(gè)數(shù)字,告訴我們文件的硬鏈接的數(shù)量。inode 包含有關(guān)文件的信息。文件的目錄條目包含到文件的 inode 的硬鏈接(或指針),因此列出的每個(gè)條目都應(yīng)該至少擁有一個(gè)硬鏈接。目錄條目對(duì) . 條目和每個(gè)子目錄條目使用另外的硬鏈接。使用 .. 表示的主目錄有大量子目錄,因此包含 35 個(gè)硬鏈接。
接下來(lái)兩個(gè)字段分別為文件的所有者和所有者的主組。
下一個(gè)字段包含文件的長(zhǎng)度,以字節(jié)為單位。可以通過(guò)增加
h
選項(xiàng)使得輸出的文件大小帶有單位。倒數(shù)第二個(gè)字段包含最后一次修改的時(shí)間戳。
最后一個(gè)字段包含文件或目錄的名稱。
ls -i
命令可以顯示 inode 號(hào)。
ls -t
將按照修改時(shí)間排序(從最新到最舊)
ls -lS
將生成一個(gè)按大小排序的長(zhǎng)列表(從最大到最小)。添加-r
將反向排序。
復(fù)制、移動(dòng)和刪除文件
- cp 用于復(fù)制一個(gè)或多個(gè)文件或目錄。您必須提供一個(gè)(或多個(gè))源名和一個(gè)目標(biāo)名。源名或目標(biāo)名可能包含一個(gè)路徑。
說(shuō)明:
- 如果目標(biāo)是一個(gè)現(xiàn)有目錄,那么所有源將被復(fù)制到目標(biāo)中。
- 如果目錄是一個(gè)不存在的目錄,那么(單一)源也必須為一個(gè)目錄,并且源目錄的副本及其內(nèi)容使用目標(biāo)名作為新名稱。
- 如果目標(biāo)是一個(gè)文件,那么(單一)源必須也為文件,而源文件的副本使用目標(biāo)名作為新名,替換任何現(xiàn)有的具有相同名稱的文件。
mv
用于移動(dòng)或重命名一個(gè)或多個(gè)文件或目錄。通常使用的名稱遵循使用cp 執(zhí)行復(fù)制的相同規(guī)則;可以重命名一個(gè)文件或?qū)⒁唤M文件移動(dòng)到一個(gè)新目錄中。因?yàn)槊Q只是一個(gè)鏈接到 inode 的目錄條目,對(duì) inode 數(shù)量沒(méi)有改變不應(yīng)感到奇怪,除非該文件移動(dòng)到另一個(gè)文件系統(tǒng)中,在這種情況下,移動(dòng)它的行為更像在復(fù)制之后刪除原始文件。rm 用于刪除一個(gè)或多個(gè)文件。
下面是關(guān)于文件inode的一個(gè)實(shí)例:
ian@Z61t-u14:~/lpi103-2$ cp text1 text1.bkp
ian@Z61t-u14:~/lpi103-2$ mkdir backup
ian@Z61t-u14:~/lpi103-2$ cp text1 backup/text1.bkp.2
ian@Z61t-u14:~/lpi103-2$ ls -i text1 text1.bkp backup
787425 text1 787445 text1.bkp
backup:
787447 text1.bkp.2
ian@Z61t-u14:~/lpi103-2$
mv text1.bkp backup
ian@Z61t-u14:~/lpi103-2$
mv backup/text1.bkp backup/text1.bkp.1
ian@Z61t-u14:~/lpi103-2$
ls -i text1 text1.bkp backup
ls: cannot access text1.bkp: No such file or directory
787425 text1
backup:
787445 text1.bkp.1 787447 text1.bkp.2
通常,cp 命令會(huì)復(fù)制一個(gè)文件來(lái)覆蓋現(xiàn)有副本,只要現(xiàn)有文件是可寫的。另一方面,如果目標(biāo)存在,mv 就不會(huì)移動(dòng)或重命名文件。
有一些與 cp 和mv 的這一行為相關(guān)的有用選項(xiàng)。
**-f 或--force **
導(dǎo)致cp 嘗試刪除現(xiàn)有目標(biāo)文件,即使該文件是不可寫的。
**-i 或--interactive **
要求在嘗試替換現(xiàn)有文件之前進(jìn)行確認(rèn)。
**-b 或--backup **
對(duì)任何要替換的文件進(jìn)行備份。
ian@Z61t-u14:~/lpi103-2$ cp text2 backup
ian@Z61t-u14:~/lpi103-2$ cp --backup=t text2 backup
ian@Z61t-u14:~/lpi103-2$ ls backup
text1.bkp.1 text1.bkp.2 text2 text2.~1~
ian@Z61t-u14:~/lpi103-2$
rm backup/text2 backup/text2.~1~
ian@Z61t-u14:~/lpi103-2$ ls backup
text1.bkp.1 text1.bkp.2
cp 命令默認(rèn)情況下為新文件創(chuàng)建了一個(gè)新時(shí)間戳。所有者和組也被設(shè)置為執(zhí)行復(fù)制的用戶的所有者和組。可以使用-p 選項(xiàng)保留選定的屬性。請(qǐng)注意,根用戶可能是唯一可以保留所有權(quán)的用戶。
創(chuàng)建和刪除目錄
- Mkdir 創(chuàng)建目錄
如果您想創(chuàng)建嵌套的子目錄,比如 d1/d2/d3,可能會(huì)失敗,因?yàn)?d1 和 d2 目錄不存在, 這個(gè)時(shí)候可以使用-p
選項(xiàng)來(lái)創(chuàng)建。