对话 UNIX: 第 10 部分,定制您的 Shell

如果您使用某种工具的时间足够长,那么您就会很清楚它的用途 。而且,这种工具将成为您的扩展 。可以考虑 Gustav Klimt 的画笔、Louis Armstrong 的小号和 Mark Twain 的文字表达能力 。如果您是一位艺术品鉴赏家,您的“交易工具可以毫不费力地引导您的意图、精神、以及对媒介的表达 。
到目前为止,我希望您已经掌握了 Unix?的基本技能 。您能够使用各种命令行技巧 。当渴望获得相关知识的时候,您将向无所不知的专家 请教 。并且您熟练地掌握了命令的组合,可以对数据进行复杂的操作 。您在命令行方面游刃有余,对于 Shell 也非常娴熟 。
下面的学习过程将指导你配置一个你自己的shell环境 。
功能强大的 Shell
您已经了解了许多用以自定义您的 Shell 环境的技术:
您可以选择希望使用的 UNIX Shell 。Bourne Shell 是非常可靠的;而其他的 Shell,如 Z Shell,提供了一些新奇的思想和便利的方法,而您将发现这些都是很有帮助的 。要了解您的 UNIX 系统中可用的 Shell,可以使用 cat /etc/shells 命令 。要将您的 Shell 更改为所列出的任何 Shell,可以使用 chsh 命令 。以下是更改为 /bin/zsh(即 Z Shell)的一个示例 。(输入粗体显示的文本 。)
$ cat /etc/shells
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
$ chsh -s /bin/zsh
您可以创建简短的别名 以代替冗长的命令 。
环境变量,如 PATH(它用于控制搜索程序的位置)和 TZ(它用于指定您的时区),可以保存您的首选设置,并作用于您所启动的所有的进程 。PATH 是特别有用的 。例如,如果您希望或者需要运行 Perl 的本地增强版本,那么您可以将 PATH 更改为 /usr/local/bin/perl,以代替在 /usr/bin/perl 中找到的(典型的)标准版本 。
Unix 应用程序也经常使用环境变量进行自定义 的工作 。例如,如果您的终端(或模拟器)允许,那么您可以使用环境变量 CLICOLOR 和 LSCOLORS 为 ls(列出目录的内容)的输出定制颜色 。
您可以通过 Shell 内置的命令历史,保留并且重新调用这些命令行 。命令历史保存了输入的内容,允许您再次运行一个以前的命令 。许多 Shell 还允许动态地修改以前的命令以创建新的命令 。例如,Bash Shell 使用脱字符号(^)字符以执行替换:$ ls -l heroes.txt
-rw-r--r--1 strike strike 174 Mar 1 11:25 heroes.txt
$ ^heroes^villains
ls -l villians.txt
villians.txt
在这个示例中,命令行 ^heroes^villains 看上去有些奇怪,它将前一个命令中的单词 villains 替换为 heroes(如果没有提供命令历史列表中的命令编号,那么这是缺省的行为),并且运行这个结果,即 ls -l villians.txt 。有关命令行替换的语法,可以参考您的 Shell 文档 。
如果现有的 UNIX 实用工具和 Shell 的内置特性中不包含您希望经常使用的某项特性,那么您可以编写 Shell 脚本 以便(再次)执行复杂的操作 。
正如您将在以后的“对话 UNIX文章中看到的,您还可以下载并且构建大量的附加 UNIX 实用工具,通常这些工具以开放源代码的形式提供 。事实上,使用 Google 或者 Yahoo!,您可以在很短的时间内、轻松地找到并下载一个合适的解决方案,而不用自己动手创建 。(这样就可以忙中偷闲!而用多余的时间去看看天上的云彩,好好放松一下 。)
当然,可以通过许多选项对您的 Shell 进行微调,如果可以保持您的首选设置,并且一次又一次地重复使用这些设置,从一个 Shell 到另一个 Shell(比如,在不同的 X 终端窗口中)、在不同的会话中(当您注销登录并再次登录)、甚至跨计算机(假设您在多个平台上使用相同的 Shell),那就太棒了 。

推荐阅读