概念:Shell 既是一种命令语言,也是一个用 C 语言编写的程序 (命令解释器->“翻译官”) 作用:主要提供一个接口使用户与内核交互操作。 流程:接收用户输入的命令并且进行解释(转换为计算机可以理解的机械码),然 后将命令送入内核去执行 -> 最后将结果返回给用户。
验证:不同命令解析器的区别
查看系统支持的shell类型:cat /etc/shells
查看当前使用的shell类型:echo $SHELL
用户管理命令
#用户添加(user add) :useradd [参数] 用户名(g-指定用户组,c-备注,s-登录执行的命令,d-家目录)
#用户编辑(user mod):usermod 参数 用户名(以上四个 + l-改名)
#用户删除(user del) :userdel 用户名
Linux其他发行版本(不同种类的shell效果)
switch user
查看系统支持shell类型
查看当前使用的shell类型
创建test1用户 -> 查看默认没有shell -> 设置密码 -> 登录测试
解决:让test1用户变强(sudo usermod -s /bin/bash test1)
注意点:
环境变量名词,效果执行一个命令会去“环境变量”设置的目录中挨个找该命令的可执行
程序(1-找到了直接执行,2-找不到则报错)
说明:除了挨个执行命令外,还一个创建一个脚本文件批量处理
创建脚本语法
#!/bin/bash
代码
执行脚本语法
权 限:chmod a+x 路径及文件名.sh
方法1: sh 路径及文件名.sh(推荐)
方法2:/bin/bash 路径及文件名.sh
方法3: source 路径及文件名.sh
方法4: . 路径及文件名.sh
初体验:创建test脚本输出hello
#步骤1:创建.sh结尾的文件(ps. 一般都是sh结尾文件,没有后缀也行)
#步骤2:通过vi命令打开该文件,并在文件头输入固定格式【#!/bin/bash】
#步骤3:另一个一样输入任意liunx命令即可
#步骤4:保存并退出,然后通过命令运行【sh 文件名.sh】
更改拥有者(change own) : chown -R 拥有者 待更改的文件
更改所属组(change group): chgrp -R 所属组 待更改的文件
语法1:chmod -R ABC<用数字表示> 待更改的文件
解释1:
ABC分别代表(拥有者、所属组、其他组)
数字表示(1-执行,2-可写,3-可写可执行,4-可读,5-可读可执行,6-可读可写,7可读可写可执行)
语法2:chmod -R <±=>,…,<±=> 待更改的文件
解释2:
augo分别代表(所有用户,拥有者、所属组用户、其他组用户)
权限范围:+ 追加、- 移除、= 修改
准备:创建测试账号z并设置密码
验证:文件含义
准备:用root账号创建/test/qx1.php文件并查看其他组用户权限(蓝色)
准备:用root移除其他组所有权限
验证:文件有r就可以用cat命令,没有就不行
验证:文件有w就可以用vi命令,没有就不行
验证:目录含义
a. 准备:用root账号创建/test/qx2目录并查看其他组用户权限(蓝色)
b.准备:用root移除其他组所有权限
c.验证:目录有x就可以用cd命令,没有就不行
d.验证:目录有r就可以用ls命令,没有就不行
f.验证:目录有w就可以用touch命令,没有就不行
vi /etc/profile
source /etc/profile #让新建立的环境变量立刻生效无需重新启动系统
练习:创建VAR_T2=itcast2 -> 输出测试
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
应用场景
$n 根据传递的参数安装指定软件
$$ 脚本执行时输出进程编号便于卡死时结束进程(注:sleep 秒数)
今天我们暂时就讲到这里,下一篇再见