文章目录

  • 一、实验目的
  • 二、实验要求
  • 三、实验内容
    • 1、通配符的使用
    • 2、重定向
    • 3、管道
    • 4、shell变量
    • 5、建立下面的脚本,运行并分析输出结果,并给出代码注释。
    • 6、编写脚本

一、实验目的

1.为文件扩展名使用通配符

2.标准输入、标准输出和标准错误的重定向

3.使用管道将一个进程的输出作为输入提供给另一个进程。

4.执行命令分组和行继续

5.编写shell 脚本。


二、实验要求

1、管道(pipe-line)的使用
执行格式: command1|command2
功能:将command1的执行结果送到command2 作为输入

2、标准输入控制
执行格式: command-line<file 将file作为command-line的输入

3、标准输出控制
执行格式一: command>filename
功能:将command的执行结果送至指定的filename中
执行格式二: command>!filename
功能:同上,若filename文件已存在,则强迫重写
执行格式三:command>>filename
功能:将command 的执行结果,附加(append)到filename

4、shell脚本的调试方法:
(1)输入重定向到shell脚本
格式:$ bash < 脚本名
(2)以脚本名作为bash参数
格式:$ bash 脚本名 [参数]
(3)在提示符下直接执行
方法:先利用chmod命令将脚本文件设置为可执行权限;然后,将该脚本所在的目录添加到命令搜索路径中
(4)将shell脚本的权限设置为可执行,然后在提示符下直接执行
方法:
先利用chmod命令将脚本文件设置为可执行权限


三、实验内容

1、通配符的使用

(1)进入/etc目录并且将此处所有文件以列表显示

$ cd /etc
$ ls(或者$ echo *)

(2)要求用带有通配符的ls命令来显示文件名,实现:
-以conf结束

ls *conf

-以d 或D开始

ls [dD]*

-在文件名的第五个位置包括一个o

ls -d ????o*

-包含单词tab

ls -d *tab*

-以数字结尾

ls -d *[0~9]

-不以数字结尾

ls -d *[!0~9]

(3)如果你执行命令ls -d ?[!y]*[e-f]将会发生什么情况?能与之匹配的最短文件名是什么?执行这些命令来验证你的答案。

第一个位置匹配任意一个字符,第二个位置字符不是y,第二个位置之后到最后一个位置之间任意字符串,最后一个位置字符是e或者f。


2、重定向

(1)使用cat命令和指令来创建一个包含几行文本名为junk的文件。

(2)使用重定向junk文件中追加几行文本。然后查看junk文件的内容并且检查你刚刚所创建的文本是否都存在。


3、管道

(1)统计你当前目录所有文件的数目。使用管道,而不是手动地统计所有文件

(2)ls > tempfile ; wc -l tempfile是否和你刚刚使用的管道功能相同?为什么或者为什么不?

不同,管道功能不需要新的文件,本题的操作创造了新的文件tempfile。

(3)将多个用户文件联合为一个大文件。


4、shell变量

(1)显示由你当前进程环境所定义的所有变量。并且显示出当前输出的所有变量。

$ set

(2)创建一个变量x并初始化值为10。检查这个变量的值。再次,显示当前进程环境的所有变量。

(3)创建一个subshell.查看变量x在subshell下的值是什么?

(4)将x设置为500并返回到父进程。当前x的值是什么?为什么?

x=10的值保存在父进程中,x=500的值保存在了子进程中,互不继承。

(5)确保子进程继承了x。如何实现?


5、建立下面的脚本,运行并分析输出结果,并给出代码注释。

(1)ex1

#!/bin/bash   //所使用shell的绝对路径名,表示由bash脚本编写,从而应调用相应的解释程序予以执行
#shell special character   //“#”开头正文行表注释
echo "current directory is `pwd`"  //显示current directory is 当前目录的绝对路径
echo "current directory is 'pwd'"  //显示current directory is 'pwd'
echo "home directory is $HOME"   //显示home directory is 当前用户
echo "file*.?"  //显示file*.?
today=`date`  //将命令date赋给变量today
echo Today is :$today  //显示Today is :此刻的日期
ls ex*  //显示当前目录中文件名是以ex打头的文件

(2)ex2

#!/bin/bash
#bash script programming
if test $# == 0 //参数个数为0
thenls -l|grep '^d'   //显示当前目录中的所有文件夹信息
elsefor idols -l $i|grep '^d'  //显示各个参数目录中的所有文件夹信息done
fi

(3)ex3

case $1 in  //选择 -b或者-s如果什么都不选就进入*)
-b) count=`grep ^b $2 | wc -l`
echo "The number of lines in $2 that start with b is $count.";;
//显示The number of lines in 给出的文件 that start with b is 第几行
-s) count=`grep ^s $2 | wc -l`
echo "The number of lines in $2 that start with s is $count.";;
//显示The number of lines in 给出的文件 that start with s is 第几行
*) echo "That option is not recognized.";;
//显示That option is not recognized.
esac //关闭case


6、编写脚本

(1)编写shell 脚本,计算1-100 的和;

(2)编写shell 脚本,要求输入一个数字,然后计算出从1 到输入数字的和,要求,如果输入的数字小于1,则重新输入,直到输入正确的数字为止;

(3)编写shell 脚本,把/home目录下的所有目录拷贝到/tmp目录下;

