Shell脚本头部自动生成注释信息

1,285 阅读3分钟

前言

今天公司生产有个作业出现了故障,依次排查追溯到了一个SHELL脚本。使用VIM打开该脚本后直接麻了,所有人都不知道这是谁写的脚本,脚本对应的执行代码在哪里,没有出处,没有标注,没有创建时间,简直是“三无产品”。

image.png

为了彻底杜绝这种问题再次发生,指望口头约束肯定是没太大用处的。使用下文的方式来解决此类问题发生。

就像你编写代码时使用类似IDEA的功能

image.png

实战

生效范围设置

  • 当前用户:
[root@xinxing01 ~]# vim ~/.vimrc
  • 全局:
[root@xinxing01 ~]# vim /etc/vimrc

追加写入如下内容(不要把原来的东西覆盖或删除!)

set ignorecase
set autoindent
set paste
autocmd BufNewFile *.sh exec ":.call SetTitle()"
func SetTitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call setline(2,"#***********************************************")
call setline(3,"#Author:        Administrator")
call setline(4,"#Args:1.xxxxx   2.xxxxxx        3.xxxxxxx ")
call setline(5,"#Version:       1.0")
call setline(6,"#Date:          ".strftime("%Y-%m-%d HH:mm:ss"))
call setline(7,"#FileName:      ".expand("%"))
call setline(8,"#Description:   The test script")
call setline(9,"#***********************************************")
call setline(10,"")
endif
endfunc
autocmd BufNewFile * normal G

参数解释

  • set ignorecase:忽略大小写
  • set autoindent:自动缩进
  • set paste: 设置粘贴模式
  • autocmd:自动执行命令

shell其他参数设置

如果你想关闭某个选项,在命令前加no即可 如:set nonumber就是不显示行号啦

参数注释
set -o查看设置参数是On还是Off
set -u如果变量没有被赋值,则直接报错
set cursorline光标所在当前行高亮
set textwidth=80设置行宽,即一行显示多少个字符
set showmatch光标遇到括号时,自动高亮另一个对应的括号
set number显示行号
set showmode在底部显示,当前处于命令模式还是插入模式
set mouse=a支持使用鼠标
set encoding=utf-8使用 utf-8 编码
set spell spelllang=en_us打开英语单词的拼写检查
set visualbell出错时,发出视觉提示
set history=1000记录历史操作数量
set ignorecase搜索时忽略大小写
set hlsearch搜索时高亮显示匹配结果
set t_Co=256启用256色
filetype indent on自动匹配文件后缀语言缩进规则
set autoindent下一行缩进自动与上一行保持一致
set tabstop=x按tab键是几个空格
set expandtab不同编辑器tab空格数量不同,设置自动把tab转为空格
set softtabstop=2tab转换为几个空格
set listchars=tab:»■,trail:■如果行尾有多余的空格(包括 Tab 键),该配置将让这些空格显示成可见的小方块
set list跟上一条命令配套使用
set wildmenu命令模式下,操作指令按下Tab自动补全。第一次按下显示所有匹配的操作指令的清单;第二次按下依次选择各个指令。
set wildmode=longest:list,full跟上一条命令配套使用
errexit -e当命令返回一个非零退出状态(失败)时退出
keyword -k将关键字参数放入到命令的环境中
noclobber -C防止文件在重定向时被重写
notify -b后台作业完成时通知用户
physical -P在键入cdpwd禁止符号链接,需使用物理全路径
verbose -vDebug模式,详细输出都会被打印显示
xtrace -x为调试打开echo模式

参考链接