Lab01
Lab1
Linux 命令大全 | 菜鸟教程 (runoob.com)
Lab2
1.为自己创建一个用户,并登录到该用户名下
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目录下内容
写入到桌面上的etcresult.txt并查看
3.创建一个文件mycreate,复制该文件为ourcreate,重命名为yourcreate,删除ourcreate
返回桌面创建文件夹吧,别在根目录搞了
各种建立复制删除文件操作
touch 创建
cp 复制
mv 重命名
rm 删除
ls 查看
4.将ourcreate权限改为可执行,不可写
ls -l [文件名或目录] # 查看文件权限
chmod 555 文件名 # 修改为可读、不可写、可执行
7:赋予所有权限
6:没有执行权限
5:没有写的权限
分别对应u:拥有者、g:所属组、o:其他人
5.创建目录mydir、yourdir,并删除yourdir
rm加-r递归删除目录
6.列出/bin下所有文件和目录,并计算总数
所有文件和目录数
利用原理:
ls -l 查看所有文件目录,第一列'-'表示文件,'d'表示目录
wc -l 计算行数
此处因为bin目录下无文件夹,计算为0,所有实际共有1169个文件
Lab3
我们使用linux ssh服务连接win上的xftp(XFTP - NetSarang Website (xshell.com))进行数据交换
安装net-tools
使用ifconfig查看虚拟机ip地址
安装ssh服务
启动ssh
service sshd start
连接xftp
连接成功
数据交换实现效果
Lab4
编写shell脚本
进入后按下I进入编辑模式,输入最简单的hello,world
按下Esc退出编辑模式
输入 :w 保存文件,输入 :qa 退出vim bash 文件名运行bash脚本
Lab5
按照Lab4的方式写入并保存demo_1.sh文件,运行
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个参数,输出结果如下
对应上面任务2获取的信息