Linux实验三:Shell编程相关推荐

  1. linux实验三shell程序设计,实验三 LINUX SHELL编程

    精选文库 -实验三LINUX SHELL 编程 四.实验内容 本实验包含两个具体的SHELL程序编写任务,较为全面地涉及了SHELL 程序的设计方法和技术.内容如下: 1.创建以下菜单程序: USER ...

  2. linux 程序实验总结,Linux实验报告(实验四) shell编程实验

    实验四 shell编程实验(二) 班级:姓名:学号:上机时间:年月日 任课教师:实验教师:实验成绩: 一.实验目的 综合Linux常用命令和vi编辑器的使用,熟练掌握shell脚本编程. 二.实验注意 ...

  3. 《Linux与unix Shell编程指南》 总结

    <Linux与unix Shell编程指南> 总结 标签: linux网络dstcron服务器 2011-01-10 18:27 3742人阅读 评论(0) 收藏 举报 分类: Linux ...

  4. shell编程入门 linux解释器原理,Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对.doc...

    Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对 Shell编程入门:Linux解释器原理详细介绍使用Shell进行工作的人们对Unix/Linux下的Shell编程都很 ...

  5. ZUCC_大数据计算技术_实验三 HDFS编程实践

    实验三 HDFS编程实践 课程名称 大数据计算技术 实验项目名称 实验三 HDFS编程实践 启动hadoop 一.利用Shell命令与HDFS进行交互 1. 目录操作 新建家目录 可以看到新建目录内无 ...

  6. linux的shell编程课设,linux课程设计-shell编程.doc

    linux课程设计-shell编程.doc 还剩 18页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: fido ...

  7. 2008年度LINUX与UNIX SHELL编程指北系列大片

    2008年度LINUX与UNIX SHELL编程 指北 系列大片 前言:这个世界是公平的,机会是平等的,学习的机会人人都有,只要你有不甘平庸的上进之心,定会成功! 主演:rootman rootman ...

  8. linux 中输入bash,Linux上Bash Shell编程

    Linux下Bash Shell编程 Bash Shell Programming in Linux Linux下Bash Shell编程 Bash what? 进阶的内容是什么? Okay, I g ...

  9. linux系统shell讲解实验报告,《操作系统》课程实验报告 SHELL编程.doc

    华南理工大学 <操作系统 SHELL编程 姓名: 余柳红 学号: 201330571011 班级: 13信息安全班 合作者: 无 指导教师: 贺小箭 实验概述[实验目的及要求] 实验目的: 熟悉 ...

  10. Linux实验三父子进程每隔3秒,实验三进程的创建和简单控制(学生分析.doc

    实验三进程的创建和简单控制(学生分析 实验 进程的创建和简单控制 实验目的: 掌握进程的概念和进程的状态,对进程有感性的认识: 掌握进程创建方法: 认识进程的并发执行,了解进程族之间各种标识及其存在的 ...

最新文章

  1. 简单是可靠的先决条件
  2. 软件“吞噬”世界后,我们正在进入“活产品”时代
  3. python中image.open函数怎么用_详解Python中open()函数指定文件打开方式的用法
  4. cocos2d - CCSprite各种动画
  5. Hadoop环境 IDE配置(在eclipse中安装hadoop-eclipse-plugin-2.7.3.jar插件)
  6. LaTeX——双栏论文插入图片
  7. Python里的++和--不是运算符
  8. Sharding-Proxy安装_以及_sharding-proxy自动分表配置_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记019
  9. Codeforces Round #FF (Div. 2) D. DZY Loves Modification 贪心+优先队列
  10. Centos7yum源配置PID锁定问题
  11. Go语言编程笔记1:Hello World
  12. Keil MDK 5安装了GD32 pack包工程里却找不到
  13. GO、Rust这些新一代高并发编程语言为何都极其讨厌共享内存?
  14. 板级电源究竟该怎么选型芯片?(实战篇)
  15. IOS开发之——硬件开发-加速计传感器(03)
  16. eWebEditor授权序列号
  17. 软件测试工程师绩效考核细则,软件测试工程师绩效考核方案
  18. Pandas:利用Styler对象设置Series、Dataframe在Jupyter Notebook中的输出样式(3)——格式化显示值、内置显示值格式化方法、表格外观、样式复用
  19. 显卡的优化以提高计算机性能作用,事实:[图形卡]黄卡驱动的“优化以提高计算性能”问题,只需进行简单测试即可...
  20. 【吐槽】B站大量番剧下架,程序猿们这时都在干什么?

热门文章

  1. ffmpeg php linux,linux(php环境) 安装ffmpeg
  2. Linux环境中Qt程序的手工发布
  3. mybatis的mysql参数传递参数_mybatis 传递参数的方法总结
  4. esp8266 micropython oled_micropython(4):使用ESP8266 控制 oled 屏幕,并显示 helloworld 字符...
  5. 如何升级浏览器_手把手教你申请IOS14 Beta升级方法
  6. 【转】C#中相同不同程序集存在相同的命名空间的时候的冲突解决办法
  7. 一步步编写操作系统 14 CPU与外设通信——IO接口 上
  8. android虚拟电话号码,为何安卓手机坚持虚拟按键?这才是原因
  9. 【Qt调试技巧】Profile配置使用及一些坑
  10. CTF爬虫:掌握这些特征,一秒识别密文加密方式