shell
-
Shell又称命令解释器,它能识别用户输入的各种命令,并传递给操作系统
-
Shell既是用户交互的界面,也是控制系统的脚本语言
shell的分类
- Bourne Shell:标识为sh,该Shell由Steve Bourne在贝尔实验室时编写。在许多Unix系统中,该Shell是root用户的默认的Shell。
- Bourne-Again Shell:标识为bash,该Shell由Brian Fox在1987年编写,是绝大多数localhost发行版的默认的Shell。
- Korn Shell:标识为ksh,该Shell由贝尔实验室的David Korn在二十世纪八十年代早期编写。它完全向上兼容 Bourne Shell 并包含了C Shell 的很多特性。
- C Shell:标识为csh,该Shell由Bill Joy在BSD系统上开发。由于其语法类似于C语言,因此称为C Shell。
#查看系统支持的shell
[root@localhost ~]# cat /etc/shells
[root@HAHA ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bbash
[root@localhost ~]# chsh -l
#如何查看当前系统默认shell?
[root@localhost ~]# echo $SHELL
/bin/baSh
shell脚本
定义
- 将经常使用的命令,存放在一个文件中,shell读取文件,并按顺序执行
脚本格式
-
shell脚本文件以.sh为后缀名
-
指定脚本解释器,除了第一行的#其他都是注释
#!/bin/bash #!/bin/sh #!/user/bin/env bash
-
开头加版本版权等信息
# Date:创建日期 # Author:作者 # Mail:联系方式 # Function:功能 # Version:版本
-
注释:说明某些代码的功能
-
可执行语句:实现程序的功能
- 多使用内部命令 内部命令可以在性能方面为你节省很多
- 没有必要使用cat命令 vim % co $
- 代码缩进
#自动添加版权信息
[root@ scripts]# cat ~/.vimrc #编辑当前用户的vim配置
autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()"
#识别后缀为.py .cc .sh .java的文件自动添加
func SetTitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call setline(2,"##############################################################")
call setline(3, "# File Name: