LinuxShell编程1———shell基础命令
文章目录
前言
一、shell基础知识
1、shell概念
2、Shell的功能
接收:用户命令
调用:相应的应用程序
解释并交给:内核去处理
返还:内核处理结果
3、Shell种类(了解)
3.1、MS-DOS
3.2、Windows的Shell
3.3、UNIX的Shell
sh(Bourne Shell)
bash(Bourne Again Shell)
4、Shell调用命令
4.1、查看shell命令
1)chsh -l命令:查看系统可用的Shell
2)cat 命令:查看系统自带的shells文件
2)echo $SHELL命令:查看当前用户使用的Shell
4.2、chsh -s命令:永久更改用户登录的Shell
4.3、调用shell执行命令
1)bash -c命令:调用bash
2)sh -c命令:调用sh命令
4.4、【#!】:Shell命令行解释器,声明该脚本是Shell脚本
4.5、Shell脚本的基本写法
1)创建后缀名为sh的文件
2)脚本编写
第一步:【#!】声明该脚本用什么解释器来执行
第二步:对脚本的基本信息的描述(通常简写,无强制规定)
第三步:脚本的具体内容(Linux基本命令,脚本需要执行的命令)
3)脚本运行
脚本运行的两种情况:
直接通过命令解释器就无需添加执行权限共享父进程执行法:source test02.sh 或者 .test02.sh
独立子进程执行法: bash test.sh 或者 sh test.sh
需要添加执行权限(x)才能进行脚本运行相对路径绝对路径
4)shell脚本中的引号
双引号
单引号
5、Shell变量
5.1、概念(了解)
5.2、变量类型
举例:
1)环境变量的相关命令
env命令:查看当前用户的环境变量
set命令:查询当前用户的所有变量(临时变量与环境变量)
export命令:将当前变量变成环境变量
2)内置变量的相关符号
3)用户环境变量配置文件
5.3、定义变量规则
1)命名规则
2)定义方式
5.4、set命令:查看变量
5.5、unset命令:删除变量
5.6、特殊变量(数组变量)
1)概念
2)定义数组
3)查看数组中某个元素值
4)数组的遍历
5)查看数组中全部元素的下标以及数组中元素的总个数
6)添加元素
7)unset命令:删除数组元素
二、Shell辅助命令
1、标准输入输出及重定向
1.1、标准输入输出概念
1.2、echo命令:将指定内容输出到屏幕(标准输出)
常用选项举例
其他选项:修改输出字体颜色
1.3、标准输出重定向
1)概念
2)分类
3)符号>和>>、&
>符号表示覆盖式重定向
>>表示追加式重定向
&符号表示1和2
4)应用场景
1.4、标准输入重定向
1)概念
2)符号>表示追加式重定向
正确输出
错误输出: 错误命令会显示在文件内容中,正确的不会显示在文件内容中。
-
&符号表示1和2
会将标准输出和标准错误输出的信息,全部重定向输入到指定文件
4)应用场景
做MySQL数据监控的时候,不想看到错误的提示消息就会用到输出重定向,把错误输出把它过滤掉只留下正确输出。
1.4、标准输入重定向
1)概念
输入重定向是指把本应该从键盘输入的来源换成从文件或屏幕中的内容进行输入。
2)符号空白开头
\t 匹配:水平制表符(一个 tab 键的长度) \ 匹配:转义符,恢复元字符的原义 例:\. \; 3)扩展正则元字符(常用)
多了?和+,(),个别不同与基本正则元字符,其他一样。
^ 匹配:行首 $ 匹配:行尾 . 匹配:任意单个字符 ? 匹配:前一个字符出现0次或1次 + 匹配:前一个字符出现1次或多次 * 匹配:前一个字符出现0次或多次 [] 匹配:括号里的内容任意一字符 例: [a]、[b] [-] 匹配:括号范围中的任意一个字符 例:[0-9]、[a-Z] [^] 匹配:括号内以外的内容 例: [^0-9]、[^a-d] ( ) 匹配:定义正则分组 例:(hello)(word) {n] 匹配:前一个字符出现的n次 例:go{1}d ==> good {n,} 匹配:前一个字符最少出现n次 例:ab{2,}c ==>abbbc、abbbbc、abb...c {n,m} 匹配:前一个字符最少出现n次,最多出现m次 例::ab{1,2}c ==>abbc、abbbc \或\b 匹配:词尾定位符 例:od\> ==> 结尾为 od 前任意的单词 \s 匹配:单个空白字符,包含:水平 垂直制表符 例:^\s ==>空白开头 4)实用案例
1、打印过滤掉注释行和空白行后的内容
2、打印过滤出的IP地址
3、查看过滤出系统中所有uid大于等于1000的普通用户的信息
4、查找本地yum源中以pcre开头的软件包
-E代表启用扩展正则
5、查找本机安装的所有以a开头的软件
-E代表启用扩展正则
6、查找安全日志secure中关于failed和error的失败和错误的信息
7、过滤出行首单词
8、过滤出行尾单词
$匹配行尾

9、过滤任意个字符
一个点代表一个字符

