鍍金池/ 教程/ Linux/ 探究操作系統(tǒng)
網(wǎng)絡(luò)系統(tǒng)
打印
重定向
使用命令
位置參數(shù)
權(quán)限
文本處理
疑難排解
layout: book-zh title: 自定制 shell 提示符
查找文件
layout: book-zh title: vi 簡(jiǎn)介
shell 環(huán)境
什么是 shell
編譯程序
鍵盤高級(jí)操作技巧
流程控制:case 分支
流程控制:if 分支結(jié)構(gòu)
layout: book-zh title: 軟件包管理
進(jìn)程
存儲(chǔ)媒介
格式化輸出
編寫第一個(gè) Shell 腳本
啟動(dòng)一個(gè)項(xiàng)目
流程控制:while/until 循環(huán)
文件系統(tǒng)中跳轉(zhuǎn)
字符串和數(shù)字
讀取鍵盤輸入
歸檔和備份
探究操作系統(tǒng)
流程控制:for 循環(huán)
自頂向下設(shè)計(jì)
數(shù)組
操作文件和目錄
奇珍異寶
從 shell 眼中看世界
正則表達(dá)式

探究操作系統(tǒng)

既然我們已經(jīng)知道了如何在文件系統(tǒng)中跳轉(zhuǎn),是時(shí)候開始 Linux 操作系統(tǒng)之旅了。然而在開始之前,我們先學(xué)習(xí)一些對(duì)研究 Linux 系統(tǒng)有幫助的命令。

  • ls — 列出目錄內(nèi)容

  • file — 確定文件類型

  • less — 瀏覽文件內(nèi)容

ls 樂趣

有充分的理由證明,ls 可能是用戶最常使用的命令。通過它,我們可以知道目錄的內(nèi)容,以及各種各樣重要文件和目錄的 屬性。正如我們所知道的,只要簡(jiǎn)單的輸入 ls 就能看到在當(dāng)前目錄下所包含的文件和子目錄列表。

[me@linuxbox ~]$ ls
Desktop Documents Music Pictures Publica Templates Videos

除了當(dāng)前工作目錄以外,也可以指定要列出內(nèi)容的目錄,就像這樣:

me@linuxbox ~]$ ls /usr
bin games   kerberos    libexec  sbin   src
etc include lib         local    share  tmp

甚至可以列出多個(gè)指定目錄的內(nèi)容。在這個(gè)例子中,將會(huì)列出用戶家目錄(用字符“~”代表)和/usr 目錄的內(nèi)容:

[me@linuxbox ~]$ ls ~ /usr
/home/me:
Desktop  Documents  Music  Pictures  Public  Templates  Videos

/usr:
bin  games      kerberos  libexec  sbin   src
etc  include    lib       local    share  tmp

我們也可以改變輸出格式,來得到更多的細(xì)節(jié):

[me@linuxbox ~]$ ls -l
total 56
drwxrwxr-x 2  me  me  4096  2007-10-26  17:20  Desktop
drwxrwxr-x 2  me  me  4096  2007-10-26  17:20  Documents
drwxrwxr-x 2  me  me  4096  2007-10-26  17:20  Music
drwxrwxr-x 2  me  me  4096  2007-10-26  17:20  Pictures
drwxrwxr-x 2  me  me  4096  2007-10-26  17:20  Public
drwxrwxr-x 2  me  me  4096  2007-10-26  17:20  Templates
drwxrwxr-x 2  me  me  4096  2007-10-26  17:20  Videos

使用 ls 命令的“-l”選項(xiàng),則結(jié)果以長(zhǎng)模式輸出。

選項(xiàng)和參數(shù)

我們將學(xué)習(xí)一個(gè)非常重要的知識(shí)點(diǎn),大多數(shù)命令是如何工作的。命令名經(jīng)常會(huì)帶有一個(gè)或多個(gè)用來更正命令行為的選項(xiàng), 更進(jìn)一步,選項(xiàng)后面會(huì)帶有一個(gè)或多個(gè)參數(shù),這些參數(shù)是命令作用的對(duì)象。所以大多數(shù)命令看起來像這樣:

command -options arguments

大多數(shù)命令使用的選項(xiàng),是由一個(gè)中劃線加上一個(gè)字符組成,例如,“-l”,但是許多命令,包括來自于 GNU 項(xiàng)目的命令,也支持長(zhǎng)選項(xiàng),長(zhǎng)選項(xiàng)由兩個(gè)中劃線加上一個(gè)字組成。當(dāng)然, 許多命令也允許把多個(gè)短選項(xiàng)串在一起使用。下面這個(gè)例子,ls 命令有兩個(gè)選項(xiàng), “l(fā)” 選項(xiàng)產(chǎn)生長(zhǎng)格式輸出,“t”選項(xiàng)按文件修改時(shí)間的先后來排序。

[me@linuxbox ~]$ ls -lt

加上長(zhǎng)選項(xiàng) “--reverse”,則結(jié)果會(huì)以相反的順序輸出:

[me@linuxbox ~]$ ls -lt --reverse

ls 命令有大量的選項(xiàng)。表4-1列出了最常使用的選項(xiàng)。

表 4-1: ls 命令選項(xiàng)
選項(xiàng) 長(zhǎng)選項(xiàng) 描述
-a --all 列出所有文件,甚至包括文件名以圓點(diǎn)開頭的默認(rèn)會(huì)被隱藏的隱藏文件。
-d --directory 通常,如果指定了目錄名,ls 命令會(huì)列出這個(gè)目錄中的內(nèi)容,而不是目錄本身。 把這個(gè)選項(xiàng)與 -l 選項(xiàng)結(jié)合使用,可以看到所指定目錄的詳細(xì)信息,而不是目錄中的內(nèi)容。
-F --classify 這個(gè)選項(xiàng)會(huì)在每個(gè)所列出的名字后面加上一個(gè)指示符。例如,如果名字是 目錄名,則會(huì)加上一個(gè)'/'字符。
-h --human-readable 當(dāng)以長(zhǎng)格式列出時(shí),以人們可讀的格式,而不是以字節(jié)數(shù)來顯示文件的大小。
-l 以長(zhǎng)格式顯示結(jié)果。
-r --reverse 以相反的順序來顯示結(jié)果。通常,ls 命令的輸出結(jié)果按照字母升序排列。
-S 命令輸出結(jié)果按照文件大小來排序。
-t 按照修改時(shí)間來排序。

深入研究長(zhǎng)格式輸出

正如我們先前知道的,“-l”選項(xiàng)導(dǎo)致 ls 的輸出結(jié)果以長(zhǎng)格式輸出。這種格式包含大量的有用信息。下面的例子目錄來自 于 Ubuntu 系統(tǒng):

-rw-r--r-- 1 root root 3576296 2007-04-03 11:05 Experience ubuntu.ogg
-rw-r--r-- 1 root root 1186219 2007-04-03 11:05 kubuntu-leaflet.png
-rw-r--r-- 1 root root   47584 2007-04-03 11:05 logo-Edubuntu.png
-rw-r--r-- 1 root root   44355 2007-04-03 11:05 logo-Kubuntu.png
-rw-r--r-- 1 root root   34391 2007-04-03 11:05 logo-Ubuntu.png
-rw-r--r-- 1 root root   32059 2007-04-03 11:05 oo-cd-cover.odf
-rw-r--r-- 1 root root  159744 2007-04-03 11:05 oo-derivatives.doc
-rw-r--r-- 1 root root   27837 2007-04-03 11:05 oo-maxwell.odt
-rw-r--r-- 1 root root   98816 2007-04-03 11:05 oo-trig.xls
-rw-r--r-- 1 root root  453764 2007-04-03 11:05 oo-welcome.odt
-rw-r--r-- 1 root root  358374 2007-04-03 11:05 ubuntu Sax.ogg

