Linux实验三:Shell编程

文章目录

  • 一、实验目的
  • 二、实验要求
  • 三、实验内容
    • 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目录下;
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux实验四:编译和调试工具的使用

文章目录一、实验目的&#xff1a;二、实验要求三、实验内容四、实验操作1、用gcc编译程序&#xff0c;写出编译过程&#xff0c;并给出运行结果。2、调试程序&#xff0c;要求用gdb进行调试并给出修改方案。3、make的使用一、实验目的&#xff1a; 1、练习并掌握Linux提供的v…

Linux实验五:Linux环境下的C语言编程

文章目录一、实验目的&#xff1a;二、实验要求三、实验内容1、编写一段C语言程序使其完成&#xff1a;父进程创建两个子进程&#xff0c;每个进程都在屏幕上显示自己的进程ID号。2、上机调试下面的程序&#xff0c;观察运行结果&#xff0c;分析原因。3、利用两个管道进行双向…

ndarray对象的建立

文章目录ndarray&#xff08;别名array&#xff09;常用属性创建NumPy数组使用array()函数使用zeros()函数使用ones()函数使用empty()函数使用arange()函数注意ndarray&#xff08;别名array&#xff09; 常用属性 import numpy as np # Numpy工具包data np.arange(12).res…

Numpy数组的广播机制

文章目录前言数组广播广播机制的使用条件前言 Numpy数组不需要循环遍历&#xff0c;即可对每个元素执行批量的算术运算操作&#xff08;矢量化运算&#xff09;。当两个数组大小&#xff08;Numpy.shape&#xff09;不同时&#xff0c;进行算术运算会出现广播机制。 数组广播…

数组的转置和轴对称

文章目录T属性transpose()方法swapaxes()方法T属性 import numpy as np # Numpy工具包data np.arange(12).reshape(3, 4) # 创建一个3行4列的数组 print(data)# 数组的转置和轴对称 data1 data.T print(data1)print(data) [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] print(dat…

管道实现父子进程的信息传递(一)【fork函数、pipe函数、write/read操作、wait函数】

文章目录题目描述代码实现关于pipe函数关于读写操作关于读写端口关于wait函数功能&#xff1a;注意&#xff1a;关于fork函数题目描述 编写一个程序&#xff0c;利用管道实现父子进程的通信&#xff0c;父进程向子进程发送信息&#xff0c;由子进程输出显示。 代码实现 #inclu…

基础的shell编程问题(一)

文章目录题目一题目描述代码实现关于$#的有关内容实测本程序的作用题目二题目描述代码实现注释关于argc、argv关于read函数关于文件描述符关于write函数本程序的作用题目三题目描述代码实现实测关于grep命令关于read命令题目四题目描述代码实现关于test命令实测题目一 题目描述…

基础的shell编程问题(二)

文章目录题目一题目描述代码实现结果验证关于本题题目二题目描述代码实现结果测试题目三题目描述代码实现及结果测试题目四题目描述代码实现及结果测试题目五题目描述代码实现及结果测试题目一 题目描述 输入的命令行参数必须是hello&#xff0c;才会正确显示&#xff1b;否则…

Numpy实现酒鬼漫步问题【以及randint()、where()、cumsum()、argmax()的用法详解】

文章目录题目描述代码实现关于本题涉及到的几个函数randint()where()cumsum()题目拓展题目描述代码实现题目拓展题目描述代码实现argmax()题目描述 从前有一个酒鬼&#xff0c;喝醉了行走在一条直线上&#xff0c;每走一步方向是不确定的&#xff08;向前或者向后&#xff09;…

搞清axis的含义,这一篇就够了!

文章目录axis的含义旁门左道式理解二维数组中的axis三维数组中的axis正规理解axis的含义 在自己分析之前先摆上官方关于多维数组中axis的值的定义&#xff1a; axis 0&#xff0c;表示第一个维度 axis 1&#xff0c;表示第二个维度 axis -1&#xff0c;表示最后一个维度…

Struts2.3.5+Hibernate3+Spring3.1基于注解实现的多文件上传,下载