10、过滤磁盘空间
3、shell辅助命令
3.1、sort命令:排序
命令选项
-g
按照通常的数字值顺序排序,暗含-b -n
按照字符串的数值顺序排序,暗含-b -r
逆序/降序排序(没有-r默认是:升序)
-f
忽略
-b
忽略排序字段或关键字中开头的空格 -t
指定分割符 一般和-k结合使用
-k
使用分隔符分隔的第几列
-u
去掉连续的重复行,
如果有-c,则按严格的顺序进行检查; 如果有-m,则只输出相等顺序的第一个.
-o
将回写入,例如:cat 1.text
3.2、uniq命令:去重
1)作用
unip命令删除文件中的重复行。
unip命令读取由InFile参数指定的标准输入或文件。该命令首先比较相邻的行,然后除去第二行和该行的后续副本。
2)命令选项
-c 统计,在输出行前面加上每行在输入文件中出现的次数。 -d 仅显示重复行。 -u 仅显示不重复的行。
注意:只能对连续的行去重,因此去重前一般需要先排序。
3.3、wc命令:统计
wc命令在Linux基础命令中也有过详细介绍。
1)作用
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
2)命令选项
-c 统计字节数。 -l 统计行数。 -w 统计字数,单词数。 举例:
3.4、cut命令:对文件切割
1)功能
将每个文件中每一行的匹配部分(按指定规则截取)打印到标准输出。
2)语法
cut OPTION... [FILE]...
3)常用选项
扩展:top命令:查看系统信息

3.5、tr命令:替换命令
1)功能
tr 命令可以对来自标准输入的字符进行替换、压缩和删除。
2)语法
tr [选项] 字符集1 字符集2
字符集1:指定要转换或者删除的原字符集.。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2”。
3)常用选项
-s 替换连续出现的字符 -d 删除字符 3.6、tee命令:类似于重定向
1)功能
把 标准输入 的 数据 复制到 每一个 文件 FILE, 同时 送往 标准输出。
2)语法
tee【OFFION】... 【FILE】...
3)常用选项
-a,--append 内容追加到给定的文件,而非覆盖
与重定向的区别: 重定向命令执行后不会在终端上显示内容信息, 而tee命令执行后会在终端上显示内容信息
3.7、watch命令:监控输出结果
1)功能
watch命令可以实时全屏监控当前命令执行的动态变化结果。
2)语法
watch [options] comman
3)常用选项
-n 每隔几秒刷新一次结果(默认是每隔2秒刷新一次) -d 高亮显示命令执行结果的变化 -t 隐藏全屏顶端的时间间隔,命令信息 查看文件有没有在变化
3.8、sleep命令
1)功能
暂停一段时间,时间单位可以是s m h d,默认是s(秒)
2)举例
sleep 10s
3.9、wait命令
1)功能
wait命令是用来阻塞当前进程的执行,直到当前进程的指定子进程或者当前进程的所有子进程返回状态为0,执行结束之后,方才继续执行。
使用wait命令可以在bash脚本的多进程执行模式下,起到一些特殊控制的作用。
2)举例
3.10、read命令
1)功能
用于脚本与用户的交互,可以将用户输入的值存入变量。
2)常用选项
-p 设置提示信息 -e 用户输入的时候允许回退 -s 不显示输入的内容(密码输入的时候使用) -t timeout设置超时时限,单位:秒 举例
3.11、timeout命令
1)功能
控制命令的执行时长
2)语法
timeout [OPTION] N[s|m|d] command [参数]...
N[s|m|d] 设置命令的执行时长为N,默认单位为s秒,还可以是m分钟、h小时、d天
3)常用选项
-s,--signal=SIGNAL
TERM/15
SIGKILL/9
设置终止命令进程的信号名,默认为TERM信号
优雅的终止命令的进程(留有时间,非立即,非强制)
强制的终止命令进程(不留时间,立即执行,只能由管理员发出)
-k,--lill-after =N 设置当第一个终止信号发出N时长之后,如果命令进程仍在运行,则执行SIGKILL强制终止。 3.12、dirname命令
1)功能
指令去除文件名中的非目录部分,删除最后一个“\”后面的路径,显示父目录。dirname返回文件所在目录路径,而basename则相反,去掉路径返回最后的文件名。
2)语法
dirname [选项] 参数
3.13、basename命令
1)功能
指令用于打印文件的基本名称,显示最后的文件名。
2)语法
basename [选项] 参数
三、Shell流程控制语句
1、shell的算数计算方法
1.1、算数运算符
1)基础运算符
加:+ 减:- 乘:* 除:/ 2)shell脚本常用的运算符
&:取余 自增自减 id ++,id-- #变量后增量,变量后减量

自增自减 ++id,--id #变量预增量,变量预减量

1.2、整数计算
1.3、bc命令:小数计算
bc命令是linux下最常用的“计算器”,我们可以借助bc命令进行算术运算,使用这种方法的优势就是支持小数运算。
注意:在使用“除法”时,需要指定小数点精度,否则运算结果中不会包含小数,使用scale指定小数点精度。
安装bc(最小安装时不会安装)
yum install -y bc
交互式bc命令
非交互式bc命令
2、shell的条件判断使用方法
test命令:用于判断表达式是否成立,成立返回0,不成立则返回其他数字。
格式1:test条件表达式
格式2:[ 条件表达式 ](记住左右都要有空格)
1)文件判断
格式:[ 操作符 文件或目录 ]
常用的测试操作符
常用的测试操作符 说明 举例 -d 用于测试是否是目录 
-e 测试目录或文件是否存在 
-f 测试文件是否存在且为普通文件 
-r 测试当前的用户是否有读的权限 
-w 测试当前的用户是否有写的权限 
-x 测试当前的用户是否具有可执行的权限 
-L 测试是否为链接文件 [ -L 文件或目录 ] -b 测试是否为块设备文件 [ -b 文件或目录 ] -c 测试是否为字符型特殊文件 [ -c 文件或目录 ] 有关什么是块设备文件和字符型特殊文件,请看此博主的文章有解释到。关于字符设备文件和块设备文件的区别_块设备文件和字符设备文件-CSDN博客
2)判断数值大小
格式1:test条件表达式
格式2:[ 整数1 操作符 整数2 ]

























































































































































































































