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

文件系統(tǒng)中跳轉(zhuǎn)

我們需要學(xué)習(xí)的第一件事(除了打字之外)是如何在 Linux 文件系統(tǒng)中跳轉(zhuǎn)。 在這一章節(jié)中,我們將介紹以下命令:

  • pwd — 打印出當(dāng)前工作目錄名

  • cd — 更改目錄

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

理解文件系統(tǒng)樹

類似于 Windows,一個“類 Unix” 的操作系統(tǒng),比如說 Linux,以分層目錄結(jié)構(gòu)來組織所有文件。 這就意味著所有文件組成了一棵樹型目錄(有時候在其它系統(tǒng)中叫做文件夾), 這個目錄樹可能包含文件和其它的目錄。文件系統(tǒng)中的第一級目錄稱為根目錄。 根目錄包含文件和子目錄,子目錄包含更多的文件和子目錄,依此類推。

注意(類 Unix 系統(tǒng))不像 Windows ,每個存儲設(shè)備都有一個獨自的文件系統(tǒng)。類 Unix 操作系統(tǒng), 比如 Linux,總是只有一個單一的文件系統(tǒng)樹,不管有多少個磁盤或者存儲設(shè)備連接到計算機(jī)上。 根據(jù)負(fù)責(zé)維護(hù)系統(tǒng)安全的系統(tǒng)管理員的興致,存儲設(shè)備連接到(或著更精確些,是掛載到)目錄樹的各個節(jié)點上。

當(dāng)前工作目錄

http://wiki.jikexueyuan.com/project/linux-command/images/3.png" alt="" />

圖1: 由圖形化文件管理器顯示的文件系統(tǒng)樹 {: .figure}

大多數(shù)人都可能熟悉如圖1所示描述文件系統(tǒng)樹的圖形文件管理器。注意, 通常這是一棵 倒置的樹,也就是說,樹根在最上面,而各個枝干在下面展開。

然而,命令行沒有圖片,所以我們需要考慮用不同的方法,在文件系統(tǒng)樹中跳轉(zhuǎn)。

把文件系統(tǒng)想象成一個迷宮形狀,就像一棵倒立的大樹,我們站在迷宮的中間位置。 在任意時刻,我們處于一個目錄里面,我們能看到這個目錄包含的所有文件, 以及通往上面目錄(父目錄)的路徑,和下面的各個子目錄。我們所在的目錄則稱為 當(dāng)前工作目錄。我們使用 pwd(print working directory(的縮寫))命令,來顯示當(dāng)前工作目錄。

[me@linuxbox ~]$ pwd
/home/me

當(dāng)我們首次登錄系統(tǒng)(或者啟動終端仿真器會話)后,當(dāng)前工作目錄是我們的家目錄。 每個用戶都有他自己的家目錄,當(dāng)用戶以普通用戶的身份操控系統(tǒng)時,家目錄是唯一 允許用戶對文件進(jìn)行寫入的地方。

列出目錄內(nèi)容

列出一個目錄包含的文件及子目錄,使用 ls 命令。

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

實際上,用 ls 命令可以列出任一個目錄的內(nèi)容,而不只是當(dāng)前工作目錄的內(nèi)容。 ls 命令還能完成許多有趣的事情。在下一章節(jié),我們將介紹更多關(guān)于 ls 的知識。

更改當(dāng)前工作目錄

要更改工作目錄(此刻,我們站在樹形迷宮里面),我們用 cd 命令。輸入 cd, 然后輸入你想要去的工作目錄的路徑名。路徑名就是沿著目錄樹的分支 到達(dá)想要的目錄期間所經(jīng)過的路線。路徑名可通過兩種方式來指定,一種是絕對路徑, 另一種是相對路徑。我們先來介紹絕對路徑。

絕對路徑

