Shell是linux系统中重要的组成部分,用户通过它与系统内核交互,linux的帮手。是一种独具特色的编程语言,充分体现linux简洁的特点,方便强大,快捷。
Shell是一个特殊的应用程序,它充当一个命令解释器的角色,介于操作系统kernel与用户之间,负责接受用户输入的操作系统指令并进行解释,还需要执行处理的操作传递给内核。使用shell编写的程序类似于DOS下的批处理程序,通常将shell编写的程序成为脚本。
Shell脚本语言非常擅长处理文本,由于linux系统中的多数配置文件都是纯文本的,而我们有主要依靠配置文件实现系统管理和维护,所以shell脚本在管理维护linux系统中可以发挥巨大的作用。
Shell的主要作用:
1> 解释从命令行输入的命令,shell解释了命令行输入的空格符,制表符,换行符,对特殊字符进行替换,处理文本的输入输出和后台进程,搜索命令并提交给内核;
2> 定制用户的工作环境:通过shell的初始化文本完成,如变量,终端,窗口属性,搜索路径,权限,提示符,终端类型,历史命令,别名转移字符,通知用户信息等
3> 用作解释性编程语言;支持常用的程序语言接口,如变量赋值,条件测试,循环,函数调用,命令程序调用,命令行输入和输出
Shell的功能特点和组成
Linux主机的管理不是一件简单的事情,每天要进行大量的管理任务,如监控主机状态,用户访问,硬件资源的使用,软件更新,数据备份,应用服务配置等,而完成这些工作主要通过两种方式:手动处理和脚本处理;
1> 便于开发功能,弥补命令操作的不足
2> 实现自动化的任务管理
3> 跨平台,具有良好的可移植性
4> 文本数据的快速处理
5> 内置编程语言,满足复杂系统维护工作的需要
6> 提供管道,命令替换,自动补齐等机制,提高操作效率
Shell脚本使用shell内部命令和外部命令组合,调用变量和函数,通过perl或awk语法控制,根据管理员的需求实现系统的管理工作。以行为单位,逐行执行,简单的shell脚本组成包括:
1> 注释:用于对脚本进行解释和说明,在注释行的前面加上”#”,脚本执行时就会忽略该行
2> 命令:任何命令
3> 变量:shell支持字符串变量和整形变量,支持运算符表达式
4> 结构控制语句:用于编写复杂脚本的流程控制语句
例1
[root@serversh]# cat/sh/hello.sh
#!/bin/bash
#一个简单的脚本
#用来判断当前的绝对路径,如果正确则显示”hello,linux shell!”
DIR=$PWD
If[$DIR = “/sh”]
Then
Echo –e “Hello,linux shell!\a\n”
Else
Echo –e “当前的路径不是/sh,请使用cd命令切换目录!\a\n”
Shell脚本的建立
建立如前面所示的shell脚本,用户可以使用任何文本编辑工具,如字符模式下的vim,图形模式下的gedit
一个shell脚本的正确的起始部分应该以#!开头:如#!bin/bash,在脚本调用shell解释器的时候
,以#!开头的语句通知系统使用哪种shell解释器执行此脚本。如果bash是你的默认shell,而没有以#!/bin/bash开头,脚本会默认解释器是bash,但是如果你在bash环境下使用其他的shell类型来执行一个脚本的话,比如tcsh,那么你就必须要#!/bin/tcsh了
Shell脚本执行
1> 直接输入脚本的脚本的绝对路径来执行脚本#/sh/hello.sh
2> 将脚本文件名作为shell命令的参数,格式为:bash脚本文件名#bash /sh/hello.sh
3> 在脚本文件名前面加source命令或” .” #source
/sh/hello.sh 或者 #.hello.sh