编写shell脚本

一、shell脚本基础

(1)进入vi编辑器时处于命令模式,按“i”、“o”键可以进入编辑模式,按“esc”退出到命令模式,输入“:q”退出,输入“:q!”强制退出,输入“:wq”保存退出;

在命令模式输入"dd"表示删除(剪切)光标所在整行,"5dd"表示删除(剪切)光标处开始5行,"yy"表示复制光标所在整行,"5yy"表示复制光标处开始5行,"u"表示撤销上一操作步骤,"p"表示粘贴删除(剪切)的文本到光标后面;"?“+单个字符表示搜索字符,"/"+字符串表示搜索字符串,搜索时输入n向下搜索,输入N向上搜索。

(2)编写shell脚本完成后,赋予脚本执行权限chmode 755 [脚本名称],然后直接执行脚本./脚本名称(或通过bash调用执行脚本:bash [脚本名称])

(3)命令别名设置:alias 别名='原名',设置别名永久生效:vi /root/.bashrc,然后在配置文件中添加alias 别名='原名'。

(4)输入输出重定向:标准输出重定向格式为: 命令 > 文件,代表以覆盖的方式,把命令正确输出输出到文件或设备中;命令 >> 文件,代表以追加的方式把命令正确输出输出到文件或设备中;

(5)多命令执行:如命令1:命令2,冒号表示命令直接没有联系;命令1&&命令2,&&表示命令之间逻辑与关系;命令1||命令2,||表示命令之间逻辑或关系;

(6)管道符:命令1 | 命令2,表示命令1的正确执行作为命令2的操作对象,例如:netstat -an | more 查看网络服务并分屏显示;netstat -an | grep tcp 查看tcp网络服务

(7)通配符:?代表一个字符,*代表匹配0个或任意个字符,[]代表匹配中括号中的任意一个字符,[-]代表匹配中括号中的任意一个字符,-代表一个范围;[^]代表不匹配中括号中的任意一个字符;

(8)变量

变量的设置规则:变量可以由数字、字母、下划线组成,但不能以数字为开头;在bash类型中,变量的默认类型都是字符串类型,如果要进行数值运算,需指定变量为数值型;

查看变量命令set,删除变量命令unset [变量名];

环境变量建议使用大写,便于区分,设置环境变量:export 变量名=变量值,查询变量命令env,删除变量 unset

位置参数变量:

预定义变量:

数值运算与运算符:声明变量类型declare,格式为 declare  [+/-] [参数] [变量名],-表示设定变量,+表示取消变量,-i参数表示设置变量为整型,-x表示设置变量为环境变量,-p表示显示指定变量被声明的类型;

环境变量的配置文件如:

对所有登录用户均有有效的环境变量配置文件有:/etc/profile、/etc/profile.d/*.sh、/etc/bashrc;

仅对登录用户的家目录有效的环境变量配置文件有:~/.bash_profile、~/.bashrc;

(9)正则表达式与通配符

正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式;

通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,故使用shell自己的通配符来进行匹配;

(10)字符截取命令

字段截取命令cut,格式为:cut [参数] [文件名]   -f n,m参数表示截取第n列及第m列;-d “:”参数表示截取冒号分隔符前面的字段;

字段截取命令printf:格式为:printf '%ns ',表示n行字符串;

字段截取命令sed,sed是一种几乎包含所有unix平台及Linux平台的轻量级流编辑器,主要用于将数据进行选取、替换、删除、新增,格式为:sed [选项] [动作] [文件名];

-n选项表示所有数据输入到屏幕上,a动作表示追加即在当前行追加一行,c动作表示用c后面数据替换原行数据,i表示插入,d动作表示删除指定行,p动作表示打印指定行,s动作表示字符串替换。

(11)字符处理命令

排序命令sort,格式为:sort [选项] [文件名],-f选项表示忽略大小写,-n表示以数值类型排序,-r表示反向排序,-t表示指定分隔符;

统计命令wc,格式为:wc [选项] [文件名],-l选项表示只统计行数,-w表示只统计单词数,-m表示只统计字符数;

原文地址:https://www.cnblogs.com/weiyuncai/p/9101571.html