ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:187.72KB ,
资源ID:11799772      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11799772.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第07章 shell的基础知识167203.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第07章 shell的基础知识167203.docx

1、第07章 shell的基础知识167203第7章shell的基础知识目标完成此章学习后,你将掌握下列内容: 描述shell的作用。 描述某用户登录时发生的事情。 描述用户环境的参数及其功能。 设置和修改shell参数。 理解并能修改特定的环境参数,如PATH和TERM。 配置用户环境,使之能够配合某特定的应用程序。7.1什么是shell注释shell作为程序,是一个具有交互性的命令行解释器。它独立于操作系统。这种设计思路使用户可以灵活地选择最适合用户要求的接口。shell的作用在于等你键入命令、执行一些特定的功能,然后将经它解释的命令传到操作系统(内核)执行。本章内容将介绍POSIX shel

2、l的交互性特点。POSIX shell不仅仅执行用户的命令,还通过与用户交互,完成其他功能,且大多数功能在执行用户命令之前就完成了。shell的功能如下: 搜索命令并执行相关的程序。 将shell未指定数值的变量的值替换为shell变量的值。 对命令进行替换。 用文件名生成字符补齐文件名。 控制I/O重定向和管道。 提供解释性的编程接口,包括测试、分支和循环。当你登录到UNIX系统时,shell会先为你的终端会话过程定义一些特定的特征,然后显示你的提示符。这个提示符在POSIX、Bourne和 K shell中被默认为一个$ 符号。C shell的默认提示符是一个百分比符号(%)。7.2常用的

3、shell注释POSIX是一个遵从POSIX标准的命令编程语言和命令解释器,位于/usr/bin/sh。它可以执行从终端和文件中读来的命令。这个shell能够和当前的POSIX标准保持一致,在HP-UX面世时这个标准已被人们所采用。POSIX shell在很多方面与Korn shell相似。它支持历史命令、作业控制,还有其他多种有用的功能。Korn shell是一个命令编程语言和命令解释器,位于/usr/bin/ksh。它可以执行从终端和文件中读来的命令。与POSIX shell相似,它也支持历史命令、作业管理,还有其他多种有用的功能。Korn shell由AT&T Bell实验室的David

4、 Korn开发而成。Bourne shell是一个命令编程语言和命令解释器,位于/usr/old/bin/sh。它可以执行从终端和文件中读来的命令。这个shell缺少许多POSIX shell 和Korn shell的特征。Bourne shell由Stephen R. Bourne开发,是AT&T UNIX最初采用的shell。C shell是一个命令语言解释器,支持历史命令缓存、类似语言的语法和作业控制。它由加州大学伯克利分校的William Joy开发。rsh和 rksh是Bourne shell和Korn shell相应的限制版。限制版执行环境的功能比一般的shell受到的限制要多。限

5、制版的shell工作起来就像有几个功能不能实现的标准shell。使用限制版shell的用户不能进行以下工作: 修改目录。 重设PATH这个环境变量。 在路径名中使用“/”这个字符。 重定向输出。keyshell是标准shell的扩展版。它提供层次性的软键菜单,为用户写命令行提供上下文相关的帮助。keysh由HP和AT&T开发。各种shell的特征比较见表7-1。表7-1各种shell的特征比较特 征描 述POSIXBourneKornC历史命令命令可以存在缓存中供修改和重复使用是否是是命令行编辑用文本编辑器修改当前或以前的命令行是否是否文件名补齐在命令行自动完成文件名的键入是否是是命令别名用户

6、可以重命名命令,自动包括命令的选项或缩短长命令行是否是是限制版一个安全性特征,其环境的功能受到限制是是是否作业控制跟踪和访问在后台运行的进程是否是是7.3POSIX shell的特征注释UNIX提供的其中一种shell是POSIX shell。 这个shell具有许多Korn shell拥有但Bourne shell没有的特征。即使你不会用到POSIX shell所有的高级特征,但你会发现它提供了一个非常方便的用户接口。以下是POSIX shell的一小部分特征: 历史命令 命令行恢复和编辑 作业控制 文件名补齐 别名命令 增强的cd 命令用法 高级的编程功能7.4别名化注释别名是命令的一个新

