《Linux 标准学习教程》课件第14讲 shell交互功能和变量_第1页
《Linux 标准学习教程》课件第14讲 shell交互功能和变量_第2页
《Linux 标准学习教程》课件第14讲 shell交互功能和变量_第3页
《Linux 标准学习教程》课件第14讲 shell交互功能和变量_第4页
《Linux 标准学习教程》课件第14讲 shell交互功能和变量_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第14讲 shell交互功能和变量主要内容一. 简介二. Shell的启动和建立三. shell命令行形式四. Shell 环境五. shell变量六. Shell的内部命令第14讲 shell交互功能和变量一. 简介 shell是UNIX系统中最重要的程序之一, 它具有两大功能: 命令解释器 解释执行所有的用户命令 程序设计语言 具有高级语言的所有功能 shell有两种主要语法类型: Bourne shell和C shell,彼此不兼容。 Bourne shell家族:sh ksh bash psh zsh; C shell家族:csh tcsh。其中bash和 zsh在不同程度上支持 cs

2、h 的语法Bash特点Bash是大多数Linux系统的默认Shell。Bash有以下的优点:1)补全命令。在Bash命令提示符下输入命令或程序名时,若没有输全命令或程序名,按“Tab”键,Bash将自动补全命令或程序名。2)通配符。在Bash下可以使用通配符“*”和“?”。“*”可以替代多个字符,而“?”则替代一个字符。3)历史命令。Bash能自动跟踪用户每次输入的命令,并把输入的命令保存在历史列表缓冲区中。4)别名。在Bash下,可用alias和unalias命令给命令或可执行程序起别名和删除别名,这样就可以用自己习惯的方式输入命令。5)输入/输出重定向。输入重定向用于改变命令的输入,输出重

3、定向用于改变命令的输出 例:输入重定向。 $ wcdir.out 上面命令将ls命令的输出保存为文件dir.out。$ ls dir1.out6)管道。管道用于将一系列的命令连接起来,也就是把前面命令的输出作为后面命令的输入。管道的命令是“|”。管道的功能和用法与DOS/Windows系统的完全相同。例:$ cat dir.out|grep test |wc l7)提示符。Bash有两级提示符。第一级提示符就是登录Shell时见到的,默认为 “$”。可以通过重新给PS1变量赋值来改变第一级提示符。当Bash需要进一步提示以便补全命令时,它会显示第二级提示符。第二级提示符默认为“”,可以通过重新

4、给PS2变量赋值来改变第二级提示符。一些特殊意义的字符也可以加入提示符赋值中。 一般设为PS1=uh W$ 意思是:用户名主机名 当前目录。8)作业控制。作业控制是指在一个作业执行过程中,控制执行的状态。可以挂起一个正在执行的进程,并在以后恢复执行该进程。Ctrl+z,bg,fg等 装入UNIX硬件检测安装rootfs建立0号进程产生新进程swap对换进程1号进程init执行/etc/inittab初始化各端口gettygetty用户注册正确吗建立shell进程二. Shell的启动和建立子父boot.NYBA等待命令输入分析命令退出命令产生子进程后台进程等待子进程执行命令ABYN子进程父进程

5、唤醒父进程NY三. shell命令行形式1. 单条命令: $ cat file1 最常用命令形式2. 多条命令: $ pwd; who; date 提高键盘命令输入效率3. 复合命令: $ ps e | grep student2 $ (ls ; cat file3 ; pwd) run_log方便灵活, 运行效率高4. 后台命令: $ ls lR file_list & 多进程并发, 充分利用系统资源四. Shell 环境 每一个shell都有一个用户可设置修改的独立的运行环境, 使这个shell按照特定的方式来运行。 shell的环境由一组环境变量确定, 系统的基本环境变量放在/etc/p

6、rofile中, 用户环境变量放在用户主目录下的.profile文件中, 用户shell启动时, 先执行/etc/profile, 再执行用户的.bash_profile。 环境变量可在shell运行时动态修改。.bash_history:记录用户以前输入的命令.bash_profile:用户登录要执行的命令.bash_logout:用户退出要执行的命令.bashrc:每次打开新才shell要执行的命令常用的shell环境参数(变量)及实例:HOME=/usr/computer/student6 用户主目录, 注册时的初始目录PATH=/bin:/usr/bin:$HOME/bin:./ 键盘

7、命令的搜索路径SHELL=/bin/sh 当前运行的shell名称TERM=vt100 当前所用的终端类型PS1=$ shell的主提示符IFS= 域分隔符, 通常为空白符, 用来分隔命令行各个域set命令可以查看当前定义的环境变量五. shell变量shell实际上是基于字符串的程序设计语言,但也有变量。shell变量能够而且只能存储正文字符串,即它只有一种类型的变量即串变量。但从赋值的形式上看,则可以分成四种类型的变量或变量形式。变量的名字必须以字母或下划线开头,可以包括字母、数字和下划线。1、用户自定义变量用户自定义变量语法格式:name=string,赋值号“=”两边不允许有空白符。例