Struts2.3.5Hibernate3Spring3.1基于注解实现的的多文件上传&#xff0c;下载,这里是上传文件到数据库中&#xff0c;上传控件可以增加和删除&#xff0c;有需要的朋友可以看看。 以下是源码下载地址&#xff1a;http://www.zuidaima.com/share/1639672872438784.htm jar包的下…

【精品计划1】动态规划入门到熟悉,看不懂来打我啊

持续更新。。。。。。 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上&#xff0c;斐波纳契数列以如下被以递归的方法定义&#xff1a;F(0)0&#xff0c;F(1)1, F(n)F(n-1)…

【大总结2】大学两年,写了这篇几十万字的干货总结

本文是我大学两年知识的总结。涵盖数据结构、算法、语言基础、操作系统、关系数据库、NOSQL、网络/前端/项目基础知识、安全和测试、框架的学习、中间件和工具、设计模式和框架原理、我推荐的资料、我的建议 本篇文章应该算是Java后端开发技术栈的&#xff0c;但是大部分是基础…

《这是全网最硬核redis总结,谁赞成,谁反对?》六万字大合集

我摊牌了&#xff0c;这篇文章&#xff0c;值得99%的人收藏 此文后续会改为粉丝可见&#xff0c;所以喜欢的请提前关注和收藏&#xff0c;不迷路。 最近有五本我喜欢的redis实体新书&#xff0c;想要的去评论&#xff0c;我写个随机数抽奖包邮送给你。 那么&#xff0c;准备好…

Python数据预处理之异常值的处理——【自定义的three_sigma()函数、boxplot()方法】

文章目录基于3σ原则检测异常值代码实现测试基于箱型图检测异常值异常值的处理基于3σ原则检测异常值 3σ原则&#xff0c;又称拉依达准则。是指假设一组检测数据只含有随机误差。对其进行计算处理得到标准偏差&#xff0c;按一定概率确定一个区间&#xff0c;凡是超过这个区间…

那个谷歌的网红扔鸡蛋的题,来看看教科书式的回答

leetcode顶级难题&#xff0c;谷歌面试天天问&#xff0c;来看看吧&#xff0c;带你来一步一步达到最优解。 谷歌不知道问了多少遍&#xff0c;蓝桥杯也出现过&#xff0c;leetcode上是顶级难题&#xff0c;到底是什么题能如此频繁地出现&#xff1f;我们一探究竟吧。 原题描述…

不骗你,没读这一篇,你不可能懂二分

上篇文章讲动态规划获得了80k浏览&#xff0c;这次的二分也值得你们一看&#xff0c;这个系列是特别用心写的&#xff0c;准备出书的哦 动态规划 3.0 引子 图书馆自习的时候,一女生背着一堆书进阅览室,结果警报响了,大妈让女生看是哪本书把警报弄响了&#xff0c;女生把书倒出…

超硬核!操作系统学霸笔记,考试复习面试全靠它

之后会发布基于基础知识的大部分算法的模拟代码合集&#xff0c;敬请关注。 进程基础 进程的基本概念 程序顺序执行的特征&#xff1a; 1&#xff09;顺序性&#xff1a;处理机严格按照程序所规定的顺序执行&#xff0c;每一步操作必须在下一步操作开始前执行 2&#xff09;封…

超硬核!学霸把操作系统经典算法给敲完了!要知行合一

上期的笔记&#xff0c;浏览快1万了&#xff0c;既然关注的人很多&#xff0c;那就发出来承诺过的算法全模拟&#xff0c;希望帮到你们。 上期的操作系统学霸笔记&#xff0c;考试复习面试全靠它 一、模拟进程调度 功能 data.h #ifndef _Data_h_ #define _Data_h_#include …

超硬核!数据结构学霸笔记,考试面试吹牛就靠它

上次发操作系统笔记&#xff0c;很快浏览上万&#xff0c;这次数据结构比上次硬核的多哦&#xff0c;同样的会发超硬核代码&#xff0c;关注吧。 超硬核&#xff01;操作系统学霸笔记&#xff0c;考试复习面试全靠它 第一次笔记&#xff08;复习c&#xff0c;课程概述&#xff…