7、名字。使用别名可以缩短长命令行,创建新的命令,用别名命令的功能替换原标准命令的功能从而使标准命令执行起来跟以前不同。别名可以是一个字母或者一个简短的单词。如,许多人常用命令ps ef。其实,用psf更方便。可以用命令alias创建一个别名。$ alias name=string 其中name是命令的别名,string是被指定别名的原命令。如果string有空格,需用括号将其括起来。别名给使用者提供了方便,可以节省键入量、创建新的命令,使系统能够理解并执行常见的键入错误。键入别名命令和键入其他命令看上去是一样的。用户不知道其所执行的命令是UNIX系统的原有命令还是指向UNIX命令的别名命令。sh

8、ell在执行命令之前会扩展这个别名,然后执行最终的命令行。如果用与系统交互的方式设定别名,这个别名将一直保持有效,直到退出系统为止。有些用户发现shell的这种别名特征非常灵活,因此他们使其使用的UNIX系统能辨认出他们在另一个操作系统中常用的命令(如:alias dir=ls或者alias copy=cp -i)。别名常用来节省输入完整的路径名。不带参数的alias会显示所有当前定义的别名。要列出某特定别名的值,用alias name。可以用unalias关闭别名,用法是:unalias name例子在一个命令行上可以使用几个别名,如:$ alias go=cd $ alias there=

9、/home/user3/tree/ford/sports$ go there$ pwd$ /home/user3/tree/ford/sports为了能在一个命令行上引用多个别名,须在定义别名时将最后一个字符设为空格;不然,shell 不会认为下一个词是别名。7.5文件名补齐注释当访问一个带长文件名的文件时,文件名补齐非常方便。当输入的字符足够唯一确定该文件名时,按Esc Esc,这时POSIX shell会补齐文件名剩余的部分。如果提供的字符串还做不到唯一,POSIX shell将无法解析该文件名,这时必须再提供一些信息。出现文件名冲突时,终端会发出鸣叫。只要冲突一消失,shell 就会补齐

10、文件名。可以按Esc = 列出可能选择的文件名。POSIX shell显示可选的文件名后,就可以用编辑器命令补上能唯一标记目标文件名的后续字符,然后按Esc Esc 补齐文件名。文件名补齐可以用在文件名路径的任何地方。如:$ cd tr Esc Esc do Esc Esc r Esc Esc将显示如下结果:$ cd tree/dog.breeds/retriever7.6命令历史注释POSIX shell维护着一个历史文件,该文件存储着曾经输入的命令。也可以重输入这些命令。UNIX系统对历史文件的维护跨越各个登录进程。history命令会显示最近输入的16个命令,每行用命令号开头。当重输入命

11、令时,指定该命令相应的命令号即可。可以显示超过或少于16个的最近输入的命令:history n其中n是要显示的命令数目。可以显示一系列命令号:history a z其中a z 是一个命令号或一系列命令号。HISTSIZE参数定义可以访问历史命令的数目(默认的HISTSIZE值是128)。HISTFILE参数指定的是存储已输入命令的文本文件(默认的HISTFILE是.sh_history)。历史命令列表显示出来后,可以恢复、编辑或者重输入任何其中一个命令。7.7重输入命令注释可以运行命令历史列表中的任何命令,键入:r c其中c是命令号。也可以输入一个命令的首字母,这样会执行以该字母开头的最近输入

12、的命令。如:$ history1 date2 cat file13 ls l$ r dMon Jul 4 10:03:13 19947.8回调命令注释内嵌在UNIX shell的编辑器中,应用最广泛的是vi,这个编辑器的基本功能是用来演示命令行编辑。将在后面的章节中学习vi的详细用法。shell的历史命令机制允许恢复以前输入的命令,这样不用重新键入这个命令行就可以重执行该命令。还可以用vi编辑以前输入的命令行。这些特性可节省大量的键盘输入。如果你不是一个出色的打字员,还可以节省大量的时间和烦恼。为了让vi命令在POSIX shell的历史机制中发挥作用,需要在你的环境中设定EDITOR变量。如

