zoukankan      html  css  js  c++  java
  • Linux的Shell练习--个人笔记

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

    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

    (下面粘贴执行截图Ê

    昔日我曾苍老,如今风华正茂(ง •̀_•́)ง
  • 相关阅读:
    java入门经验分享——记面向对象先导课程学习感想
    HashCode方法整理
    Java中vector用法整理
    Java中Iterator用法整理
    org.springframework.data.redis.RedisConnectionFailureException
    dubbo服务启动正常,但是访问不到服务,在监测中心也找不服务的原因之一
    【转】Elasticsearch Java Rest Client 指南
    【转】mybatis根据mapper执行sql的过程
    转:IDEA异常解决: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
    ES的常用查询与聚合
  • 原文地址:https://www.cnblogs.com/lgqrlchinese/p/10046198.html
Copyright © 2011-2022 走看看