一.Shell基础知识
1.什么是shell
- shell是linux的外壳,它包在linux内核的外面,为用户和内核之间的交互提供了一个接口
- 当用户下达指令给操作系统的时候,实际上是把指令告诉shell,经过shell解释处理后让内核作出相应的动作
- 系统的回应和输出信息也由shell处理,然后显示在用户的屏幕上
2.shell脚本
- 当命令或程序不再命令执行时,而是通过一个程序文件来执行,这个程序文件就叫脚本
- 在shell脚本里内置了多条命令,语句,循环控制,然后将这些命令一次性执行完毕,这种通过文件执行命令的方式成为非交互式
3.shell脚本的使用
- 适合处理操作系统底层,含有众多的命令(如文本处理三兄弟:grep,sed,awk)
- 适合处理纯文本文件,linux中许多服务配置文件
- linux系统用脚本开发简单
3.shell脚本的作用
- 用shell脚本保存执行动作
- 用脚本判定命令的执行条件
- 用脚本来实现动作的批量执行
二.shell脚本的使用
1.查看系统默认的shell
#!/bin/bash解释器:幻数(解释器,显示当前的运行环境)
cat /etc/passwd | head -1
[root@zll ~]# grep root /etc/passwd
[root@zll ~]# echo $SHELL
2.脚本的执行方法
(1)加权限用脚本的名称去调用,用在文件中指定的解释器
[root@shell mnt]# vim test.sh
chmod +x /mnt/test.sh
注:可以看到用到的文件是脚本中指定的解释器
(2).sh调用:指定的sh解释器工作
(3)source:当前的shell,不弹出新窗口
练习:
(1)把当前的/etc/.conf备份到/mnt/backup并且重命名为/mnt/backup/xxxx.conf.02-26
- 法一:
[root@shell mnt]# vim etc.sh
文件编辑内容为:
验证如下:
- 法二:
find /etc -name *.conf -exec cp -pr {} /mnt \;
find /mnt -name "*.conf" -exec mv {} {}.`date +%m-%d` \;
3.脚本规范(添加脚本信息)
一个完整的脚本需要由以下几个部分组成
-
脚本名
-
第一行:#!/bin/bash
指定解释器,且解释器必须写在第一行,否则会被当作注释 -
用户判断
-
流程控制,否则只把简单的命令进行顺序操作,没有成与否的判断
-
注释
(1)以快捷键的方式,自动写入基本信息
[root@shell ~]# vim /etc/vimrc ##编辑vim的配置文件
编辑内容为:
65 map <F5> ms:call WESTOS()<cr>'s ##按f5快捷键生效
66 function WESTOS() ##功能块的命名
67 call append(0,"###################################") ##功能块添加的具体信息的内容
68 call append(1,"# Autho: #")
69 call append(2,"# Create_Date: ".strftime("%Y-%m-%d")." #")
70 call append(3,"#version: #")
71 endfunction
测试如下:
[root@shell ~]# vim test1.sh ##
编辑脚本文件,按f5快捷键自动生成信息
(2)不使用快捷键自动添加脚本信息
[root@shell ~]# vim /etc/vimrc
文件编辑内容为:
65 "map <F5> ms:call WESTOS()<cr>'s ##注释掉该行
66 autocmd BufNewFile *.sh,*.script exec ":call WESTOS()"
当在建立以.sh和以.script结尾的文件时自动生成信息
测试如下:
[root@shell ~]# vim zll.sh
[root@shell ~]# vim zll.script ##发现会自动生成vim的具体信息
4.脚本的调试
[root@shell mnt]# sh -x /mnt/test.sh
适用于所有shell脚本