13、果执行了env命令,应该看到下面这行:$ env.EDITOR=/usr/bin/vi如果这个参数还没有设好,执行下列命令设置这个参数:$ EDITOR=/usr/bin/vi$ export EDITOR这两个命令告诉POSIX shell你想用vi编辑器来回调和编辑历史命令。如果想确保每次登录时EDITOR参数已被正确设置,可以将这些命令放在.profile文件中。如果不设定EDITOR变量的值,其默认值是/usr/bin/ed指定的值。要回调前一个命令,只需按Esc。这时还不会看到屏幕有什么反应。按Esc 的作用是将你置身于POSIX shell的vi环境中。这时可以使用许多一般的vi命

14、令。如,按 k 在命令栈中移到后一个命令,继续按 k ,会看到命令行每次显示一个历史命令。同样,如果按 j ,会按相反方向滚动。当看见想重新执行的命令出现在命令行上时,按Return。用history命令可以看到最近16个命令行及其命令号。如果想执行某命令,按Esc n G,n是历史命令列表中的命令行号;G是vi模式中的一个命令,作用是到达某个命令行。7.9命令行编辑注释经常需要回调一个命令,然后重新执行,但首先要做一些小的修改。这时可以先按Esc,然后按 k ,这时回调的是最后一个命令。如果知道该命令的行号,可以先键入命令行号,然后键入G,这样可以回调要执行的命令。如,假定history命令

15、的结果是:120 env121 ls122 cd123 cd /tmp124 pwd125 history如果按 Esc k ,接着键入122G,下面的命令行会被回调:cd在命令栈中定位命令的另一种方法跟以前一样,先按Esc k ,然后按 / pattern。如,按Esc k 进入命令栈后,键入 / cd,可以定位最近的cd命令。如果再键入一个 / ,回调的是倒数第二个cd命令。一旦搜索了一个命令样式后,键入n同样会搜索下一个符合样式的命令。定位到命令后,可以按 Return 执行该命令,或者用下一节介绍的编辑命令进行编辑。如果不想执行这个命令,键入Ctrl + c 取消这个命令。7.10命令

16、行编辑(续)注释当你键完一个很长的命令行时,常会发现在行首有一个错误。这时,你只能按Backspace,重新键入错字后面的内容。POSIX shell可以使你在执行命令之前修改错误和修改命令行的部分内容。这里使用的还是vi的编辑命令。为了修改一个命令行,须按Esc 进入编辑模式。这个模式可以编辑正在键入的命令行和用Esc 和 k 恢复的命令行。如果在编辑模式里,vi命令就可以工作了。如,x可以删除一个字符,h和l可以在一行中左移和右移,cw可以修改一个词,dw 可以删除一个词,等等。用vi命令可以访问命令栈和编辑命令行。这种设计思路的优点是:一旦熟悉了vi命令,就掌握了使用命令栈的必要工具,不

17、必学习另一种接口、另一组命令。用以下vi命令可以编辑命令行:h, Backspace ,l, Space ,w,b,$ 移动光标x,dw,p 删除和粘贴文本r,R,cw 修改文本a,i 进入键入模式(input mode)以添加文本为了能用vi命令访问命令栈,需要设置变量EDITOR=/usr/bin/vi(其他可选的编辑器有gmacs和emacs)。将每个命令行想像为一个微型的vi进程,你在每个命令行头部均处于输入状态。要访问以前输入的命令,调用控制光标上移的vi命令,但在调用vi命令之前必须按 Esc 进入命令状态。这时可以键入上移光标的vi命令 按 k 。连续按多个 k 就上移多个历史命

18、令。当希望运行的命令出现时,仅按Return 键就可以执行这个命令,然后这个命令被追加到你的命令栈中。POSIX shell的主要好处是既可以输入当前的命令,也可以输入以前的命令。没有必要按回格键返回到要修改或重新开始的地方。在输入了一个有小错误的长命令行或者要修改参数时,这个特点尤其有用。出现这个特点之前,必须重新输入整行,或者按Backspace ,然后重敲。基于POSIX shell这个行编辑的特点,可以显示一个以前输入过的命令行,用vi命令对这行进行修改,然后执行。所做的修改可以简单到只改一个字符,也可以广泛到将这个命令的整个参数列表都修改掉。例子$ cp /usr/lib/X11/a

