第6章 shell及进程
Linux中的shell与shell命令

s h e l l与s h e l l命令本章主要内容:shell基本功能及种类shell基本概念I/O重定向与管道shell的启动基本shell命令3.1shell基本功能与基本概念3.1.1shell基本功能shell是用户和Linux内核之间的接口程序。
shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。
shell一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构shell具有以下基本功能:1.命令解释执行2.文件名替换.3.输入输出重定向4.连通管道建立5.系统环境设置6.shell编程3.1.2字符与保留字1.字符(1)白空格(2)通配符*:代表从它所在位置开始的任何字符串。
?:代表它所在位置上的任何单个字符。
[]:代表一个指定范围的字符。
方括号中的字符范围可以由直接给出的字符组成,也可以由表示限定范围的起始字符、终止字符及中间的连字符“-”组成。
通配符模式串意义* 当前目录下所有文件名,但不包括.开头的文件。
例如abc但不是.abc *Text* 当前目录下所有文件名中包含有Text的文件名,但不包括.开头的文件[ab-dm]* 当前目录下所有以a、b、c、d、m开头的文件名[ab-dm]? 当前目录下所有以a、b、c、d、m开头且后面只跟有一个字符的文件名[!ab-dm]?或[^ab-dm]?当前目录下所有不以a、b、c、d、m开头且后面只跟有一个字符的文件名/dev/hd? 目录/dev下所有以hd开头且只有三个字符的文件名(3)注释符与注释在shell命令或shell编程中从字符“#”开始以后到行末的部分作为注释,因此以“#”开头的行是注释行。
(4)转义字符(5)Linux系统的特殊键2.保留字任何编程语言或系统都有一定数量的保留字,bashell的部分保留字如下:!,[,],(,),{,},break,continue,cd,echo,eval,exec,exit,export,function,getopts,hash,pwd,read,readonly,return,select,set,shift,test,time,trap,type,ulimit,unset,umask,wait,for,do,done,case,in,esac,if,else,elif,if,while,until转义字符所代表的意义转义字符所代表的意义\a 响铃符\t Tab键\b 退格键\v 垂直制表符\f 换页\\ \\n 换行\0??? 8进制表示\x?? 16进制表示\’’\` ` \””特殊键意义Ctrl+D 结束当前程序输入或终止当前程序或从系统中注销Ctrl+C 终止当前程序的执行Ctrl+\ 终止当前程序的执行(系统内部处理时不同于Ctrl+C)Ctrl+Z 挂起当前程序执行,将推到后台Ctrl+S/Ctrl+Q 暂停/继续屏幕的输出,必须配合使用ScrollLock 暂停/继续屏幕的输出,开关键Ctrl+Alt+Del 默认动作为重启系统Alt+F# 字符终端切换。
《Linux操作系统》部分习题答案

第一章Linux系统简介一、思考题1.UNIX的大部分代码是用一种流行的程序设计语言编写的,该语言是什么?C语言2.UNIX系统的特点有哪些?·多任务·多用户·并行处理能力·设备无关性·工具·错误处理·强大的网络功能·开放性3.什么是Linux?其创始人是谁?Linux是一个功能强大的操作系统,同时它也是一个自由软件,是免费的、源代码开放的、可以自由使用的UNIX兼容产品。
其创始人是Linus4.Linux操作系统的诞生、发展和成长过程始终依赖者的重要支柱都有哪些?·UNIX操作系统·MINIX操作系统·GNU计划·POSIX标准·Internet5.简述Linux系统的特点。
·自由软件·良好的兼容性·多用户、多任务·良好的界面·丰富的网络功能·可靠地安全性、稳定性·支持多种平台6.常见的Linux的发行版本有哪些?·Red Hat Linux·Caldera OpenLinux·SuSE Linux·TurboLinux·红旗Linux·中软Linux二、选择题1.Linux最初是以MINIX操作系统为模板而开发出来的。
2.关于Linux内核版本的说法,下列选项中错误的是(C)。
A.表示为主版本号.次版本号.修正号B.1.2.3表示稳定的发行版C.1.3.3表示稳定的发行版D.2.2.5表示对内核2.2的第5次修正(补充:次版本号为偶数的是稳定版本;为奇数的则是测试版本。
)3.Linux属于自由软件。
4.自由软件的含义是软件可以自由修改和发布。
5.一下不具有多任务性的操作系统是DOS第二章Linux系统入门一、思考题1.Linux系统有哪些运行级别?其含义是什么?可用级别为0~6,其中0:关闭系统;6:重新启动,其他略。
第6章Bshell及编程

