首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

2.3  shell

如果工作在文本(非图形)界面下,或者是工作在图形界面下使用终端模拟窗口,那么,shell将作为命令解释器运行。由shell来显示提示符,当输入命令后,shell执行该命令并显示另一个提示符。

本节将介绍如何识别正在使用的shell和如何校正命令行上的错误。其中,将讲述如何退出一个正在运行的命令和如何编辑命令行。本书的许多章都介绍了shell:第5章引入shell,第8章介绍bash和部分TC Shell的内容,第9章专门介绍TC Shell,第11章介绍如何使用bash编写程序(或者称为shell脚本)。

2.3.1  识别当前运行的是哪种shell

shell存在很多种,如bash、tcsh(TC Shell)、zsh(Z Shell)等。本书将讨论bash和tcsh。通过ps工具可识别出正在运行的shell。在shell提示符后输入ps,然后按下RETURN键,如下所示:

$ ps

PID TTY         TIME CMD

2402 pts/5   00:00:00 bash

7174 pts/5   00:00:00 ps

这个命令的执行结果表明系统正在运行两个工具或者说是两个命令:bash和ps。如果其他shell正在运行,那么ps会显示其名称。如正在运行的是tcsh,那么ps就显示tcsh而不是bash。

2.3.2  校正错误

本节主要介绍如何校正通过字符界面登录时出现的错误(如拼写错误)。由于shell在按下RETURN键之前,将不对命令行和其他文本进行解释,所以,可在按下RETURN键之前校正输入错误。

校正输入错误有很多种方式:一次删除一个字符,一次删除一个单词,或者一次删除整个命令行。一旦按下RETURN键,就不能再对错误进行校正了,只能等待命令的运行结束或者终止程序的执行。

1. 删除字符

当从键盘输入字符时,可以通过按下删除键来删除错误输入的每一个字符。使用删除键想删除多少字符就可删除多少,但一般不会到达一行的首字符(提示符)之前。

默认的删除键为BACKSPACE键。如果此键不能奏效,可试一试DELETE键或者CONTROL+H组合键。如果这些键都不起作用,可使用下面的命令来设定自己的字符删除键和行删除键(参见第2.3.2节中的“删除行”部分)。

$ stty ek

更改字符删除键的更多信息可参见第Ⅴ部分命令stty的“示例”一节。

 

用CONTROL+Z挂起程序 

提示

按下程序挂起键(通常是CONTROL+Z组合键),虽然不能纠正错误,但可将程序挂起,这时屏幕会显示一段包含stopped单词的消息,表示通过作业控制功能刚才运行的作业将被停止。通过输入命令fg可再把此作业切换到前台,这样该作业便可从挂起的地方继续运行。更多信息参见第8.2.6节中的“bg:将作业移到后台运行”部分。

2. 删除单词

通过按下CONTROL+W组合键可删除一个单词。此处的单词是指不包含空格和TAB的连续字符序列。当按下CONTROL+W组合键后,光标将移动到当前单词(如果当前正处于输入单词状态)或前面一个单词(如果在按下组合键前输入的是空格或TAB键)的起始处左端,光标所经过的单词将被删除。

3. 删除行

在按下RETURN键之前,通过按下行删除键即可将一行删除。当按下行删除键后,光标将往左端移动,一直到达行开始处,其经过的字符将被删除。默认的行删除键为CONTROL+U,如果此键不起作用,可试一试CONTROL+X键。如果这些键都不起作用,可以通过输入下面的命令来设置字符删除键和行删除键。

$ stty ek

更改行删除键的更多信息可参见第Ⅴ部分的第14.71节中的“示例”一节。

4. 终止执行

有时,用户可能希望终止正在运行的某个程序。例如,当Linux执行一个很耗时的任务,如显示一个有几百页内容的文件或者复制一个本不想复制的文件时,用户可能希望终止此任务。

在字符界面下终止一个程序,可通过按下中断键(通常是CONTROL+C,有时是DELETE或DEL键)来实现。当按下此键后,Linux操作系统会向正在运行的程序和shell发送终端中断信号。此信号产生的效果与程序有关。有些程序立即停止执行,有些程序则忽略此信号,还有些程序将采取一些其他的动作。当shell收到了终端中断信号后,就显示提示符以等待另一个命令的输入。有关更改程序终止键的更多信息请参见第Ⅴ部分的第14.71节中的“示例”一节。

如果上述方法不能终止程序,可尝试使用程序挂起键(通常是CONTROL+Z)来停止程序的运行。输入jobs命令可得到程序对应的作业号(显示在行左端的中括号内,如[1]),然后使用kill来终止此程序。kill命令根据其后的参数向对应的作业发送信号。注意,作业号之前要加百分号%(如%1),如下所示:

$ bigjob

^Z

[1]+  Stopped            bigjob

$ jobs

[1]+  Stopped            bigjob

$ kill %1

[1]+ Stopped             bigjob

$ RETURN

[1]+   Killed            bigjob

默认情况下,kill发送的是软件终止信号(-TERM),如果此信号不起作用,可使用-KILL信号。如下所示:

$ kill –KILL %1

任何正在运行的程序都不能忽略kill信号,因为此信号能强制程序退出。kill命令返回一个提示符,若再次按下RETURN键则可看到确认消息。更多关于作业控制的信息可参见第5.3节。信号列表如表11-5所示。

5. 重复/编辑命令行

按下方向键中的向上键,在命令行上可得到前一个命令。重复按下此键,就会看到更前面的一些命令。然后,按下RETURN键就可再次执行这些命令。若按方向键中的向下键,就可向下浏览命令行。

方向键中的左右键用来移动命令行上的光标。通过这两个键,可在命令行的任意位置增加一个字符,或者使用删除键删除一个字符。

更多关于命令行的复杂编辑:bash可参见第8.5.2一节,tcsh可参见第9.5.2节。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论