<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                既然我們已經知道了如何在文件系統中跳轉,是時候開始 Linux 操作系統之旅了。然而在開始之前,我們先學習一些對研究 Linux 系統有幫助的命令。 > * ls — 列出目錄內容 > * file — 確定文件類型 > * less — 瀏覽文件內容 ## ls 樂趣 有充分的理由證明,ls 可能是用戶最常使用的命令。通過它,我們可以知道目錄的內容,以及各種各樣重要文件和目錄的 屬性。正如我們所知道的,只要簡單的輸入 ls 就能看到在當前目錄下所包含的文件和子目錄列表。 ~~~ [me@linuxbox ~]$ ls Desktop Documents Music Pictures Publica Templates Videos ~~~ 除了當前工作目錄以外,也可以指定要列出內容的目錄,就像這樣: ~~~ me@linuxbox ~]$ ls /usr bin games kerberos libexec sbin src etc include lib local share tmp ~~~ 甚至可以列出多個指定目錄的內容。在這個例子中,將會列出用戶家目錄(用字符“~”代表)和/usr 目錄的內容: ~~~ [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 ~~~ 我們也可以改變輸出格式,來得到更多的細節: ~~~ [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”選項,則結果以長模式輸出。 ## 選項和參數 我們將學習一個非常重要的知識點,大多數命令是如何工作的。命令名經常會帶有一個或多個用來更正命令行為的選項, 更進一步,選項后面會帶有一個或多個參數,這些參數是命令作用的對象。所以大多數命令看起來像這樣: ~~~ command -options arguments ~~~ 大多數命令使用的選項,是由一個中劃線加上一個字符組成,例如,“-l”,但是許多命令,包括來自于 GNU 項目的命令,也支持長選項,長選項由兩個中劃線加上一個字組成。當然, 許多命令也允許把多個短選項串在一起使用。下面這個例子,ls 命令有兩個選項, “l” 選項產生長格式輸出,“t”選項按文件修改時間的先后來排序。 ~~~ [me@linuxbox ~]$ ls -lt ~~~ 加上長選項 “–reverse”,則結果會以相反的順序輸出: ~~~ [me@linuxbox ~]$ ls -lt --reverse ~~~ ls 命令有大量的選項。表4-1列出了最常使用的選項。 表 4-1: ls 命令選項 | 選項 | 長選項 | 描述 | |-----|---------|------| | -a | --all | 列出所有文件,甚至包括文件名以圓點開頭的默認會被隱藏的隱藏文件。 | | -d | --directory | 通常,如果指定了目錄名,ls 命令會列出這個目錄中的內容,而不是目錄本身。 把這個選項與 -l 選項結合使用,可以看到所指定目錄的詳細信息,而不是目錄中的內容。 | | -F | --classify | 這個選項會在每個所列出的名字后面加上一個指示符。例如,如果名字是 目錄名,則會加上一個'/'字符。 | | -h | --human-readable | 當以長格式列出時,以人們可讀的格式,而不是以字節數來顯示文件的大小。 | | -l | 以長格式顯示結果。 | | -r | --reverse | 以相反的順序來顯示結果。通常,ls 命令的輸出結果按照字母升序排列。 | | -S | 命令輸出結果按照文件大小來排序。 | | -t | 按照修改時間來排序。 | ## 深入研究長格式輸出 正如我們先前知道的,“-l”選項導致 ls 的輸出結果以長格式輸出。這種格式包含大量的有用信息。下面的例子目錄來自 于 Ubuntu 系統: ~~~ -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 ~~~ 選一個文件,來看一下各個輸出字段的含義: 表 4-2: ls 長格式列表的字段 | 字段 | 含義 | |----|------| | -rw-r--r-- | 對于文件的訪問權限。第一個字符指明文件類型。在不同類型之間, 開頭的“-”說明是一個普通文件,“d”表明是一個目錄。其后三個字符是文件所有者的 訪問權限,再其后的三個字符是文件所屬組中成員的訪問權限,最后三個字符是其他所 有人的訪問權限。這個字段的完整含義將在第十章討論。 | | 1 | 文件的硬鏈接數目。參考隨后討論的關于鏈接的內容。 | | root | 文件屬主的用戶名。 | | root | 文件所屬用戶組的名字。 | | 32059 | 以字節數表示的文件大小。 | | 2007-04-03 11:05 | 上次修改文件的時間和日期。 | | oo-cd-cover.odf | 文件名。 | ## 確定文件類型 隨著探究操作系統的進行,知道文件包含的內容是很有用的。我們將用 file 命令來確定文件的類型。我們之前討論過, 在 Linux 系統中,并不要求文件名來反映文件的內容。然而,一個類似 “picture.jpg” 的文件名,我們會期望它包含 JPEG 壓縮圖像,但 Linux 卻不這樣要求它。可以這樣調用 file 命令: ~~~ file filename ~~~ 當調用 file 命令后,file 命令會打印出文件內容的簡單描述。例如: ~~~ [me@linuxbox ~]$ file picture.jpg picture.jpg: JPEG image data, JFIF standard 1.01 ~~~ 有許多種類型的文件。事實上,在類 Unix 操作系統中比如說 Linux 中,有個普遍的觀念就是“一切皆文件”。 隨著課程的進行,我們將會明白這句話是多么的正確。 雖然系統中許多文件格式是熟悉的,例如 MP3和 JPEG 文件,但也有一些文件格式比較含蓄,極少數文件相當陌生。 ## 用 less 瀏覽文件內容 less 命令是一個用來瀏覽文本文件的程序。縱觀 Linux 系統,有許多人類可讀的文本文件。less 程序為我們檢查文本文件 提供了方便。 > 什么是“文本” > > 在計算機中,有許多方法可以表達信息。所有的方法都涉及到,在信息與一些數字之間確立一種關系,而這些數字可以 用來代表信息。畢竟,計算機只能理解數字,這樣所有的數據都被轉換成數值來表示。 > > 有些數值表達法非常復雜(例如壓縮的視頻文件),而其它的就相當簡單。最早也是最簡單的一種表達法,叫做 ASCII 文本。ASCII(發音是”As-Key”)是美國信息交換標準碼的簡稱。這是一個簡單的編碼方法,它首先 被用在電傳打字機上,用來實現鍵盤字符到數字的映射。 > > 文本是簡單的字符與數字之間的一對一映射。它非常緊湊。五十個字符的文本翻譯成五十個字節的數據。文本只是包含 簡單的字符到數字的映射,理解這點很重要。它和一些文字處理器文檔不一樣,比如說由微軟和 OpenOffice.org 文檔 編輯器創建的文件。這些文件,和簡單的 ASCII 文件形成鮮明對比,它們包含許多非文本元素,來描述它的結構和格式。 普通的 ASCII 文件,只包含字符本身,和一些基本的控制符,像制表符,回車符及換行符。縱觀 Linux 系統,許多文件 以文本格式存儲,也有許多 Linux 工具來處理文本文件。甚至 Windows 也承認這種文件格式的重要性。著名的 NOTEPAD.EXE 程序就是一個 ASCII 文本文件編輯器。 為什么我們要查看文本文件呢? 因為許多包含系統設置的文件(叫做配置文件),是以文本格式存儲的,閱讀它們 可以更深入的了解系統是如何工作的。另外,許多系統所用到的實際程序(叫做腳本)也是以這種格式存儲的。 在隨后的章節里,我們將要學習怎樣編輯文本文件,為的是修改系統設置,還要學習編寫自己的腳本文件,但現在我們只是看看它們的內容而已。 less 命令是這樣使用的: ~~~ less filename ~~~ 一旦運行起來,less 程序允許你前后滾動文件。例如,要查看一個定義了系統中全部用戶身份的文件,輸入以下命令: ~~~ [me@linuxbox ~]$ less /etc/passwd ~~~ 一旦 less 程序運行起來,我們就能瀏覽文件內容了。如果文件內容多于一頁,那么我們可以上下滾動文件。按下“q”鍵, 退出 less 程序。 下表列出了 less 程序最常使用的鍵盤命令。 表 4-3: less 命令 | 命令 | 行為 | |-----|---------| | Page UP or b | 向上翻滾一頁 | | Page Down or space | 向下翻滾一頁 | | UP Arrow | 向上翻滾一行 | | Down Arrow | 向下翻滾一行 | | G | 移動到最后一行 | | 1G or g | 移動到開頭一行 | | /charaters | 向前查找指定的字符串 | | n | 向前查找下一個出現的字符串,這個字符串是之前所指定查找的 | | h | 顯示幫助屏幕 | | q | 退出 less 程序 | ## less 就是 more(禪語:色即是空) less 程序是早期 Unix 程序 more 的改進版。“less” 這個名字,對習語 “less is more” 開了個玩笑, 這個習語是現代主義建筑師和設計者的座右銘。 less 屬于”頁面調度器”程序類,這些程序允許通過頁方式,在一頁中輕松地瀏覽長長的文本文檔。然而 more 程序只能向前分頁瀏覽,而 less 程序允許前后分頁瀏覽,它還有很多其它的特性。 ## 旅行指南 Linux 系統中,文件系統布局與類 Unix 系統的文件布局很相似。實際上,一個已經發布的標準, 叫做 Linux 文件系統層次標準,詳細說明了這種設計模式。不是所有Linux發行版都根據這個標準,但 大多數都是。 下一步,我們將在文件系統中游玩,來了解 Linux 系統的工作原理。這會給你一個溫習跳轉命令的機會。 我們會發現很多有趣的文件都是普通的可讀文本。將開始旅行,做做以下練習: 1. cd 到給定目錄 2. 列出目錄內容 ls -l 3. 如果看到一個有趣的文件,用 file 命令確定文件內容 4. 如果文件看起來像文本,試著用 less 命令瀏覽它 * * * 記得復制和粘貼技巧!如果你正在使用鼠標,雙擊文件名,來復制它,然后按下鼠標中鍵,粘貼文件名到命令行中。 * * * 在系統中游玩時,不要害怕粘花惹草。普通用戶是很難把東西弄亂的。那是系統管理員的工作! 如果一個命令抱怨一些事情,不要管它,盡管去玩別的東西。花一些時間四處走走。 系統是我們自己的,盡情地探究吧。記住在 Linux 中,沒有秘密存在! 表4-4僅僅列出了一些我們可以瀏覽的目錄。閑暇時試試看! 表 4-4: Linux 系統中的目錄 | 目錄 | 評論 | |-----|---------| | / | 根目錄,萬物起源。 | | /bin | 包含系統啟動和運行所必須的二進制程序。 | | /boot | 包含 Linux 內核,最初的 RMA 磁盤映像(系統啟動時,由驅動程序所需),和 啟動加載程序。有趣的文件: /boot/grub/grub.conf or menu.lst, 被用來配置啟動加載程序。 /boot/vmlinuz,Linux 內核。 | | /dev | 這是一個包含設備結點的特殊目錄。“一切都是文件”,也使用于設備。 在這個目錄里,內核維護著它支持的設備。 | | /etc | 這個目錄包含所有系統層面的配置文件。它也包含一系列的 shell 腳本, 在系統啟動時,這些腳本會運行每個系統服務。這個目錄中的任何文件應該是可讀的文本文件。有意思的文件:雖然/etc 目錄中的任何文件都有趣,但這里只列出了一些我一直喜歡的文件: /etc/crontab, 定義自動運行的任務。 /etc/fstab,包含存儲設備的列表,以及與他們相關的掛載點。/etc/passwd,包含用戶帳號列表。 | | /home | 在通常的配置環境下,系統會在/home 下,給每個用戶分配一個目錄。普通只能 在他們自己的目錄下創建文件。這個限制保護系統免受錯誤的用戶活動破壞。 | | /lib | 包含核心系統程序所需的庫文件。這些文件與 Windows 中的動態鏈接庫相似。 | | /lost+found | 每個使用 Linux 文件系統的格式化分區或設備,例如 ext3文件系統, 都會有這個目錄。當部分恢復一個損壞的文件系統時,會用到這個目錄。除非文件系統 真正的損壞了,那么這個目錄會是個空目錄。 | | /media | 在現在的 Linux 系統中,/media 目錄會包含可移除媒體設備的掛載點, 例如 USB 驅動器,CD-ROMs 等等。這些設備連接到計算機之后,會自動地掛載到這個目錄結點下。 | | /mnt | 在早些的 Linux 系統中,/mnt 目錄包含可移除設備的掛載點。 | | /opt | 這個/opt 目錄被用來安裝“可選的”軟件。這個主要用來存儲可能 安裝在系統中的商業軟件產品。 | | /proc | 這個/proc 目錄很特殊。從存儲在硬盤上的文件的意義上說,它不是真正的文件系統。 反而,它是一個由 Linux 內核維護的虛擬文件系統。它所包含的文件是內核的窺視孔。這些文件是可讀的, 它們會告訴你內核是怎樣監管計算機的。 | | /root | root 帳戶的家目錄。 | | /sbin | 這個目錄包含“系統”二進制文件。它們是完成重大系統任務的程序,通常為超級用戶保留。 | | /tmp | 這個/tmp 目錄,是用來存儲由各種程序創建的臨時文件的地方。一些配置,導致系統每次 重新啟動時,都會清空這個目錄。 | | /usr | 在 Linux 系統中,/usr 目錄可能是最大的一個。它包含普通用戶所需要的所有程序和文件。 | | /usr/bin | /usr/bin 目錄包含系統安裝的可執行程序。通常,這個目錄會包含許多程序。 | | /usr/lib | 包含由/usr/bin 目錄中的程序所用的共享庫。 | | /usr/local | 這個/usr/local 目錄,是非系統發行版自帶,卻打算讓系統使用的程序的安裝目錄。 通常,由源碼編譯的程序會安裝在/usr/local/bin 目錄下。新安裝的 Linux 系統中,會存在這個目錄, 但卻是空目錄,直到系統管理員放些東西到它里面。 | | /usr/sbin | 包含許多系統管理程序。 | | /usr/share | /usr/share 目錄包含許多由/usr/bin 目錄中的程序使用的共享數據。 其中包括像默認的配置文件,圖標,桌面背景,音頻文件等等。 | | /usr/share/doc | 大多數安裝在系統中的軟件包會包含一些文檔。在/usr/share/doc 目錄下, 我們可以找到按照軟件包分類的文檔。 | | /var | 除了/tmp 和/home 目錄之外,相對來說,目前我們看到的目錄是靜態的,這是說, 它們的內容不會改變。/var 目錄是可能需要改動的文件存儲的地方。各種數據庫,假脫機文件, 用戶郵件等等,都駐扎在這里。 | | /var/log | 這個/var/log 目錄包含日志文件,各種系統活動的記錄。這些文件非常重要,并且 應該時時監測它們。其中最重要的一個文件是/var/log/messages。注意,為了系統安全,在一些系統中, 你必須是超級用戶才能查看這些日志文件。 | ## 符號鏈接 在我們到處查看時,我們可能會看到一個目錄,列出像這樣的一條信息: ~~~ lrwxrwxrwx 1 root root 11 2007-08-11 07:34 libc.so.6 -> libc-2.6.so ~~~ 注意看,為何這條信息第一個字符是“l”,并且有兩個文件名呢? 這是一個特殊文件,叫做符號鏈接(也稱為軟鏈接或者 symlink )。 在大多數“類 Unix” 系統中, 有可能一個文件被多個文件名所指向。雖然這種特性的意義并不明顯,但它真地很有用。 描繪一下這樣的情景:一個程序要求使用某個包含在名為“foo”文件中的共享資源,但是“foo”經常改變版本號。 這樣,在文件名中包含版本號,會是一個好主意,因此管理員或者其它相關方,會知道安裝了哪個“foo”版本。 這又會導致一個問題。如果我們更改了共享資源的名字,那么我們必須跟蹤每個可能使用了 這個共享資源的程序,當每次這個資源的新版本被安裝后,都要讓使用了它的程序去尋找新的資源名。 這聽起來很沒趣。 這就是符號鏈接存在至今的原因。比方說,我們安裝了文件 “foo” 的 2.6 版本,它的 文件名是 “foo-2.6”,然后創建了叫做 “foo” 的符號鏈接,這個符號鏈接指向 “foo-2.6”。 這意味著,當一個程序打開文件 “foo” 時,它實際上是打開文件 “foo-2.6”。 現在,每個人都很高興。依賴于 “foo” 文件的程序能找到這個文件,并且我們能知道安裝了哪個文件版本。 當升級到 “foo-2.7” 版本的時候,僅添加這個文件到文件系統中,刪除符號鏈接 “foo”, 創建一個指向新版本的符號鏈接。這不僅解決了版本升級問題,而且還允許在系統中保存兩個不同的文件版本。 假想 “foo-2.7” 有個錯誤(該死的開發者!),那我們得回到原來的版本。 一樣的操作,我們只需要刪除指向新版本的符號鏈接,然后創建指向舊版本的符號鏈接就可以了。 在上面列出的目錄(來自于 Fedora 的 /lib 目錄)展示了一個叫做 “libc.so.6” 的符號鏈接,這個符號鏈接指向一個 叫做 “libc-2.6.so” 的共享庫文件。這意味著,尋找文件 “libc.so.6” 的程序,實際上得到是文件 “libc-2.6.so”。 在下一章節,我們將學習如何建立符號鏈接。 ## 硬鏈接 討論到鏈接問題,我們需要提一下,還有一種鏈接類型,叫做硬鏈接。硬鏈接同樣允許文件有多個名字, 但是硬鏈接以不同的方法來創建多個文件名。在下一章中,我們會談到更多符號鏈接與硬鏈接之間的差異問題。 ## 拓展閱讀 * 完整的 Linux 文件系統層次體系標準可通過以下鏈接找到: [http://www.pathname.com/fhs/](http://www.pathname.com/fhs/)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看