一、shell是啥
1.为啥要学shell?
(1)简单易学。
(2)解释型语言,不需要编译即可执行
(3)与Linux系统管理的学习息息相关
简而言之,shell编程语可以很大程度上简化系统管理员日常的维护工作,从而从简单的重复劳动中解脱出来。
2.定义:shell是一种命令解释器,用来识别用户输入的各种命令,并传递给操作系统。它既是用户交互的界面,亦是控制系统的脚本语言。
3.分类:shell的种类很多,大体有以下几种:
Bourne Shell (/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)(语法类似C语言)
K Shell(/usr/bin/ksh)
Shell For Root(/sbin/sh)
4.查看自己主机当前系统支持的shell以及查看当前系统默认的shell
[root@server ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
[root@server ~]# echo $SHELL
/bin/bash
5.shell的特性
作为程序设计语言,shell的特性有:
(1)逐条执行,即自上而下循环执行
(2)选择执行,只有一个分支时,在条件满足后才会执行;有两个以上分支时,只执行其中一个满足条件的分支。
(3)循环执行,循环体要执行0个,1个或多个来回。
6.shell脚本编写规范
(1)创建脚本,脚本名称为“文件名.sh”,文件名应做到见名知义,并做到以sh结尾
(2)开头指定脚本解释器 #!/bin/bash
(3)下方添加版本版权等信息
Date:创建日期
Author:作者
Mail:联系方式
Function:功能
Version:版本
(4)注释时尽量使用英文注释,多写注释便于使用者理解其功能
(5)多多使用内部命令用以节省性能
(6)代码缩进。(shell虽没有强制要求,但仍然建议缩进,以提交代码的可阅读性,更有层次感。)
7.小知识
快速生成脚本开头的版本版权注释信息
查看文件
[root@server ~]# cat ~/.vimrc
autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()"func Settitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call
setline(2,"##############################################################")
call setline(3, "# File Name: ".expand("%"))
call setline(4, "# Version: V1.0")
call setline(5, "# Author: xx")
call setline(6, "# Email: xx@163.com")
call setline(7, "# Organization: http://www.xx.com/xx/")
call setline(8, "# Created Time : ".strftime("%F %T"))
call setline(9, "# Description:")
call
setline(10,"##############################################################")
call setline(11, "")
endif
endfunc
把它拷贝到 /root/下并命名成.vimrc名称,这样以后再打开.sh文件时就会自动生成一些注释信息,只要稍微修改一下即可。