|
Shell基础(上)
1.1什么是shell
Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的
输入解释给操作系统.井处理各种各样的操作系统的输出结果,输出屏幕返回给用户
这种对话方式可以是
- 交互的方式:从键盘输入命令,通过/bin/bash的解折,可以立即得到shell的回应
- 非交互的方式:脚本
Shell执行命令分为两种方式
- 内置命令:如讲过的cd ,pwd, exit和echo等命令.当用户登录系统后,shell以及内置命令就被系统载入到内存,并且一直运行
- 一般命令:如15,磁盘上的程序文件==>调入内存==>执行命令
1.2什么是shell脚本
当linux命令或语句不在命令行下执行(严格说,命令行也是Shell),而是通过一个程序文件执行时,该程序就被称为Shell脚本或Shell程序。
用户可以在Shell脚本中敲入一系列的命令及命令语句组合。这些命令、变量和流程控制语句等有机的结合起来就形成一个功能强大的Shell脚本。
1.2.1 写一个清空/var/log/messages日志的脚本
- 日志文件在哪?
- 用什么命令可以清空文件
- 写一个简单的shell脚本。
- 怎样执行脚本?
- 进阶:
有没有考虑到
1)有没有脚本放在统一的目录
2)权限:用哪个用户执行文件
3)清空错文件怎么办,该怎么办
4)错误提示:有没有成功知不知道
5)脚本通用性
[root@ccdata]# mkdir -p /server/scripts
[root@ccdata]# cd /server/scripts
[root@ccscripts]# vim clear_log.sh
#!/bin/bash
cd /var/log/
>messages
~
[root@ccscripts]# cat clear_log.sh
#!/bin/bash
cd /var/log/
>messages
[root@ccscripts]# sh clear_log.sh
[root@ccscripts]# cat /var/log/messages #空的清空了
1.2.2 一个规范的Shell脚本
[root@cc~ ]#mkdir -p/server/scripts #要有规范的存放脚本目录
[root@cc ~]# cd/server/scripts/
[root@ cc scripts]# vim clear_log.sh
#!/bin/bash
LOG_DIR=/var/log
ROOT_UID=O #UID为0时,用户才具有root权限echo $UID
#要使用root用户执行
if[ "$UID" -ne "$ROOT _UID" ]
then
echo"Must be root to run this script."
exit 1
fi
#||表示前面执行失败则执行后面,区别于&&
cd $ LOG_DIR 2>/dev/null || {
echo"Cannot change to necessary directory.”
exit 1
}
cat /dev/null>messages && echo"Logs cleaned up."
exit 0
#退出之前返回0表示成功,返回1表示失败。
1.2.3清空日志的三种方法
echo >test.log
>test.log
cat /dev /null >test.log
#清空内容。保留文件
1.2.4小结
Shell就是命令解释器.==>翻译官
Shell脚本==>命令放在脚本里
1.3Shell脚本在运维工作中的作用地位
Shell脚本擅长处理纯文本类型的数据,而linux中几乎所有的配置文件、日志文件等都是纯文本类型文件
第2章 脚本的建立和执行
2.1Shell脚本的建立
推荐使用vim编辑器
2.1.1脚本开头
规范的Shell脚本第一行会指出由哪个程序(解释器)来执行脚本中的内容。在linux bash编程中一般为,
#!/bin/bash
或
#!/bin/sh |
|
|