選一個(gè)文件,來看一下各個(gè)輸出字段的含義:

表 4-2: ls 長(zhǎng)格式列表的字段
字段 含義
-rw-r--r-- 對(duì)于文件的訪問權(quán)限。第一個(gè)字符指明文件類型。在不同類型之間, 開頭的“-”說明是一個(gè)普通文件,“d”表明是一個(gè)目錄。其后三個(gè)字符是文件所有者的 訪問權(quán)限,再其后的三個(gè)字符是文件所屬組中成員的訪問權(quán)限,最后三個(gè)字符是其他所 有人的訪問權(quán)限。這個(gè)字段的完整含義將在第十章討論。
1 文件的硬鏈接數(shù)目。參考隨后討論的關(guān)于鏈接的內(nèi)容。
root 文件屬主的用戶名。
root 文件所屬用戶組的名字。
32059 以字節(jié)數(shù)表示的文件大小。
2007-04-03 11:05 上次修改文件的時(shí)間和日期。
oo-cd-cover.odf 文件名。

確定文件類型

隨著探究操作系統(tǒng)的進(jìn)行,知道文件包含的內(nèi)容是很有用的。我們將用 file 命令來確定文件的類型。我們之前討論過, 在 Linux 系統(tǒng)中,并不要求文件名來反映文件的內(nèi)容。然而,一個(gè)類似 “picture.jpg” 的文件名,我們會(huì)期望它包含 JPEG 壓縮圖像,但 Linux 卻不這樣要求它??梢赃@樣調(diào)用 file 命令:

file filename

當(dāng)調(diào)用 file 命令后,file 命令會(huì)打印出文件內(nèi)容的簡(jiǎn)單描述。例如:

[me@linuxbox ~]$ file picture.jpg
picture.jpg: JPEG image data, JFIF standard 1.01

有許多種類型的文件。事實(shí)上,在類 Unix 操作系統(tǒng)中比如說 Linux 中,有個(gè)普遍的觀念就是“一切皆文件”。 隨著課程的進(jìn)行,我們將會(huì)明白這句話是多么的正確。

雖然系統(tǒng)中許多文件格式是熟悉的,例如 MP3和 JPEG 文件,但也有一些文件格式比較含蓄,極少數(shù)文件相當(dāng)陌生。

用 less 瀏覽文件內(nèi)容

less 命令是一個(gè)用來瀏覽文本文件的程序??v觀 Linux 系統(tǒng),有許多人類可讀的文本文件。less 程序?yàn)槲覀儥z查文本文件 提供了方便。

什么是“文本”

在計(jì)算機(jī)中,有許多方法可以表達(dá)信息。所有的方法都涉及到,在信息與一些數(shù)字之間確立一種關(guān)系,而這些數(shù)字可以 用來代表信息。畢竟,計(jì)算機(jī)只能理解數(shù)字,這樣所有的數(shù)據(jù)都被轉(zhuǎn)換成數(shù)值來表示。

有些數(shù)值表達(dá)法非常復(fù)雜(例如壓縮的視頻文件),而其它的就相當(dāng)簡(jiǎn)單。最早也是最簡(jiǎn)單的一種表達(dá)法,叫做 ASCII 文本。ASCII(發(fā)音是"As-Key")是美國信息交換標(biāo)準(zhǔn)碼的簡(jiǎn)稱。這是一個(gè)簡(jiǎn)單的編碼方法,它首先 被用在電傳打字機(jī)上,用來實(shí)現(xiàn)鍵盤字符到數(shù)字的映射。

