TJU-操作系统原理第一次试验(Linux虚拟机与Shell基础)

一、实验要求

1.学会使用第三方虚拟平台搭建并配置Linux Ubuntu虚拟环境,并学会使用VSCode RemoteSSH插件连接虚拟机以提高生产力

2.学会使用一些基础的Shell命令,感受Shell的魅力,学会用Shell来提升自己日常学习与工作的生产力

实验要求

完成情况

Linux基础命令练习

已完成

Linux命令综合练习

已完成


二、实验过程


Linux基础命令练习

1.使用pwd命令查看当前所在目录

2.使用ls命令查看当前目录下的所有文件,使用-l选项以查看文件信息

3.使用man命令查看函数、指令等的帮助文档

查看less命令的具体信息并将其保存到less.txt文件中

4.使用mkdir命令创建文件夹D1

5.使用cp命令拷贝文件

将/etc/profile拷贝到D1目录下,并命名为profile.bak

6.用less命令逐页查看profile.bak文件的内容

7.使用find命令结合其选项查找通配/指定文件

查找所有后缀为.cfg的文件并将这些名目存入到/root/cfginfo.txt文件中;

用ls命令查看是否存在有cfginfo.txt文件;

使用less命令查看cfginfo.txt文件的内容

8.使用vim编辑cfginfo.txt文件

进入vim环境后,键入i开启插入模式,在第一行插入文本"This is CFG file information"

按Esc退出插入模式,按Shift+:进入命令行模式,键入wq以保存文本修改并退出vim

9.使用cat命令查看修改后的cfginfo.txt文件


Linux综合练习


1.显示当前目录下文件信息脚本

关键代码:

ls -l $pwd

变量pwd为当前所在目录路径


2.计算两数之和脚本

使用read命令读取用户输入的两个待求和数num1、num2

关键代码:

result=$(echo "$num1 + $num2" | bc)  

使用bc命令进行计算,并使用管道将加法运算结果输出到变量result中


3.反转数字脚本

read命令读入数字number

if …elif……else语句判断用户键入数字的合法性

用户无输入:

if  [ -z "$number" ]

输入的数字只有一位:

elif [ $number -lt 10 ]

输入合法:

关键代码及思想:

对number用除余法取它的各位数,将这些数以个位开头逐个追加到已初始化的空字符串reverserd_num中,最后除余结束,原始数字的各位数也被重新以个位开头十位次之百位再次之以此类推的形式存在reverserd_num中

  reversed_number=""

  while [ $number -gt 0 ]

  do

    digit=$((number % 10))

  # 去除前导零

  if [ $digit -ne 0 ]

  then

    reversed_number="$reversed_number$digit"

  fi

    number=$((number / 10))

  done

4.PATH中的目录下可执行文件计数脚本

首先使用如下语句,将PATH中的目录逐个存入数组directories中以便遍历

IFS=':' read -ra directories <<< "$PATH"  

关键代码及思想:

遍历刚才从PATH中取出的目录,在这些目录中用find命令结合-perm选项查找具有可执行权限的文件,筛选选项为-perm /u+x,同时使用wc -l对符合筛选条件的文件计数并通过管道返回给变量executable_files_count

for directory in "${directories[@]}"; do  

    executable_files_count=$(find $directory -perm /u+x | wc -l)

对于PATH中总的可执行文件的计数则可累加其中各目录下可执行文件的数实现

关键代码:

total=$((total+executable_files_count))

三、实验结果


Linux基础练习


1.使用pwd命令查看当前所在目录

执行结果如图:


2.使用ls命令查看当前目录下的所有文件,使用-l选项以查看文件信息

执行结果如图:


3.使用man命令查看函数、指令等的帮助文档

运行结果如图:

将less帮助文档保存到less.txt文件中

执行结果如图:


4.使用mkdir命令创建文件夹D1

执行结果如图:


5.使用cp命令拷贝文件

将/etc/profile拷贝到D1目录下,并命名为profile.bak

执行结果如图:


6.用less命令逐页查看profile.bak文件的内容

执行结果如图:


7.使用find命令结合其选项查找通配/指定文件

查找所有后缀为.cfg的文件并将这些名目存入到/root/cfginfo.txt文件中

执行结果如图:

用ls命令查看是否存在有cfginfo.txt文件

执行结果如图:

使用less命令查看cfginfo.txt文件的内容

执行结果如图:


8.使用vim编辑cfginfo.txt文件

进入vim环境后,键入i开启插入模式,在第一行插入文本"This is CFG file information"

按Esc退出插入模式,按Shift+:进入命令行模式,键入wq以保存文本修改并退出vim

执行结果如图:


9.使用cat命令查看修改后的cfginfo.txt文件

执行结果如图:


Linux综合练习


1.显示当前目录下文件信息脚本

执行结果如图:


2.计算两数之和脚本

执行结果如图:


3.反转数字脚本

执行结果如图:


4.PATH中的目录下可执行文件计数脚本

执行结果如图:


四、实验总结

1.在运行脚本文件时发现Shell无法自动补全文件路径或命令,此时应该检查要运行的脚本文件是否具有可执行权限,且确保脚本文件在当前目录下;

2.使用for循环遍历PATH中目录时发现PATH中各目录用‘:’分割,但无法逐一获取,改用IFS将PATH中目录以‘:’为分隔符逐一加入数组中再进行遍历操作


附脚本源码


1.显示当前目录下文件信息脚本
#!/bin/bash

echo "Files informations:"
ls -l $pwd

2.计算两数之和脚本
#!/bin/bash

# 提示用户输入第一个数字  
echo "Enter the first number: "  
read num1
# 提示用户输入第二个数字
echo "Enter the second number:"
read num2
# 使用bc命令进行计算,并使用管道将结果输出到变量result中  
result=$(echo "$num1 + $num2" | bc)  
  
# 打印结果  
echo "The answer is: $result"

3.反转数字脚本
#!/bin/bash

echo "Enter a multi-digit number: "
read number
# 用户无输入时
if  [ -z "$number" ]
then
  echo "ERROR:No argument passed!" 
  # 用户输入的数只有一位时
elif [ $number -lt 10 ]
then
  echo "ERROR:Pass a multi-digit number!"
  # 输入合法时
else
  reversed_number=""
  while [ $number -gt 0 ]
  do
    digit=$((number % 10))
  # 去除前导零
  if [ $digit -ne 0 ]
  then
    reversed_number="$reversed_number$digit"
  fi
    number=$((number / 10))
  done
  echo "Reversed number is: $reversed_number"
fi

4.PATH中的目录下可执行文件计数脚本
#!/bin/bash

# 将PATH中的目录按分隔符':'拆分并逐一存进数组中
IFS=':' read -ra directories <<< "$PATH"  
# 总可执行文件数初始化
total=0
for directory in "${directories[@]}"; do  
      if [ -d $directory ]; then
      # 当前目录下可执行文件计数
      executable_files_count=$(find $directory -perm /u+x | wc -l)
      # 将当前目录下可执行文件数累加至总可执行文件数中
      total=$((total+executable_files_count))
      echo "Current Directory: $directory"
      echo "Executable Files: $executable_files_count 个"
    fi
done
echo "Total Executable Files: $total 个"
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChoriL.

你的鼓励是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值