我們需要學習的第一件事(除了打字之外)是如何在 Linux 文件系統中跳轉。 在這一章節中,我們將介紹以下命令:
> * pwd — 打印出當前工作目錄名
> * cd — 更改目錄
> * ls — 列出目錄內容
## 理解文件系統樹
類似于 Windows,一個“類 Unix” 的操作系統,比如說 Linux,以分層目錄結構來組織所有文件。 這就意味著所有文件組成了一棵樹型目錄(有時候在其它系統中叫做文件夾), 這個目錄樹可能包含文件和其它的目錄。文件系統中的第一級目錄稱為根目錄。 根目錄包含文件和子目錄,子目錄包含更多的文件和子目錄,依此類推。
注意(類 Unix 系統)不像 Windows ,每個存儲設備都有一個獨自的文件系統。類 Unix 操作系統, 比如 Linux,總是只有一個單一的文件系統樹,不管有多少個磁盤或者存儲設備連接到計算機上。 根據負責維護系統安全的系統管理員的興致,存儲設備連接到(或著更精確些,是掛載到)目錄樹的各個節點上。
## 當前工作目錄

圖1: 由圖形化文件管理器顯示的文件系統樹
大多數人都可能熟悉如圖1所示描述文件系統樹的圖形文件管理器。注意, 通常這是一棵 倒置的樹,也就是說,樹根在最上面,而各個枝干在下面展開。
然而,命令行沒有圖片,所以我們需要考慮用不同的方法,在文件系統樹中跳轉。
把文件系統想象成一個迷宮形狀,就像一棵倒立的大樹,我們站在迷宮的中間位置。 在任意時刻,我們處于一個目錄里面,我們能看到這個目錄包含的所有文件, 以及通往上面目錄(父目錄)的路徑,和下面的各個子目錄。我們所在的目錄則稱為 當前工作目錄。我們使用 pwd(print working directory(的縮寫))命令,來顯示當前工作目錄。
~~~
[me@linuxbox ~]$ pwd
/home/me
~~~
當我們首次登錄系統(或者啟動終端仿真器會話)后,當前工作目錄是我們的家目錄。 每個用戶都有他自己的家目錄,當用戶以普通用戶的身份操控系統時,家目錄是唯一 允許用戶對文件進行寫入的地方。
## 列出目錄內容
列出一個目錄包含的文件及子目錄,使用 ls 命令。
~~~
[me@linuxbox ~]$ ls
Desktop Documents Music Pictures Public Templates Videos
~~~
實際上,用 ls 命令可以列出任一個目錄的內容,而不只是當前工作目錄的內容。 ls 命令還能完成許多有趣的事情。在下一章節,我們將介紹更多關于 ls 的知識。
## 更改當前工作目錄
要更改工作目錄(此刻,我們站在樹形迷宮里面),我們用 cd 命令。輸入 cd, 然后輸入你想要去的工作目錄的路徑名。路徑名就是沿著目錄樹的分支 到達想要的目錄期間所經過的路線。路徑名可通過兩種方式來指定,一種是絕對路徑, 另一種是相對路徑。我們先來介紹絕對路徑。
## 絕對路徑
絕對路徑開始于根目錄,緊跟著目錄樹的一個個分支,一直到達所期望的目錄或文件。 例如,你的系統中有一個目錄,大多數系統程序都安裝在這個目錄下。這個目錄的 路徑名是 /usr/bin。它意味著從根目錄(用開頭的“/”表示)開始,有一個叫 “usr” 的 目錄包含了目錄 “bin”。
~~~
[me@linuxbox ~]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin
[me@linuxbox bin]$ ls
...Listing of many, many files ...
~~~
我們把工作目錄轉到 /usr/bin 目錄下,里面裝滿了文件。注意 shell 提示符是怎樣改變的嗎? 為了方便,通常終端提示符自動顯示工作目錄名。
## 相對路徑
絕對路徑從根目錄開始,直到它的目的地,而相對路徑開始于工作目錄。 為了做到這個(用相對路徑表示), 我們在文件系統樹中用一對特殊符號來表示相對位置。 這對特殊符號是 “.” (點) 和 “..” (點點)。
符號 “.” 指的是工作目錄,”..” 指的是工作目錄的父目錄。下面的例子說明怎樣使用它。 讓我們再次把工作目錄切換到 /usr/bin:
~~~
[me@linuxbox ~]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin
~~~
好了,比方說我們想更改工作目錄到 /usr/bin 的父目錄 /usr。可以通過兩種方法來實現。可以使用絕對路徑名:
~~~
[me@linuxbox bin]$ cd /usr
[me@linuxbox usr]$ pwd
/usr
~~~
或者, 也可以使用相對路徑:
~~~
[me@linuxbox bin]$ cd ..
[me@linuxbox usr]$ pwd
/usr
~~~
兩種不同的方法,一樣的結果。我們應該選哪一個呢? 選輸入量最少的那個!
同樣地,從目錄 /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
~~~
實現相同的效果,如果不指定一個文件的目錄,那它的工作目錄會被假定為當前工作目錄。
## 有用的快捷鍵
在表3-1中,列舉出了一些快速改變當前工作目錄的有效方法。
表3-1: cd 快捷鍵
| 快捷鍵 | 運行結果 |
| --- | --- |
| cd | 更改工作目錄到你的家目錄。 |
| cd - | 更改工作目錄到先前的工作目錄。 |
| cd ~user_name | 更改工作目錄到用戶家目錄。例如, cd ~bob 會更改工作目錄到用戶“bob”的家目錄。 |
**關于文件名的重要規則**
>
> 1. 以 “.” 字符開頭的文件名是隱藏文件。這僅表示,ls 命令不能列出它們, 用 ls -a 命令就可以了。當你創建帳號后,幾個配置帳號的隱藏文件被放置在 你的家目錄下。稍后,我們會仔細研究一些隱藏文件,來定制你的系統環境。 另外,一些應用程序也會把它們的配置文件以隱藏文件的形式放在你的家目錄下面。
>
>
> 2. 文件名和命令名是大小寫敏感的。文件名 “File1” 和 “file1” 是指兩個不同的文件名。
>
>
> 3. Linux 沒有“文件擴展名”的概念,不像其它一些系統。可以用你喜歡的任何名字 來給文件起名。文件內容或用途由其它方法來決定。雖然類 Unix 的操作系統, 不用文件擴展名來決定文件的內容或用途,但是有些應用程序會。
>
>
> 4. 雖然 Linux 支持長文件名,文件名可能包含空格,標點符號,但標點符號僅限 使用 “.”,“-”,下劃線。最重要的是,不要在文件名中使用空格。如果你想表示詞與 詞間的空格,用下劃線字符來代替。過些時候,你會感激自己這樣做。
- 第一章:引言
- 第二章:什么是shell
- 第三章:文件系統中跳轉
- 第四章:研究操作系統
- 第五章:操作文件和目錄
- 第六章:使用命令
- 第七章:重定向
- 第八章:從shell眼中看世界
- 第九章:鍵盤高級操作技巧
- 第十章:權限
- 第十一章:進程
- 第十二章:shell環境
- 第十三章:VI簡介
- 第十四章:自定制shell提示符
- 第十五章:軟件包管理
- 第十六章:存儲媒介
- 第十七章:網絡系統
- 第十八章:查找文件
- 第十九章:歸檔和備份
- 第二十章:正則表達式
- 第二十一章:文本處理
- 第二十二章:格式化輸出
- 第二十三章:打印
- 第二十四章:編譯程序
- 第二十五章:編寫第一個shell腳本
- 第二十六章:啟動一個項目
- 第二十七章:自頂向下設計
- 第二十八章:流程控制 if分支結構
- 第二十九章:讀取鍵盤輸入
- 第三十章:流程控制 while/until 循環
- 第三十一章:疑難排解
- 第三十二章:流程控制 case分支
- 第三十三章:位置參數
- 第三十四章:流程控制 for循環
- 第三十五章:字符串和數字
- 第三十六章:數組
- 第三十七章:奇珍異寶