本文仅为自己学习整理记录文档,原文转载自:http://www.cnblogs.com/chensiqiqi/p/6442373.html
感谢陈老师!
1 前言
1.1 为什么学习shell编程
Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚本的内容。每一个合格的Linux系统管理员或运维工程师,都需要熟练的编写Shell脚本语言,并能够阅读系统及各类软件附带的Shell脚本内容。只有这样才能提升运维人员的工作效率,适应日益复杂的工作环境,减少不必要的重复工作,从而为个人的职场发展奠定较好的基础。
1.2 学好Shell编程所需的基础知识
- 能够熟练使用vim编辑器,熟悉SSH终端
- 有一定的Linux命令基础,至少需要掌握80个以上Linux常用命令,并能够熟练使用它。
- 要熟练掌握Linux正则表达式及三剑客命令(grep,sed,awk)
1.3 如何学好Shel编程
- 学好Shel编程的核心:多练-->多思考-->再练-->再思考,坚持如此循环即可!
- 新手大忌:不可拿来主义,可以模仿,但是要自己嚼烂了吃下去,否则会闹肚子。
- 格言:你觉得会了并不一定会了,你认为对的并不一定对的。
大家要勤动手,自行完成学习笔记和代码的书写。通过每一个小目标培养自己的兴趣以及成就感
2 Shell脚本入门
2.1 什么是Shell
- Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出屏幕返回给用户。
- 这种对话方式可以是:
1)交互的方式:从键盘输入命令,通过/bin/bash的解释器,可以立即得到shell的回应
2)非交互的方式:脚本
下图黄色部分就是命令解释器shell

Shell的英文意思是贝壳的意思,命令解释器Shell像一个贝壳一样包住系统核心。
Shell执行命令分为两种方式:
- 内置命令:如讲过的cd,pwd,exit和echo等命令,当用户登录系统后,shell以及内置命令就被系统载入内存,并且一直运行。
- 一般命令:如ls,磁盘上的程序文件-->调入-->执行命令
2.2 什么是Shell 脚本
当linux命令或语句不在命令行下执行(严格说,命令行也是shell),而是通过一个程序文件执行时,该程序就被称为Shell脚本或Shell程序
用户可以在Shell脚本中敲入一系列的命令及语句组合。这些命令,变量和流程控制语句等有机的结合起来就形成一个功能强大的Shell脚本。
首先带领大家写一个清空/var/log/messages日志的脚本
我们需要先想明白几个问题:
1)日志文件在哪?
/var/log/messages
2)用什么命令可以清空文件?
> 重定向
3)写一个简单的shell脚本。
#!/bin/env bash
# -*- coding:utf-8 -*-
# author:Mr.chen
cd /var/log/
>messages
4)怎样执行脚本?
[root@chensiqi1 ~]# sh /server/scripts/chensiqi.sh
有没有考虑到:
- 有没有脚本放在统一的目录
/server/scripts目录下
- 权限:用哪个用户执行文件
需要对用户做判断
-
清空错文件怎么办,该如何办?
-
错误提示:有没有成功知不知道?
-
脚本的通用性
范例:包含命令,变量和流程控制的清空/var/log/messages日志的shell脚本
[root@chensiqi1 ~]# mkdir -p /server/scripts #要有规范的存放脚本目录
[root@chensiqi1 ~]# vim /server/scripts/chensiqi.sh
[root@chensiqi1 ~]# cd /server/scripts/
[root@chensiqi1 scripts]# cat /server/scripts/clear_log.sh
#!/bin/env bash
# -*- coding:utf-8 -*-
# author:Mr.chen
LOG_DIR=/var/log
if [ $UID -ne 0 ] #root用户的UID是0
then
echo "Must be root to run this script"
exit 1 #退出脚本,返回值1
fi
cd $LOG_DIR 2>/dev/null || {
echo "Cannot chage to necessary directory."
exit 1
} #如果第一个语句执行失败,那么执行||后边的
cat /dev/null > messages && echo "Logs cleaned up." #打开一个空文件然后重定向日志文件做为清空处理
exit 0
清空日志的三种方法:
echo >test.log
>test.log
cat /dev/null >test.log
#清空内容,保留文件
小结:
- Shell就是命令解释器。==>翻译官
- Shell脚本==>命令放在脚本里
2.3,Shell脚本在运维工作中的作用地位
Shell脚本擅长处理纯文本类型的数据,而Linux中几乎所有的配置文件,日志文件等都是纯文本类型文件。
浙公网安备 33010602011771号