SHELL脚本 基础一
SHELL脚本基础
基本都是干货,都是通过书和视频总结的一小部分,里面应该有一些错误;
SHELL变量
1.变量:临时储存数据的,该数据是可以进行变化的数据
2.变量的使用:1.多次重复使用的数据,并且在代码中重复,可以用变量来代替该内容
3.没有数据类型
4.变量名=变量值
5.如果打印变量和使用变量使用(&name)
6.unset 变量名 可以取消相应的变量
变量的定义规则:
1.变量名区分大小写
2.变量名中不能使用特殊的符号
3.变量名不能以数字开始
4.等号两边不能有任何空格
5.变量名尽量做到名如其人
6.变量名今年可能大写
echo ${A:2:4} 从0开始计数,从第二开始截取4个字符
命令的的执行结果作为赋值使用
date= $(date + %F)
交互式定义变量(read)
read [选项] 变量名
-p 提示用户的信息
-n 提示定义字符数
-s 不显示
-t 定义时长
read 也可以从其他文件读取做为变量使用
有类型的变量赋值
declare 选项 变量名=变量值 经declare修饰过后变量就只有一个 类型相关
-i 整数
-r 定义只读变量
-a 定义普通数组
-A 定义关联数组
-x 将环境通过环境导出
ps -auxf | grep bash (查看bash的父子关系)
export和declare -x 都可以导出环境变量 和定义环境变量
变量的分类 (作用域区分)
本地变量 当前用户定义的变量
环境变量 当前进程有效,并且子进程可以使用
env 查看当前用户的环境变量
set 可以查看所有的当前设置好的变量
全局变量
/.bashrc 当前用户的bash信息,用户登录时读取
/.bash_profile 当前用户的环境变量,用户登录时读取
/etc/bashrc 全局的bash信息,所有用户都生效
/etc/profile 全局环境变量信息 系统和所有用户都生效
以上文件修改以后,都需要重新source让其生效或者退出重新登录
系统变量
(内置bash 变量)shell 本省已经固定好了他的名字和作用
$? 状态值返回后的变量 非0 是有问题的
每次要验证命令的返回值
$0 当前执行的程序或者脚本的名字
$# 脚本后面接的参数的个数
$* 脚本后面的所有参数,参数当成一个整体输出
$@ 脚本后面所有参数,参数独立输出
$1-$9 脚本后面的位置参数,$1表示第一个位置 参数,以此类推
10−{10}-10−{n} 拓展位置参数
$$当前所在进程的进程号,
!后台运行的最后一个进程号!!后台运行的最后一个进程号 !!后台运行的最后一个进程号!调运最后一条命令中的参数
shell脚本写法规范
标准的shell脚本写法
source 用来重新读取配置文件并执行
#!/bin/bash //解释器
#Name:名字
#Desc : 描述
#Path:存放路径
#Usage:用法
#Update:更新时间
脚本的执行方法有两种
标准:1.绝对路径进行执行
2.相对路径执行
非标准:1.指定解释器编译
2.source 方式去执行脚本
也可以指定解释器对脚本进行翻译
bash -x 可以对脚本的查看脚本是否出现错误
shell的作用
1.自动化软件的部署 LAMP/LNMP/Tomcat
2.自动化管理 系统初始化脚本,批量
3.自动化分析处理
4.自动化备份
5.自动化监控
bash的一般特性
- 命令和文件的自动补全
Tab 只能补全命令和文件
2.常见的快捷键
ctrl c 终止前台的运行程序
^z 挂起前台的程序挂起到后台
^d 退出 等价exit
^r 搜素历史命令
^u 删除光标前的所有字符
^k 删除光标后的所有字符
3.常用的通配符(重点)
- 匹配0或多个任意字符
?匹配任意单个字符
[list] 匹配[list]中得任意单个字符
[!list] 匹配除list中的任意单个字符
{str1,str2,str3……} 多个字符
- shell中的引号(重点)
“” 会把引号的内容当成整体来看待,允许通过符号引用其他的变量′会把引号的内容当成一个整体来看待,禁止引用其他变量值′′和符号引用其他的变量 ' 会把引号的内容当成一个整体来看待,禁止引用其他变量值 '' 和符号引用其他的变量′会把引号的内容当成一个整体来看待,禁止引用其他变量值′′和()一样 ,引号或者括号里的命令会优先执行,如果存在嵌套,反撇号不能使用
常用文本处理工具(推荐自学正则表达式:《正则表达式必知必会》)
grep 行过滤工具;用关键字进行行过滤
#grep 【选项】‘关键字’ 文件名
临时建立别名 alias 命令
建立别名 alias 命令='组合命令’
grep 常用的选项
-i 不缺分到大小写
-v 反选
-c 统计使用的次数
-r 递归查找
-l 查找文件名
-n 显示所在的行号
-e 使用正则表达式
-w 之搜寻 单词
^行头 KaTeX parse error: Expected group after '^' at position 5: 行尾 (^̲)(代表的是空格)
cut 列过滤使用
#cut [选项] 文件名称
-c 以自负单位进行切割,截取
-d 自定义分割符
-f 和-d 配合使用,指定截取区域
系统的运行级别(补充)
runlevel 0-7
init 0 -7 可以切换系统不同的级别
sort 排序
sort每一行进行排序将字符排序的时候根据的字符的AC码进行排序
-n 排序
-o 将输出结果经行重定向
-t 自定义分隔符
-k 定义排序的第几列
unip工具
unip用于去除连续的重复行
-i 忽略大小写
-c 统计重复行
-d 只显示重复行
tee 工具
tee工具 从标准输入读取并读取写入到标准输出和文件,即是双向覆盖重定向(屏幕输出|文本输入)
'^$'是空行
diff 工具(一般使用diff 打补丁和软件更新使用)(公司电脑有更具体的使用)
#diff [ 选项] 文件1 文件2
可以使用 > 文件名 用来清空文件的内容,但是并不会删除文件
tr工具 (跟新配置文件使用)
用于字符转换,替换和删除;主要用于删除文件中的控制字符或进行字符转换
用法1: 命令的执行结果交给tr处理,其中string1用于查询,string2用于转换处理
command | tr ‘strings’ ‘string2’
用法2:tr处理的内容来自文件,记住使用标准输入
tr ‘string1’ ‘string2’ < filename
用法3:匹配string1进行相应的操作,如删除操作
tr options ‘string1’ < filename
常用的options选项
-d 删除字符串1中所有的输入字符
-s 删除所有的重复出现字符序列,只保留第一个;即使出现字符串压缩为一个字符
a-z 匹配所有的小写字母
A-Z 取反
0-9 匹配数字
[:alnum:] 匹配所有的字母和数字
[:alpha:]: 匹配所有的字母s
[:blank:]: 匹配所有的空格
[:punct:]:匹配所有的标点符号
[:space:]:匹配说所有的水平和垂直的空格
[:cntrl:]:匹配所有的控制字符 (\f Ctral -l 走换行页)
\n \r \t
paste用于进行文件合并(使用的不是很多)
SHELL脚本 基础一相关推荐
- Linux shell脚本基础学习
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- Shell 脚本基础学习 (四)
现在我们来讨论编写一个脚本的一般步骤.任何优秀的脚本都应该具有帮助和输入参数.并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意.这时候,在写一 ...
- Linux shell脚本基础学习详细介绍(完整版)一
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- Linux shell脚本基础学习详细介绍(完整版)2
详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...
- Linux shell脚本基础学习详细介绍(完整版)
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- linux脚本变量运算符,linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)...
Shell 脚本基础 1.变量 什么是变量 #a=1 # echo $a 1 变量:可以变化的量 1.2变量名称注意事项 变量名不能以数字开头 不能与系统中已有的环境变量重名,尽量不要全部使用大写,尽 ...
- shell脚本基础 (一)
shell脚本基础 (一) 如何编写shell脚本: shell脚本存放的路径举例:vi /root/first.sh 1.理清任务: 2.申明shell环境: 3.注释: 4.写粗糙的脚本: 5.完 ...
- 详细介绍Linux shell脚本基础学习(一)
2019独角兽企业重金招聘Python工程师标准>>> Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础 ...
- linux 脚本编写 -eq,关于shell脚本基础编程第四篇
shell脚本基础编程第四篇 本章主要内容:函数 函数 function: function 名称 { 命令 ; } 或 name () { 命令 ; } 定义 shell 函数. 创建一个以 NAM ...
最新文章
- 华科计算机学院多难考,计算机学院2019年硕士研究生入学考试成绩公告
- tf.reduce_max用法
- 你心动了吗?2014年iOS应用开发者收入超好莱坞美国票房
- 项目优化之:GPU编程
- 如何快速正确的安装 Ruby, Rails 运行环境
- 2020中国数字化转型优秀案例征集
- 怎样让百度快速收录的新方法
- java带参数的构造方法_java练习本(20190603)
- php生成成语,洪恩在线成语词典小偷程序php版_PHP教程
- 2016 server win 假死_win10程序假死无响应的两种解决办法
- 无法启动程序因为计算机中丢失msvcr100,win7系统无法启动程序提示计算机中丢失msvcr100.dll的解决方法...
- 香港服务器防攻击能力好吗
- 信息系统项目管理师2019年上半年上午试题解析(三)
- 胡乱捣鼓03——PID定身12cm直线追踪小车做起来~
- SVM分类,一对多;
- VMware workstation批量创建虚拟机和自动化安装操作系统(二)
- Texworks中文论文编辑排版优秀
- Android中绘图板的实现
- EDR汽车事件记录系统
- NBA名人堂之-威尔特·张伯伦|乔治·迈肯|比尔·沃顿|戴夫·考恩斯|威利斯·里德
热门文章
- Struts2 格式化输出时间
- 《网站设计 开发 维护 推广 从入门到精通》—— 2.3 页面设计创意思维
- C++ QT中的QSound使用方法
- Windows 不能在 本地计算机 启动 SQL Server 。错误代码126.
- 制造业采购审批流程设计示例
- python中module用法_Python学习之module用法
- java选择哪款eclipse_写java程序用哪一个版的eclipse比较好
- cadence高速电路设计 光盘_嘉定区高速复印机租赁费用
- 查单个值用什么resultset_视光门诊日记—为什么两个医院查的视力不一样
- 请编写出一个html页面 令其输出,javaweb程序设计案例教程_课后习题1.pdf