文本是簡(jiǎn)單的字符與數(shù)字之間的一對(duì)一映射。它非常緊湊。五十個(gè)字符的文本翻譯成五十個(gè)字節(jié)的數(shù)據(jù)。文本只是包含 簡(jiǎn)單的字符到數(shù)字的映射,理解這點(diǎn)很重要。它和一些文字處理器文檔不一樣,比如說由微軟和 OpenOffice.org 文檔 編輯器創(chuàng)建的文件。這些文件,和簡(jiǎn)單的 ASCII 文件形成鮮明對(duì)比,它們包含許多非文本元素,來描述它的結(jié)構(gòu)和格式。 普通的 ASCII 文件,只包含字符本身,和一些基本的控制符,像制表符,回車符及換行符。縱觀 Linux 系統(tǒng),許多文件 以文本格式存儲(chǔ),也有許多 Linux 工具來處理文本文件。甚至 Windows 也承認(rèn)這種文件格式的重要性。著名的 NOTEPAD.EXE 程序就是一個(gè) ASCII 文本文件編輯器。

為什么我們要查看文本文件呢? 因?yàn)樵S多包含系統(tǒng)設(shè)置的文件(叫做配置文件),是以文本格式存儲(chǔ)的,閱讀它們 可以更深入的了解系統(tǒng)是如何工作的。另外,許多系統(tǒng)所用到的實(shí)際程序(叫做腳本)也是以這種格式存儲(chǔ)的。 在隨后的章節(jié)里,我們將要學(xué)習(xí)怎樣編輯文本文件,為的是修改系統(tǒng)設(shè)置,還要學(xué)習(xí)編寫自己的腳本文件,但現(xiàn)在我們只是看看它們的內(nèi)容而已。

less 命令是這樣使用的:

less filename

一旦運(yùn)行起來,less 程序允許你前后滾動(dòng)文件。例如,要查看一個(gè)定義了系統(tǒng)中全部用戶身份的文件,輸入以下命令:

[me@linuxbox ~]$ less /etc/passwd

一旦 less 程序運(yùn)行起來,我們就能瀏覽文件內(nèi)容了。如果文件內(nèi)容多于一頁,那么我們可以上下滾動(dòng)文件。按下“q”鍵, 退出 less 程序。

下表列出了 less 程序最常使用的鍵盤命令。

表 4-3: less 命令
命令 行為
Page UP or b 向上翻滾一頁
Page Down or space 向下翻滾一頁
UP Arrow 向上翻滾一行
Down Arrow 向下翻滾一行
G 移動(dòng)到最后一行
1G or g 移動(dòng)到開頭一行
/charaters 向前查找指定的字符串
n 向前查找下一個(gè)出現(xiàn)的字符串,這個(gè)字符串是之前所指定查找的
h 顯示幫助屏幕
q 退出 less 程序

less 就是 more(禪語:色即是空)

less 程序是早期 Unix 程序 more 的改進(jìn)版。“l(fā)ess” 這個(gè)名字,對(duì)習(xí)語 “l(fā)ess is more” 開了個(gè)玩笑, 這個(gè)習(xí)語是現(xiàn)代主義建筑師和設(shè)計(jì)者的座右銘。

less 屬于"頁面調(diào)度器"程序類,這些程序允許通過頁方式,在一頁中輕松地瀏覽長(zhǎng)長(zhǎng)的文本文檔。然而 more 程序只能向前分頁瀏覽,而 less 程序允許前后分頁瀏覽,它還有很多其它的特性。

旅行指南

Linux 系統(tǒng)中,文件系統(tǒng)布局與類 Unix 系統(tǒng)的文件布局很相似。實(shí)際上,一個(gè)已經(jīng)發(fā)布的標(biāo)準(zhǔn), 叫做 Linux 文件系統(tǒng)層次標(biāo)準(zhǔn),詳細(xì)說明了這種設(shè)計(jì)模式。不是所有Linux發(fā)行版都根據(jù)這個(gè)標(biāo)準(zhǔn),但 大多數(shù)都是。