19、pp-defaultsUsage:cp f1 f2 cp -r f1 . fn d1以上的命令原本应该是cd,不是cp。POSIX shell可以修改这行而不用重敲。只是先按Esc,然后按 k ,这个命令行就会重现。按l,移动到cp的p字母处,然后用r命令将p替换为d。此时命令如下:$ cd /usr/lib/X11/app-defaults这时仅仅按一下Return 就可以执行cd命令。如果在编辑命令行过程中存在困难,按一下 Break 就可以取消修改,这时可以回到正常的shell提示符下,这样就可以再试一次。在编辑POSIX shell的命令行时不要使用箭头键。除了使用 h 和 l 键外,

20、还可以使用Backspace 和空格条。字符错位是另一种常见的打字错误。假设输入下面这行, 其中ford 的r 和o写反了。$ cd $ HOME/tree/car.models/frod/sportscd: directory not found可以用以下的步骤修改错误,然后再执行:Esc k 按一次或多次直到显示出目标命令行。 w 按多次直到光标移到frod的f下。 l 光标应该位于frod的r下。 x p 删除r,在o后面粘贴r。Return执行该命令行。7.11用户环境注释环境描述了会话过程的许多内容,其包括以下信息: 主目录的路径名 在哪里存放email 工作的时区 登录的身份 sh

21、ell从哪里搜索命令 终端类型和大小 应用程序所依赖的其他东西例如,命令vi和more需要知道使用的终端类型,这样它们才可以正确地格式化输出结果。用户环境可以比喻为办公室环境。在办公室里,像照明、噪声和温度等对于所有的工作人员都是一样的。办公室中只有你才拥有的因素构成了你的特定环境。这些因素包括:你在做什么工作、你的办公桌的布置、你和办公室里其他人的关系等等。正如你的工作环境对于你是唯一的一样,你的用户环境也是唯一的。许多应用程序要求在某些方面设置环境,这可以通过修改.profile文件来实现。当登录进系统时,可以运行命令env查看环境。它会显示设置在环境中的每一个因素。在env命令运行结果的

22、列表中,“=”左边是已经设置的不同环境变量的名字,“=”右边是相关参数的值。查看env(1)可以获得更多的细节信息。每个环境变量的设置都有其理由。以下是一些常见的环境变量及其含义:TERM,COLUMNS和LINES描述所使用的终端HOME主目录的路径名PATH搜索命令地点的列表LOGNAME登录用的用户名env 和HISTFILE专用的POSIX shell变量DISPLAY专用的X Window 变量这些变量中有一些由系统来设定,其他的在/etc/profile或.profile中设定。7.12设定shell变量注释shell变量与运算式的变量类似。它是一个名字, 代表一个数值。UNIX的

23、变量分配就是将一个值与一个变量名联系起来。这样可以通过变量名访问这个值。如果这个值被修改,仍然可以通过同样的变量名访问到新的数值。将一个值分配给shell变量的语法是:name=value可以在终端的shell提示符后面或者在shell程序中输入这个语句。注意在等号(=)的前后都没有空格。这样可以保证shell不会试图将这个变量数值分配语句误解为一个命令调用语句。区分shell变量名和shell变量值是很重要的。通过执行预分配语句设定变量值,如:TERM=70092。这就要求shell记住名字TERM,以及当发生访问TERM变量值的请求时,用70092作出应答。变量命名规定变量名必须以一个字母

24、开头(a-z和 A-Z),可以包含字母、数字或下划线。对于变量名中字符的数目没有限制。7.13两个重要的环境变量注释PATHPATH变量代表的是shell搜索命令的一系列目录。这样只需键入一个命令名,不用输入该命令的完全路径名(如:键入vi,不用键入 /usr/bin/vi)。下面是一个默认PATH变量的例子:PATH=/usr/bin:/usr/contrib/bin:/usr/local/bin这个例子表明,键入一个命令,shell将首先在/usr/bin搜索该命令,接着是/usr/contrib/bin,以此类推,直到在这些目录找到或者都找不到该命令。如果键入的命令在任何一个PATH目录

