对话 UNIX,第 13 部分: 另外十种命令行组合( 四 )


因为子 Shell 有许多用途,所以与组合或者反勾号操作符相比,您可能更喜欢使用它 。
不再输入长路径名
有些特性,如 PATH 和 MANPATH 环境变量,可以减少输入工作量 。这两个变量分别为搜索可执行文件和 man 页面定义了一系列目录 。
Shell 支持另一个搜索路径:CDPATH 。顾名思义,CDPATH 列出了搜索命名目录的目录列表 。让我们看看它是如何工作的 。
假设您的 home 目录中有三个目录,它们分别是 tomb、current 和 personal 。tomb 目录中包含旧的工作项目;current 目录中包含当前工作的内容;而 personal 目录中包含您所感兴趣的一些文件和内容 。执行 ls -R tomb current personal 命令可以得到与下面所示类似的内容:
$ ls -R tomb current personal
current:
./../einstein/ herbIE/
personal:
./../ fishing/ novel/
tomb:
./../ mariner/ marvin/ voyager/
对于这种结构,如果不使用 CDPATH,要更改到任何目录都需要记住文件夹的位置,并输入完全限定的(或者相对的)路径名:
$ cd ~/tomb/mariner
$ cd ~/personal/novel
$ cd ~/current/einstein
为了简化这项任务,可以将 CDPATH 设置为您所需要的搜索命名目录的目录列表:
$ export CDPATH=.:~/:..:../..:
这是 CDPATH 的最小设置 。它将按顺序搜索当前目录(.,或者“点)、您的 home 目录 (~/)、父目录(..,或者“点点)、父目录的父目录目录 (../..) 。最小设置首先搜索本地目录以及附近的一些目录 。
在设置了这个 CDPATH 之后,您可以快速地更改到任何顶层目录:
$ pwd
/tmp
$ cd current
/home/strike/current
$ cd personal/fishing
/home/strike/personal/fishing
$ cd novel
/home/strike/personal/novel
$ cd /tmp
$ cd personal/novel
/home/strike/personal/novel
$ cd /tmp
$ cd novel
cd: no such file or Directory: novel
除最后一个 cd 命令之外,所有命令的参数都在 CDPATH 中存在匹配的目录 。然而,因为 personal 目录不在 CDPATH 中,所以无法找到 novel(如果您位于相对路径之外) 。
如果您希望搜索 personal 目录和其他的两个目录,那么可以将它们添加到 CDPATH 的最后一个冒号的后面,或者根据您所需要的搜索顺序进行添加 。添加三个目录,假设您的 Shell 启动文件中包含前面的 export 命令:
$ export CDPATH=$CDPATH:~/current:~/tomb:~/personal
现在,您只需要输入希望切换到的目录的名称即可:
$ cd current
/home/strike/current
$ cd /tmp
$ cd einstein
/home/strike/current/einstein
$ cd fishing
/home/strike/personal/fishing
$ cd personal/novel
/home/strike/personal/novel
与 PATH 和 MANPATH 一样,如果 CDPATH 中的多个条目都包含匹配项,那么在找到第一个匹配项后将停止搜索 。例如,如果您向 tomb 中添加一个名为 novel 的目录,那么 cd novel 命令将得到 ~/tomb/novel 。
$ mkdir ~/tomb/novel
$ cd /tmp
$ cd novel
/home/strike/tomb/novel
$ cd personal/novel
/home/strike/personal/novel
如果其条目中包含唯一的目录名,那么 CDPATH 是最有效的 。否则,必须输入足够长的路径以进行区别,比如 personal/novel 。
取得事半功倍的效果
您已经看到了许多示例,说明文本文件在 Unix 系统中有着广泛的用途 。大多数系统启动文件都是文本文件,包括 Shell 脚本、配置文件,当然还包括数据文件 。除了文本编辑器之外,最有价值的实用工具就是翻页工具 (pager)、或者允许您逐页浏览文本文件的应用程序 。
应用程序 less 是最常用的翻页工具之一,并且它提供了大量的选项以调整它的行为 。事实上,您可以将 LESS 环境变量设置为相关选项的列表,以便控制 less 的缺省工作方式 。下面是一组有用的选项:

推荐阅读