下一步,我們將在文件系統(tǒng)中游玩,來了解 Linux 系統(tǒng)的工作原理。這會(huì)給你一個(gè)溫習(xí)跳轉(zhuǎn)命令的機(jī)會(huì)。 我們會(huì)發(fā)現(xiàn)很多有趣的文件都是普通的可讀文本。將開始旅行,做做以下練習(xí):

  1. cd 到給定目錄
  2. 列出目錄內(nèi)容 ls -l
  3. 如果看到一個(gè)有趣的文件,用 file 命令確定文件內(nèi)容
  4. 如果文件看起來像文本,試著用 less 命令瀏覽它

記得復(fù)制和粘貼技巧!如果你正在使用鼠標(biāo),雙擊文件名,來復(fù)制它,然后按下鼠標(biāo)中鍵,粘貼文件名到命令行中。


在系統(tǒng)中游玩時(shí),不要害怕粘花惹草。普通用戶是很難把東西弄亂的。那是系統(tǒng)管理員的工作! 如果一個(gè)命令抱怨一些事情,不要管它,盡管去玩別的東西?;ㄒ恍r(shí)間四處走走。 系統(tǒng)是我們自己的,盡情地探究吧。記住在 Linux 中,沒有秘密存在! 表4-4僅僅列出了一些我們可以瀏覽的目錄。閑暇時(shí)試試看!

表 4-4: Linux 系統(tǒng)中的目錄
目錄 評(píng)論
/ 根目錄,萬物起源。
/bin 包含系統(tǒng)啟動(dòng)和運(yùn)行所必須的二進(jìn)制程序。
/boot

包含 Linux 內(nèi)核,最初的 RMA 磁盤映像(系統(tǒng)啟動(dòng)時(shí),由驅(qū)動(dòng)程序所需),和 啟動(dòng)加載程序。

有趣的文件:

  • /boot/grub/grub.conf or menu.lst, 被用來配置啟動(dòng)加載程序。
  • /boot/vmlinuz,Linux 內(nèi)核。
/dev 這是一個(gè)包含設(shè)備結(jié)點(diǎn)的特殊目錄。“一切都是文件”,也使用于設(shè)備。 在這個(gè)目錄里,內(nèi)核維護(hù)著它支持的設(shè)備。
/etc

這個(gè)目錄包含所有系統(tǒng)層面的配置文件。它也包含一系列的 shell 腳本, 在系統(tǒng)啟動(dòng)時(shí),這些腳本會(huì)運(yùn)行每個(gè)系統(tǒng)服務(wù)。這個(gè)目錄中的任何文件應(yīng)該是可讀的文本文件。

有意思的文件:雖然/etc 目錄中的任何文件都有趣,但這里只列出了一些我一直喜歡的文件:

  • /etc/crontab, 定義自動(dòng)運(yùn)行的任務(wù)。
  • /etc/fstab,包含存儲(chǔ)設(shè)備的列表,以及與他們相關(guān)的掛載點(diǎn)。
  • /etc/passwd,包含用戶帳號(hào)列表。