第6章 B-shell及编程
元字符及其实例(2)
文件名通配符* [] ?
命令行中的通配符会被shell展开成多个文件名
美元符$和反撇号`对
分别用于变量替换和命令替换
重定向和管道
利用重定向和管道的组合,多个命令可以构造出更多 功能,重定向和管道符可以兼做分隔符 【例6-20】 重定向和管道符的命令分隔符作用 【例6-21】 shell对标准输入、标准输出和标准错误输 出之外的其他文件描述符的重定向
1. HOME:用户主目录的路径名 2. PATH:命令查找路径,如: PATH=./:/bin:/usr/bin:/etc 先搜索当前目录 PATH=/:bin/usr/bin:/etc:./ 后搜索当前目录 PS1和PS2:主提示符和副提示符 副提示符:当一个命令在一行内输不完需几行输 入一个命令时,第2行及其它行用副提示符 4. TERM:终端类型 5. LANG或LANGUAGE:系统所用的语种
第6章 B-shell及编程
本章小节
6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 启动B-shell 重定向与管道 变量 替换 元字符 条件判断 循环结构 函数 shell开关和位置变量
第6章 B-shell及编程
6.1 启动B-shell
第6章 B-shell及编程
第6章 B-shell及编程
元字符及其实例(3)
启动程序后台执行&
在命令的结尾处加&符,shell启动了这个命令进程之 后,不等待命令运行结束,就立刻给出新的提示符, 可以输入下个命令。如: sort telnos > telnos1 &
括号( )
电子科技大学 UNIX_Linux操作系统内核结构6章

一个进程的上下文包括五个方面: ①、被进程正文所定义的进程状态 ②、进程所使用的全局变量和数据结构的值 ③、机器寄存器的值 ④、进程表项proc结构和user结构中的值 ⑤、用户堆栈和核心堆栈中的值
“执行一个进程”——指系统在该进程的上下文中执行, 也就是进程的上下文确定和限制了进程的运行环境和空间。
可以随进程状态的变化而在内外存之间交换的进程控制信 息中的其余部分。
为了方便进程映像在内外之间交换,UNIX系统中把进程非 常驻内存部分作为一个整体,占用连续的存贮区,其顺序是: 首先是user结构(进程扩充控制块)和核心栈,然后是数据段 和用户栈。
16
进程user结构和核心栈合并构成进程的“本进程数据区— —ppda区(per process data area)。
15
在进程映像占用的内存被分配给其他进程之前,不但该进 程的程序和数据需要调出内存,该进程的控制信息也被调出内 存。但为了该进程能够再次被调入内存,内存中需要保留一部 分必要的信息,这就把进程控制信息也分成了常驻内存和非常 驻内存两部分: 常驻内存控制信息块
是系统需要经常查询以及恢复整个进程映象时所不可缺少 的信息。 非常驻内存控制信息块
7
3、进程的解释
在UNIX系统中进程的概念包含什么意义?
在较高级的方面 进程是一个重要的组织概念。可以把计算机系统看作是若
干进程组合的活动。进程是系统中活动的实体,它可以生成和 消灭,申请和释放资源,可以相互合作和竞争,而真正活动的 部件如处理机和外部设备则是看不见的。
在较低级方面 进程是不活动的实体,而处理机则是活动的,处理机的任
核心从一个进程转到另一个进程执行时,叫做“上下文切
换”,也就是系统从一个进程上下文确定的环境换到另一个进
第6章 原子的壳层结构

19
4 自旋对电子态填充的影响
对于未满支壳层的原子,其原子态只决定于未满支壳层上的电子组态 .未满支壳 层上的电子的填充次序与电子自旋有关. 填充2p支壳层三个格子的次序,是先在 一个各自填充一个电子,然后再在各格子里填上反向自旋的另一个电子。
对n和l相同时,电子能量与自旋排列有关。电子的波函数由轨道和
72 98
主壳层:最多的电子数2n2, K壳层最多可容纳2个电子,L壳层最多可容纳 8个电子,M壳层可容纳18个电子,等等 子壳层:最多的电子数2(2l+1). S子壳层最多可容纳2个电子, P子壳层6个,d子壳层10个,f子壳层14个…等等. 满壳层:主壳层的电子数等于2n2的壳层称为满壳层
2 电子填充壳层遵从两个原理: 1) 泡利 ( W.Pauli )不相容原理: 在原子中不可能有相同的一组量子数(n, l, m, ms );既不 可能有两个或两个以上的电子占据同一个状态, n l
n确定原子中电子在核外空间运动轨道的大小和能量的高低。一般说来, n大,能量高,轨道半径大。
2. 角量子数 l ( 0,1,2,……. , n -1 )
L l (l 1)
l决定电子轨道的形状和角动量的大小,同时也与能量有关. n相同时, l 大,能量高。
3. 磁量子数 ml ( 0,±1, ± 2,……. , ± l )
1sl02sl12pl13s3pl13dl21218如果电子正好填满支壳层m的正值和负值成对出现原子的自旋角动量轨道角动量和总角动量都等于零这种原子的基态为1014每个格子可填两个电子双人间如果电子正好填满支壳层m的正值和负值成对出现原子的自旋角动量轨道角动量和总角动量都等于零这种原子的基态为如p支壳层填满时有6个电子这6个电子的角动量之和为零对原子总角动量没贡献
红旗LINUX案例教程第6章

机械工业出版社
案ቤተ መጻሕፍቲ ባይዱ小结
中等职业教育“十一五”规划教材۰电子商务专业
shell编程分为如下两个步骤:
1.输入和保存源程序
用编辑软件(文本编辑E器v)al输ua入t程io序n 的on源ly代. 码,然后保存。如果 te源d程w序it较h短A的sp,o可se以.直Sl接id在e提s 示fo符r .下N输E入T。3.5 Client Profile 5.2
Linux 系统有三个重要的部分:核心、Shell和工具
程序。核心部分是处Ev于a底lu层a的tio,n用o户nl不y.能和它直接沟通, ted w因沟系it此通统hC,。初Ao始s必这pp化y须个or时si要界ge就有面h.为St一便2l用i个是0d户0e友S4s运h好e-行fl2的lo。0一r界当1.个面1N用称E,A户为Ts让登ps用3h录oe.户ls5Ll的ei通nC程uP过xli序系te它yn。统和LtS之t底Phde后r.层lol,的file 5.2
s2="zjCyvosp2"yright 2004-2011 Aspose Pty Ltd.
echo $s2 s3=4+5 echo $s3
机械工业出版社
中等职业教育“十一五”规划教材۰电子商务专业
步骤二:调试程序并分析程序运行结果
Evaluation only. ted with Aspose.Slides for .NET 3.5 Client Profile 5.2
2.运行C程op序yright 2004-2011 Aspose Pty Ltd.
在shell提示符下,键入“. 程序名”,如键入“. ExCsb6.1.1”。 要注意的是,“.”符号后要有空格。
第六章( CSH 语法介绍 )

表4-1 常用文件重定向命令
command > filename
把标准输出重定向到一个新的文件中
command >> filename
把标准输出重定向到一个文件中(追加)
command 1 > fielname
把标准输出重定向到一个文件中
command > filename 2>&1
把标准输出和标准错误一起重定向到一个文件中
$set x = 100
$echo “this x value $x”
this x value 100
如果我们在变量后面不加空格则需要做如下处理:
$ set x = 100
$echo “this x value ${x}y”
this x value 100y
6.2.3:tee 命令:
tee 命令作用可以用字母 T 形象的表示,它的输出的一个副本输送到标准输出,另一个副本则拷贝到相
genesis console
Oct 19 14:29 (:0)
genesis dtremote Oct 23 12:18 (192.168.200.168:1)
genesis pts/3
Oct 23 12:18 (192.168.200.168:1.0)
genesis pts/4
Oct 23 12:19 (192.168.200.168:1.0)
第六章
CSH 语法介绍
如果要显示双引号则需要用下面的方法:
$echo ‘how “are” you’
how “are'” you
请注意的是作为符号的那一组必须成对的出现。否则将出现错误提示。
(2):显示变量$x 的值:
linux shell自动化运维慕课版第六章课后作业

linux shell自动化运维慕课版第六章课后作业很高兴您正在学习Linux Shell自动化运维慕课。
对于第六章的课后作业,我可以给您一些指导和建议。
1. 了解作业要求:首先,请确保您仔细阅读并理解了第六章的课后作业要求。
这样可以帮助您明确任务目标和要求。
2. 确认环境:在开始作业之前,请确保您已经设置好了合适的运行环境。
这可能包括安装必要的工具和软件,并确保您对相关命令和技术有一定的了解。
3. 创造代码模板:根据课后作业要求,您可以先创建一个代码模板,用于实现所需的自动化运维任务。
这有助于组织和规划您的工作。
4. 实现自动化任务:接下来,您可以开始根据作业要求来实现自动化运维任务。
您可以使用Shell脚本编写相应的代码来完成所需的操作。
确保您的代码能够满足要求并且可靠稳定。
5. 测试和调试:完成代码编写后,建议您进行测试和调试。
尽量模拟真实场景,确保您的自动化任务能够正确地处理输入和输出,并且没有出现错误或异常情况。
6. 提交作业:最后,请按照课程要求将您的作业提交给老师或者相应的负责人。
确保您按照指定的格式和方式提交作业,并在规定的时间内完成。
希望以上建议对您完成第六章的课后作业有所帮助。
如果您有任何进一步的问题,请随时向我提问。
祝您顺利完成作业!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章shell及进程本章的学习目标:●理解什么是shell●为什么要使用shell●学会使用一些基本的shell命令行操作●了解shell脚本●理解进程和多进程的概念●掌握如何运行后台进程●掌握如何进行进程控制6.1shell概述6.1.1什么是shell在第1章介绍Linux系统结构时已经对shell进行了简单介绍。
shell是系统的用户界面,它提供了用户与内核进行交互操作的一种接口。
它接收用户输入的命令并把它送入内核去执行。
6.1.2为什么要使用shellLinux的图形化环境最近这几年有很大改进。
在X Window系统下,几乎可以做全部的工作,只需打开shell提示来完成极少量的任务。
然而,许多Red Hat Linux功能在shell提示下要比在图形化用户界面(GUI)下完成得更快。
6.1.3选择shell可以通过阅读它们各自的使用手册来了解各自的详细情况。
对于各种不同的shell的学习和使用,主要归结为从以下几个方面进行。
Red Hat Linux9.0基础教程•104•●这种shell的内建命令都有哪些?●怎样进行任务控制,即后台处理?●这种shell是否支持命令行编辑?●这种shell是否支持命令行历史记录?●什么是它的重要的开机启动文件或者配置文件?●各个shell的重要环境变量有哪些?●可以使用什么样的命令行提示符?●支持什么样的编程框架?作为超级用户,可以在/etc/shells文件中添加程序,然后可以限制某个用户在登录后运行某个或者某些指定的程序。
要在登录之后再改变运行的shell,可以使用chsh(change shell)命令,该命令在/usr/bin 目录下。
可以在命令行上单独使用chsh命令,也可以使用-s(shell)选项。
$chshchanging shell for bball.Password:New shell[/bin/bash]:/bin/zshshell changed.$chsh-s/bin/bashPassword:shell changed.前提是必须提供要使用的shell或者程序的完整路径名或目录名。
6.1.4Bash概述Bash是对Bourne shell的改进和扩展。
6.1.5shell变量在Linux里有很多的变量,大致可分为3种:环境变量、内部变量和用户变量,用户可以通过这些变量获得系统、环境的信息。
1.环境变量环境变量是系统环境的部分,例如,用户的登录子目录,使用的终端类型等,这些变量决定了用户工作的环境,它们不需要用户去定义,用户可以在shell中使用它们,其中的某些变量还可以用shell程序修改。
2.内部变量内部变量是由系统提供的,用户不能修改它们。
第6章shell及进程•105•3.用户变量用户变量是用户在编写shell过程中,可以在shell程序内任意使用和修改的变量。
6.1.6shell配置文件1.配置自己的登录shell:.bash_profile文件.bash_profile文件是BASH shell的登录初始化文件,它也可以取名为.profile。
2.配置BASH shell:.bashrc文件.bashrc文件是一个配置文件,用户每次进入BASH shell或者生成一个subshell的时候它都会被执行。
如果BASH shell是用户的登录shell,那么.bashrc文件和用户级的.bash_login 文件都会在用户登录的时候自动执行。
如果用户通过tcsh命令进入了TCSH shell,自动执行的将是.tccshrc配置文件而不是.bashrc。
3.BASH shell的退出(logout)文件:.bash_logout文件.bash_logout文件也是一个配置文件,它是在用户退出时执行的,其作用是执行用户准备在退出时想进行的任何操作。
4.其他初始化和配置文件每一种shell都有它自己的初始化和配置文件。
TCSH shell用.login、.tcshrc和.logout 文件代替BASH的.bash_profile、.bashrc和.bash_logout等文件。
Z-shell有好几个初始化文件,它们是:.zshenv、.zlogin、.zprofile、.zschrc和.zlogout。
6.1.7shell语法结构语法就是命令执行的格式。
1.一般语法结构Linux的语法同DOS下的语法很相似,一般语法如下:命令[标志][参数][源文件][目标文件]2.文件匹配[]在前面已经介绍过在Linux里,有同DOS一样的通配符“*”和“?”。
其中“*”匹配任意个数的任意字符,“?”匹配一个任意字符。
*eta*表示所有的名字中间含有eat的文件;而?eat?则表示名字共有5个字母,第2~4个字母为eat的文件。
Red Hat Linux9.0基础教程•106•3.管道符如果在DOS下用过如下命令:type autoexec.bat|more“|”就是管道符,管道符的作用就是将一个命令的输出通过一个无形的“管道”作为另外一个命令的输入。
4.重新定向输入输出一般情况下,程序输出对象都是标准输出(屏幕等),输入都是标准输入(键盘或远程终端等)。
用管道符可以将一个程序的输出作为另外一个程序的输入,利用<和>则可以重新定义程序的输入和输出对象。
5.特殊字符的处理在Linux下有一些字符是被shell特殊对待的。
例如,参数中包含空格,就应该用引号将参数括起来,其中空格和引号都是特殊字符。
空格和制表符是系统默认的分隔符。
Linux的文件可以包含空格和其他的一些字符。
如果一个文件包含空格,有两种方法可以正确指出它。
(1)使用反斜杠“\”反斜杠“\”可以引导特殊字符。
“\”在Linux里和C语言里都称为转义符。
(2)使用双引号“""”、单引号“'”、反引号“‵”双引号、单引号和反引号都能正确地表示诸如文件名中的空格之类的特殊字符。
但是它们又具有不同的功能。
●“""”双引号告诉shell整个引号内的内容都是字符。
●“''”单引号内的内容拒绝shell做任何展开,也不许shell将$引导的字符作为变量解析6.使用Tab键补全命令Bash Shell的一个特性就是命令补齐。
要快速地输入或查找命令或拼写相似的所有命令的名字,可以输入命令名的前几个字母,然后按Tab键。
如果输入足够惟一确定某程序名的字母,shell会补全该程序名。
如果只输入前几个字母,必须按两次Tab键才能成功。
shell将会显示出所有和输入的字母相匹配的命令。
7.输入多个命令要在一个命令行上输入多个命令,使用分号,例如:$ls;cat file.txt第6章shell及进程•107•这将运行ls(列目录)命令,然后用cat命令显示文件file.txt的内容。
8.断开长命令行尽管大多数shell在到达行尾时都会自动断开长命令行,但也可以使用反斜杠“\”和分号“;”在多个命令行上输入多个命令或者单个命令,例如:$ls/tmp;\>ls/boot;\>ls/var/log/uucpshell自动地显示字符“>”表示正在输入一个长命令。
使用反斜杠让复杂的命令行更加易读。
6.1.8shell命令脚本可以把shell命令放在一个文件里,然后让shell读出并执行这个文件保存的命令。
从这一点看,这个文件的作用就像是一个shell程序,它会按照自己的内容依次执行shell命令,就好像它们是一个程序中的语句似的。
保存着shell命令的文件被称为shell命令脚本(shell Script)。
用户可以用一个标准的文本编辑器(如Vi编辑器等)把shell命令输入到脚本文件中。
在第24章会有对shell脚本的详细介绍。
6.2进程Linux出色地管理着众多的的进程。
多进程、多用户是Linux的标志之一,下面就开始介绍进程的概念。
6.2.1进程前面多次提到Linux是多进程的系统,那么什么是进程呢?所有正运行的程序都叫做进程(Process),程序只有再被系统载入了内存并运行后才能够叫做进程。
程序是一个磁盘文件,而进程则是内存中工作着的代码。
程序与进程的概念是不一样的。
但是,由于进程是“运行着的程序”,很多时候对这两个概念并不做很严格的区分。
Linux允许同时运行多个程序,为了分清楚每一个运行的程序,Linux给每一个进程都做了标号,每一个进程的标号都是惟一的。
这个标号被称为进程号(Process ID)。
Red Hat Linux9.0基础教程•108•6.2.2多进程Linux是一个多用户的操作系统,这意味着,当多个用户同时在系统上进行工作时,Linux能够同时满足多个用户的需要,每一个用户起码都会有一个任务——用户登录的shell,多用户就意味着多任务。
一个多任务的操作系统,要能完成多个用户的要求,而且还能够让用户感觉不出来系统在同时为多个用户服务,就好像每一个用户都单独拥有这个系统一样。
Linux是个多用户系统,它必须要协调各个用户。
这一点和单用户的多任务操作系统(如Windows95)是不一样的。
Linux给每一个进程都打上了运行者的标记。
每一个用户都可以控制自己的进程,给自己的进程分配不同的优先级,如果必要的话,可以随时终止自己的进程。
6.2.3运行后台进程1.前台和后台前台就是指一个程序控制着标准输入/输出。
在程序执行的时候,shell暂时挂起,程序执行完毕之后退回到shell。
因为当前台运行一个程序的时候,用户不能够再执行其他的程序。
后台就是指,一个程序不从标准输入接受输入,一般也不将结果输出到标准输出了。
一些运行之后不要求用户输入的程序就适合在后台运行。
2.运行后台进程的方法在后台运行进程的方法很多,下面将详细介绍各种方法之间的区别。
(1)后台进程(2)nohup命令(3)cron命令(4)crontab命令(5)anacron命令(6)at命令(7)atq命令(8)atrm命令(9)batch命令6.2.4启动多个进程在上一节里已经讲述了怎样启动后台进程。
进程在无时无刻地进行着,应该正确地使用多进程。
第6章shell及进程•109•1.进程的启动自从用户登录了系统之后,就一直有一个shell随着它运行。
这个shell就是一个进程。
在登录了之后,用ps看一看以下列表。
[echo@echo echo]$psPID TTY TIME CMD532tty100:00:00bash572t ty100:00:00ps进程号(PID)为532的进程的程序名(CMD)为Bash,这就是用户登录了之后伴随着用户的shell,这是一个Bash Shell。