对话 UNIX:第 2 部分: 做得多不如做得巧( 四 )


清单 5. 范围符号
$ echo AUTHORS COPYING INSTALL MacHINES
AUTHORS COPYING INSTALL MACHINES
$ echo !!:1-2
echo AUTHORS COPYING
AUTHORS COPYING
还有其他的更直接的方法可以用来再次调用历史命令 。其中一种方法是搜索历史命令:
$ ls I*
$ ls M*
$ echo !?M
ls INSTALL
结构 !?M 寻找最近的包含大写字母 M 的历史命令行 。
环境变量
流畅地表达命令行 任务 , 这是一种基本的 Unix 技能 。但是与 UNIX 进行对话不仅仅只是使用 Shell 提示符 , 您还必须与各种各样的 UNIX 实用工具进行通信 。在 UNIX 中 , 环境变量保存了 Shell 中的相关设置 , 并允许您将首选项传播到从命令行启动的所有实用工具中 。
有些环境变量称为 Shell 变量 , Shell 仅使用这些变量控制其自身的行为 。例如 , 只有 Z Shell 使用 $HISTSIZE 和 $SAVEHIST 管理命令历史 , 如上所述 。可以将 Shell 变量看作相应的设置 。
需要对其他的环境变量进行导出、或使得它们全局可用 , 并将它们复制到从命令行中启动的每个命令的进程空间(即环境) 。例如 , $HOME 是一个特殊的环境变量 , 它保存了您的 home 目录的位置 。UNIX 登录序列将设置 $HOME(以及其他的环境变量) , 然后启动 Shell , 而 Shell 反过来使用 $HOME 查找所有的 Shell 启动文件 。您所启动的其他应用程序 , 如 SSH 和 FTP , 引用 $HOME 查找 .netrc 文件(用于存储机密的、远程访问的密码) 。有些环境变量 , 如 $HOME、$PATH 和 $SHELL , 会被所有应用程序使用 。其他的环境变量可能专门针对某个应用程序 。
要查看当前所有的环境变量 , 可以输入 printenv , 如清单 6 所示 。(根据系统管理员对系统所进行的配置 , 您系统中的环境变量可能会比本文中所介绍的更多或更少 。)
清单 6. 查看环境变量
$ printenv
PATH=/Users/strike/bin:/Applications/xampp/xamppfiles/bin:/Users/strike/bin:/usr/bin:/
bin:/usr/sbin:/sbin
HOME=/Users/strike
SHELL=/bin/zsh
USER=strike
TERM=xterm-color
LOGNAME=strike
SHLVL=1
PWD=/Local/src/versions/wget/wget-1.9
OLDPWD=/Local/src/versions/wget/wget-1.9/src
PERL5LIB=/Applications/xampp/xamppfiles/lib/perl5/site_perl/5.8.7:/Projects/IGSP/src
CLICOLOR=true
MANPATH=/Local/root/share/man:/usr/share/man:/opt/local/share/man
INFOPATH=/opt/local/share/info
LESS=-n
您可能认识其中大多数的变量 , 而其他一些可能是新出现的 。Shell 级别($SHLVL)显示您所处的 Shell 的深度 。1 表示登录 Shell , 2 表示您从登录 Shell 中启动了另一个 Shell , 依此类推 。您可以使用 $SHLVL 的值来更改后续 Shell(嵌套 Shell)的提示符 。$TERM 反映了您的终端(可能是终端模拟程序)设置 , 对于确保正确地呈现文本、颜色以及对按键进行正确的解释 , 这是非常重要的信息 。$PWD 是您的当前工作目录 , 而 $OLDPWD 是上一次的工作目录 。您可以使用这两个变量实现在两个目录之间的快速切换 , 如清单 7 所示 。
清单 7. 在目录之间进行切换
$ echo $PWD
/Users/strike
$ echo $OLDPWD
/Local/src/versions/wget/wget-1.9
$ cd $OLDPWD
$ echo $PWD
/Local/src/versions/wget/wget-1.9
$ echo $OLDPWD
/Users/strike
上面列表中剩下的环境变量都是应用程序特定的 。每个环境变量保存了相应的首选项设置 , 当您启动了与之关联的应用程序后 , 它可以用于控制该应用程序的工作方式 。$PERL5LIB 是 Perl 查找自定义库的搜索路径 。ls 命令使用 $CLICOLOR 通过不同的颜色呈现不同类型的文件(目录为蓝色、可执行文件为绿色 , 等等) 。程序的 man 页面中通常包含对自定义应用程序环境变量的说明 。

推荐阅读