一、 实验准备(预防抄袭,此步必做)

1. 请将提示符设为:学号加波浪号。输入PS1=学号~,如PS1=110015~, 回车执行

2. 如发现提示符、学号不匹配, 视为抄袭或无效

二、 实验项目

1. for循环控制命令

执行命令:

host www.****.edu.cn

可以得到它的ip地址: 222.175.157.209

假如现在我们要测试222.175.157.1到222.175.157.254这个范围内哪些ip处于活跃状态,那些处于非活跃状态,需要重复ping这些ip地址。可以采用for循环,下面做个实验:

执行命令

touch test41

打开test41,输入:

存盘退出,执行命令

chmod +x test41

输入 ./test41 执行:

(下面粘贴执行截图Ê)

$ 这里有几点需要注意:

  • 使用了输出追加重定向操作>>
  • alive=$(命令)的意思是命令替换,即把命令的执行结果保存在变量alive中,因为默认情况下,命令的输出是标准输出,即屏幕,而不是变量。
  • 关于命令替换,见教材207页
  • 命令wc –l alive.data统计文件中的行数,但命令共输出两个域,通过cut –f1命令把第一个域截取出来。-d指定域之间的分隔符是空白,注意单引号之间要有一个空格
  • 关于ping命令中-w 、-c选项的含义,参考man ping,请自学
  • {1..254}是一个集合,意思是从1到254

执行命令

ls –lh | grep data

可以看到两个文件:

(下面粘贴执行截图Ê)

执行命令

cat alive.data not_alive.data | more

可以看到:

(下面粘贴执行截图Ê)

思考题

如果每次执行这个脚本,文件alive.data、 not_alive.data都保存了上次执行的结果,这是不正确的。ping之前,需要把文件alive.data、not_alive.data清空,应该在程序中如何处理?请重新改写上面的脚本,并测试你的程序。

(下面粘贴你的程序,以及执行截图Ê)提示:参考 man truncate

下面再做过一个批量生成空白文件的实验

执行命令 touch test42,在文件test42中,键入:

然后键入bash test42, 可以看到

(下面粘贴执行截图Ê)

最后执行命令rm *.log 删除这些临时文件

2. break语句

请同学们自己做,教材241页,程序break01.sh

(下面粘贴执行截图Ê)

3. select循环

教材238页,程序select01.sh

(下面粘贴执行截图Ê)

4. until循环控制

until的语法是

until condition

do

……

done

只要条件condition不满足,就反复循环,直到条件满足为止

下面做个实验,如果你有事要找root先生,那么当root登陆后,立即响铃一声,并提示你

执行命令 touch test43, 在文件test43中键入:

然后执行命令

chmod +x test43

./test43 root

接下来,按ctrl + alt + F2, 以root身份登陆。再按ctrl + alt + F7返回,

可以看到:

(下面粘贴执行截图Ê)

$ 这里有几点注意:

  • 为了保持脚本安静运行,输出被扔掉了
  • $1就是第一个参数,也就是命令行传进来的root
  • \a的意思是让铃铛alarm一声
  • sleep 50 的意思是暂停50秒,否则反复测试会消耗CPU资源

5. while循环

教材235页,程序while03.sh

(下面粘贴执行截图Ê)

Linux的Shell练习--个人笔记的更多相关文章

  1. Linux shell 菜鸟学习笔记....

    20171123 Linux shell 基础学习笔记1. shell 的开始 一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径 其他的 # 都表示注释.2. shell 的 ...

  2. 《The Linux Command Line》 读书笔记02 关于命令的命令

    <The Linux Command Line> 读书笔记02 关于命令的命令 命令的四种类型 type type—Indicate how a command name is inter ...

  3. 《The Linux Command Line》 读书笔记01 基本命令介绍

    <The Linux Command Line> 读书笔记01 基本命令介绍 1. What is the Shell? The Shell is a program that takes ...

  4. loadrunner调用plink,远程linux执行shell命令

    loadrunner调用plink,远程linux执行shell命令   脚本: Action() {   char* cmd; cmd = lr_eval_string("C:\\\&qu ...

  5. Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...

  6. Linux——帮助命令简单学习笔记

    Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...

  7. Linux操作系统及应用课程笔记 索引

    第0部分  软件的安装与配置 Linux下软件的安装与配置 第1部分*   绪论 第2部分*  Linux的安装过程 第3部分   系统Shell和经常使用命令 Shell文件相关经常使用命令及參数总 ...

  8. Linux内核设计与实现笔记_1_基本概念

    Linux内核设计与实现笔记_1_基本概念 操作系统 系统这个词包含了操作系统和所有运行在它上面的应用程序.操作系统是指在整个系统中负责完成分最基本功能和系统管理的那些部分,这些部分应该包括: 内核, ...

  9. 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...

随机推荐

  1. 平均精度均值(mAP)——目标检测模型性能统计量

    在机器学习领域,对于大多数常见问题,通常会有多个模型可供选择.当然,每个模型会有自己的特性,并会受到不同因素的影响而表现不同. 每个模型的好坏是通过评价它在某个数据集上的性能来判断的,这个数据集通常被 ...

  2. 关于eclipse tomcat 无法启动(8080,8005,8009端口被占用)的解决方法,附 eclipse tomcat 与 tomcat 并存方式

    eclipse 在编译运行时 新建的tomcat连接始终为stopped状态,描述为8080,8005,8009端口被占用. 这是因为在装完tomcat后,tomcat服务已启动,而eclipse仅仅 ...

  3. 八、xadmin自定义菜单栏顺序

    xadmin默认是读取注册的app和所有注册到xadmin的mode来生成对应的菜单. nav_menu[app_key] = { 'title': app_title, 'menus': [mode ...

  4. H5 67-清除浮动方式三

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 关于jsp中jstl-core标签循环遍历的使用

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...

  6. p2394 精度题

    题意:输出n/23即可 解法一: 利用高精度的long double直接输出,但由于n的长度不确定,我们要加个限制%12Lf #include <cstdio> int main(){ l ...

  7. [Offer收割]编程练习赛97

    链接 [https://hihocoder.com/contest/offers97/problems] 题意 题目1 : 放置矩形 时间限制:10000ms 单点时限:1000ms 内存限制:256 ...

  8. PT与PX区别

    字体大小的设置单位,常用的有2种:px.pt.这两个有什么区别呢? 先搞清基本概念:px就是表示pixel,像素,是屏幕上显示数据的最基本的点: pt就是point,是印刷行业常用单位,等于1/72英 ...

  9. 使用json读写文件中的数据

    把json的数据写入到文件中 import json with open('data.json','w+') as f: json.dump({"name":"张彪&qu ...

  10. C#复习笔记(5)--C#5:简化的异步编程(异步编程的深入分析)

    首先,阐明一下标题的这个“深入分析”起得很惭愧,但是又不知道该起什么名字,这个系列也主要是做一些复习的笔记,供自己以后查阅,如果能够帮助到别人,那自然是再好不过了. 然后,我想说的是异步方法的状态机真 ...