/home 在通常的配置環(huán)境下,系統(tǒng)會(huì)在/home 下,給每個(gè)用戶分配一個(gè)目錄。普通只能 在他們自己的目錄下創(chuàng)建文件。這個(gè)限制保護(hù)系統(tǒng)免受錯(cuò)誤的用戶活動(dòng)破壞。
/lib 包含核心系統(tǒng)程序所需的庫文件。這些文件與 Windows 中的動(dòng)態(tài)鏈接庫相似。
/lost+found 每個(gè)使用 Linux 文件系統(tǒng)的格式化分區(qū)或設(shè)備,例如 ext3文件系統(tǒng), 都會(huì)有這個(gè)目錄。當(dāng)部分恢復(fù)一個(gè)損壞的文件系統(tǒng)時(shí),會(huì)用到這個(gè)目錄。除非文件系統(tǒng) 真正的損壞了,那么這個(gè)目錄會(huì)是個(gè)空目錄。
/media 在現(xiàn)在的 Linux 系統(tǒng)中,/media 目錄會(huì)包含可移除媒體設(shè)備的掛載點(diǎn), 例如 USB 驅(qū)動(dòng)器,CD-ROMs 等等。這些設(shè)備連接到計(jì)算機(jī)之后,會(huì)自動(dòng)地掛載到這個(gè)目錄結(jié)點(diǎn)下。
/mnt 在早些的 Linux 系統(tǒng)中,/mnt 目錄包含可移除設(shè)備的掛載點(diǎn)。
/opt 這個(gè)/opt 目錄被用來安裝“可選的”軟件。這個(gè)主要用來存儲(chǔ)可能 安裝在系統(tǒng)中的商業(yè)軟件產(chǎn)品。
/proc 這個(gè)/proc 目錄很特殊。從存儲(chǔ)在硬盤上的文件的意義上說,它不是真正的文件系統(tǒng)。 反而,它是一個(gè)由 Linux 內(nèi)核維護(hù)的虛擬文件系統(tǒng)。它所包含的文件是內(nèi)核的窺視孔。這些文件是可讀的, 它們會(huì)告訴你內(nèi)核是怎樣監(jiān)管計(jì)算機(jī)的。
/root root 帳戶的家目錄。
/sbin 這個(gè)目錄包含“系統(tǒng)”二進(jìn)制文件。它們是完成重大系統(tǒng)任務(wù)的程序,通常為超級(jí)用戶保留。
/tmp 這個(gè)/tmp 目錄,是用來存儲(chǔ)由各種程序創(chuàng)建的臨時(shí)文件的地方。一些配置,導(dǎo)致系統(tǒng)每次 重新啟動(dòng)時(shí),都會(huì)清空這個(gè)目錄。
/usr 在 Linux 系統(tǒng)中,/usr 目錄可能是最大的一個(gè)。它包含普通用戶所需要的所有程序和文件。
/usr/bin /usr/bin 目錄包含系統(tǒng)安裝的可執(zhí)行程序。通常,這個(gè)目錄會(huì)包含許多程序。
/usr/lib 包含由/usr/bin 目錄中的程序所用的共享庫。
/usr/local 這個(gè)/usr/local 目錄,是非系統(tǒng)發(fā)行版自帶,卻打算讓系統(tǒng)使用的程序的安裝目錄。 通常,由源碼編譯的程序會(huì)安裝在/usr/local/bin 目錄下。新安裝的 Linux 系統(tǒng)中,會(huì)存在這個(gè)目錄, 但卻是空目錄,直到系統(tǒng)管理員放些東西到它里面。
/usr/sbin 包含許多系統(tǒng)管理程序。
/usr/share /usr/share 目錄包含許多由/usr/bin 目錄中的程序使用的共享數(shù)據(jù)。 其中包括像默認(rèn)的配置文件,圖標(biāo),桌面背景,音頻文件等等。
/usr/share/doc 大多數(shù)安裝在系統(tǒng)中的軟件包會(huì)包含一些文檔。在/usr/share/doc 目錄下, 我們可以找到按照軟件包分類的文檔。
/var 除了/tmp 和/home 目錄之外,相對(duì)來說,目前我們看到的目錄是靜態(tài)的,這是說, 它們的內(nèi)容不會(huì)改變。/var 目錄是可能需要改動(dòng)的文件存儲(chǔ)的地方。各種數(shù)據(jù)庫,假脫機(jī)文件, 用戶郵件等等,都駐扎在這里。
/var/log 這個(gè)/var/log 目錄包含日志文件,各種系統(tǒng)活動(dòng)的記錄。這些文件非常重要,并且 應(yīng)該時(shí)時(shí)監(jiān)測(cè)它們。其中最重要的一個(gè)文件是/var/log/messages。注意,為了系統(tǒng)安全,在一些系統(tǒng)中, 你必須是超級(jí)用戶才能查看這些日志文件。

