`
Alvin871111
  • 浏览: 17709 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

shell程序设计(3)

阅读更多
shell中的特殊字符

1.通配符
用于模式匹配,常用的有三种:
1)*:匹配任意字符的0次或多次出现,但应注意,文件名前面的圆点(.)和路径名中的斜线(/)必须显示匹配。例如,模式“ *file”不能匹配.profile,而“.*file”才能匹配。
2)?:它匹配任意一个字符。
3)[]:其中有一个字符组。其作用是匹配该字符组所限定的任何一个字符。例如,f[abcd]能匹配fa,fb,fc,fd。方括号中的字符组可以由直接给出的字符组成,如上面所示;也可以由表示限定范围的起始字符、终止字符及中间一个连字符-组成。例如f[a-d]和f[abcd]的作用相同。应该注意,连字符仅在一对方括号内表示字符范围。
4)!:如果它紧跟在一对方括号的左方括号之后,则表示不在一对方括号中所列出的字符。

2.引号
在shell中引号分为三种:单引号、双引号、倒引号。
1)双引号
由双引号括起来的字符,除$、倒引号和反斜线仍保留其特殊功能外,其余字符通常作为普通字符对待。
2)单引号
由单引号括起来的字符都作为普通字符出现。特殊字符也失去原来的意义。
3)倒引号
倒引号括起来的字符串被shell解释为命令行,在执行时,shell会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。
利用倒引号的这种功能可以进行命令置换,即把倒引号括起来的命令的执行结果赋给指定变量。
还可以嵌套使用。但应注意,嵌套使用时内层的倒引号必须用反斜线将其转义。例如:
Nuser=`echo The number of users is \`who | wc -l\``
echo $Nuser
如果内层不用转义,而直接以原型出现在该字符串中。

3.反斜线
是转义字符,能把特殊字符变为普通字符。如果想在字符串中使用反斜线本身,则必须采用\的形式。
应注意,在单引号括起来的字符串中,反斜线也成为了普通字符。
另外,反斜线还可以作为续行符使用。如果把它放在一行的行首,那么这一行就和前面的一行被视为同一行。可用于表示长的输入行。

4.输入输出重定向符
执行一个shell命令时通常会自动打开三个标准文件,这就是:标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准出错输出文件(stderr),这两个文件都对应终端的屏幕。由父进程创建子进程时,子进程就继承了父进程打开的这三个文件,因而可以利用键盘输入数据,从屏幕上显示计算结果及各种信息。在shell中,这三个文件都可以通过重新定向符进行重新定向。
1)输入重定向符"<"
输入重定向的一般形式是:命令 < 文件名
2)输出重定向符">"
把命令的标准输出重新定向到指定文件。
应注意,如果不同命令的输出都定向到同一个文件,那么只有最后命令的输出保留在该文件中,原有内容被新内容冲掉了。如果定向的目标文件是一个普通文件,并且它原来不存在,那么就新建立一个新文件。
输出重定向一般形式是:命令 > 文件名
3)输出附加定向符 ">>"
把命令的输出附加到指定文件的后面。,而原有文件内容不会被覆盖。
一般形式:命令 >> 文件名
4)即时文件定向符 "<<"
即时文件是由重新定向符和标记符以及其中的若干输入行组成。它允许把shell程序的输入行重新定向到一个命令中。即时文件的形式是:
命令[参数] << 标记符
    输入行
    ...
   标记符
标记符要成对出现。如果没有作为结束符的标记符,但遇到文件末尾,同样也可以结束即时文件。
5)与文件描述字有关的重定向
在UNIX系统中,每一个打开的文件都有一个系统赋予的文件描述字,这是一个小整数。文件打开后,用户可以直接用这些描述字去引用对应的文件。如前所述,系统为每个进程自动打开的三个标准文件(标准输入,标准输出,标准错误输出)赋予的文件描述符为0,1,2
标准错误输出也可重定向到一个文件中,其一般形式为:
命令 2> 文件名
命令 2>> 文件名
在使用重定向符时应注意在文件描述字2和定向符之间不能有空格或制表符
shell重定向时从左到右进行的。
与重新定向有关的文件描述字可以是0~9,共10个数字。

