第二章:导航

我们需要学习的第一件事(除了如何打字)是如何在Linux系统上导航(navigate)文件系统。在本章中,我们将介绍以下命令:

第二章:导航理解文件系统树当前工作目录列出目录的内容更改当前工作目录绝对路径名相对路径名一些有用的快捷方式总结

理解文件系统树

像Windows一样,像Linux这样的类Unix操作系统以所谓的分层目录结构(hierarchical directory structure)组织其文件。这意味着它们以树状(tree-like)目录模式组织(目录,directory,在其他系统中有时称为folder,文件夹),其中可能包含文件和其他目录。文件系统中的第一个目录称为根目录(root directory)。根目录包含文件和子目录,其中包含更多文件和子文件夹等。

请注意,与Windows不同,Windows为每个存储设备都有一个单独的文件系统树,而Linux等类Unix系统总是有一个单一的文件系统树。存储设备根据系统管理员( system administrator ,负责系统维护的人员)的意愿连接(attached,或更准确地说, mounted )在树上的不同位置。

当前工作目录

我们大多数人可能都熟悉图形文件管理器,它表示如图1所示的文件系统树。请注意,这棵树通常是倒置的,也就是说,根在顶部,各种树枝在下面。

image-20250529114608793

图1:图形文件管理器显示的文件系统树

但是,命令行没有图片,因此要浏览文件系统树,我们需要以不同的方式来考虑它。

想象一下,文件系统是一个迷宫,形状像一棵倒置的树,我们可以站在它的中间。在任何给定的时间,我们都在一个目录中,我们可以看到该目录中包含的文件,以及通往我们上方目录(称为 parent directory ,父目录)和我们下方任何子目录的路径。我们所处的目录称为当前工作目录(current working directory)。要显示当前工作目录,我们使用 pwd (打印工作目录)命令。

当我们第一次登录系统(或启动终端模拟器会话)时,我们当前的工作目录设置为我们的主目录(home directory)。每个用户帐户都有自己的主目录,这是普通用户唯一允许写入文件的地方。

列出目录的内容

要列出当前工作目录中的文件和目录,我们使用 ls 命令:

实际上,我们可以使用 ls 命令列出任何目录的内容,而不仅仅是当前工作目录,它还可以做许多其他有趣的事情。在下一章中,我们将花更多的时间来学习 ls

更改当前工作目录

要更改我们的工作目录(我们站在树形迷宫中的位置),我们使用 cd 命令。为此,键入 cd ,后跟所需工作目录的路径名(pathname)。路径名是我们沿着树的分支到达所需目录的路线(route)。我们可以用两种不同的方式之一指定路径名;作为绝对路径名(absolute pathnames)或相对路径名(relative pathnames)。让我们先看看绝对路径名。

绝对路径名

绝对路径名从根目录开始,一个接一个地跟随树枝(tree branch),直到完成所需目录或文件的路径。例如,我们的系统上有一个目录,其中安装了我们系统的大多数程序。目录的路径名是 /usr/bin 。这意味着从根目录(由路径名中的前导斜线表示)开始,有一个名为 usr 的目录,其中包含一个称为 bin 的目录。

现在我们可以看到,我们已经将当前的工作目录更改为 /usr/bin ,并且它充满了文件。请注意shell提示符是如何更改的?为了方便起见,通常将其设置为自动显示工作目录的名称。

相对路径名

绝对路径名从根目录开始并指向其目标,相对路径名从工作目录(当前目录)开始。为此,它使用了一些特殊的符号来表示文件系统树中的相对位置。这些特殊符号是 . (一个点)和 .. (两个点)。

. 表示法指的是工作目录,.. 表示法是指工作目录的父目录。这是它的工作原理。让我们再次将工作目录更改为 /usr/bin

现在,假设我们想将工作目录更改为 /usr/bin 的父目录 /usr 。我们可以通过两种不同的方式来实现,要么使用绝对路径名:

或者使用相对路径:

两种不同的方法,结果相同。我们应该使用哪一个?需要最少打字的那个!

同样,我们可以通过两种不同的方式将工作目录从 /usr 更改为 /usr/bin ,或者使用绝对路径名:

或者使用相对路径名:

现在,这里有一些重要的事情要指出。在几乎所有情况下,我们都可以省略 ./ 。这是隐含的。以下方法可以做同样的事:

一般来说,如果我们不指定某物的路径名,则将假定为工作目录。

一些有用的快捷方式

在表2-1中,我们看到了一些可以快速更改当前工作目录的有用方法。

表2-1:cd 快捷方式

快捷方式结果
cd将工作目录更改为主目录。
cd -将工作目录切换到上一次的工作目录。
cd ~user_name将工作目录更改为 user_name 的主目录。
例如,cd ~bob 会将目录更改为用户“bob”的主目录。

总结

本章解释了shell如何处理系统的目录结构。我们学习了绝对和相对路径名,以及在该结构中移动的基本命令。在下一章中,我们将使用这些知识来参观现代Linux系统。