已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一 Shell初步实验所属系列:linux操作系统应用实验。 实验时数(学分):2学时。 实验目的:使学生熟悉shell的基本操作,并使学生有机会使用Linux中最常用的数据处理命令。 实验要求: 使用通配符来进行文件名的查找。 重定向标准输入、标准输出、标准错误输出。 使用管道操作,将一个进程的输出作为另一个进程的输入。 使用群命令和命令行续行符。 在指定的目录中,对满足条件的文件名进行递归查找。 了解vi编辑器的基本用法。 在文本文件中,查找符合指定模式的文本行。 将文本文件中的各行,按顺序排列。 显示一个文本文件的前几行或者后几行。简介:1shell简介 当用户登录到Linux上后,Linux将用户置于该用户的主目录下,并运行一个称为shell的程序。shell是一个命令解释程序,它提供了操作系统与用户之间的主要界面。 除了解释用户从键盘上键入的命令外,shell也可以解释存储在文件中的命令。事实上,Linux中的shell程序相当于MS-DOS中的COMMANDCOM程序。在MS-DOS中,存储命令的文本文件称为批处理文件,扩展名为bat。但在Linux中,含有命令的文本文件称为shell脚本,可以具有任意的扩展名。Shell脚本中的命令可以是Linux所提供的任何实用程序,也可以是专门由shell使用的特定控制命令流,用来控制shell脚本中各命令的执行次序。 现在的shell是一种功能非常强大而且非常灵活的工具,它所提供的许多功能使用户在操作系统下工作更简单。shell实际上是一种编程语言, shell编程广泛地用于获取经常执行的命令和过程。2shell特殊变量 在shell中,除了可以使用环境变量外,还可以使用专门由shell使用的shell特殊变量。与环境变量不同的是,用户只能引用shell特殊变量,而不能设置这些变量的值。shell特殊变量都由美元符$后随单个字符组成。例如:$? 上一条命令的执行情况$ ? 变量用来保存上一条命令的执行情况。如果命令执行成功,则该变量的值为0,否则表示命令执行失败。$n 命令行的第n个参数 这是一组变量,其中$1表示执行shell命令时所键入的第一个参数,而$2表示执行 shell命令时所键入的第2个参数,依此类推,但n最大只能为9。$0是一个特殊变量,它的内容是命令的名字。例如,如果输入如下命令: echo hello world 则$ 1的值为字符串“hello”,而$2的值为字符串“world”,$ 0的值则为命令名“echo。 如果一条命令的参数不只9个,则只能通过$*或$变量来查看所有参数:或者使用shift命令。当使用了shift命令后,$1的值被丢掉,而$2的值被送入$1,$3的值被送入$2,依此类推,最后$9变量的值变为第10个参数。每使用一次shift命令,这种值移位操作就被执行一次。因而通过shift命令,也能查看所有参数。$ 当前shell程序的pid $ $变量保存了当前正在运行的shell程序的进程标识符(pid),这在shell脚本中是很有用的。下面的例子用来在shell中查看该变量的值: $echo $ $ 3943shell脚本 由若干命令组成的文件称为shell脚本,也称为shell命令文件。1)建立shell脚本 shell脚本是一个文本文件,因此可以用来建立文本文件的方法都可以用来建立shell脚本。例如,可以用vi编辑器来建立一个shell脚本,也可以通过重定向标准输入和输出在命令行上直接建立shell脚本文件。下面给出了使用cat命令建立shell脚本的一种方法: catprint_user echo User name:$LOGNAME echo Home directory:$HOME echo Current shell PID:$ 该命令只有两个命令行,分别用来显示当前用户的登录名和主目录。2)执行shell脚本 建立了shell脚本文件后,我们就可以执行该脚本文件中的所有命令了。执行一个shell脚本文件有三种方法。(1)用子shell执行shell脚本文件。 可以让shell脚本文件作为sh命令的参数。sh就是shell的可执行程序。如果在sh后面没有参数,则只是运行了一个shell程序,且该shell程序成为当前shell,而原来的shell则是该shell的父shell。如果sh命令后面有文件名作为参数,则sh首先执行该文件中的命令,然后终止自己的执行并返回到原来的shell下。 要用子shell执行上述的脚本文件print_user,可以输入如下命令: $sh print_user 尽管prim_user文件没有执行权限,但其中的所有命令行都将被执行,如下所示: $sh print_user User name:jame Home directory:homejame Current shell PID:401 $echo $ 356 可以看出,print_user文件的最后一条命令显示的当前shell的pid是401,而在命令行下显示的当前shell的pid是356,因此用sh命令执行shell脚本文件时的shell与命令行中的shell不一样。也就是说,sh命令是用shell来执行shell脚本文件的。(2)用“”命令执行shell脚本文件。 (3)用exec命令执行shell脚本文件。参考shell实验参考资料shell是用户与内核之间的接口,shell在(理解)解释了用户输入的命令之后,就调用内核中的程序来执行它。所以,了解shell是如何解释和执行用户输入的命令,是理解Linux用户接口的基础。 如果想知道更多的关于这些命令的格式与选项的信息,使用man命令。在练习中,有些很长的命令将出现多次。使用命令行编辑功能会有助于你成功地完成本练习。实验内容:包括RHEL server 5在内的Linux系统都具有虚拟终端。虚拟终端为用户提供多个互不干扰、独立工作的工作界面,并且在不同的工作界面可用不同的用户身份登录。也就是说,虽然用户只面对一个显示器,但可以切换到多个虚拟终端,好像在使用多个显示器。 RHEL 5具有7个虚拟终端,其中第16个为字符界面;第7个为图形化用户界面,必须启动图形化用户界面时才存在。各虚拟终端的切换方法为: 从字符界面的虚拟终端到其他虚拟终端:【Alt+F1】【Alt+F7】从图形化用户界面到字符界面:【Ctrl+Alt+F1】【Ctrl+Alt+F6】,(在虚拟机中使用【Ctrl+Shift+Alt+F1】【Ctrl+Shift+Alt+F6】) 字符界面下的Shell命令操作,需切换到字符界面的虚拟终端上。1Shell命令操作【操作要求1】查看当前目录。 【操作步骤】 (1)启动计算机后默认会启动图形化用户界面,按【Ctrl+Alt+F1】(在虚拟机中使用【Ctrl+Shift+Alt+F1】)组合键切换到第一个虚拟终端。 (2)输入一个普通用户的用户名和口令,登录系统。字符界面下输入口令时,屏幕上不会出现类似“*”的信息,提高了口令的安全性。localhost login:helen Password: (3)输入命令“pwd”,显示当前目录,相关操作参见如下内容。 helenlocalhost $pwd homehelen 虚拟终端未登录时显示的第一行信息表示当前使用的Linux的发行版本是Red Hat EnterpriseLinux server,版本号为5,第二行信息显示Linux内核版本是.,以及本机的CPU型号是.。第三行信息显示本机默认的主机名localhost。成功登录系统后,还会显示该用户账号上次登录系统的时间以及登录的终端号。【操作要求2】用cat命令在用户主目录下创建一名为f1的文本文件,内容为: Linux is useful for us all You can never imagine how great it is 【操作步骤】 (1)输入命令“cat f1”,然后依次输入上述内容。 helenlocalhost $cat f1 使用cat命令进行输入时,不能使用左、右、上、下方向键,只能用【Back-Space】键来删除光标前一位置的字符。并且一旦按【Enter】键,该行输入的字符就不可修改。 (2)上述内容输入后,按【Enter】键,让光标处于输入内容的下一行,按【Ctrl+D】组合键结束输入。 (3)要查看文件是否生成,输入命令“ls”即可。 $ ls (4)输入命令“cat f1”,查看f1文件的内容。 $cat f12重定向标准输入通常来自键盘,而标准输出和标准报错则送至终端显示。但事实并不总是如此,因为我们可以将标准输入、标准输出甚至标准报错重定向到一个文件。也就是说,可以让命令从某个文件中读取参数和数据,命令的输出结果也可以送至某个文件中而不是在终端上显示出来。当将某个文件指定为命令的标准输入时,该命令必须是能从该文件读取其输入的。例如,pwd(打印工作目录)命令就不能将一个文件名作为其标准输入,因为它的输入源是固定的。 实现重定向的最简单的方法是使用改向操作符。改向操作符可以将标准输入、标准输出和标准报错改向到某个文件。 当我们在shell中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名。下面就是这些文件描述符及它们通常所对应的文件名: 文 件 文件描述符 输入文件标准输入 0 输出文件标准输出 1 错误输出文件标准错误 2系统中实际上有12个文件描述符,可以任意使用文件描述符3到9。 但是正如上面所看到的,0、1、2是标准输入、标准输出和标准错误。Shell命令中常用的重定向符号共三个,如下所示: 输出重定向,将前一命令执行的结果保存到某个文件。如果这个文件不存在,则将创建此文件;如果这个文件已有内容,则将覆盖原有内容。 附加输出重定向,将前一命令执行的结果追加到某个文件。 filename 把标准输出重定向到一个新文件中Command filename 把标准输出重定向到一个文件中(追加)command1 filename 把标准输出重定向到一个文件中command filename 2&1 把标准输出和标准错误一起重定向到一个文件中command2 filename 把标准错误重定向到一个文件中command2 filename 把标准输出重定向到一个文件中(追加)command filename 2&1 把标准输出和标准错误一起重定向到一个文件中(追加)command filename2 command命令以filename文件作为标准输入,以filename2文件作为标准输出command filename command命令以filename文件作为标准输入command delimiter 从标准输入中读入,直至遇到delimiter分界符command &m 把标准输出重定向到文件描述符m中command f1”, helenlocalhost $ catf1,然后输入Why not have a try? (2)输入上述内容后,按【Enter】键,让光标处于输入内容的下一行,按【Ctrl+D】组合键结束输入。 (3)输入“cat f1”命令;$cat f1,查看f1文件的内容,会发现f1文件增加了一行。 Linux is useful for us all You can never imagine how great it is Why not have a try? shell命令中可使用重定向来改变命令的执行。此处使用“”符号可向文件结尾处追加内容,而如果使用“”符号则将覆盖已有的内容。【操作要求2】统计fl文件的行数、单词数和字符数,并将统计结果存放在countf1文件。 【操作步骤】 (1)输入命令“wc countf1”,屏幕上不显示任何信息。 (2)输入命令“cat countf1”,查看countf1文件的内容,其内容是f1文件的行数、单词数和字符数信息,即f1文件共有三行,19个词和87个字符,相关操作参见如下内容。 helenlocalhost $wc countf1 helenlocalhost $cat countf1 3 l9 87【操作要求3】将f1和countf1文件的合并为f文件。 【操作步骤】 (1)输入命令“cat f1 countf1f, 将两个文件合并为一个文件。 (2)输入命令“cat”查看f文件的内容,如下所示: helenlocalhost $cat f1 countf1 f helenlocalhost $cat f Linux is useful for us all You can never imagine how great it is Why not have a try?3 l9 87【操作要求4】练习使用cat命令与重定向。(1)创建一个名为junk的文件。先随便输入几行内容,然后在最后一个新行的开始处,按Ctrl+D键以返回到shell的$提示符。$catjunk (2)使用cat命令在你刚刚创建的文件的末尾新加入几行文本。 $cat junk (3)将文件junk作为信件的内容,给自己发个mail。打开mail,阅读,然后删除,最后退出mail。 $cat junk | mail用户名 $mail 进入mail程序后,它会给用户一个提示符&,用户可以在这个提示符下输入命令来阅读、发送、编辑、存储、删除邮件。mail程序的命令较多,不容易记住,用户可以首先输入help或?,mail程序将显示常用命令帮助信息。例如,键入t将在屏幕上阅读当前邮件,输入n将跳到下一个邮件,并显示出来。用户还可以使用数字键直接选择要阅读的邮件。此外,还可以用加号和头号在相邻的邮件中切换。$t删除命令为d,命令所用的参数是邮件的号码。如果不提供参数,mail程序将删除最后一次显示出来的邮件。 $d有两条命令可以完成该退出操作:quit(q)和exit(x)。quit命令首先退出已经阅读过的邮件,并将它们保存在用户起始目录中名为mbox的文件中(以添加方式进行),然后结束mail程序的运行回到Shell界面。用exit命令直接退出mail程序,将不对系统邮箱做任何整理工作,不保存对系统邮箱做的任何改变并退出。$q (4)在junk文件中查找“student”字符串,将查找结果追加至student.out,并将错误信息追加至grep.err文件当中。 $grep student junk 1student.out 2grep.err (5)在上述例中,将查询结果与错误信息一起重定向到student.out当中。 $grep student junk 1student.out 2l$cat student.out3通配符 Shell命令的通配符包括*、?、 、-和!,灵活使用通配符可同时引用多个文件,方便操作。通配符用于模式匹配,如文件名匹配、路径名搜索、字符串查找等。用户可以在命令参数中包含通配符(在文件名中或字符串中)构成一个所谓的“模式串”,在执行过程中进行模式匹配。 *:匹配任意长度的任何字符。 ?:匹配一个字符。 :表示范围。 -:通常与 配合使用,起始字符-终止字符构成范围。 !:表示不在范围,通常也与 配合使用。【操作要求1】显示bin目录中所有以c为首字母的文件和目录。 【操作步骤】 输入命令“ls /bin/c*”,屏幕将显示bin目录中以c开头的所有文件和目录,相关操作参见如下内容。 helenlocalhost $ ls binc* bincatbinchmod bincp bincsh binchgrpbinchown bincpio bincut【操作要求2】显示bin目录中所有以c为首字母、文件名只有三个字符的文件和目录。 【操作步骤】 (1)按向上方向键,Shell命令提示符后出现上一步操作时输入的命令“ls /bin/c*”。 (2)将其修改为“Isbinc?”,按【Enter】键,屏幕显示bin目录中以c为首字母、文件名只有三个字符的文件和目录,相关操作参见如下内容。 helen10calhost $ls /bin/c? bincat bincsh bincut Shell可以记录一定数量的已执行过的命令,当用户需要再次执行时,不用再次输入,可以直接调用。使用上、下方向键,【PgUp】或【PgDn】键,在Shell命令提示符后将出现已执行过的命令。直接按Enter键就可以再次执行这一命令,也可以对出现的命令行进行编辑,修改为用户所需要的命令后再执行。【操作要求3】显示bin目录中所有的首字母为c或s或h的文件和目录。 【操作步骤】 输入命令“ls bincsh*”,屏幕显示bin目录中首字母为c或s或h的文件和目录,相关操作参见如下内容。 helenlocalhost $ls /bin/csh* bincat binchownbincsh binsed binsh binstty binchgrp bincp bincut binsetfont binsleep binsu binchmodbincpio binhostnamebinsetserial binsortbinsync csh*并非表示所有以csh开头的文件,而表示是以c或s或h的文件。另外为避免误解,也可以使用c,s,h*,达到相同的效果。【操作要求4】显示 bin目录中所有的首字母是v、w、x、y、z的文件和目录。 【操作步骤】 输入命令“ls /bin/!a-u*,屏幕显示bin目录中首字母是vz的文件和目录,相关操作参见如下内容。 helenlocalhost $ls /bin/!a-u* binvi binview binypdomainname binzcat 【操作要求5】重复上一步操作。 【操作步骤】 输入命令“!”,自动执行上一步操作中使用过的“ls /bin/!a-u*”命令,相关操作参见如下内容。 helenlocalhost $! is /bin/!a-u binvi binview binypdomainname binzcat 用户不仅可利用上、下方向键来显示执行过的命令,还可以使用history命令查看或调用执行过的命令。history命令可查看到已执行命令在历史记录列表中的序号,可使用“! 序号”命令调用,而“!”命令则执行最后执行过的那个命令。 【操作要求6】查看刚执行过的5个命令。 【操作步骤】 输入命令“history 5”,显示最近执行过的5个命令,相关操作参见如下内容。 helenlocalhost $history 54管道及tee另一种实现重定向的方法是使用管道(|),它将一条命令的输出发送到另一条命令的输入。下一部分将详细讨论管道操作。重定向操作符提供了对同一输入执行多个操作的一种方法。只要将一个命令的输出重定向到一个文件,然后再用该文件作为另一个命令的输入,就可以在shell中完成绝大多数你想要做的事情,而不需要通过编写程序来实现。但是,假如现在要做的事情需要一连串的多个命令来实现,且每个命令的输入都来自前一个命令的输出,使用前面介绍的重定向操作符固然可以轻易地实现这件事情,但每一步重定向操作都需要产生一个新文件,而这些文件的唯一用途就是用作另一条命令的输入。在这一连串的命令中实际想要的只是最终结果,而不是中间文件。在这种情况下,使用重定向操作符将会产生许多中间文件扰乱你的文件系统,因为决不会再去用这些文件,以后必须将它们删掉。 为了避免每次重定向操作就产生一个新文件,可以使用管道操作符(|)来代替重定向操作符。管道操作符将一条命令的输出定向到另一条命令的输入,而不是定向到终端或文件。【操作要求1】进入usrbin目录,列出所有不是以c-t开头的文件名。 【操作步骤】(1)$)#cd usrbin (2) #$ls ! c-t*(3)这将是一个很长的输出。可以使用管道操作,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46751-2025低温再生转轮调湿新风机组
- 电力安全严抓策略讲解
- 2025小升初语文写作基础补差卷(段落+简单记叙文)
- 2026-2031年中国高比表面氢氧化钙市场调研分析及投资战略研究报告
- 消防安全建言献策方案
- 2025重庆涪陵区人民政府江东街道办事处招聘5人备考题库附答案详解(典型题)
- 2025四川银行分支机构对公专项社会招聘备考题库附答案详解(综合题)
- 2025大理市林业和草原局喜洲镇苍山卫士中队招聘备考题库(1人)含答案详解
- 2025重庆北碚区公益性岗位招聘2人备考题库有完整答案详解
- 2025杭州钱塘区总工会公开招聘工会社会工作者1人备考题库附答案详解(巩固)
- T-CPIA 0054-2023 光伏发电系统用柔性铝合金电缆
- 2024年湖南铁道职业技术学院单招职业技能测试题库及答案解析word版
- 三级斜齿轮减速器
- 材料物理基础-材料的声学
- 脚手架操作平台搭设方案
- 2023儿童特发性矮身材诊断与治疗中国专家共识(完整版)
- 中广核研究院热室设施建设项目 环境影响报告书(建造阶段)
- 城市网约车平台建设及商业运营方案
- 第十二章 疫苗与免疫预防
- 术中低体温护理查房
- (全)人教版九年级英语Unit14单词、课文 知识梳理 词汇句式精讲(名校版)
评论
0/150
提交评论