shell脚本简介
什么是shell?
shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户。这种对话方式可以是交互的方式(从键盘输入命令,可以立即得到shell的回应),或非交互(执行脚本程序)的方式。
下图的黄色部分就是命令解释器shell处于的操作系统中位置形象图解。
什么是shell脚本?
:清除/var/log下messages日志文件的简单命令脚本。
#把所有命令放在一个文件里堆积起来就形成了脚本,下面是一个最简单的命令堆积形成的shell脚本
#root身份运行
#清楚日志
cd /var/log
cat /dev/null > messages
echo "Logs cleaned up."
上述脚本存在如下问题:
1、如果不是root用户无法执行清理日志。
2、无流程控制语句,没有判断和逻辑。
示例2:包含命令、变量和流程控制语句的清除/var/log下messages日志文件的shell脚本。
#!/bin/bash
#清除日志脚本
LOG_DIR=/var/log
ROOT_UID=0 #$UID为0的时候,用户才具有root用户的权限
#使用root运行
if [ "$UID" -ne "$ROOT_UID" ]
then
echo "Mast be root to run this script."
exit 1
fi
cd $LOG_DIR || {
echo "Cannot change to necessary directory." >&2
exit 1
}
cat /dev/null > messages && echo "Logs cleaned up."
exit 0
#退出之前返回0表示成功,返回1表示失败。
拓展:清空日志及文件内容的三种方法。
[root@lamp ~]# echo >test.log
[root@lamp ~]# >test.log
[root@lamp ~]# cat /dev/null > test.log
shell脚本在运维工作中的地位
shell脚本很擅长处理纯文本类型的数据,而linux系统中几乎所有的配置文件(如nfs、rsync、httpd、nginx、lvs等)、多数启动文件都是纯文本类型的文件。因此利用shell可以在linux系统中发挥巨大作用。
shell脚本语言的种类
在UNIX/LINUX中主要有两大类shell。
Bourne shell包括sh、ksh和bash。
Bourne shell (sh)
Korn shell (ksh)
Bourne Again shell (bash)
POSIX shll (sh)
C shell包括csh和tcsh。
C shell (csh)
TEXES/TOPS C shell(tcsh)
shell脚本语言是若类型语言,较为通用的shell有标准的Bourne shell(sh)和C shell(csh)。其中Bource shell(sh)已经被bash shell取代。
查看系统的shell。
[root@lamp ~]# cat /etc/shells
/bin/sh
/bin/bash #功能更强大
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
常用操作系统的默认shell
Linux是bourne agaion shell(bash)。
Solaris和FreeBSD缺省的是Bourne shll(sh)。
AIX下是korn shell(ksh)。
HP-UX缺省的是POSIX shell(sh)。
查看CentOS默认shell。
第一种方法。
[root@lamp ~]# echo $SHELL
/bin/bash
[root@lamp ~]# echo $shell
bash
第二种方法。
[root@lamp ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
更改默认的shell配置文件。
[root@lamp ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
shell脚本的建立和执行
、子shell会直接继承父shell的变量、函数等。2、如果希望父shell调用子shell的变量、函数等,用source或"."点号执行脚本。
shell脚本开发的基本习惯
1)脚本第一行指定脚本解析器。
#!/bin/sh或#!/bin/bash
2)脚本开头加版本版权等信息
#Date: 07:00 2018-07-26
#Mail:xxxxx@xxx
#Author:Created by golden
#Function:This scripts function is ...
#Version:1.3
提示:可以配置vim编辑文件时自动加上以上信息,方法是修改~/.vimrc配置文件。
3)脚本中不用中文注释
尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰。
4)脚本以.sh为扩展名命名。
5)代码书写优秀习惯技巧
1、成对的符号内容尽量一次写出来,防止遗漏。
2、"[]"中括号两端要有空格,书写时即可留出空格[ ],然后在退格书写内容,先书写一对中括号,然后退一格,然后在输入两个空格,再退一格。
双中括号"[[]]"也是如此。
3、流程控制语句一次书写完,在添加内容。
if语句格式一次完成。
if 条件内容
then
内容
fi
for循环格式一次完成。
for
do
内容
done
6)通过缩进让代码更易读。
shell脚本简介的更多相关文章
- Linux Shell——bash shell 脚本简介
bash shell 脚本简介 shell 运行环境 如果你运行的是 Unix 或 Linux 系统,例如 Ubuntu,Red Hat,SUSE Linux,还有macOS,都是内置了 bash s ...
- Shell脚本之一 Shell脚本简介
一.什么是shell? 我们平时所说的 Shell 可以理解为 Linux 系统提供给用户的使用界面.Shell 为用户提供了输入命令和参数并可得到命令执行结果的环境.当一个用户登录 Linux 之后 ...
- SHELL脚本--简介
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 脚本都以#!/bin/bash开头,“#”称为sharp,“! ...
- Linux Shell脚本简介
Shell 诞生于 Unix,是与 Unix/Linux 交互的工具,单独地学习 Shell 是没有意义的,请先参考Unix/Linux入门教程,了解 Unix/Lunix 基础. 近几年来,Shel ...
- Linux shell脚本学习(一)
一.shell脚本简介 shell脚本是用shell脚本语法将shell命令组织起来形成的文件形式.Shell脚本与Windows/Dos 下的批处理相似,主要为了将大量命令通过一个纯文本文件一次执行 ...
- Shell脚本编程(一):初识shell script
Shell简介 Shell是一个命令解释器,它是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核 ...
- Shell脚本的学习(一)
Shell脚本的学习(一) 一)代码式shell脚本简介 1.下载 Xshell 5 建一个文件夹 mkdri home/data ; 1)查看一个在data里建一个1.sh 查看是否建立成功. 2) ...
- shell脚本之编程基础介绍
1.shell脚本简介 1.1 shell是什么? shell是一个命令解释器,它在操作系统的最外层负责直接与用户对话,把用户的输入解释给操作系统:并处理各种各样的操作系统的输入,将结果输出到屏幕返回 ...
- Shell简介:1分钟理解什么是Shell 脚本语言 解释器 以及编译器和编译语言
Shell简介:1分钟理解什么是Shell 脚本语言 解释器 以及编译器和编译语言 现在我们使用的操作系统(Windows.Mac OS.Android.iOS 等)都是带图形界面的,简单直观,容易上 ...
随机推荐
- Java BASE58 以及 md5,sha256,sha1
package cn.ubibi.wsblog.utils; import java.io.UnsupportedEncodingException; import java.math.BigInte ...
- 游戏中的沉浸(Flow in Games)
转自:https://www.jianshu.com/p/4c52067f6594 作者:陈星汉(JenovaChen) 本论文的主旨在于提供一种独特的方法论,用以指导游戏设计中的以玩家为中心的动态难 ...
- solidworks的工程图模板文件和图纸格式文件
工程图模板文件:drwdot,这个文件是在新建工程图的时候,可以选择的,如下. 图纸格式文件:slddrt,这个文件是进入工程图环境,编辑[图纸属性]的时候,可以选择的.如下. 怎么定制上述两种文件? ...
- 设计模式<2>------工厂模式和抽象工厂模式------创建型
简单工厂: 拿我们的简单三层举例子 先定义dal层 class Dal { public void Delete() { } } 工厂类 class Factory { //这样掉的好处是 当dal层 ...
- Pandas中Loc用法总结
摘自:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html 具体用法,假设数据源为: > ...
- 让WebStrom支持SSH协议的子项目
让WebStrom支持SSH协议的子项目 在大项目中, 经常会遇到子项目(submodule)使用ssh的情形, 但是WebStrom不直接支持它. 下面以MAC为例,在PC中的处理类似. 打开ter ...
- 关于vim的常用操作
vim常用操作和使用技巧 vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两部分对其常用操作技巧和配置进行阐述,其中参考了网上的一些文章,对作者表示感谢 PART1 操作技 ...
- 【机器学习_11】基础算法:KNN
一.概述 1.方向 2.一句话概述 3.优缺点 4.应用场景举例 二.理论 三.案例理解
- Jmeter之数据库性能测试
公司的**产品急待上线,但查询订单操作响应很慢,为了准确定位问题,特对几个大数据查询语句进行性能测试. 环境介绍:数据库用的MYSQL,采用分布式布置,本次单压测一台数据库服务器,查询待支付订单.待消 ...
- HTML5 加密和摘要算法(base64,md5, sha1,rsa)
< 一 > BASE64 1,Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法 2,首先需要一个库 b ...