什么是Shell?
Shell英文中为外壳,我们可以理解为是linux操作系统外的一层壳儿,而使用者能通过这层壳儿控制linux系统内核。它是在linux内核基础上编写的一个应用程序,本身不属于内核部分。
linux中的Shell,是一个可以由用户录入的界面,这个界面也可以反馈运行信息。
Shell分类
Linux中默认的Shell是/bin/bash,流行的Shell有ash、bash、ksh、csh、zsh等,不同的Shell都有自己的特点以及用途。最常用到的就是bash,在写Shell脚本的时候,也必须写入“#!bin/bash”,引入bash头文件。
Shell脚本
Shell不仅能用于操作linux系统,还能用于编写Shell程序,和C语言的.c文件一样,Shell脚本的程序命名为.sh文件,但扩展名不影响脚本的执行,运行前提是要给文件赋予执行权限,这里就不多赘述。编写入门第一个程序“Hello World”:
[root@localhost ~]# touch HelloWorld.sh
[root@localhost ~]# vim HelloWorld.sh
[root@localhost ~]# cat HelloWorld.sh
#!/bin/bash
echo "Hello World !"
[root@localhost ~]# chmod +x HelloWorld.sh
[root@localhost ~]# ./HelloWorld.sh
Hello World !
需要注意的是,在编辑Shell脚本的时候有几点规范
- 脚本名称一般为英文大小写,后缀为.sh,不能使用特殊符号、空格
- 首行需要 #!/bin/bash 开头
- 脚本变量不能以数字、特殊符号开头,可以使用下划线_ ,但不能用破折号-
Shell编程三剑客
grep、sed、awk这三个命令是shell编程文本处理的重要工具,被称为shell编程三剑客。配合上正则表达式,几乎可以处理所有类型的文本。
grep是文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。常用于过滤/搜索的特定字符。
sed编辑器是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
awk 是文件分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
Shell的应用
Shell不能用于具有复杂逻辑的大型项目,因其简便性,Shell主要用来编写一些小巧实用的自动化脚本,比如批量部署LAMP/LNMP环境、定期开启某些事务、自动发送消息、进行日志分析等,还能够对大量服务器进行统一管理,是运维必须掌握的技能。
其他
Shell和其他编程语言一样,有变量、数组、控制流程等概念,但在对操作系统这方面有极大的优势,是用户和linux系统沟通的桥梁,使用 Shell 的熟练程度也反映了用户对 Linux 的掌握程度,值得每个ITer学习。
参考链接:
http://c.biancheng.net/view/706.html
https://blog.youkuaiyun.com/CAOXUN_FPGA/article/details/117257501