shell-复件概要

上传人:今*** 文档编号:107496555 上传时间:2019-10-19 格式:PPT 页数:62 大小:298KB
返回 下载 相关 举报
shell-复件概要_第1页
第1页 / 共62页
shell-复件概要_第2页
第2页 / 共62页
shell-复件概要_第3页
第3页 / 共62页
shell-复件概要_第4页
第4页 / 共62页
shell-复件概要_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《shell-复件概要》由会员分享,可在线阅读,更多相关《shell-复件概要(62页珍藏版)》请在金锄头文库上搜索。

1、第四章 shell 及 shell编程,shell基本概念,shell是UNIX系统用用户与操作系统交互的最基本工具,不同类型的shell在应用中各有所长,但是它们主要要完成的功能是相似的。,shell基本功能与基本概念,shell是用户和Linux内核之间的接口程序 。 shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。 shell一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。,多种UNIX的shell,常见shell的存放位置和程序名,shell的基本功能

2、,命令的解释执行接收用户的命令输入,解释分析命令含义,执行用户命令 环境变量的设置对用户工作环境进行修改和设定,根据规则选择和设定相关的 环境变量。 输入、输出的重定向管理科通过重定向实现对系统标准流的修改 Shell程序设计用户可使用shell的脚本语言完成复杂的命令执行过程和用户环境的 设置过程。 文件名替换:若文件名替换在命令行,shell首先执行替换,然后执行程序。 管道:能将用户将简单的程序连接到一起完成一个复杂的任务。,shell启动,shell的启动与退出过程,shell的启动流和工作过程如图3-2所示。用户登录过程中,在输入用户名和密码后,系统要检查以下文件: passwd:系

3、统用户数据库。 shadow:影子密码和用户登录控制文件。 group:系统组定义文件。 如果用户名和密码合法,则启动shell,否则要求用户重新输入用户名和密码。,shell的启动过程(续),在系统启动shell过程中,依次进行以下操作: (1) 执行系统脚本文件/etc/profile; (2) 在它的控制下再执行/etc/profile.d/目录的*.sh脚本文件; (3) 执行用户profile文件/.bash_profile; (4) 如果/.bashrc存在则执行之; (5) 如果/etc/bashrc文件存在则执行之。 需要说明的是,以上步骤都是在当前shell内执行的(参见第十

4、章),目的是为用户设置环境变量或做相关准备。一切执行完毕之后出现系统提示符。,shell的退出,当用户通过(Ctrl_D、exit或logout)注销时,将调用用户家目录内的脚本文件.bash_logout 若用户想让shell退出时做些事情,比如删除临时文件,则可将shell命令添加到.bash_logout文件。,Shell命令解释程序,shell解释程序执行过程,Shell命令解释程序,shell命令循环,显示信息:echo命令,echo命令可以显示信息,该命令将其消息参数显示在用户终端即标准输出设备上。如果没有参数,默认情况下它会产生一个空行增加到输出。 如$echo hello th

5、ere 说明:参数串可以任意长,但是,如果串中含有元字符,则该串应该用引号括起来。 如: $echo this is a test.(注意空格) $echo “this is a test”,echo命令的选项,转义符号,说明:回车键本事是一个shell元字符,因此,如果它用在字符串中,一定要用引号括起来,说明:1 n必须用引号括起来以解释成换行命令 2 如果echo命令不能识别转义字符,必须用-e,# echo hi,this is a test hi,this is a test #echo hi,”n” this is a test hi, this is a test,提示符#紧跟在t

6、est之后。,# echo e hi,this is a test hi,this is a test #echo hi,”n” this is a test. test #cat test hi, this is a test #echo hi ,”n” this is a test.”c” hi, this is a test.#,# echo “this is a test.” thi this is a test. #,消除元字符的特殊含义,引用字符集,(a)单引号 使用单引号时,shell将一对单引号之间的内容看成是纯粹的字符串信息,一对单引号之间可以包含更多的单引号。 $ you“

7、kkk” $ echo this is just a test, can $you tell me the time ? 将会显示this is just a test, can $you tell me the time ?, 它不会将$you替换成“kkk”, 同时test也是作为字符串内容来处理的。字符间的空格被保留。,3)shell中引号的说明,例:$ file=report $ echo The time is date,the file is $file 回显: The time is date,the file is $file $echo “The time is date,t

