shell
cat /etc/redhat-release #查看虚拟机版本
yum repolist #查看yum
cat pg.01 #查看脚本内容
用户root—bash—sh—ls
1.shell的使用方法
交互式----------命令行
非交互式------脚本
[root@svr7 ~]# cat /etc/shells //查看所有解释器
[root@svr7 ~]# sh //切换成sh解释器
sh-4.2# ls //利用sh解释器输入命令
sh-4.2#exit //退出sh解释器
[root@svr7 ~]#yum -y install ksh //安装新解释器
[root@svr7 ~]#ksh //进入新解释器
ksh:
用户root—bash—ksh—ls
不支持tab键、历史命令、上下左右键
bash:
用户root—bash—ls
支持tab键、快捷键、历史命令、别名、管道、重定向
2.shell脚本编写规范
1)声明解释器 #!/bin/bash
2)编写注释 #可以描述脚本功能、变量作用等信息
3)执行指令 ls cd …
3.脚本的执行方式
1)为脚本添加x权限,使用相对或者绝对路径执行
chmod u+x test01.sh
./test01.sh 或者 /opt/test01.sh
用户(root)—bash—bash(执行完后,会自动退出)
2)使用解释器程序执行脚本,无需x权限
bash test01.sh #指定bash来执行
用户(root)—bash—bash(自己在命令行敲的) 会开启新的子进程
3)使用source命令执行脚本,无需x权限
source test01.sh #直接调用当前解释器来执行
用户(root)—bash 不会开启新的子进程
查看开了几个bash:pstree | grep bash
4.编写脚本,搭yum
5.编写脚本,安装网站,浏览网站时显示“web-test~~”
执行—>curl 192.168.4.7
6.安装脚本,安装ftp开启服务并设置开机自启
yum -y install vsftpd &> /dev/null //将不需要的信息扔黑洞
> 重定向标准输出
2> 重定向错误输出
&> 重定向所有输出
shell总结
1.声明解释器
2.注释
3.执行指令
执行脚本:
1.加x权限
2.使用解释器
3.使用source命令
变量
1.自定义变量(数字、字母、下划线、不能数字开头)(变量名称=值)
a=10
a=10 #创建变量(对变量赋值),名字是a,值是10
a=30 #再次赋值,之前的会被覆盖
echo KaTeX parse error: Expected 'EOF', got '#' at position 4: a #̲调用变量时使用符号
unset a #取消变量的定义
a= #将变量a赋值为空,效果同上
echo ${a}RMB #变量名容易与后续字符发生混淆时使用大括号隔开
2.环境变量,由系统定义好,直接调用
USER 当前用户名 UID当前用户的id号 HOME当前用户家目录
HOSTNAME 主机名 SHELL当前用户的解释器 PWD当前位置
PATH 存储命令的路径 PS1 一级提示符 PS2 二级提示符
3.位置变量与预定义变量
$1 执行脚本时后面第1个位置参数
$2 执行脚本时后面第2个位置参数
$3 执行脚本时后面第3个位置参数
$* 执行脚本时后面所有位置参数
$# 执行脚本时后面位置参数的个数
$$ 随机进程号
$? 判断上一条指令是否执行成功,0是成功,非0是失败
编写脚本,创建用户tom,配置密码123456
非交互式配密码:echo “123456” | passwd --stdin tom
env 查看所有环境变量
env | grep HOSTNAME
set 查看所有变量
set | grep 22
变量拓展
1.引号和反撇号
" " 双引号 界定范围
a=10
echo "KaTeX parse error: Double superscript at position 18: … //正常调用变量 ' '̲ 单引号 界定范围 屏蔽…a’ //无法调用变量,$被屏蔽
反撇号 获取命令的执行结果,还可以使用
(
)
实
现
相
同
效
果
a
=
d
a
t
e
/
/
仅
仅
将
四
个
字
母
赋
值
给
a
a
=
‘
d
a
t
e
‘
/
/
将
d
a
t
e
执
行
结
果
赋
值
给
a
a
=
( )实现相同效果 a=date //仅仅将四个字母赋值给a a=`date` //将date执行结果赋值给a a=
()实现相同效果a=date//仅仅将四个字母赋值给aa=‘date‘//将date执行结果赋值给aa=(date) //效果同上
2.使用read指令
read -p “请输入用户名” u #-p是可以定义提示信息,u相当于自定义变量名称,可以存储用户看到提示信息后输入的字符
1)屏蔽回显:stty -echo
2)恢复回显:stty echo
3.使用export发布全局变量
全局变量:仅在当前解释器进程中使用的变量
局部变量:解释器产生的子进程中也可以使用的变量
全局变量:
a=10 //创建变量
export a //将已有变量发布为全局效果
export b=20 //创建变量的同时发布为全局效果
局部变量:
export -n b //将全局变量恢复为局部变量
注意,测试时要在父进程创建变量,然后可以执行bash进入
子进程测试效果,如果要返回父进程要执行exit指令
变量总结
1.自定义变量 (数字、字母、下划线)
变量名称=值
2.环境变量
UID USER HOME HOSTNAME PATH SHELL PWD PS1 PS2
3.位置变量、预定义变量
$1 $2 $3 $* $# $$ $?
read -p “请输入用户名” u #-p定义提示信息
stty -echo 屏蔽回显
stty echo 恢复回显