Lab01

Lab1

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

Lab2

1.为自己创建一个用户,并登录到该用户名下

image-20220304110057940.png

sudo passwd root    # 设置root新密码,记下来(可以和登陆密码一样)
su -    # 以root权限登录(输入root密码,不回显)

创建用户

useradd -c “os——lab01” -m abc    # -c后跟的是用户注释信息,-m是用户名
cat /etc/passwd | grep "abc"    # 查找新用户信息

设置密码

passwd abc

切换用户

2.列出/etc目录下的信息,并将结果保存到etcresult.txt文件中

查看etc目录下内容

image-20220304152330796.png

写入到桌面上的etcresult.txt并查看

image-20220304152701217.png

3.创建一个文件mycreate,复制该文件为ourcreate,重命名为yourcreate,删除ourcreate

返回桌面创建文件夹吧,别在根目录搞了

各种建立复制删除文件操作

image-20220304152821435.png

touch 创建
cp 复制
mv 重命名
rm 删除
ls 查看

4.将ourcreate权限改为可执行,不可写

image-20220304152938292.png

ls -l [文件名或目录]    # 查看文件权限
chmod 555 文件名    # 修改为可读、不可写、可执行

7:赋予所有权限

6:没有执行权限

5:没有写的权限

分别对应u:拥有者、g:所属组、o:其他人

5.创建目录mydir、yourdir,并删除yourdir

image-20220304153238822.png

rm加-r递归删除目录

6.列出/bin下所有文件和目录,并计算总数

image-20220304154032380.png

所有文件和目录数

image-20220304160325177.png

利用原理:

image-20220304155840642.png

ls -l 查看所有文件目录,第一列'-'表示文件,'d'表示目录

wc -l 计算行数

此处因为bin目录下无文件夹,计算为0,所有实际共有1169个文件

Lab3

我们使用linux ssh服务连接win上的xftp(XFTP - NetSarang Website (xshell.com))进行数据交换

安装net-tools

image-20220304164521238.png

使用ifconfig查看虚拟机ip地址

image-20220304164603946.png

安装ssh服务

image-20220304165006611.png

启动ssh

service sshd start

连接xftp

image-20220304165446970.png

连接成功

image-20220304165540706.png

数据交换实现效果

image-20220304165620007.png

Lab4

编写shell脚本

image-20220304171757106.png

进入后按下I进入编辑模式,输入最简单的hello,world

image-20220304171920784.png

按下Esc退出编辑模式

输入 :w 保存文件,输入 :qa 退出vim bash 文件名运行bash脚本

image-20220304172120347.png

Lab5

按照Lab4的方式写入并保存demo_1.sh文件,运行

image-20220304172442311.png

shell学习

参数处理:

  • $# 传递到脚本的参数个数
  • $* 以一个但字符串显示所有向脚本传递的参数
  • $num num表示读取第几个参数,$0表示当前脚本的文件名

关系运算符

a=10,b=20

  • -eq:检测两个数是否相等,相等返回true,eg:[$a -eq $b] 返回false
  • -ne:检测两个数是否不相等,不相等返回true,eg:[$a -eq $b] 返回true
  • -gt:检测左边的数是否大于右边的,是返回true
  • -lt:检测左边的数是否小于右边的,是返回true
  • -ge:检测左边的数是否大于等于右边的,是返回true
  • -le:检测左边的数是否小于等于右边的,是返回true

布尔运算符

  • !:非运算
  • -o:或运算
  • -a:与运算

逻辑运算符

  • &&:逻辑AND
  • ||:逻辑OR

字符串运算符

  • =
  • !=
  • -z:检测字符串长度是否为0,为0返回true
  • -n:检测字符串长度是否不为0,不为0返回true
  • $:检测字符串是否为空,不为空返回true

文件测试运算符

-f file:检测文件是否是普通文件(既不是目录,也不是设备文件),是返回true

流程控制

if语句

if condition
then
    command1 
    command2
    ...
    commandN 
fi

if else:

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

if else-if else

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

for循环

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

while语句

while condition
do
    command
done

case…esac,多选择语句(switch)

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;    # 相当于break
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

分析脚本

#!/bin/sh 
if [ $# -eq 0 ]   #任务1: 解释本行命令 
then
    echo "Usage: $0 ordinary_file"
    exit 1
fi 
if [ $# -gt 1 ]
then
    echo "Usage: $0 ordinary_file"
    exit 1
fi 
if [ -f "$1" ]
then 
    filename="$1"
    set `ls -il $filename`  #任务2: 解释本行命令 
    inode="$1"
    size="$6"
    echo "Name\t| Inode\t| Size"
    echo
    echo "$filename\t| $inode\t| $size"     #任务3: 解释本行命令 (输出结果得到的?)
    exit 0
else
    echo "$0: argument must be an ordinary files"
    exit 1
fi 

任务1:传入参数个数是否等于0

任务2:set指令设置所使用shell的执行方式Linux set命令 | 菜鸟教程 (runoob.com)

这里设置ls的指令,并把你输入的第一个参数(如果是文件的话)作为变量filename的值传入指令

-il    # 查看文件对应的inode信息

可以看到这个指令获取了文件的很多信息

任务3:filename对应于你输入的第一个参数,inode对应于ls指令输出的第一个参数,size对应于ls指令输出的第6个参数,输出结果如下

image-20220304181249900.png

对应上面任务2获取的信息

最后修改:2022 年 03 月 04 日
如果觉得我的文章对你有用,请随意赞赏