shell概述
什么是shell?
在linux内核与用户之间的解释器程序。
- 通常指的是bash,
- 负责向内核翻译及传达用户/程序指令
- 相当于操作系统的“外壳”
shell的使用方式
- 交互执行指令:人工干预,执行效率底。
- 非交互执行指令:安静地在后台执行,执行效率高,方便写脚本。
常见的shell使用种类
若需要临时使用另一种Shell环境,可以直接执行对应的Shell解释器程序,比如只要执行ksh可以切换到ksh命令行环境。
[root@svr1 ~]# yum -y install ksh //若缺少ksh请先安装ksh包
.. ..
[root@svr1 ~]# cat /etc/shells
/bin/sh //多数Unix默认的shell
/bin/bash //多数Linux默认的shell
/sbin/nologin //非登录shell
/bin/tcsh
/bin/csh
/bin/ksh //确认当前系统已识别ksh
[root@svr1 ~]# ksh //进入ksh环境
[root@svr1]~# exit //返回到切换前的bash环境
shell脚本创建“三步走”
1、创建文本文件
2、添加可执行的脚本语句(命令行)
3、添加 x 执行权限
[root@svr1 ~]# vim /root/first.sh //建文件
#!/bin/bash
echo 'Hello World' //写脚本语句
exit
[root@svr1 ~]# chmod +x /root/first.sh //添加可执行权限
规范脚本的构成
- #! 脚本声明 (使用哪种解释器)
- 注释信息 (步骤、思路、用途、变量含义等)
- 可执行的语句
脚本的执行方式
1、作为“命令字”:指定脚本文件的路径,前提是有 x 权限
[root@svr1 ~]# ./first.sh //指定相对路径
[root@svr1 ~]# /root/first.sh //指定绝对路径
2、作为“参数”:使用bash、sh、source来加载脚本文件
[root@svr1 ~]# bash first.sh //开启子进程
[root@svr1 ~]# sh first.sh //开启子进程
[root@svr1 ~]# source first.sh //不开启子进程
shell简单脚本应用
示例 :编写快速装配vsftpd服务的Shell脚本
[root@svr1 ~]# vim /root/ftpon.sh
#!/bin/bash
yum -y install vsftpd &> /dev/null
systemctl start vsftpd
systemctl enable vsftpd
cp /etc/hosts /var/ftp/pub //拷贝一个文件,放到FTP共享目录下
[root@svr1 ~]# chmod +x /root/ftpon.sh //添加可执行权限
[root@svr1 ~]# /root/ftpon.sh //执行脚本,测试效果
[root@svr1 ~]# rpm -q vsftpd //确认脚本执行结果
vsftpd-3.0.2-10.el7.x86_64
[root@svr1 ~]# systemctl status vsftpd