认识linux之 Linux Shells简介( 五 )


3. 命令历程(command history) 。BASH shell 加入了C shell 所提供的命令历程功能 , 它以 history 工具程序记录了最近您执行过的命令 。命令是由 1 开始编号 , 默认值为500 。history 工具程序是一种短期记忆 , 记录您最近所执行的命令 。要看看这些命令 , 您可以在命令列键入 history , 如此将会显示最近执行过之命令的清单 , 并在前方加上编号 。
这些命令在技术上每个都称为一个事件 。事件描述的是一个已经采取的行动(已经被执行的命令) 。事件是依照执行的顺序而编号 , 越近的事件其编号码越大 , 这些事件都是以它的编号或命令的开头字符来辨认的 。history 工具程序让您参照一个先前发生过的事件 , 将它放在命令列上并允许您执行它 。最简单的方法是用上下键一次放一个历程事件在您的命令列上;您并不需要先用 history 显示清单 。按一次向上键会将最后一个历程事件放在您的命令列上 , 再按一次会放入下一个历程事件 。按向下键则会将前一个事件放在命令列上 。
4. 命令列编辑程序 。BASH shell 命令列编辑能力是内建的 , 让您轻松地在执行之前修改您输入的命令 。若是您在输入命令时拼错了字 , 您不需重新输入整个命令 , 只需在执行命令之前使用编辑功能纠正错误即可 。这尤其适合于使用冗长的路径名称当作参数的命令时 。命令列编辑作业是 Emacs 编辑命令的一部份 。您可以用 Ctrl-F 或向右键往前移一个字符 , Ctrl-b 或向左键往回移一个字符 。Ctrl-d 或DEL 键会删除光标目前所在处的字符 。要增加文字的话 , 您只需要将光标移到您要插入文字的地方并键入新字符即可 。无论何时 , 您都可以按 ENTER 键执行命令 。
5. 允许使用者自订按键 。
6. 提供更丰富的变量型态、命令与控制结构至 shell 中 。
bash 与tcsh 一样可以从许多网站上免费下载 , 它们的性质也十分类似 , 都是整合其前一代的产品然后增添新的功能 , 这些新增的功能主要都着重在强化 shell 的程序设计能力以及让使用者能够自行定义自己偏好的作业环境 。除了上述的五种 shell 之外 , zsh 也是一个广为UNIX 程序设计人员与进阶使用者所采用的 shell , zsh 基本上也是 Bourne shell 功能的扩充 。
Shell 的使用
不论是哪一种Shell , 它最主要的功用都是解译使用者在命令列提示符号下输入的指令 。Shell 语法分析命令列 , 把它分解成以空白区分开的符号(token) , 在此空白包括了跳位键(tab)、空白和换行(New Line) 。如果这些字包含了metacharacter , shell 将会评估(evaluate)它们的正确用法 。另外 , shell 还管理档案输入输出及幕后处理(background processing) 。在处理命令列之后 , shell 会寻找命令并开始执行它们 。
Shell 的另一个重要功用是提供个人化的使用者环境 , 这通常在 shell 的初始化档案中完成(.profile、.login、.cshrc、.tcshrc 等等) 。这些档案包括了设定终端机键盘和定义窗口的特征;设定变量 , 定义搜寻路径、权限限、提示符号和终端机类形;以及设定特殊应用程序所需要的变量 , 例如窗口、文字处理程序、及程序语言的链接库 。Korn shell 和 C shell 加强了个别化的能力:增加历程、别名、和内建变量集以避免使用者误杀档案、不慎签出、并在当工作完成时通知使用者 。
Shell 也能当解译性的程序语言(interpreted programing language) 。Shell 程序 , 通常叫做命令文件 , 它由列在档案内的命令所构成 。此程序在编辑器中编辑(虽然也可以直接在命令列下写作程序, online scripting) , 由 UNIX 命令和基本的程序结构 , 例如变量的指定、测试条件、和循环所构成 。您不需要编译 shell 命令 。Shell 本身会解译命令档中的每一行 , 就如同由键盘输入一样 。shell 负责解译命令 , 而使用者则必须了解这些命令能做什么 。这本书的索引列出了一些有用的命令和它们的使用方法 。

推荐阅读