25、中都找不到,在屏幕上会显示一个错误信息:command: not found。TERMTERM变量是一个描述使用终端类型的环境变量。为了使许多命令能正确执行,这些命令需要知道使用的终端类型。如,ls命令需要知道屏幕上有多少列,more命令需要知道屏幕上有多少行,vi命令需要同时知道屏幕的行和列的数目,以及其他更多关于终端类型的信息,这样它才能正常地工作。UNIX系统设置终端类型变量的默认方法是提示用户输入正确的终端类型:TERM=(hp)这时要么按 Return 把终端类型设为hp,要么键入正在使用的终端类型。终端类型hp是一个标准的80列24行惠普终端。系统管理员已经设置好了你的系统,UNI

26、X系统不会向你提问你的终端类型。在这种情况下,应该用env命令查看TERM变量值。如果使用的工作站仅用一种显示器,TERM变量很可能已被正确设置,不必修改。当使用命令more 或vi时,如果终端表现很异常,查一下TERM变量的值。如果它已被正确设置,执行命令tset。这个命令将按TERM变量的值设置终端的特征。7.14常见变量的分配值常见变量的分配值用粗体显示的变量名是需要设置的变量。 EDITOR=/usr/bin/vi用vi命令作行编辑。 ENV=$ HOME/.shrc在启动shell时执行$ HOME/.shrc。 HOME=/home/user3指定登录目录。 FCEDIT=/usr

27、/bin/vi对历史命令行启动vi编辑进程。 (波浪线)在POSIX shell中相当于主目录。 HISTFILE=$ HOME/.sh_history指定存储所有输入过的交互式命令的文件。 LOGNAME=user3 指定登录标识符或者用户名。 MAIL=/var/mail/user3 系统使用的邮箱。 OLDPWD=/tmp 指定(说明)前一个目录的位置。 PATH=/usr/bin:$ HOME/bin 指定搜索命令的目录。 PS1= 指定主提示符。PS1=! $ 显示命令行号和提示符。PS1=$PWD $ 显示当前工作目录和提示符(注意:必须用单引号()括起来,不能用双引号(”)。PS

28、1=! $PWD $ 显示命令行号、当前工作目录和提示符。 PWD=/home/user3/tree 指定当前工作目录。 SHELL=/usr/bin/sh 指定命令解释器程序。 TERM=2392a 指定你的终端类型。用命令:eval test s Q -h 在启动过程中,系统会读取文件/etc/ttytype,用里面提供的信息正确设置终端类型。当有不同类型的终端联接到你的系统时,这点非常有用。 TMOUT=300如果在指定的秒数内没有键入命令或回车键,shell会终止或者超时。 TZ=EST5EDT指定系统用来显示时间的时区。TERM变量必须正确设置TERM变量,这样UNIX系统才能知道终

29、端的特征。许多命令需要知道正在使用的终端类型才能正确输出结果。如more和vi为了正确控制屏幕输出结果,必须知道显示器的行数和列数。可以通过变量分配直接定义TERM变量的值,或者用tset 命令分配,这个命令取决于正在使用的终端类型和文件/etc/ttytype中相应的值。表7-2总结了一些不同终端模型及其对应的TERM值。如果使用的终端模型不在其中,可以查看/usr/lib/terminfo下的子目录。表7-2不同终端模型及其对应的TERM值终 端 模 型TERM值HP 2392a2392aHP 7009270092Hp 7009470094vt 100vt100Wyse 50wy50Med

30、ium resolution graphics display(512 600 pixels)300l 或者 hp300lHigh resolution graphics display(1024 768 pixels) 300h 或者 hp300hHP 98550 display station(1280 1024 pixels) 98550、hp98550、98550a或者 hp98550aHP 98720 or HP 98721 SRX(1280 1024 pixels) 98720、hp98720、98720a、hp98720a、98721、hp98721、98721a或者hp98721aHP 98730 or HP 98731 Turbo SRX(1280 1024 pixels) 98730、hp98730、98730a、hp98730a、98731、hp98731、98731a或者hp98731a7.15登录时发生的事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1