5.注释、管道线和后台命令
1)注释
以#开头的正文行表示注释。
2)管道线
在UNIX系统中管道线是有竖杠隔开的若干个命令组成的序列
在管道线中,每个命令运行时都有一个独立的进程。前一个命令的输出正是下一个命令的输入。而管道线中有一类命令也称作“过滤器”,过滤器首先读取输入,然后将输入以某种简单方式进行变换,再将处理结果输出,例如grep,tail,sort,wc等命令就成为过滤器。
一个管道线中可以包括多条命令。
3)后台命令
在一条命令的最后键入&,shell就在后台启动该程序,并且马上显示主提示符,提醒你键入新的命令。
通常规定,后台进程的调度优先级都低于前台进程的优先级。

6.命令执行操作符
1)顺序执行
多条命令可以在多行中键入,每条命令或管道线单独占一行,也可将这些命令在一行中输入,但各条命令之间应以分号;隔开
2)逻辑与
“&&”可把两个命令联系到一起,其一般形式
命令1&&命令2
功能是:先执行命令1,成功后才可执行命令2。
3)逻辑或
“||”可把两个命令联系起来,一般形式:命令1||命令2
功能是:先运行命令1,如果运行不成功,则运行命令2;否则,若命令1运行成功,则不运行命令2。
操作符&&和||实际上可视为管道线上的条件运算符,他们的优先级相同,都低于&和|的优先级。

7.成组命令
在shell中有两种方式可以将若干个命令组合在一起,使其在逻辑上被视为一条命令,他们使用或括号{}将命令括起来和用圆括号()括起来。
以花括号括起来的全部命令可视为语法上的一条命令,出现在管道符的一边,成组命令的执行顺序是根据命令出现的先后次序,由左至右执行。在管道线中,成组命令把各命令的执行结果汇集在一起,形成一个输出流,这个流作为该管道线中下一个命令的输入。
使用花括号时在格式上应注意,左括号后面应该有一个空格;右括号之前应该有一个分号。花括号也可以包含若干单独占一行的命令。
成组命令也可以用圆括号括起来,执行过程与用花括号形式相同。但二者又有重要的区别:用花括号括起来的成组命令只是在本shell内执行命令表,不产生新的进程。而用圆括号括起来的成组命令时在新的shell内执行,要建立新的子进程。因此,在圆括号内的命令不会改变父shell的变量值及工作目录等。
在用圆括号括起成组命令时,左括号后不必有空格,右括号之前也不需加上分号。
分享到:
评论

