本文仅为自己学习整理记录文档,原文转载自: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中几乎所有的配置文件,日志文件等都是纯文本类型文件。

 

posted on 2017-11-10 22:56  学无止境yz  阅读(177)  评论(0)    收藏  举报