此時此刻,我們已經(jīng)準備好了做些真正的工作!這一章節(jié)將會介紹以下命令:
cp — 復制文件和目錄
mv — 移動/重命名文件和目錄
mkdir — 創(chuàng)建目錄
rm — 刪除文件和目錄
這五個命令屬于最常使用的 Linux 命令之列。它們用來操作文件和目錄。
現(xiàn)在,坦誠地說,用圖形文件管理器來完成一些由這些命令執(zhí)行的任務會更容易些。使用文件管理器, 我們可以把文件從一個目錄拖放到另一個目錄,剪貼和粘貼文件,刪除文件等等。那么, 為什么還使用早期的命令行程序呢?
答案是命令行程序,功能強大靈活。雖然圖形文件管理器能輕松地實現(xiàn)簡單的文件操作,但是對于 復雜的文件操作任務,則使用命令行程序比較容易完成。例如,怎樣復制一個目錄下的 HTML 文件 到另一個目錄,但這些 HTML 文件不存在于目標目錄,或者是文件版本新于目標目錄里的文件? 要完成這個任務,使用文件管理器相當難,使用命令行相當容易:
cp -u *.html destination
在開始使用命令之前,我們需要介紹一個使命令行如此強大的 shell 特性。因為 shell 頻繁地使用 文件名,shell 提供了特殊字符來幫助你快速指定一組文件名。這些特殊字符叫做通配符。 使用通配符(也以文件名代換著稱)允許你依據(jù)字符類型來選擇文件名。下表列出這些通配符 以及它們所選擇的對象:
| 通配符 | 意義 |
|---|---|
| * | 匹配任意多個字符(包括零個或一個) |
| ? | 匹配任意一個字符(不包括零個) |
| [characters] | 匹配任意一個屬于字符集中的字符 |
| [!characters] | 匹配任意一個不是字符集中的字符 |
| [[:class:]] | 匹配任意一個屬于指定字符類中的字符 |
表5-2列出了最常使用的字符類:
| 字符類 | 意義 |
|---|---|
| [:alnum:] | 匹配任意一個字母或數(shù)字 |
| [:alpha:] | 匹配任意一個字母 |
| [:digit:] | 匹配任意一個數(shù)字 |
| [:lower:] | 匹配任意一個小寫字母 |
| [:upper] | 匹配任意一個大寫字母 |
借助通配符,為文件名構(gòu)建非常復雜的選擇標準成為可能。下面是一些類型匹配的范例:
| 模式 | 匹配對象 |
|---|---|
| * | 所有文件 |
| g* | 文件名以“g”開頭的文件 |
| b*.txt | 以"b"開頭,中間有零個或任意多個字符,并以".txt"結(jié)尾的文件 |
| Data??? | 以“Data”開頭,其后緊接著3個字符的文件 |
| [abc]* | 文件名以"a","b",或"c"開頭的文件 |
| BACKUP.[0-9][0-9][0-9] | 以"BACKUP."開頭,并緊接著3個數(shù)字的文件 |
| [[:upper:]]* | 以大寫字母開頭的文件 |
| [![:digit:]]* | 不以數(shù)字開頭的文件 |
| *[[:lower:]123] | 文件名以小寫字母結(jié)尾,或以 “1”,“2”,或 “3” 結(jié)尾的文件 |
接受文件名作為參數(shù)的任何命令,都可以使用通配符,我們會在第八章更深入的談到這個知識點。
字符范圍
如果你用過別的類 Unix 系統(tǒng)的操作環(huán)境,或者是讀過這方面的書籍,你可能遇到過[A-Z]或 [a-z]形式的字符范圍表示法。這些都是傳統(tǒng)的 Unix 表示法,并且在早期的 Linux 版本中仍有效。 雖然它們?nèi)匀黄鹱饔茫悄惚仨毿⌒牡厥褂盟鼈?,因為它們不會產(chǎn)生你期望的輸出結(jié)果,除非 你合理地配置它們。從現(xiàn)在開始,你應該避免使用它們,并且用字符類來代替它們。
通配符在 GUI 中也有效
通配符非常重要,不僅因為它們經(jīng)常用在命令行中,而且一些圖形文件管理器也支持它們。
在 Nautilus (GNOME 文件管理器)中,可以通過 Edit/Select 模式菜單項來選擇文件。 輸入一個用通配符表示的文件選擇模式后,那么當前所瀏覽的目錄中,所匹配的文件名就會高亮顯示。
- 在 Dolphin 和 Konqueror(KDE 文件管理器)中,可以在地址欄中直接輸入通配符。例如, 如果你想查看目錄 /usr/bin 中,所有以小寫字母 'u' 開頭的文件, 在地址欄中敲入 '/usr/bin/u*',則 文件管理器會顯示匹配的結(jié)果。
最初源于命令行界面中的想法,在圖形界面中也適用。這就是使 Linux 桌面系統(tǒng) 如此強大的眾多原因中的一個
mkdir 命令是用來創(chuàng)建目錄的。它這樣工作:
mkdir directory...
注意表示法: 在描述一個命令時(如上所示),當有三個圓點跟在一個命令的參數(shù)后面, 這意味著那個參數(shù)可以重復,就像這樣:
mkdir dir1
會創(chuàng)建一個名為"dir1"的目錄,而
mkdir dir1 dir2 dir3
會創(chuàng)建三個目錄,名為 dir1, dir2, dir3。
cp 命令,復制文件或者目錄。它有兩種使用方法:
cp item1 item2
復制單個文件或目錄"item1"到文件或目錄"item2",和:
cp item... directory
復制多個項目(文件或目錄)到一個目錄下。
這里列舉了 cp 命令一些有用的選項(短選項和等效的長選項):
| 選項 | 意義 |
|---|---|
| -a, --archive | 復制文件和目錄,以及它們的屬性,包括所有權(quán)和權(quán)限。 通常,復本具有用戶所操作文件的默認屬性。 |
| -i, --interactive | 在重寫已存在文件之前,提示用戶確認。如果這個選項不指定, cp 命令會默認重寫文件。 |
| -r, --recursive | 遞歸地復制目錄及目錄中的內(nèi)容。當復制目錄時, 需要這個選項(或者-a 選項)。 |
| -u, --update | 當把文件從一個目錄復制到另一個目錄時,僅復制 目標目錄中不存在的文件,或者是文件內(nèi)容新于目標目錄中已經(jīng)存在的文件。 |
| -v, --verbose | 顯示翔實的命令操作信息 |
| 命令 | 運行結(jié)果 |
|---|---|
| cp file1 file2 | 復制文件 file1 內(nèi)容到文件 file2。如果 file2 已經(jīng)存在, file2 的內(nèi)容會被 file1 的內(nèi)容重寫。如果 file2 不存在,則會創(chuàng)建 file2。 |
| cp -i file1 file2 | 這條命令和上面的命令一樣,除了如果文件 file2 存在的話,在文件 file2 被重寫之前, 會提示用戶確認信息。 |
| cp file1 file2 dir1 | 復制文件 file1 和文件 file2 到目錄 dir1。目錄 dir1 必須存在。 |
| cp dir1/* dir2 | 使用一個通配符,在目錄 dir1 中的所有文件都被復制到目錄 dir2 中。 dir2 必須已經(jīng)存在。 |
| cp -r dir1 dir2 | 復制目錄 dir1 中的內(nèi)容到目錄 dir2。如果目錄 dir2 不存在, 創(chuàng)建目錄 dir2,操作完成后,目錄 dir2 中的內(nèi)容和 dir1 中的一樣。 如果目錄 dir2 存在,則目錄 dir1 (和目錄中的內(nèi)容)將會被復制到 dir2 中。 |
mv 命令可以執(zhí)行文件移動和文件命名任務,這依賴于你怎樣使用它。任何一種 情況下,完成操作之后,原來的文件名不再存在。mv 使用方法與 cp 很相像:
mv item1 item2
把文件或目錄 “item1” 移動或重命名為 “item2”, 或者:
mv item... directory
把一個或多個條目從一個目錄移動到另一個目錄中。
mv 與 cp 共享了很多一樣的選項:
| 選項 | 意義 |
|---|---|
| -i --interactive | 在重寫一個已經(jīng)存在的文件之前,提示用戶確認信息。 如果不指定這個選項,mv 命令會默認重寫文件內(nèi)容。 |
| -u --update | 當把文件從一個目錄移動另一個目錄時,只是移動不存在的文件, 或者文件內(nèi)容新于目標目錄相對應文件的內(nèi)容。 |
| -v --verbose | 當操作 mv 命令時,顯示翔實的操作信息。 |
| mv file1 file2 | 移動 file1 到 file2。如果 file2 存在,它的內(nèi)容會被 file1 的內(nèi)容重寫。 如果 file2 不存在,則創(chuàng)建 file2。 每種情況下,file1 不再存在。 |
| mv -i file1 file2 | 除了如果 file2 存在的話,在 file2 被重寫之前,用戶會得到 提示信息外,這個和上面的選項一樣。 |
| mv file1 file2 dir1 | 移動 file1 和 file2 到目錄 dir1 中。dir1 必須已經(jīng)存在。 |
| mv dir1 dir2 | 如果目錄 dir2 不存在,創(chuàng)建目錄 dir2,并且移動目錄 dir1 的內(nèi)容到 目錄 dir2 中,同時刪除目錄 dir1。如果目錄 dir2 存在,移動目錄 dir1(及它的內(nèi)容)到目錄 dir2。 |
rm 命令用來移除(刪除)文件和目錄:
rm item...
"item"代表一個或多個文件或目錄。
下表是一些普遍使用的 rm 選項:
| 選項 | 意義 |
|---|---|
| -i, --interactive | 在刪除已存在的文件前,提示用戶確認信息。 如果不指定這個選項,rm 會默默地刪除文件 |
| -r, --recursive | 遞歸地刪除文件,這意味著,如果要刪除一個目錄,而此目錄 又包含子目錄,那么子目錄也會被刪除。要刪除一個目錄,必須指定這個選項。 |
| -f, --force | 忽視不存在的文件,不顯示提示信息。這選項顛覆了“--interactive”選項。 |
| -v, --verbose | 在執(zhí)行 rm 命令時,顯示翔實的操作信息。 |
| 命令 | 運行結(jié)果 |
|---|---|
| rm file1 | 默默地刪除文件 |
| rm -i file1 | 除了在刪除文件之前,提示用戶確認信息之外,和上面的命令作用一樣。 |
| rm -r file1 dir1 | 刪除文件 file1, 目錄 dir1,及 dir1 中的內(nèi)容。 |
| rm -rf file1 dir1 | 同上,除了如果文件 file1,或目錄 dir1 不存在的話,rm 仍會繼續(xù)執(zhí)行。 |
小心 rm!
類 Unix 的操作系統(tǒng),比如說 Linux,沒有復原命令。一旦你用 rm 刪除了一些東西, 它就消失了。Linux 假定你很聰明,你知道你在做什么。
尤其要小心通配符。思考一下這個經(jīng)典的例子。假如說,你只想刪除一個目錄中的 HTML 文件。輸入:
rm *.html
這是正確的,如果你不小心在 “*” 和 “.html” 之間多輸入了一個空格,就像這樣:
rm * .html
這個 rm 命令會刪除目錄中的所有文件,還會抱怨沒有文件叫做 “.html”。
小貼士。 無論什么時候,rm 命令用到通配符(除了仔細檢查輸入的內(nèi)容外?。?, 用 ls 命令來測試通配符。這會讓你看到要刪除的文件列表。然后按下上箭頭按鍵,重新調(diào)用 剛剛執(zhí)行的命令,用 rm 替換 ls。
ln 命令即可創(chuàng)建硬鏈接,也可以創(chuàng)建符號鏈接??梢杂闷渲幸环N方法來使用它:
ln file link
創(chuàng)建硬鏈接,和:
ln -s item link
創(chuàng)建符號鏈接,"item" 可以是一個文件或是一個目錄。
硬鏈接和符號鏈接比起來,硬鏈接是最初 Unix 創(chuàng)建鏈接的方式,而符號鏈接更加現(xiàn)代。 在默認情況下,每個文件有一個硬鏈接,這個硬鏈接給文件起名字。當我們創(chuàng)建一個 硬鏈接以后,就為文件創(chuàng)建了一個額外的目錄條目。硬鏈接有兩個重要局限性:
一個硬鏈接不能關聯(lián)它所在文件系統(tǒng)之外的文件。這是說一個鏈接不能關聯(lián) 與鏈接本身不在同一個磁盤分區(qū)上的文件。
一個硬鏈接和文件本身沒有什么區(qū)別。不像符號鏈接,當你列出一個包含硬鏈接的目錄 內(nèi)容時,你會看到?jīng)]有特殊的鏈接指示說明。當一個硬鏈接被刪除時,這個鏈接 被刪除,但是文件本身的內(nèi)容仍然存在(這是說,它所占的磁盤空間不會被重新分配), 直到所有關聯(lián)這個文件的鏈接都刪除掉。知道硬鏈接很重要,因為你可能有時 會遇到它們,但現(xiàn)在實際中更喜歡使用符號鏈接,下一步我們會討論符號鏈接。
創(chuàng)建符號鏈接是為了克服硬鏈接的局限性。符號鏈接生效,是通過創(chuàng)建一個 特殊類型的文件,這個文件包含一個關聯(lián)文件或目錄的文本指針。在這一方面, 它們和 Windows 的快捷方式差不多,當然,符號鏈接早于 Windows 的快捷方式 很多年;-)
一個符號鏈接指向一個文件,而且這個符號鏈接本身與其它的符號鏈接幾乎沒有區(qū)別。 例如,如果你往一個符號鏈接里面寫入東西,那么相關聯(lián)的文件也被寫入。然而, 當你刪除一個符號鏈接時,只有這個鏈接被刪除,而不是文件自身。如果先于符號鏈接 刪除文件,這個鏈接仍然存在,但是不指向任何東西。在這種情況下,這個鏈接被稱為 壞鏈接。在許多實現(xiàn)中,ls 命令會以不同的顏色展示壞鏈接,比如說紅色,來顯示它們 的存在。
關于鏈接的概念,看起來很迷惑,但不要膽怯。我們將要試著練習 這些命令,希望,它變得清晰起來。
下面我們將要做些真正的文件操作,讓我們先建立一個安全地帶, 來玩一下文件操作命令。首先,我們需要一個工作目錄。在我們的 家目錄下創(chuàng)建一個叫做“playground”的目錄。
mkdir 命令被用來創(chuàng)建目錄。首先確定我們在我們的家目錄下,來創(chuàng)建 playground 目錄, 然后創(chuàng)建這個新目錄:
[me@linuxbox ~]$ cd
[me@linuxbox ~]$ mkdir playground
為了讓我們的游戲場更加有趣,在 playground 目錄下創(chuàng)建一對目錄 ,分別叫做 “dir1” 和 “dir2”。更改我們的當前工作目錄到 playground,然后 執(zhí)行 mkdir 命令:
[me@linuxbox ~]$ cd playground
[me@linuxbox playground]$ mkdir dir1 dir2
注意到 mkdir 命令可以接受多個參數(shù),它允許我們用一個命令來創(chuàng)建這兩個目錄。
下一步,讓我們得到一些數(shù)據(jù)到我們的游戲場中。通過復制一個文件來實現(xiàn)目的。 使用 cp 命令,我們從 /etc 目錄復制 passwd 文件到當前工作目錄下:
[me@linuxbox playground]$ cp /etc/passwd .
注意:我們怎樣使用當前工作目錄的快捷方式,命令末尾的單個圓點。如果我們執(zhí)行 ls 命令, 可以看到我們的文件:
[me@linuxbox playground]$ ls -l
total 12
drwxrwxr-x 2 me me 4096 2008-01-10 16:40 dir1
drwxrwxr-x 2 me me 4096 2008-01-10 16:40 dir2
-rw-r--r-- 1 me me 1650 2008-01-10 16:07 passwd
現(xiàn)在,僅僅是為了高興,重復操作復制命令,使用"-v"選項(嘮叨),看一個它的作用:
[me@linuxbox playground]$ cp -v /etc/passwd .
`/etc/passwd' -> `./passwd'
cp 命令再一次執(zhí)行了復制操作,但是這次顯示了一條簡潔的信息,指明它 進行了什么操作。注意,cp 沒有警告,就重寫了第一次復制的文件。這是一個案例, cp 假定你知道你的所作所為。為了得到警示信息,在命令中包含"-i"選項:
[me@linuxbox playground]$ cp -i /etc/passwd .
cp: overwrite `./passwd'?
響應命令提示信息,輸入"y",文件就會被重寫,其它的字符(例如,"n")會導致 cp 命令不理會文件。
現(xiàn)在,"passwd" 這個名字,看起來不怎么有趣,這是個游戲場,所以我們給它改個名字:
[me@linuxbox playground]$ mv passwd fun
讓我們來傳送 fun 文件,通過移動重命名的文件到各個子目錄, 然后再把它移回到當前目錄:
[me@linuxbox playground]$ mv fun dir1
首先,把 fun 文件移動目錄 dir1 中,然后:
[me@linuxbox playground]$ mv dir1/fun dir2
再把 fun 文件從 dir1 移到目錄 dir2, 然后:
[me@linuxbox playground]$ mv dir2/fun .
最后,再把 fun 文件帶回到當前工作目錄。下一步,來看看移動目錄的效果。 首先,我們先移動我們的數(shù)據(jù)文件到 dir1 目錄:
[me@linuxbox playground]$ mv fun dir1
然后移動 dir1到 dir2目錄,用 ls 來確認執(zhí)行結(jié)果:
[me@linuxbox playground]$ mv dir1 dir2
[me@linuxbox playground]$ ls -l dir2
total 4
drwxrwxr-x 2 me me 4096 2008-01-11 06:06 dir1
[me@linuxbox playground]$ ls -l dir2/dir1
total 4
-rw-r--r-- 1 me me 1650 2008-01-10 16:33 fun
注意:因為目錄 dir2 已經(jīng)存在,mv 命令移動 dir1 到 dir2 目錄。如果 dir2 不存在, mv 會重新命名 dir1 為 dir2。最后,把所有的東西放回原處。
[me@linuxbox playground]$ mv dir2/dir1 .
[me@linuxbox playground]$ mv dir1/fun .
現(xiàn)在,我們試著創(chuàng)建鏈接。首先是硬鏈接。我們創(chuàng)建一些關聯(lián)我們 數(shù)據(jù)文件的鏈接:
[me@linuxbox playground]$ ln fun fun-hard
[me@linuxbox playground]$ ln fun dir1/fun-hard
[me@linuxbox playground]$ ln fun dir2/fun-hard
所以現(xiàn)在,我們有四個文件"fun"的實例??匆幌履夸?playground 中的內(nèi)容:
[me@linuxbox playground]$ ls -l
total 16
drwxrwxr-x 2 me me 4096 2008-01-14 16:17 dir1
drwxrwxr-x 2 me me 4096 2008-01-14 16:17 dir2
-rw-r--r-- 4 me me 1650 2008-01-10 16:33 fun
-rw-r--r-- 4 me me 1650 2008-01-10 16:33 fun-hard
注意到一件事,列表中,文件 fun 和 fun-hard 的第二個字段是"4",這個數(shù)字 是文件"fun"的硬鏈接數(shù)目。你要記得一個文件至少有一個硬鏈接,因為文件 名就是由鏈接創(chuàng)建的。所以,我們怎樣知道實際上 fun 和 fun-hard 是一樣的文件呢? 在這個例子里,ls 不是很有用。雖然我們能夠看到 fun 和 fun-hard 文件大小一樣 (第五字段),但我們的列表沒有提供可靠的信息來確定(這兩個文件一樣)。 為了解決這個問題,我們更深入的研究一下。
當考慮到硬鏈接的時候,我們可以假設文件由兩部分組成:包含文件內(nèi)容的數(shù)據(jù)部分和持有文件名的名字部分 ,這將有助于我們理解這個概念。當我們創(chuàng)建文件硬鏈接的時候,實際上是為文件創(chuàng)建了額外的名字部分, 并且這些名字都關系到相同的數(shù)據(jù)部分。這時系統(tǒng)會分配一連串的磁盤給所謂的索引節(jié)點,然后索引節(jié)點與文 件名字部分相關聯(lián)。因此每一個硬鏈接都關系到一個具體的包含文件內(nèi)容的索引節(jié)點。
ls 命令有一種方法,來展示(文件索引節(jié)點)的信息。在命令中加上"-i"選項:
[me@linuxbox playground]$ ls -li
total 16
12353539 drwxrwxr-x 2 me me 4096 2008-01-14 16:17 dir1
12353540 drwxrwxr-x 2 me me 4096 2008-01-14 16:17 dir2
12353538 -rw-r--r-- 4 me me 1650 2008-01-10 16:33 fun
12353538 -rw-r--r-- 4 me me 1650 2008-01-10 16:33 fun-hard
在這個版本的列表中,第一字段表示文件索引節(jié)點號,正如我們所見到的, fun 和 fun-hard 共享一樣的索引節(jié)點號,這就證實這兩個文件是一樣的文件。
建立符號鏈接的目的是為了克服硬鏈接的兩個缺點:硬鏈接不能跨越物理設備, 硬鏈接不能關聯(lián)目錄,只能是文件。符號鏈接是文件的特殊類型,它包含一個指向 目標文件或目錄的文本指針。
符號鏈接的建立過程相似于創(chuàng)建硬鏈接:
[me@linuxbox playground]$ ln -s fun fun-sym
[me@linuxbox playground]$ ln -s ../fun dir1/fun-sym
[me@linuxbox playground]$ ln -s ../fun dir2/fun-sym
第一個實例相當直接,在 ln 命令中,簡單地加上"-s"選項就可以創(chuàng)建一個符號鏈接, 而不是一個硬鏈接。下面兩個例子又是怎樣呢? 記住,當我們創(chuàng)建一個符號鏈接 的時候,會建立一個目標文件在哪里和符號鏈接有關聯(lián)的文本描述。如果我們看看 ls 命令的輸出結(jié)果,比較容易理解。
[me@linuxbox playground]$ ls -l dir1
total 4
-rw-r--r-- 4 me me 1650 2008-01-10 16:33 fun-hard
lrwxrwxrwx 1 me me 6 2008-01-15 15:17 fun-sym -> ../fun
目錄 dir1 中,fun-sym 的列表說明了它是一個符號鏈接,通過在第一字段中的首字符"l" 可知,并且它還指向"../fun",也是正確的。相對于 fun-sym 的存儲位置,fun 在它的 上一個目錄。同時注意,符號鏈接文件的長度是6,這是字符串"../fun"所包含的字符數(shù), 而不是符號鏈接所指向的文件長度。
當建立符號鏈接時,你即可以使用絕對路徑名:
ln -s /home/me/playground/fun dir1/fun-sym
也可用相對路徑名,正如前面例題所展示的。使用相對路徑名更令人滿意, 因為它允許一個包含符號鏈接的目錄重命名或移動,而不會破壞鏈接。
除了普通文件,符號鏈接也能關聯(lián)目錄:
[me@linuxbox playground]$ ln -s dir1 dir1-sym
[me@linuxbox playground]$ ls -l
total 16
...省略
正如我們之前討論的,rm 命令被用來刪除文件和目錄。我們將要使用它 來清理一下我們的游戲場。首先,刪除一個硬鏈接:
[me@linuxbox playground]$ rm fun-hard
[me@linuxbox playground]$ ls -l
total 12
...省略
結(jié)果不出所料。文件 fun-hard 消失了,文件 fun 的鏈接數(shù)從4減到3,正如 目錄列表第二字段所示。下一步,我們會刪除文件 fun,僅為了娛樂,我們會包含"-i" 選項,看一個它的作用:
[me@linuxbox playground]$ rm -i fun
rm: remove regular file `fun'?
在提示符下輸入"y",刪除文件。讓我們看一下 ls 的輸出結(jié)果。注意,fun-sym 發(fā)生了 什么事? 因為它是一個符號鏈接,指向已經(jīng)不存在的文件,鏈接已經(jīng)壞了:
[me@linuxbox playground]$ ls -l
total 8
drwxrwxr-x 2 me me 4096 2008-01-15 15:17 dir1
lrwxrwxrwx 1 me me 4 2008-01-16 14:45 dir1-sym -> dir1
drwxrwxr-x 2 me me 4096 2008-01-15 15:17 dir2
lrwxrwxrwx 1 me me 3 2008-01-15 15:15 fun-sym -> fun
大多數(shù) Linux 的發(fā)行版本配置 ls 顯示損壞的鏈接。在 Fedora 系統(tǒng)中,壞的鏈接以閃爍的 紅色文本顯示!損壞鏈接的出現(xiàn),并不危險,但是相當混亂。如果我們試著使用 損壞的鏈接,會看到以下情況:
[me@linuxbox playground]$ less fun-sym
fun-sym: No such file or directory
稍微清理一下現(xiàn)場。刪除符號鏈接:
[me@linuxbox playground]$ rm fun-sym dir1-sym
[me@linuxbox playground]$ ls -l
total 8
drwxrwxr-x 2 me me 4096 2008-01-15 15:17 dir1
drwxrwxr-x 2 me me 4096 2008-01-15 15:17 dir2
對于符號鏈接,有一點值得記住,執(zhí)行的大多數(shù)文件操作是針對鏈接的對象,而不是鏈接本身。 而 rm 命令是個特例。當你刪除鏈接的時候,刪除鏈接本身,而不是鏈接的對象。
最后,我們將刪除我們的游戲場。為了完成這個工作,我們將返回到 我們的家目錄,然后用 rm 命令加上選項(-r),來刪除目錄 playground, 和目錄下的所有內(nèi)容,包括子目錄:
[me@linuxbox playground]$ cd
[me@linuxbox ~]$ rm -r playground
用 GUI 來創(chuàng)建符號鏈接
文件管理器 GNOME 和 KDE 都提供了一個簡單而且自動化的方法來創(chuàng)建符號鏈接。 在 GNOME 里面,當拖動文件時,同時按下 Ctrl+Shift 按鍵會創(chuàng)建一個鏈接,而不是 復制(或移動)文件。在 KDE 中,無論什么時候放下一個文件,會彈出一個小菜單, 這個菜單會提供復制,移動,或創(chuàng)建鏈接文件選項。
在這一章中,我們已經(jīng)研究了許多基礎知識。我們得花費一些時間來全面的理解。 反復練習 playground 例題,直到你覺得它有意義。能夠良好的理解基本文件操作 命令和通配符,非常重要??臻e時,通過添加文件和目錄來拓展 playground 練習, 使用通配符來為各種各樣的操作命令指定文件。關于鏈接的概念,在剛開始接觸 時會覺得有點迷惑,花些時間來學習它們是怎樣工作的。它們能成為真正的救星。