符號(hào)鏈接

在我們到處查看時(shí),我們可能會(huì)看到一個(gè)目錄,列出像這樣的一條信息:

lrwxrwxrwx 1 root root 11 2007-08-11 07:34 libc.so.6 -> libc-2.6.so

注意看,為何這條信息第一個(gè)字符是“l(fā)”,并且有兩個(gè)文件名呢? 這是一個(gè)特殊文件,叫做符號(hào)鏈接(也稱為軟鏈接或者 symlink )。 在大多數(shù)“類 Unix” 系統(tǒng)中, 有可能一個(gè)文件被多個(gè)文件名所指向。雖然這種特性的意義并不明顯,但它真地很有用。

描繪一下這樣的情景:一個(gè)程序要求使用某個(gè)包含在名為“foo”文件中的共享資源,但是“foo”經(jīng)常改變版本號(hào)。 這樣,在文件名中包含版本號(hào),會(huì)是一個(gè)好主意,因此管理員或者其它相關(guān)方,會(huì)知道安裝了哪個(gè)“foo”版本。 這又會(huì)導(dǎo)致一個(gè)問題。如果我們更改了共享資源的名字,那么我們必須跟蹤每個(gè)可能使用了 這個(gè)共享資源的程序,當(dāng)每次這個(gè)資源的新版本被安裝后,都要讓使用了它的程序去尋找新的資源名。 這聽起來很沒趣。

這就是符號(hào)鏈接存在至今的原因。比方說,我們安裝了文件 “foo” 的 2.6 版本,它的 文件名是 “foo-2.6”,然后創(chuàng)建了叫做 “foo” 的符號(hào)鏈接,這個(gè)符號(hào)鏈接指向 “foo-2.6”。 這意味著,當(dāng)一個(gè)程序打開文件 “foo” 時(shí),它實(shí)際上是打開文件 “foo-2.6”。 現(xiàn)在,每個(gè)人都很高興。依賴于 “foo” 文件的程序能找到這個(gè)文件,并且我們能知道安裝了哪個(gè)文件版本。 當(dāng)升級(jí)到 “foo-2.7” 版本的時(shí)候,僅添加這個(gè)文件到文件系統(tǒng)中,刪除符號(hào)鏈接 “foo”, 創(chuàng)建一個(gè)指向新版本的符號(hào)鏈接。這不僅解決了版本升級(jí)問題,而且還允許在系統(tǒng)中保存兩個(gè)不同的文件版本。 假想 “foo-2.7” 有個(gè)錯(cuò)誤(該死的開發(fā)者?。?,那我們得回到原來的版本。 一樣的操作,我們只需要?jiǎng)h除指向新版本的符號(hào)鏈接,然后創(chuàng)建指向舊版本的符號(hào)鏈接就可以了。

在上面列出的目錄(來自于 Fedora 的 /lib 目錄)展示了一個(gè)叫做 “l(fā)ibc.so.6” 的符號(hào)鏈接,這個(gè)符號(hào)鏈接指向一個(gè) 叫做 “l(fā)ibc-2.6.so” 的共享庫文件。這意味著,尋找文件 “l(fā)ibc.so.6” 的程序,實(shí)際上得到是文件 “l(fā)ibc-2.6.so”。 在下一章節(jié),我們將學(xué)習(xí)如何建立符號(hào)鏈接。

硬鏈接

討論到鏈接問題,我們需要提一下,還有一種鏈接類型,叫做硬鏈接。硬鏈接同樣允許文件有多個(gè)名字, 但是硬鏈接以不同的方法來創(chuàng)建多個(gè)文件名。在下一章中,我們會(huì)談到更多符號(hào)鏈接與硬鏈接之間的差異問題。

拓展閱讀