Linux 命令行与 shell 脚本编程大全 (3rd ed)(23):基本的 bash shell 命令 3.4&3.4.1

阅读数:11 2019 年 11 月 17 日 15:21

Linux命令行与shell脚本编程大全(3rd ed)(23):基本的bash shell命令 3.4&3.4.1

内容简介
这是一本关于 Linux 命令行与 shell 脚本编程的全方位教程,主要包括四大部分:Linux 命令行,shell 脚本编程基础,高级 shell 脚本编程,如何创建实用的 shell 脚本。本书针对 Linux 系统的新特性进行了全面更新,不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你将轻松写出自己的 shell 脚本。

(浏览文件系统)

当登录系统并获得 shell 命令提示符后,你通常位于自己的主目录中。一般情况下,你会想去逛逛主目录之外的其他地方。本节将告诉你如何使用 shell 命令来实现这个目标。在开始前,先了解一下 Linux 文件系统,为下一步作铺垫。

(Linux 文件系统)

如果你刚接触 Linux 系统,可能就很难弄清楚 Linux 如何引用文件和目录,对已经习惯 Microsoft Windows 操作系统方式的人来说更是如此。在继续探索 Linux 系统之前,先了解一下它的布局是有好处的。

你将注意到的第一个不同点是,Linux 在路径名中不使用驱动器盘符。在 Windows 中,PC 上安装的物理驱动器决定了文件的路径名。Windows 会为每个物理磁盘驱动器分配一个盘符,每个驱动器都会有自己的目录结构,以便访问存储其中的文件。

举个例子,在 Windows 中经常看到这样的文件路径:

复制代码
c:\Users\Rich\Documents\test.doc

这种 Windows 文件路径表明了文件 test.doc 究竟位于哪个磁盘分区中。如果你将 test.doc 保存在闪存上,该闪存由 J 来标识,那么文件的路径就是 J:\test.doc。该路径表明文件位于 J 盘的根目录下。

Linux 则采用了一种不同的方式。Linux 将文件存储在单个目录结构中,这个目录被称为虚拟目录(virtual directory)。虚拟目录将安装在 PC 上的所有存储设备的文件路径纳入单个目录结构中。

Linux 虚拟目录结构只包含一个称为(root)目录的基础目录。根目录下的目录和文件会按照访问它们的目录路径一一列出,这点跟 Windows 类似。

窍门 你将会发现 Linux 使用正斜线(/)而不是反斜线(\)在文件路径中划分目录。在 Linux 中,反斜线用来标识转义字符,要是用在文件路径中的话会导致各种各样的问题。如果你之前用的是 Windows 环境,就需要一点时间来适应。

在 Linux 中,你会看到下面这种路径:

复制代码
/home/Rich/Documents/test.doc

这表明文件 test.doc 位于 Documents 目录,Documents 又位于 rich 目录中,rich 则在 home 目录中。要注意的是,路径本身并没有提供任何有关文件究竟存放在哪个物理磁盘上的信息。

Linux 虚拟目录中比较复杂的部分是它如何协调管理各个存储设备。在 Linux PC 上安装的第一块硬盘称为根驱动器。根驱动器包含了虚拟目录的核心,其他目录都是从那里开始构建的。

Linux 会在根驱动器上创建一些特别的目录,我们称之为挂载点(mount point)。挂载点是虚拟目录中用于分配额外存储设备的目录。虚拟目录会让文件和目录出现在这些挂载点目录中,然而实际上它们却存储在另外一个驱动器中。

通常系统文件会存储在根驱动器中,而用户文件则存储在另一驱动器中,如图 3-2 所示。

Linux命令行与shell脚本编程大全(3rd ed)(23):基本的bash shell命令 3.4&3.4.1

图 3-2 Linux 文件结构

图 3-2 展示了计算机中的两块硬盘。一块硬盘和虚拟目录的根目录(由正斜线 / 表示)关联起来。剩下的硬盘就可以挂载到虚拟目录结构中的任何地方。在这个例子中,第二块硬盘被挂载到了 /home 位置,用户目录都位于这个位置。

Linux 文件系统结构是从 Unix 文件结构演进过来的。在 Linux 文件系统中,通用的目录名用于表示一些常见的功能。表 3-3 列出了一些较常见的 Linux 顶层虚拟目录名及其内容。

表 3-3 常见 Linux 目录名称

目录 用途
/ 虚拟目录的根目录。通常不会在这里存储文件
/bin 二进制目录,存放许多用户级的 GNU 工具
/boot 启动目录,存放启动文件
/dev 设备目录,Linux 在这里创建设备节点
/etc 系统配置文件目录
/home 主目录,Linux 在这里创建用户目录
/lib 库目录,存放系统和应用程序的库文件
/media 媒体目录,可移动媒体设备的常用挂载点
/mnt 挂载目录,另一个可移动媒体设备的常用挂载点
/opt 可选目录,常用于存放第三方软件包和数据文件
/proc 进程目录,存放现有硬件及当前进程的相关信息
/root root 用户的主目录
/sbin 系统二进制目录,存放许多 GNU 管理员级工具
/run 运行目录,存放系统运作时的运行时数据
/srv 服务目录,存放本地服务的相关文件
/sys 系统目录,存放系统硬件信息的相关文件
/tmp 临时目录,可以在该目录中创建和删除临时工作文件
/usr 用户二进制目录,大量用户级的 GNU 工具和数据文件都存储在这里
/var 可变目录,用以存放经常变化的文件,比如日志文件

常见的目录名均基于文件系统层级标准(filesystem hierarchy standard,FHS)。很多 Linux 发行版都遵循了 FHS。这样一来,你就能够在任何兼容 FHS 的 Linux 系统中轻而易举地查找文件。

说明 FHS 偶尔会进行更新。你可能会发现有些 Linux 发行版仍在使用旧的 FHS 标准,而另外一些则只实现了部分当前标准。要想保持与 FHS 标准同步,请访问其官方主页: http://www.pathname.com/fhs

在登录系统并获得一个 shell CLI 提示符后,会话将从主目录开始。主目录是分配给用户账户的一个特有目录。用户账户在创建之后,系统通常会为其分配一个特有的目录(参见第 7 章)。

可以使用图形界面在虚拟目录中跳转。要想在 CLI 提示符下切换虚拟目录,需要使用cd命令。

评论

发布