一、Shell简介(了解)
1、什么是Shell
概念:Shell 既是一种命令语言,也是一个用 C 语言编写的程序 (命令解释器->“翻译官”) 作用:主要提供一个接口使用户与内核交互操作。 流程:接收用户输入的命令并且进行解释(转换为计算机可以理解的机械码),然 后将命令送入内核去执行 -> 最后将结果返回给用户。
- Shell的种类
含义:不同的命令解析器(程序不断升级)
区别:提示符不同、语法不同、展示效果不同等
常用:sh、csh、ksh、bash等
sh (Bourne Shell) AT&T Bell实验室的Steve Bourne开发 最早的
csh (C Shell) 加州伯克利大学的Bill Joy 更强
ksh (Korn Shell) AT&T Bell实验室的David Korn开发 升级
bash(Bourne Again Shell) 自由软件基金会(GNU)开发的一个Shell 统一
验证:不同命令解析器的区别
查看系统支持的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)
bash功能(内部命令和外部命令)
注意点:
环境变量名词,效果执行一个命令会去“环境变量”设置的目录中挨个找该命令的可执行
程序(1-找到了直接执行,2-找不到则报错)
二、Shell脚本
说明:除了挨个执行命令外,还一个创建一个脚本文件批量处理
创建脚本语法
#!/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分别代表(所有用户,拥有者、所属组用户、其他组用户)
权限范围:+ 追加、- 移除、= 修改
目录或文件授权rwx作用
准备:创建测试账号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命令,没有就不行
三、Shell变量
- 1、分类
本地变量
环境变量
局部变量
位置变量
特殊变量 - 本地变量
概念:只对当前shell进程有效(ps. 对当前进程的子进程和其它shell进程无效)
语法
设置:变量名=变量值(等号不能有空格)
删除:unset 变量名
输出:echo $变量名
练习:创建VAR_T1=itcast -> 输出 -> 删除 -> 输出 - 环境变量(☆)
概念:对当前shell进程和子进程有效,其他shell进程无效
语法
设置:export 变量名=变量值
其他:对所有shell进程都生效
vi /etc/profile
source /etc/profile #让新建立的环境变量立刻生效无需重新启动系统
练习:创建VAR_T2=itcast2 -> 输出测试
- 局部变量
概念:函数调用时创建、调用完毕时销毁
语法:local 变量名=变量值
练习:创建a方法输出局部变量VARTEST=123 - 位置变量
概念:指程序运行时动态传入参数
语法
传参1:sh 路径及文件名.sh 参数1 … 参数n
输出1:echo $1 / … / echo $n - 特殊变量
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
应用场景
$n 根据传递的参数安装指定软件
$$ 脚本执行时输出进程编号便于卡死时结束进程(注:sleep 秒数)
今天我们暂时就讲到这里,下一篇再见