8、:nodehost=beijing.UUCPpath=/bin:/usr/bin:/etc/bincount=10允许多个赋值操作,按从右到左的顺序进行。例:A=B B=abc C=OK echo A B Cabc abc OK当引用一个未设置的变量时,其隐含值为空。例: echo mail is path of mailboxis path of mailbox 如果用双引号“”将值括起来,则括起来的字符串允许出现空格、制表符和换行符等特殊字符,而且允许有变量替换。例1: MAIL=/var/mail/fk var=MAIL is path of mailbox echo var/var/m

9、ail/fk is path of mailbox例2: str=This is n a book echo strThis isa book如果用单引号将值括起来,则括起来的字符串允许出现空格、制表符和换行符的特殊字符,但不允许有变量替换。例3: BOOK=English book MSG=BOOK echo MSGBOOK例4: msg= Today is Sunday echo msgToday is Sunday 引用变量的值时,可以用花括号将变量名称括起来,使变量名称与它的后续字符分隔开,如果紧跟在变量名称后面的字符是字母、数字或下划线时,必须要使用花括号。例5: str=This

10、is a string echo strent test of variablesThis is a stringent test of variables echo strent test of variablestest of variables可将变量设置为只读形式,格式为,readonly 变量名1 变量名2例6: ux=UNIX.SUN readonly ux ux=UNIX.SCOux: is read only查看只读形式的变量,格式为readonly例7: readonlyreadonly ux2、位置变量 位置变量顾名思义是与变量所在位置有关的变量,这是一种特殊的变量。当一个

11、shell过程被调用时,shell隐含地为它建立一系列的位置变量。这种位置变量是系统预定义好的,可以直接引用。如命令行的shell过程名本身被指定为位置变量0,第一个命令参数为1,第九个命令参数为9。例:ls / /bin /etc /usr/bin /dev0 1 2 3 4 53、 环境变量shell执行环境由一系列环境变量组成,这些变量是由shell维护和管理的。所有这些变量都可被用户重新设置,变量名由大写字母或数字组成。CDPATH 执行cd命令时使用的搜索路径;HOME 用户的home目录;PATH 寻找命令或可执行文件的搜索路径;PS1 主命令提示符,默认为“”;PS2 从命令提示

12、符,默认为“”;TERM 使用的终端类型。4、预定义变量常用系统变量:$0 当前shell程序的名字$1 $9 命令行上的第一到第九个参数$# 命令行上的参数个数$* 命令行上的所有参数$ 分别用双引号引用命令行上的所有参数$ 当前进程的进程标识号(PID)$? 上一条命令的退出状态$! 最后一个后台进程的进程标识号系统变量只能引用不能修改!例1:$ echo aa bb cc dd $aa bb cc dd 2391$ cat file1 file2 file3 2 errlog$ echo $?1 (非0表示命令运行失败, 错误信息在errlog 文件中)$ echo (空行, 即echo

13、输出串尾隐含的换行符)$ echo This is a test. (单词间多个空格)This is a test.$ echo “This is a test.” (用引号包括时结果如何?)例2:显示所有参数及其总数。 先将下面源代码用vi编辑器存为afile文件#!/bin/bash echo All argument list : $ /存储所有命令行输入的参数echo The total number of argument is : $#/程序中命令行参数的个数#end/“#”为注释符号,“#!”为特殊的注释符号,它告诉操作系统使用其后面的程序来解释这个文件。 存盘后执行chmod

14、a+x afile$ ./afile red hat linux /输入三个参数All argument list : red hat linux /显示参数The total number of argument is : 3 /显示参数的个数六. Shell的内部命令evalcd 改变当前工作目录pwd 显示当前工作目录read 读标准输入, 赋给后面的变量readonlytime 显示当前shell运行命令所花费的时间echoexport说明: shell 的内部命令包含在shell命令内部, 不是一条单独的操作系统命令, 因此无法在文件系统中查找到.变量输出命令 export shel

15、l变量定义后或修改值后, 如果未经export命令输出, 则只在当前的shell中起作用, 对其各个子shell不产生任何影响. 经过 export 命令输出的变量对当前shell的各个子shell、以及子shell的子shell起作用。例如:$ PATH=$PATH:./ ; export PATH说明: 1. export后面的变量名前不加$符号2. 经export输出给子shell的变量如果在子shell中被修改, 则只影响子shell, 不影响父shell; 如果 在子shell中被输出,则只影响子shell的子shell3. export命令常用在.profile文件中echo 命令

16、的使用 echo命令的基本功能就是在标准输出上显示后面的字符串,或变量的值。当字符串中带空白符或其它控制字符时,用引号将其括起来。例如:$ echo 1234512345$ echo “department computer”department computer$ echo “My home directory is: $HOME”My home directory is: /usr/teacher/david$ echo e “Input your choice (y/n) bbc”Input your choice (y/n) _ echo 特殊字符串引用的例外引用双引号、单引号和转意符都不能消除对echo命令有特殊功能的控制字串的特殊含义。这些控制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论