命令簡(jiǎn)介:文件和目錄管理的基本Linux命令
21世紀(jì)的***個(gè)十年就這樣過(guò)去了,在這期間Linux越來(lái)越受到廣大用戶的接受,這里將介紹文件和目錄管理的基本Linux命令,在這里拿出來(lái)和大家分享一下。本文將幫助您掌握有關(guān)文件和目錄管理的基本Linux命令。您將學(xué)習(xí):
列出目錄內(nèi)容
復(fù)制、移動(dòng)或刪除文件和目錄
重復(fù)操作多個(gè)文件和目錄
使用通配符模式操作文件
使用 find 命令,根據(jù)類型、大小或時(shí)間查找和操作文件
使用 gzip 和 bzip2 壓縮和解壓縮文件
使用 tar、cpio 和 dd 歸檔文件
本文幫助您準(zhǔn)備 Linux Professional Institute Junior Level Administration (LPIC-1) 考試 101 中主題 103 下的目標(biāo) 103.2。該目標(biāo)的權(quán)值為 4。
列出目錄
Linux 和 UNIX® 系統(tǒng)中的所有文件都可以作為一個(gè)大型樹型文件系統(tǒng)的一部分訪問(wèn),這個(gè)樹型文件系統(tǒng)的根為 /。通過(guò)掛載 分支可以將它們添加到樹中,通過(guò)解除掛載 可以移除它們。掛載和解除掛載的內(nèi)容將在掛載和解除掛載文件系統(tǒng) 一文介紹。 (參見(jiàn) 學(xué)習(xí) Linux,101:LPIC-1 路線圖)。
列出目錄條目
在本文中,我們將使用 “學(xué)習(xí) Linux,101:文本流和過(guò)濾器” 一文中創(chuàng)建的文件來(lái)練習(xí)命令。如果您完成了上篇文章的練習(xí),那么您應(yīng)該在您的主目錄中創(chuàng)建了一個(gè)目錄 lpi103-2。如果還沒(méi)有的話,那么可以使用系統(tǒng)中的另一個(gè)目錄來(lái)練習(xí)本文討論的命令。
文件和目錄名可以是絕對(duì) 的,這表示名稱以 / 開頭,也可以相對(duì) 于當(dāng)前工作目錄,這表示不是以 / 開頭。文件或目錄的絕對(duì)路徑的組成為:在 0 個(gè)或多個(gè)目錄名后附加一個(gè) /,其中每個(gè)目錄名的后面都有一個(gè) /,然后是一個(gè)最終文件名。至于相對(duì)于當(dāng)前工作目錄的文件或目錄名,只需要將工作目錄的絕對(duì)名、/ 和相對(duì)名連接在一起。例如,我們?cè)谠缙谖恼轮性谖业闹髂夸?/home/ian 中創(chuàng)建的目錄 lpi103-2,它的完整(即絕對(duì))路徑為 /home/ian/lpi103-2。您可以使用 pwd 命令顯示當(dāng)前工作目錄的名稱。此命令通常也可以用于 PWD 環(huán)境變量。清單 1 展示了 pwd 命令的使用,以及通過(guò)三種不同的方法使用 ls 命令列出此目錄中的文件。
清單 1. 列出目錄條目
- [ian@echidna lpi103-2]$ pwd
- /home/ian/lpi103-2
- [ian@echidna lpi103-2]$ echo "$PWD"
- /home/ian/lpi103-2
- [ian@echidna lpi103-2]$ ls
- sedtab text1 text2 text3 text4 text5 text6 xaa xab yaa yab
- [ian@echidna lpi103-2]$ ls "$PWD"
- sedtab text1 text2 text3 text4 text5 text6 xaa xab yaa yab
- [ian@echidna lpi103-2]$ ls /home/ian/lpi103-2
- sedtab text1 text2 text3 text4 text5 text6 xaa xab yaa yab
可以看到,您可以將一個(gè)相對(duì)或絕對(duì)目錄名作為 ls 目錄的參數(shù),它將列出該目錄中的內(nèi)容。
列出詳細(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) (.) 開頭。除根目錄外的所有目錄都至少包含兩個(gè)特殊條目:目錄本身 (.) 和父目錄 (..)。根目錄沒(méi)有父目錄。 清單 2 使用 -l 和 -a 選項(xiàng)顯示所有文件的長(zhǎng)格式的列表,包括 . 和 .. 目錄條目。
清單 2. 顯示一個(gè)長(zhǎng)目錄列表
- [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
在清單 2 中,***行顯示所列文件使用的磁盤塊的總數(shù)(52)。其余行列出了目錄的條目。
***個(gè)字段(本例中為 drwxrwxr-x 或 -rw-rw-r--)告訴我們,文件是一個(gè)目錄 (d) 還是一個(gè)普通文件 (-)。對(duì)于特殊文件,還會(huì)看到符號(hào)鏈接 (l) 或其他值(例如 /dev 文件系統(tǒng)中的文件)。您將在創(chuàng)建和修改硬鏈接和符號(hào)鏈接 一文(參見(jiàn) 學(xué)習(xí) Linux,101:LPIC-1 路線圖)中了解到有關(guān)符號(hào)鏈接的更多內(nèi)容。類型之后是針對(duì)所有者、所有者所在組的成員、每一個(gè)成員的三組特權(quán)。這三個(gè)值分別表示用戶、組、組成員是否擁有讀 (r)、寫 (w) 或 (x) 執(zhí)行權(quán)限。諸如 setuid 之類的用戶將在管理文件權(quán)限和所有權(quán)(參見(jiàn) 學(xué)習(xí) Linux,101:LPIC-1 路線圖)一文中介紹。
下一個(gè)字段是一個(gè)數(shù)字,告訴我們文件的硬鏈接 的數(shù)量。我們已經(jīng)介紹過(guò),inode 包含有關(guān)文件的信息。文件的目錄條目包含到文件的 inode 的硬鏈接(或指針),因此列出的每個(gè)條目都應(yīng)該至少擁有一個(gè)硬鏈接。目錄條目對(duì) . 條目和每個(gè)子目錄條目使用另外的硬鏈接。因此我們可以從清單 2 中可以看到,使用 .. 表示的主目錄有大量子目錄,因此包含 35 個(gè)硬鏈接。 接下來(lái)兩個(gè)字段分別為文件的所有者和所有者的主組。某些系統(tǒng),例如 Red Hat 或 Fedora 系統(tǒng),在默認(rèn)情況下為每個(gè)用戶提供單獨(dú)的組。在其他系統(tǒng)中,所有用戶可能位于一個(gè)或多個(gè)組中。
下一個(gè)字段包含文件的長(zhǎng)度,以字節(jié)為單位。
倒數(shù)第二個(gè)字段包含***一次修改的時(shí)間戳。
***一個(gè)字段包含文件或目錄的名稱。
ls 命令的 -i 選項(xiàng)將顯示 inode 號(hào)。您將在本文后面以及 創(chuàng)建和修改硬鏈接和符號(hào)鏈接(參見(jiàn) 學(xué)習(xí) Linux,101:LPIC-1 路線圖)中再次見(jiàn)到有關(guān) inode 的介紹。
多個(gè)文件
您還可以為 ls 命令指定多個(gè)參數(shù),其中的每個(gè)名稱都可能是文件或目錄的名稱。對(duì)于目錄名,ls 命令將列出目錄的內(nèi)容,而不是關(guān)于目錄本身的信息。在我們的示例中,假設(shè)當(dāng)在父目錄中列出目錄時(shí),我們希望獲得有關(guān) lpi103-2 目錄條目本身的信息。命令 ls -l ../lpi103-2 將提供類似前例的列表。清單 3 將展示如何添加 -d 選項(xiàng)以列出有關(guān)目錄條目的信息,而不是目錄的內(nèi)容,以及如何列出多個(gè)文件或目錄的條目。
清單 3. 使用 ls -d
- [ian@echidna lpi103-2]$ ls -ld ../lpi103-2 sedtab xaa
- drwxrwxr-x. 2 ian ian 4096 2009-08-12 15:31 ../lpi103-2
- -rw-rw-r--. 1 ian ian 8 2009-08-11 21:17 sedtab
- -rw-rw-r--. 1 ian ian 15 2009-08-11 14:41 xaa
注意,lpi103-2 的修改時(shí)間不同于前一個(gè)列表中的修改時(shí)間。同樣,和前一個(gè)列表相同,它與該目錄中的任何文件的時(shí)間戳都不同。這是否就是您所期望的?并不是這樣。然而,在撰寫本文時(shí),我創(chuàng)建了一些額外的的例子并刪除了它們,因此目錄時(shí)間戳反映了這一更改。稍后在 處理多個(gè)文件和目錄 中,我們將更詳細(xì)地討論文件時(shí)間。
對(duì)輸出排序
默認(rèn)情況下,ls 將按字母順序列出文件。可以使用多種選項(xiàng)對(duì)輸出進(jìn)行排序。例如,ls -t 將按照修改時(shí)間排序(從***到最舊),而 ls -lS 將生成一個(gè)按大小排序的長(zhǎng)列表(從***到最小)。添加 -r 將反向排序。例如,使用 ls -lrt 生成一個(gè)按從最舊到***排序的長(zhǎng)列表。參考手冊(cè)頁(yè)面,了解有關(guān)排列文件和目錄的其他方式。
復(fù)制、移動(dòng)和刪除文件
我們現(xiàn)在已經(jīng)了解了一些創(chuàng)建文件的方法,但是假設(shè)我們希望復(fù)制文件、重命名文件、在文件系統(tǒng)層級(jí)結(jié)構(gòu)中移動(dòng)文件,甚至刪除它們。我們使用三個(gè)簡(jiǎn)短的命令來(lái)實(shí)現(xiàn)這些目的。
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)有的具有相同名稱的文件。注意,在 DOS 和 Windows 操作系統(tǒng)中,不會(huì)做出目標(biāo)為當(dāng)前目錄的默認(rèn)假設(shè)。
mv
用于移動(dòng) 或重命名 一個(gè)或多個(gè)文件或目錄。一般來(lái)說(shuō),您使用的名稱將遵守與 cp 相同的規(guī)則;您可以重命名某個(gè)文件或?qū)⒁唤M文件移動(dòng)到一個(gè)新目錄中。由于名稱只是一個(gè)鏈接到某個(gè) inode 的目錄條目,因此 inode 號(hào)只有在文件被移動(dòng)到另一個(gè)文件系統(tǒng)才會(huì)發(fā)生更改就不足為怪了,在這種情況下,移動(dòng)文件看上去就類似于在復(fù)制文件之后刪除它。
rm
用于刪除 一個(gè)或多個(gè)文件。以上文章就是介紹有關(guān)文件和目錄管理的基本Linux命令。
【編輯推薦】

