8、he file is $file” 回显:The time is wed Aug 16 15:11:42 Roc 2000,the file is report. $ TT=date $ echo $TT 回显: wed Aug 16 15:11:42 Roc 2000,(b)双引号“” 它将双引号之间的特殊字符($ (重音符号) “(双引号)作为shell中的含义来解释,其他字符失去它的特殊含义。 $ file=unixshell $ echo “the content of date is in $file” 这个例子将会显示 the content of wed Aug 16 16:20

9、:12 is in unixshell,这个例子中,date被解释成了当前时间的返回值,$file被解释成了unixshell字符串。,3)shell中引号的说明,如: $echo “” $ls c Memos myfirst report $echo * Memos myfirst report $echo “*” * $echo “”the unix systyem” “the unix system” 双引号中的*没有被替换。 说明:为消除双引号的特殊含义,要在双引号前加反斜杠。,双引号示例,string=$PATH #定义string变量 echo $string #显示变量的值:$P

10、ATH myname=whoami myself=“I am a student, my uname is $myname and my work dir is pwd.“ myself1=“I am a student, my uname is “$myname“ and my work dir is “pwd“.“ echo $myself echo $myself1,(c)反引号 用它来赋值时,表示变量中保存的是执行对应命令的结果。 $ name=whoami $ echo $name 这个时候显示的不是字符串whoami,而是执行字符串whoami的返回结果,当然,要先保证字符串是一个

11、合法的命令。,3)shell中引号的说明,反斜杠 用来使其后的字符解释为一个普通的字面数字符号。 说明:消除反斜杠的特殊含义,要在它前面再加一个反斜杠。,3)shell中引号的说明,# rm temp? # rm temp? 删除文件名为temp?的文件 # echo ” ? “ ?,shell程序的变量使用,Shell支持两种类型的变量: 环境变量:环境变量拥有为系统所知的名字,通常由系统管理员定义,用来保留系统所必需的内容。 如:标准变量TERM设置终端类型: TERM=ansi 局部变量:由用户定义,完全在用户的控制下,用户可以定义、删除或删除它们。,显示和清除变量:set和unset命

12、令,# set HOME=/usr/students/david IFS= LOGNAME=david LOGITY=/dev/tty06 变量的取值可以用字符、数字和下划线,但是 第一个字符必须是字符,不能使数字。等号右边是赋给变量的值。 注意:可以用unset命令删除不需要的变量,如果设有变量XYZ=10,想 要删除它,可以键入unset XYZ。,给变量赋值,用户可以创建自己的变量,也可以修改标准变量的值。 赋值方法:写变量名,后面跟一个等号(赋值符号),等号后跟要赋的值,如: age=32 或 system=unix Shell将用户所赋的每一个值看做是一个字符串。如上例中变量age的

13、值是串32,而非整数32.如果变量的取值串中含有空白字符(空格,制表符等),那么该串应该用双引号括起来。如: message=“save your files” 注意:1 shell变量名必须以大小写开始,而不能是数字 2 等号两边不能有空格,显示shell变量的值,要访问shell变量的值,必须在变量名前加$符号。用echo命令显示shell变量的值。 如:$age=32 $echo hi,nice day. hi,nice day. $echo age age $echo $age 32 $echo you are $age years old. you are 32 years old.

14、,例:shell变量在命令行经常用做命令参数,如 $all=-lFa(以长格式列出文件,在每个目录文件后加斜杠) $ls $all myfile 例:观察下来命令的输出 $age=22 $echo $age “$age” $age,shell程序的变量使用,2)shell中变量的访问和参数替换 在shell程序中,或者是shell命令中,使用操作符$来对shell变量进行访问。例如,要显示某个变量时,可以输入: $ echo $UNIX (系统将会显示SYSTEM V ) 在某些场合下,为了明确表示对shell变量的引用,可以用花括弧或者双引号将变量括起来,例如: $ echo $UNIX $

15、 echo $UNIXAaaaaa $ echo “$UNIX” is very good,SYSTEM V,SYSTEM VAaaaaa,SYSTEM V is very good,HOME变量,标准shell变量的赋值通常由系统管理员完成,如果想永久改变变量的值,则应将变量保存到.porfile文件中。,#echo $HOME /usr/david #pwd /usr/david/source #cd #pwd /usr/david #HOME=/usr/david/memos/important #cd #pwd /usr/david/memos/important,IFS变量,内部字段分隔符(IFS)变量时被shell解释为命令行元素分隔符的一系列字符。,# echo $IFO 显示IFO的赋值 # 显示一个空行和命令提示符 #cd $HOME #old_ifs=$IFS 保存IFS字符 #IFS=“:” 改变字段分隔符为冒号(:) #cd:$HOME 注意是冒号,而不是空格用作字段分隔符 #IFS=$old_ifs 恢复为原来的字段分隔符,PS1变量,设置作为命令提示符的字符串。,# PS1=here: 命令提示符改为here: Here: Here: PS1=“next command:” next command: Next comm

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号