絕對路徑開始于根目錄,緊跟著目錄樹的一個個分支,一直到達(dá)所期望的目錄或文件。 例如,你的系統(tǒng)中有一個目錄,大多數(shù)系統(tǒng)程序都安裝在這個目錄下。這個目錄的 路徑名是 /usr/bin。它意味著從根目錄(用開頭的“/"表示)開始,有一個叫 "usr" 的 目錄包含了目錄 "bin"。

[me@linuxbox ~]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin
[me@linuxbox bin]$ ls
...Listing of many, many files ...

我們把工作目錄轉(zhuǎn)到 /usr/bin 目錄下,里面裝滿了文件。注意 shell 提示符是怎樣改變的嗎? 為了方便,通常終端提示符自動顯示工作目錄名。

相對路徑

絕對路徑從根目錄開始,直到它的目的地,而相對路徑開始于工作目錄。 為了做到這個(用相對路徑表示), 我們在文件系統(tǒng)樹中用一對特殊符號來表示相對位置。 這對特殊符號是 "." (點) 和 ".." (點點)。

符號 "." 指的是工作目錄,".." 指的是工作目錄的父目錄。下面的例子說明怎樣使用它。 讓我們再次把工作目錄切換到 /usr/bin:

[me@linuxbox ~]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin

好了,比方說我們想更改工作目錄到 /usr/bin 的父目錄 /usr??梢酝ㄟ^兩種方法來實現(xiàn)??梢允褂媒^對路徑名:

[me@linuxbox bin]$ cd /usr
[me@linuxbox usr]$ pwd
/usr

或者, 也可以使用相對路徑:

[me@linuxbox bin]$ cd ..
[me@linuxbox usr]$ pwd
/usr

兩種不同的方法,一樣的結(jié)果。我們應(yīng)該選哪一個呢? 選輸入量最少的那個!

同樣地,從目錄 /usr/ 到 /usr/bin 也有兩種途徑。可以使用絕對路徑:

[me@linuxbox usr]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin

或者,也可以用相對路徑:

[me@linuxbox usr]$ cd ./bin
[me@linuxbox bin]$ pwd
/usr/bin

有一件很重要的事,我必須指出來。在幾乎所有的情況下,你可以省略"./"。它是隱含地。輸入:

[me@linuxbox usr]$ cd bin

實現(xiàn)相同的效果,如果不指定一個文件的目錄,那它的工作目錄會被假定為當(dāng)前工作目錄。

有用的快捷鍵

在表3-1中,列舉出了一些快速改變當(dāng)前工作目錄的有效方法。

表3-1: cd 快捷鍵
快捷鍵 運行結(jié)果
cd 更改工作目錄到你的家目錄。
cd - 更改工作目錄到先前的工作目錄。
cd ~user_name 更改工作目錄到用戶家目錄。例如, cd ~bob 會更改工作目錄到用戶“bob”的家目錄。

關(guān)于文件名的重要規(guī)則

  1. 以 "." 字符開頭的文件名是隱藏文件。這僅表示,ls 命令不能列出它們, 用 ls -a 命令就可以了。當(dāng)你創(chuàng)建帳號后,幾個配置帳號的隱藏文件被放置在 你的家目錄下。稍后,我們會仔細(xì)研究一些隱藏文件,來定制你的系統(tǒng)環(huán)境。 另外,一些應(yīng)用程序也會把它們的配置文件以隱藏文件的形式放在你的家目錄下面。

  2. 文件名和命令名是大小寫敏感的。文件名 “File1” 和 “file1” 是指兩個不同的文件名。

  3. Linux 沒有“文件擴(kuò)展名”的概念,不像其它一些系統(tǒng)??梢杂媚阆矚g的任何名字 來給文件起名。文件內(nèi)容或用途由其它方法來決定。雖然類 Unix 的操作系統(tǒng), 不用文件擴(kuò)展名來決定文件的內(nèi)容或用途,但是有些應(yīng)用程序會。

  4. 雖然 Linux 支持長文件名,文件名可能包含空格,標(biāo)點符號,但標(biāo)點符號僅限 使用 “.”,“-”,下劃線。最重要的是,不要在文件名中使用空格。如果你想表示詞與 詞間的空格,用下劃線字符來代替。過些時候,你會感激自己這樣做。