第02章:浏览

除了打字,首先需要学习的,是如何浏览 Linux 文件系统。本章我们将介绍下列命令:

  • pwd 列出当前工作目录(Print name of current working directory)

  • cd 变更目录(Change directory)

  • ls 列出目录内容(List directory contents)

理解文件系统树状结构

一如 Windows,类 UNIX 操作系统,如 Linux,使用分层目录结构(hierarchical directory structure)来组织文件。这意味着它们是用树状目录模式(目录 directory 在其它系统中有时会被称为文件夹 folder)来容纳文件和其它目录的。文件系统中的第一个目录被称为根目录(root directory),根目录包含文件和子目录,子目录又包含了更多的文件和子目录,以此类推。

注意,不同于 Windows 中每个存储设备都有各自独立的文件系统树,类 UNIX 系统如 Linux,无论有多少存储设备附加到计算机中,始终仅有一个单独的文件系统树。存储设备是由系统管理员(System administrator)随意附加(attached)——或者更正确地来说是——加载(mounted)到树上的各个不同的点上的。

当前工作目录

多数人大概都熟悉如下图所示的图形文件管理器中所展示的文件系统树。请注意这系统树通常都是倒着显示的,换言之,根显示在上部,而各分支逐层显示在下方。

图形文件管理器中的文件树

然而,命令行是没有图片的,所以我们需要用不同于图形界面的方法来浏览文件系统。

想象一下,文件系统是个形状颠倒的树状迷宫,而我们恰在其中。在任何时刻,我们总是在一个目录之中,我们能看到这目录中的文件,以及该目录的上级路径(即父目录 parent directory)和所有下级子目录。我们所在的这个目录就叫作当前工作目录(current working directory)。要显示当前工作目录,我们需要使用 pwd (print working directory)命令。

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

当我们首次登录系统(或者开启一个终端模拟器会话),我们的当前工作目录被设置在我们的家目录(home directory)。每个用户帐户都有一个给定的家目录,普通用户仅被允许在此处存储文件。

列出目录内容

列出当前工作目录的文件和目录,我们用 ls 命令。

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

实际上,我们可以用 ls 命令列出任何目录中的内容,而不仅仅是当前工作目录,还有更多有趣的事情可以做。我们将在下一章详细介绍 ls

变更当前工作目录

要变更你的工作目录(树形结构迷宫中,我们所在的位置),我们要使用 cd 命令。在 cd 后键入想要到达的路径名(pathname)。路径名是我们沿树的分支到达我们想要的目录的路径。路径名可以表述为以下两种不同方式中的任何一种:绝对路径或相对路径。先来看绝对路径。

绝对路径

一个绝对路径名以根目录(/)开始,一个分支跟着一个分支,一直到你想要达到的路径为止。例如,在系统中有一个目录是大部分系统程序的安装目录,/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。注意到提示符有怎样的变化了吗?为方便起见,它通常设置为自动显示工作目录的名称。

相对路径

绝对路径以根目录开始,一直达到目的地,相对路径总以当前工作目录开始。要做到这一点,要用到一组特殊符号来表示在文件系统树中的相对位置。这些特殊符号就是 .dot) 和 ..dot dot

.」符号指向工作目录,「..」符号指向工作目录的上级目录。让我们再次切换工作目录到 /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

具有相同的作用。一般来说,如果你不指定路径名,就会被假定为从工作目录开始。

一些有用的快捷键

在表 2-1 中我们看到一些能快速切换当前工作目录的方法。

表 2-1:cd 快捷键

快捷键

结果

cd

切换到当前用户的家目录

cd -

切换到上一个工作目录

cd ~user_name

切换到指定用户名的家目录

关于文件名的重要事实

  1. . 开头的文件名是隐藏文件。这意味着必须使用 ls -a 命令才能显示这些文件,仅 ls 命令则无法显示这些文件。当你的帐户被创建的时候,就已经有几个隐藏文件被创建在你的家目录中,用以配置你的帐户。下面我们将会更近距离地接触这些文件中的一部分,以了解如何自定义你的系统环境。另外,有些应用程序也会在你的家目录中存放一些隐藏文件,以保存其环境配置和设置文件。

  2. Linux 中的文件名和命令,和 Unix 一样是大小写敏感的。File1 和 file1 代表两个不同的文件。

  3. Linux 没有「文件扩展名」(file extension)的概念。你可以随你喜好来命名文件。一个文件的内容和用途通过其它方式来确定。尽管类 Unix 系统不使用文件扩展名来确定一个文件的内容和用途,一些应用程序还是会需要「文件扩展名」。

  4. 尽管 Linux 支持长文件名,允许包含空格和一些标点符号,最好还是把文件名中的标点符号限制在句点(.)、横线(-)和下划线(_)三者之中。最重要的,就是不要在文件名中置入空格。如果你想要在文件名中的单词之间表示空白字符,请使用下划线字符。日后你肯定会感谢你自己的这个举动。

总结

本章中我们学习了 shell 如何处理系统目录结构。我们学习了绝对路径和相对路径,以及一些切换目录的基本命令。下一章中,我们将用这些知识继续探索现代 Linux 系统。

Last updated

Was this helpful?