《我要学Linux操作系统》学习参考-第六章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

我要学Linux操作系统第6章RedHatLinux9的shell程序6.1shell简介6.2创建和执行shell程序6.3shell环境变量及设置文件6.4shell脚本编程6.5shell程序跟踪的原意是外壳,用来形容物体外部架构。各种操作系统都有自己的shell,在DOS系统中,它的shell就是command.com程序,而Windows操作系统的程序shell是explorer.exe程序。与Windows等操作系统不同,Linux系统中将shell独立于操作系统核心程序之外,使得用户可以在不影响操作系统本身的情况下进行修改,更新版本或添加新的功能。第6章RedHatLinux9的shell程序程序,介于用户和操作系统内核(Kernel)之间,负责将用户的命令解释成操作系统可以接受的指令,然后由操作系统来执行这些指令,并将操作系统执行的结果以用户可以了解的方式反馈给用户。6.1.1shell及shell编程在Linux系统中,shell是操作系统的外壳,为用户提供使用操作系统的接口,它是命令语言、命令解释程序和程序设计语言的统称。shell是用户和操作系统之间的一个接口。用户在命令提示符下输入的每个命令都首先由shell程序进行解释,然后再传给Linux内核的。6.1shell的简介6.1.1shell及shell编程是一个命令解释器。它拥有自己内建的shell命令集,可以用它来启动、挂起、停止一些程序。此外shell也能被系统中的其他有效的Linux应用程序所调用。shell还是一个解释型的程序设计语言。shell程序设计语言支持绝大多数高级程序设计语言中常用的元素,比如函数、变量、数组和控制结构。shell编程简单易学,在任何命令提示符中能键入的命令都可以在shell程序中使用。而且一旦掌握,它将成为工作中的得力工具。和DOS和Windows不同,Linux提供了多种shell程序供用户选择使用,使用不同类型shell的原因是它们都有各自的特点。一般某个用户登录系统时的shell都在/etc/passwd6.1shell的简介6.1.1shell及shell编程文件的最后一个字段中定义,用户可以通过修改该字段来替换其使用的shell。另外,用户在文本模式下登录系统后,Linux的初始化程序initd就会为每个用户启动一个shell,可以使用“Alt+F1~F6”来获取shell提供的多个虚拟控制台,使用虚拟控制台的最大好处就是,当一个虚拟控制台上的程序由于出错给锁住输入时,用户可以进入另一个虚拟控制台,然后杀死该进程。如果系统使用了XWindow的图形模式,那么虚拟终端的切换就要使用“Ctrl+Alt+F1~F6”。6.1shell的简介6.1.1shell及shell编程中,用户可以选择使用多种不同类型的shell。在RedHatLinux9的/etc/shells文件中,列出了目前系统可以使用的shell。并且给出了这些shell程序的位置。具体如下图所示。6.1shell的简介6.1.2bashRedHatLinux9中的shell(sh)、Cshell(csh)、Ashshell(ash)、Kornshell(ksh)和BourneAgainshell(bash)等。每种shell都有自己的特点,一般的Linux系统默认使用bash。1.bash简介Bourneshell是最早被大量使用及标准化的shell,几乎所有的Linux都支持它。它是由贝尔实验室开发的,由于开发者是StevenBourne,所以被命名为“Bourneshell”。BourneAgainshell(bash)是Bourneshell的扩展,与Bourneshell完全兼容,并且在其基础上增加和增强了很多功能。其中包括了很多csh和ksh的优点。bash不仅有非常灵活和强大的编程接口,同时又有非常友好的用户界面。它内建40个shell命令和12个命令行参数。目前bash6.1shell的简介6.1.2bash,RedHatLinux9也默认使用bash。bash有许多特色,可以使用方向键查阅以前输入的命令,即history功能。可以对命令行进行编辑,甚至可以在忘记了命令名时请求shell通过命令行补齐进行帮助,方法就是在敲入命令的一部分时,再按下Tab键即可。例如,在命令行提示符下输入ls,再按下“Tab”键,bash会帮助用户列出所有以“ls”打头的命令名,供用户选择。如图下所示。6.1shell的简介6.1.2bashbash的命令行补齐也内建了帮助功能,可以给出所有内建命令和每个系统命令的帮助信息。可以使用“help命令名”的方法获得指定命令的帮助信息。在RedHatLinux9中环境表变量SHELL记录了系统当前使用的shell程序的名称,可以通过返回环境变量SHELL的值来查看当前系统使用的shell程序,如图下所示。6.1shell的简介6.1.2bash查看系统当前的shell.bash的功能shell是操作系统的外壳。RedHatLinux9中默认使用的shell是bash,它为用户提供使用操作系统的接口,承担着用户与操作系统内核之间进行沟通的任务。除此之外,bash程序还兼备如下的功能:1)交互式处理从用户登录系统开始,shell程序就是在系统终端中显示不同的命令行提示符(root用户登录系统则提示符显示“#”,普通用户登录则显示“$”),然后等待用户输入命令。在接收来自用户输入的命令后,bash会根据命令的不同的类型(包括程序或shell内置命令)来执行,在执行完毕后,bash将结果回传给用户,并且再次回到命令提示符,以等待用户的下一次输入。这种模式会一直继续下去,直6.1shell的简介6.1.2bash来注销,bash才会结束,bash的这种与用户沟通的方式称为“交互式处理”。2)命令补全功能所谓“命令补全”是指在用户输入命令的时候,无需输入完整的命令行,Linux系统的shell会自动查找出最符合的命令名称,供用户选择。这样的功能可以帮用户节省输入长串命令的时间。例如,在/root目录下有一个testexecvp.c文件,如果想查看其中的内容,并不需要完整输入该文件的名称,而只要输入开头的几个字母,即输入“more/root/teste”,然后按下Tab键一次,Linux的bash会自动补足完整的命令(more/root/testexecvp.c)。6.1shell的简介6.1.2bash另一种情况就是,如果系统中有多个文件都与输入的前缀相同,那么当用户连续按下2次Tab键时,系统会显示当前目录下所有具有相同前缀的文件名称,供用户选择。例如,输入“moretest”后按2次Tab键,结果如图下所示。6.1shell的简介6.1.2bashbash的补齐功能的补全功能,不但方便,而且可以避免由于用户输入错误的路径而执行错误的程序。3)查阅历史记录—history命令在RedHatLinux9中,每当用户输入的命令并按下Enter后,都会被记录在命令记录表中,默认情况下,bash默认使用的命令记录表文件为用户主目录下的.bash_history(文件名前面的“.”表示这是一个隐藏文件)文件。可以使用环境变量HISTSIZE来定义命令记录表的条数,默认的记录条数为1000条。6.1shell的简介6.1.2bash文件,或使用history命令来查看目前的命令记录。如下图所示。6.1shell的简介6.1.2bashbash的补齐功能命令可以列出完整的系统在该用户登录时执行过的所有命令,并以命令执行的先后顺序列出记录的号码。如果要查看最近执行的命令,则可以使用“historyn”命令,其中,n表示需要查看的最近执行的命令的条数。如下图所示,列出系统最近执行的10条命令。6.1shell的简介6.1.2bash查看最近的10条命令记录功能提供了一种执行命令的最快的方法,就是使用命令记录号码。在RedHatLinux9的命令记录中,每条用户执行过的命令都会被赋一个记录号码,用户可以利用这些记录号码来执行指定的要执行的旧命令。其语法如下:!记录号例如,要执行478条记录标记的命令,可以在命令行提示符下执行如下:[root@myhostroot]#!478结果如右图所示。6.1shell的简介6.1.2bash使用!执行命令)别名(alias)功能Linux中的别名功能是指提供给用户使用自定义的简单字符串,来替换复杂的命令选项,或是替换连续多个命令的连续组合的功能,从而使得用户可以自定义符合自己习惯的操作命令。例如,对于熟悉DOS和Windows的用户来说,dir命令可以方便地显示当前目录的内容,但是在Linux中完成该功能的命令是“ls–l”。如果希望使用dir来代替ls–l,则可以使用alias功能来创建一个到ls–l的别名,如下图所示。6.1shell的简介6.1.2bashbash的alias功能系统中使用的别名命令,可以直接输入“alias”命令。如果需要取消特定的别名命令,可以使用unalias命令。例如,取消dir别名命令可使用如下命令。[root@myhostroot]#unaliasdir使用alias命令查看并取消别名命令的结果如下图所示。6.1shell的简介6.1.2bash查看并取消别名命令)后台处理Linux是多用户多任务的操作系统,它允许多个用户同时登录系统,也允许多个程序同时执行。但因为shell使用交互式模式,目前执行的命令会一直掌握系统的控制权,直到该程序结束为止,这类程序称为前台程序(Foreground)。shell采用的这种前台程序接管系统控制权的模式,使得个别用户无法使用Linux提供的多任务功能来增加效率,因此,shell提供了后台处理功能来解决上述问题。6.1shell的简介6.1.2bash通常,Linux后台运行的都是比较耗时的程序,如编译核心或是下载Linux的安装文件等,但是后台任务在执行期间,用户仍然可以和shell继续交互,以下达其他的命令。要在RedHatLinux9中要执行后台程序,只要在输入命令的时候,在命令后面加上“&”符号。系统就会开始以后台的方式执行该命令,屏幕将显示该后台运行程序的进程PID,然后shell将回到命令提示符状态,以等待用户的下一个命令的输入。例如,将top命令投入后台运行。如下图所示。6.1shell的简介6.1.2bash后台运行top当前某个任务在前台运行之后,就无法使用“&”将它投入后台运行,但是可以先使用“Ctrl+z”组合键暂停该程序,然后在命令提示符下输入“bg”命令,即可将该任务投入后台执行。如果要查看目前系统中正在运行的后台程序,可以使用jobs命令。6)输入/输出重定向在Linux系统中,标准输入和输出有3种形态:标准输入(stdin):通常是指键盘。标准输出(stdout):通常是指将命令执行的结果输出到终端机或屏幕上。标准错误输出(stderr):是指在命令发生

1 / 81
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功