Loading... # Lab01 ## Lab1 [Linux 命令大全 | 菜鸟教程 (runoob.com)](https://www.runoob.com/linux/linux-command-manual.html) ## Lab2 ### 1.为自己创建一个用户,并登录到该用户名下 ![image-20220304110057940.png](http://xherlock.top/usr/uploads/2022/03/4208628985.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](http://xherlock.top/usr/uploads/2022/03/1317516586.png) 写入到桌面上的etcresult.txt并查看 ![image-20220304152701217.png](http://xherlock.top/usr/uploads/2022/03/2542369305.png) ### 3.创建一个文件mycreate,复制该文件为ourcreate,重命名为yourcreate,删除ourcreate 返回桌面创建文件夹吧,别在根目录搞了 各种建立复制删除文件操作 ![image-20220304152821435.png](http://xherlock.top/usr/uploads/2022/03/2763503133.png) ~~~ touch 创建 cp 复制 mv 重命名 rm 删除 ls 查看 ~~~ ### 4.将ourcreate权限改为可执行,不可写 ![image-20220304152938292.png](http://xherlock.top/usr/uploads/2022/03/2712817924.png) ~~~ ls -l [文件名或目录] # 查看文件权限 chmod 555 文件名 # 修改为可读、不可写、可执行 ~~~ 7:赋予所有权限 6:没有执行权限 5:没有写的权限 分别对应u:拥有者、g:所属组、o:其他人 ### 5.创建目录mydir、yourdir,并删除yourdir ![image-20220304153238822.png](http://xherlock.top/usr/uploads/2022/03/260846311.png) rm加-r递归删除目录 ### 6.列出/bin下所有文件和目录,并计算总数 ![image-20220304154032380.png](http://xherlock.top/usr/uploads/2022/03/274025025.png) 所有文件和目录数 ![image-20220304160325177.png](http://xherlock.top/usr/uploads/2022/03/2947512581.png) 利用原理: ![image-20220304155840642.png](http://xherlock.top/usr/uploads/2022/03/1404504914.png) ls -l 查看所有文件目录,第一列'**-**'表示文件,'**d**'表示目录 wc -l 计算行数 此处因为bin目录下无文件夹,计算为0,所有实际共有1169个文件 ## Lab3 我们使用linux ssh服务连接win上的xftp([XFTP - NetSarang Website (xshell.com)](https://www.xshell.com/zh/xftp/))进行数据交换 安装net-tools ![image-20220304164521238.png](http://xherlock.top/usr/uploads/2022/03/1615181288.png) 使用ifconfig查看虚拟机ip地址 ![image-20220304164603946.png](http://xherlock.top/usr/uploads/2022/03/2734723498.png) 安装ssh服务 ![image-20220304165006611.png](http://xherlock.top/usr/uploads/2022/03/1735209505.png) 启动ssh ~~~ service sshd start ~~~ 连接xftp ![image-20220304165446970.png](http://xherlock.top/usr/uploads/2022/03/679423195.png) 连接成功 ![image-20220304165540706.png](http://xherlock.top/usr/uploads/2022/03/1596556169.png) 数据交换实现效果 ![image-20220304165620007.png](http://xherlock.top/usr/uploads/2022/03/405144373.png) ## Lab4 编写shell脚本 ![image-20220304171757106.png](http://xherlock.top/usr/uploads/2022/03/159270660.png) 进入后按下I进入编辑模式,输入最简单的hello,world ![image-20220304171920784.png](http://xherlock.top/usr/uploads/2022/03/1287819951.png) 按下Esc退出编辑模式 输入 :w 保存文件,输入 :qa 退出vim bash 文件名运行bash脚本 ![image-20220304172120347.png](http://xherlock.top/usr/uploads/2022/03/4040244963.png) ## Lab5 按照Lab4的方式写入并保存demo_1.sh文件,运行 ![image-20220304172442311.png](http://xherlock.top/usr/uploads/2022/03/3302546548.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语句 ~~~shell if condition then command1 command2 ... commandN fi ~~~ if else: ~~~shell if condition then command1 command2 ... commandN else command fi ~~~ if else-if else ~~~shell if condition1 then command1 elif condition2 then command2 else commandN fi ~~~ for循环 ~~~shell for var in item1 item2 ... itemN do command1 command2 ... commandN done ~~~ while语句 ~~~shell while condition do command done ~~~ case…esac,多选择语句(switch) ~~~shell case 值 in 模式1) command1 command2 ... commandN ;; # 相当于break 模式2) command1 command2 ... commandN ;; esac ~~~ ### 分析脚本 ~~~shell #!/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)](https://www.runoob.com/linux/linux-comm-set.html) 这里设置ls的指令,并把你输入的第一个参数(如果是文件的话)作为变量filename的值传入指令 ~~~shell -il # 查看文件对应的inode信息 ~~~ 可以看到这个指令获取了文件的很多信息 任务3:filename对应于你输入的第一个参数,inode对应于ls指令输出的第一个参数,size对应于ls指令输出的第6个参数,输出结果如下 ![image-20220304181249900.png](http://xherlock.top/usr/uploads/2022/03/1456693829.png) 对应上面任务2获取的信息 最后修改:2022 年 03 月 04 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