相关推荐

    unix shell程序设计

    Unix Shell程序设计主要关注的是如何使用Bourne Shell(sh)进行高级程序设计。Shell作为Unix系统中的一个重要组成部分,不仅充当命令解释程序的角色,解析并执行用户输入的命令,还能作为一个高级程序设计语言,...

    Linux系统实验1.Linux的安装和常用指令2.Vi编辑器使用和Shell程序设计3.Linux系统下常用4.系统及网络管理

    Linux系统实验1.Linux的安装和常用指令2.Vi编辑器使用和Shell程序设计3.Linux系统下常用4.系统及网络管理

    精通 LINUX & UNIX Shell 程序设计.pdf 高清下载

    由于提供的内容中仅包含标题、描述、标签和下载链接的重复信息,并没有具体到Linux和UNIX Shell程序设计的技术细节,因此无法直接从这部分内容中提取出符合要求的知识点。为了满足您的要求,我将基于标题和标签中...

    Linux课件_shell程序设计

    3. **Shell程序设计的语法** - **变量**:Shell允许声明和使用变量来存储数据,如路径、计数器等。 - **条件测试**:使用条件表达式检查文件属性、数值比较等,例如`[ expression ]`或`[[ expression ]]`。 - **...

    linux shell程序设计实验1

    Linux Shell程序设计是Linux系统管理与自动化任务处理的重要部分,主要使用Bash(Bourne-Again SHell)脚本来编写。在这个“linux shell程序设计实验1”中,我们将探讨如何利用基本的`case`和`if`语句来编写简单的...

    UNIX和shell程序设计权威教程

    本书《UNIX和shell程序设计权威教程》深入浅出地介绍了这两个主题,为读者提供了全面而详细的学习资源。 UNIX系统是一种多用户、多任务的操作系统,它的设计哲学强调简洁和模块化,使得它成为开发高效软件的平台。...

    UNIX和Shell程序设计权威教程pdf

    《UNIX和Shell程序设计权威教程》是一本深入探讨UNIX操作系统及其Shell编程的宝贵资源。这本书旨在帮助读者理解和掌握UNIX系统的基础以及如何利用Shell脚本来自动化日常任务,提升工作效率。UNIX是一种强大的多用户...

    shell程序设计范例

    在IT领域,Shell程序设计是Linux/Unix操作系统中不可或缺的一部分。Shell是一种命令行解释器,它为用户提供了与操作系统交互的界面,同时也允许用户编写脚本进行自动化任务处理。本资料包“shell程序设计范例”显然...

    linux程序设计shell程序设计case语句

    linux程序设计shell程序设计case语句,书上的例程,大家可以下来学习

    linux shell程序设计实验2

    题目名称 linux shell程序设计实验2 题目关键字 linux shell程序设计实验2 题目录入时间 2013-5-6 10:26:43 题目内容 按要求完成课本实验7。 题目创建人 邝颖杰 题目注释 把3个程序文件打包提交即可。

    《unix和shell程序设计权威教程 》

    本书《Unix和Shell程序设计权威教程》深入浅出地介绍了这两个主题,为学习者提供了丰富的知识资源。 Unix操作系统是最早由Ken Thompson、Dennis Ritchie等人在贝尔实验室开发的一种多用户、多任务的操作系统。它以...

    shell程序实验报告

    本次实验旨在使学习者掌握在Unix系统下的基本操作及Shell程序设计方法。通过实际编程任务加深对Shell脚本的理解,具体目标包括: 1. **熟悉Unix环境下的基本操作**:这包括文件管理、目录导航、文件权限设置等常用...

    Linux操作系统-shell程序设计.ppt

    操作系统-shell程序设计.ppt 供初学者使用 shell是一种命令解释程序,shell解释用户输入的命令行,提交系统内核处理,并将结果返回给用户。一旦用户注册到系统后,shell就被系统装入内存,并一直运行到用户退出...

    基于Linux的简单Shell程序设计

    本教程将深入探讨如何进行基于Linux的简单Shell程序设计,让我们一起探索这个主题。 一、Shell脚本基础 1. 文件开头:在编写Shell脚本时,我们通常会在文件开头添加一行`#!/bin/bash`,告诉系统使用Bash shell来...

    Linux Shell程序设计 Ubuntu 实验二

    【Linux Shell程序设计 Ubuntu 实验二】实验主要涵盖了Linux操作系统中的Shell编程基础,适用于Ubuntu环境。实验目的是让学生掌握Bash Shell的创建与执行方法,理解基本语法,并学会编写Shell脚本。实验报告要求遵循...

    Linux Shell程序设计 实验四

    【Linux Shell程序设计 实验四】的实验主要涵盖了三个核心知识点:硬盘分区管理、文件系统创建与挂载、以及Linux定时任务(crontab)的配置。这些是Linux系统管理中的基础技能,对于理解操作系统底层运作和自动化...

    经典书籍:UNIX和shell程序设计权威教程(PDF)

    前一部分全面讲解了UNIX操作系统,包括UNIX操作系统、vi和ex编辑器、文件系统与文件操作权限、以及各种UNIX实用程序;后一部分深入介绍了各种类型的UNIX shell编程,涵盖了Korn shell、C shell等主要的shell类型。...

    linux操作系统 shell程序设计

    ### Linux操作系统 Shell程序设计 #### 实验目的 本次实验旨在帮助学习者掌握Linux批处理文件(即shell脚本)的编辑与执行技能,并熟练运用批处理语言进行编程。此外,还将深入了解Linux系统自带的文本编辑器vi的...

Global site tag (gtag.js) - Google Analytics