zoukankan      html  css  js  c++  java
  • Linux随堂1

     第一次随堂测试:所有脚本编写完成后,打包成“学号_Test1.tar”文件,用scp命令上传到222.195.136.184服务器。命令如下:

    scp ./学号Testl .tar Linux2021@222.195.136. 184:~/Test 1

    随堂笔记

    把两个PPT的知识点整理复习,Linux课程笔记 · 语雀 (yuque.com)

     先看我整理的笔记,再看题目的代码。

    题目&解题

    Ubuntu 18.xxx上,以下代码执行正常。

    1.

    在all_bash_ scripts 文件夹下,编写脚本把文件夹下大于300KB的可执行文件全部复制到与all_bash_scripts 文件夹呈并列关系的以当前系统日期命名的文件夹中。

    提示:需要使用if语句,for 循环语句,date, awk, ls, cp等命令。

    (1)t1.sh

    设all_bash_ scripts文件夹在当前执行路径下。

    参考:

    shell脚本如何判断文件大小 - 最最么么哒 - 博客园 (cnblogs.com)   awk命令获得文件大小

    Linux awk 命令 | 菜鸟教程 (runoob.com)

    Linux date命令 | 菜鸟教程 (runoob.com)

    #!/bin/bash

    # 当前路径
    pwdpath=$( pwd )

    # 目标扫描目录

    target_dir="all_bash_scripts"

    # 准备存储的日期目录,使用date命令

    date_dir=$( date '+%Y-%m-%d')

    # 和当前路径拼接获得全路径
    datepath="${pwdpath}/${date_dir}"
    targetpath="${pwdpath}/${target_dir}"

    # 如果目标扫描目录不存在,则退出
    if [ ! -e $targetpath ]; then
      echo 'all_bash_scripts folder dont exist'

      exit 1
    fi
    # 如果日期目录不存在,则创建
    if [ ! -e $datepath ]; then
      mkdir "$datepath"
    fi

    # 遍历扫描目录下文件
    targetfiles=$( ls ${targetpath} )
    for filename in ${targetfiles} ; do

      # 获得全路径
      file="$targetpath/${filename}"
      # 获得文件大小,test判断执行中必须使用&&表示与,而不能使用-a

      size=0

      test -f "${file}" && size="$( du -k $file | awk '{print $1}' )" #get size of current file if it is

      # 判断是否属于可执行文件,且文件大小是否大于300k

      if [ -x "$file" -a "${size}" -gt 300 ]
      then

        # 拷贝
        cp $file "$datepath/${filename}"
      fi
    done

    2

    编写一一个脚本,其名字为stars_ display.sh,根据后接num显示星星三角阵。提示:使用for循环语句

    stars_display 5
    *
    **
    ***
    ****
    *****

    (2)stars_ display.sh

    #!/bin/sh
    i=1
    while [ ${i} -le $1 ]; do
        j=1
        while [ ${j} -le ${i} ]; do
            echo -n "*"
            j=$(( ${j} + 1 ))
        done
        echo ""
        i=$(( ${i} + 1 ))
    done
    q@q-VirtualBox:~/work/chapter4$ sh star_display.sh 3
    *
    **
    ***
    q@q-VirtualBox:~/work/chapter4$ sh star_display.sh 5
    *
    **
    ***
    ****
    *****

    3.

    创建一个名为test_ files的文件夹,在其里面创建10个文件

    2021-11-01.dat
    2021-11-02.dat
    2021-11-03.dat
    2021-11-04.dat
    2021-11-05.dat
    2021-11-06.dat
    2021-11-07.dat
    2021-11-08.dat
    2021-11-09.dat
    2021-11-10.dat
    然后,请使用文本过滤器与for 循环语句,编写脚本将11月5日-9日的文件挑出来,放入一个与test_ files 呈并列关系的名字为picked_ files 的文件夹里

    参考

    grep的使用  (41条消息) shell文本过滤器之grep_南瓜啊的博客-CSDN博客

    (3)file_filter.sh

    以下两个文件放在同一目录下,先执行t3_create再执行t3脚本。

    t3_create.sh创建相应文件

    #!/bin/bash
    
    pwdpath=$( pwd )
    testpath="${pwdpath}/test_files"
    
    if [ ! -e "${testpath}" ]; then
           mkdir "${testpath}"
    fi
    
    for i in 1 2 3 4 5 6 7 8 9
    do
            touch "${testpath}/2021-11-0${i}.dat"
    done
    
    touch "${testpath}/2021-11-10.dat"

    t3.sh完成题目要求

    #!/bin/bash
    # 使用文本过滤器选出5-9日的文件
    target=$( ls ./test_files | grep '2021-11-0[5-9].dat'  )
    # 准备保存的文件夹,无则建
    pickdir="./picked_files"
    if [ ! -e "${pickdir}" ] ; then
        mkdir "${pickdir}"
    fi
    # 遍历目标文件复制
    for file in ${target}; do
        mv "./test_files/${file}" "${pickdir}/${file}"
    done

    4.

    编写一个脚本,其名字为calculator.sh,具有如下4种功能:
    calculator.sh plus num1 num2 num3 (功能: num 1+num2+num3)
    calculator.sh minus numl num2 num3 (功能: num l-num2-num3)
    calculator.sh multiply numl num2 num3 (功能: numl * num2 * num3)
    calculator.sh divide num l num2 num3 (功能: numl / num2 / num3)
    其中,numl ,num2与num3为任意实数,但进行除法时,分母不能为零。

    (4)calculator.sh

    除零问题待完善

    #!/bin/sh
    # case判断语句、脚本变量、数值计算
    case $1 in
    "plus")
        echo $(($2+$3+$4));;
    "minus")
        echo $(($2-$3-$4));;
    "multiply")
        echo $(($2*$3*$4));;
    "divide")
        echo $(($2/$3/$4));;
    esac

    以下是我执行后的路径下文件内容

  • 相关阅读:
    MySQL mysqldump数据导出详解
    FTP上传下载 C#辅助类
    FastDFS java 辅助类
    Ajax 提交表单【包括文件上传】
    bootstrap-table 基础用法
    MVC dropdownlist 后端设置select属性后前端依然不能默认选中的解决方法
    jQuery实现鼠标移到元素上动态提示消息框效果
    给Jquery动态添加的元素添加事件
    centos7部署mysql5.7一主多从
    iOS浏览器 new Date() 返回 NaN
  • 原文地址:https://www.cnblogs.com/qiuye98/p/15637043.html
Copyright © 2011-2022 走看看