初步认识Linux shell脚本
shell概述
-
(1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
-
(2)由外至内系统结构:
-
外层应用程序<---->shell命令解释器<--->内核<---->硬件
-
解析:内核管理硬件,在外层输入ASCII由shell翻译为内核可以识别的机器语言0101,让内核操作硬件接着又将返回的结果翻译到外层的图形界面中.
-
(3)Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
总结: shell是一个命令解释器,处于内核和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户
shell常见类型
-
(1)Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为sh。
-
(2)C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名
-
(3)Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh
意义
- Shell 诞生于 Unix,是与 Unix/Linux 交互的脚本编程,单独地学习 Shell 是没有意义的,Linux都默认集成了shell环境
- shell的功能点在于外部命令的使用,实现命令自动化,它简洁的脚本语言标记方式,而且比C语言编写的程序执行更快、更有效率
- 其内部数据处理方面,侧重文本(或者说字符串,或字符流)处理,而对运算和其他基本数据结构的原生较弱(例如常用的array、set、map等等)
实例
- 在Linux系统中我们经常看见以:#!/bin/bash开头的文件内容,这就是声明了该文件是一个基于bash的shell编程文件
- 启动mongodb
写了这么个程序
#!/bin/bash
cd /home/muller/mongodb/bin
./mongod --dbpath=../muller_db
我们知道计算在执行指令的时候,是一条一条执行的。那么很好理解以上这3行。依次操作的目的是:进入mongodb/bin目录,接着执行启动mongodb数据,保存为m.sh,这样,只要我们在Linux终端执行一条:sh m.sh,回车,计算就会依次执行指令,达到启动mongodb数据库的功能
实际中比如这么一个shell:
#!/bin/bash
cd /lamp
ls *.tar.gz > ls.list
for TAR in `cat ls.list`
do
tar -zxf $TAR
done
shell要解决的实际问题是将lamp目录里面所有的压缩包,批量解压出来,这样我们可以看出ls的结果集可以拿出来参与下一个指令的执行。
shell编程,远远不止这些,还有很多强大的地方,慢慢的挖掘与学习。对于运维管理方面,Python也是一个很好的选择。