Linux下的shell

shell 脚本中常用命令

diff 命令
diff 命令是用来比较两个文件或目录的不同
diff [options] target1 target2
diff file1 file2
diff direcory1 directory2

diff 在比较文件过程中结果读取方式
[num1 , num2][a|c|d][num3,num4]
num1,num2 表示在第一个文件中的行数
a 表示添加 ----add
c 表示更改 ----change
d 表示删除 ----delete
< 表示第一个文件中的内容, > 表示第二个文件中的内容, — 分割线
num3,num4 表示在第二个文件中的行数
2,4c2,4 表示改变第一个文件中的第二行和第四行才能匹配第二个文件中
的第二行和第四行

diff 中常用的参数
-b 或 --ignore-space-change 不检查空格字符的不同
-B 或 --ignore-blank-lines 不检查空白行
-c 显示全部内文,并标出不同之处
-i 或 --ignore-case 不检查大小写的不同
-p :若比较的文件为 C 语言的程序码文件时,显示差异所在的
函数名称;
-q 或 --brief :仅显示有无差异,不显示详细的信息
-r 或 --recursive :比较子目录中的文件
-u 以合并的方式来显示文件内容的不同

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
patch
用于文件不同文件打布丁
patch [options] file.old file.path-b

在这里插入图片描述
cut
cut 命令多用与字符截取
cut -d 指定分隔符
cut -f 1,7|1-7 指定截取的列
cut -c 1,4|1-4 指定截取的字符位置
将/etc/passwd copy到/mnt
并简化文件
在这里插入图片描述
cut -d: -f 1 passwd截取以:为分隔符的第一列
cut -d: -f 1,3 passwd 截取以:为分隔符的第一列和第三列
在这里插入图片描述
cut -d: -f 1-3 passwd截取以:为分隔符的第一列到第三列
在这里插入图片描述
cut -c 1,3 passwd截取字符的第一列和第三列
cut -c 1-3 passwd 截取字符的第一列到第三列
在这里插入图片描述
sort
多用于字符排序
sort -n
纯数字排序
sort -r
倒序
sort -u
去掉重复数字
sort -o
输出到指定文件中
sort -t
指定分隔符
sort -k
指定要排序的列

创建一个纯数字的文件
在这里插入图片描述
sort file只是第一个字符排序
sort -n file将文件内容以纯数字形式排序
在这里插入图片描述

由于刚才的文件没有重复的数字
所以将文件中加上重复的数字
在这里插入图片描述
sort -nu file 将文件去除重复的数字以及以纯数字的形式排序
在这里插入图片描述
sort -nur file 将文件去除重复的数字以及以纯数字的形式倒序排序
在这里插入图片描述

sort -nur file -o westos 将文件去除重复的数字以及以纯数字的形式倒序排序并输出为新文件westos

新写文件
在这里插入图片描述
在这里插入图片描述
如果将文件以纯数字的形式排列那只会对第一列的数字其作用
在这里插入图片描述
sort -t : -k 2 -n file 将文件以:为分隔符的第二列以纯数字的形式排序
在这里插入图片描述
uniq
对重复字符做相应的处理
uniq -u
显示唯一的行
uniq -d
显示重复的行
uniq -c
每行显示一次并统计重复次数
在这里插入图片描述

在这里插入图片描述
sort-n file | uniq -c 以纯数字形式排列并显示每个数字出现的次数
sort-n file | uniq -d 以纯数字形式排列并显示重复的数字
sort-n file | uniq -u 以纯数字形式排列并显示不重复的数字

实验
用命令查看登陆本主机次数最多外部的ip和次数
last -i 可以查看本机的登陆情况
在这里插入图片描述
如果需要查看登陆最多外部的ip和次数,需要将本机的ip和装机时间进行过滤,并挑选出ip以及查看登陆次数并排倒序,最后将第一的ip和次数列举出来
输入的命令是last -i |grep 0.0.0.0 -v | grep wtmp -v | cut -d " " -f 14 | uniq -c | sort -nr -t " " -k 5 | head -n 1 顺序就是上述顺序
在这里插入图片描述
&& 和 ||
&& 用来执行条件成立后执行的命令
|| 用来执行条件不成立后执行的命令
例如:
ping -c1 -w1 172.25.254.111 && echo up
ping -c1 -w1 172.25.254.111 || echo up

实验
写一个脚本ping一个ip如果ping的通显示该ip is up 如果ping不同显示该ip is down

脚本写法:在这里插入图片描述
测试
在这里插入图片描述
硬链接软连接
硬链接ln /mnt/westos /mnt/westos 节点号相同的文件,与源文件内容一致

在这里插入图片描述

在这里插入图片描述

软连接ln -s /mnt/westos /mnt/westos 节点不同由新创建的文件指向源文件,删除源文件会损坏
在这里插入图片描述

test 命令
test 命令和 [ ] 等同
test “$ A” == “$ B” 等同 [ “$ A” == “$ B” ]
[ “$ A” = “$ B” ]等于
[ “$ A” != “$ B” ]不等于
[ “$ A” -eq “$ B” ]等于
[ “$ A” -ne “$ B” ]不等于
[ “$ A” -le “$ B” ]小于等于
[ “$ A” -lt “$ B” ]小于
["$ A" -ge “$ B” ]大于等于
["$ A" -gt “$ B” ]大于
["$ A" -ne " $ B" -a “$ A” -gt “$ B” ]and
["$ A" -ne “$ B” -o “$ A” -gt “$ B” ]or
[-z “$ A” ]是不是为空
[-n “$A” ]是不是不为空
[“file1” -ef “file2” ]
[“file1” -nt “file2” ]
[“file1” -ot “file2” ]
[-e “file” ]存在
[-f “file” ]是不是普通文件
[-L “file” ]是不是软链接

[-S “file” ]是不是套接字
[-b “file” ]是不是块设备
[-d “file” ]是不是目录
[-c “file” ]是不是字符文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实验
监控cpu的使用情况并在超过一定数字报警
脚本写法
在这里插入图片描述
测试
在这里插入图片描述
实验
上面实验说到能ping通是up,ping不通是down,不过没有考虑脚本测试后面没有ip的情况,也就是为空,现在加如如果ip为空的警告
脚本写法
在这里插入图片描述
测试
在这里插入图片描述
实验
写一个脚本当文件写进去时判断是什么文件
脚本写法
在这里插入图片描述测试
在这里插入图片描述
实验
将输入的内容转化大小写
脚本写法
在这里插入图片描述
测试
在这里插入图片描述
将脚本反过来写就是大写变小写
在这里插入图片描述

grep

Global search regular expression and print out the
line
全面搜索研究正则表达式并显示出来
grep 命令是一种强大的文本搜索工具 , 根据用户指定的“模
式”对目标文本进行匹配检查 , 打印匹配到的行
由正则表达式或者字符及基本文本字符所编写的过滤条件

grep root passwd 查找passwd文件中的root
grep ^root passwd 以root开头
grep root$ passwd 以root结尾
grep -i root passwd 忽略大小写
grep -E "root|ROOT" passwd root或者ROOT
grep -v 关键字 反向过滤
grep 关键字 -数字 显示行以及上下
grep 关键字 -A数字 上几行
grep 关键字 -B数字 下几行
grep 'w....s'以w开头s结尾中间4个字符
grep 'w.....'以w开头后面5个字符
grep '.....s'以s结尾前面5个字符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
grep 中字符的匹配次数设定
字符出现 [0- 任意次 ]
?
字符出现 [0-1 次 ]
+
字符出现 [1- 任意次 ]
{n}
字符出现 [n 次 ]
|{m,n} 字符出现 [ 最少出现 m 次,最多出现 n 次 ]
{0,n}
字符出现 [0-n 次 ]
{m,}
字符出现 [ 至少 m 次 ]
(xy){n}xy 关键字出现 [n 次 ]
.*
关键字之间匹配任意字符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
grep 中字符的匹配位置设定
^ 关键字 开头
关键字 $ 结尾
\(为了显示斜杠)< 关键字
关键字 \(为了显示斜杠)>
\(为了显示斜杠)< 关键字 \(为了显示斜杠)>
在这里插入图片描述

sed

行编辑器
stream editor
用来操作纯 ASCII 码的文本
处理时 , 把当 前处理的行存储在临时缓冲区中 , 称为“模式空
间” (pattern space) 可以指定仅仅处理哪些行
sed 符合模式条件的处理 不符合条件的不予处理
处理完成之后把缓冲区的内容送往屏幕
接着处理下一行 , 这样不断重复 , 直到文件末尾
Sed 命令格式
调用 sed 命令有两种形式:
sed [options] ‘command’ file(s)
sed [options] -f scriptfile file(s)
sed 对字符的处理
p显示
d删除
a添加
c替换
w写入
i插入
p 模式操作
sed -n ‘/:/p’ fstab
sed -n ‘/UUID$/p’ fstab
sed -n ‘/^UUID/p’ fstab
sed -n ‘2,6p’ fstab
sed -n ‘2,6!p’ fstab
将/etc/fstab拷贝到/mnt
在这里插入图片描述
查看文件并放入模式空间,并查看模式空间中的第5行
在这里插入图片描述
查看3-5行
在这里插入图片描述
查看第三行和第五行
在这里插入图片描述
将带#的行复制
在这里插入图片描述
查看#并不要求重复
在这里插入图片描述
查看不包含#
在这里插入图片描述

不看$开头,不看#和 $开头的
在这里插入图片描述
实验

d 模式操作
sed ‘/^UUID/d’ /etc/fstab
sed ‘/^#/d’ /etc/fstab
sed ‘/^$/d’/etc/fstab
sed ‘1,4d’/etc/fstab
sed –n ‘/^UUID/!d’ /etc/fstab
除过#开头的
在这里插入图片描述
除过3和5行
在这里插入图片描述
除过3到5行
在这里插入图片描述
a 模式操作
sed '/^UUID/a \hello sed /etc/fstab
sed ‘/^UUID/a \hello sed\nwestos /etc/fstab’

替换UUID开头的行为hello westos
在这里插入图片描述
替换为两行
在这里插入图片描述
c 模式操作
sed ‘/^UUID/c\hello sed\nwestos /etc/fstab’
将#开头的全替换为…
在这里插入图片描述
i 模式操作
为输出模式将放在模式空间中的东西存入一个文件,可以是原文件或者新文件
sed ‘/^UUID/i\hello sed\nwestos /etc/fstab’
将#开头的全替换为…,并保存到原来的文件中
在这里插入图片描述
w 模式操作插入模式
sed ‘/^UUID/w /tmp/fstab.txt’ /etc/fstab
sed -n’/^UUID/w /tmp/fstab.txt’ /etc/fstab
sed ‘/^UUID/=’/etc/fstab
sed ‘6r /etc/issue’ /etc/fstab

将file插入fstab第六行
在这里插入图片描述
插入最后一行
在这里插入图片描述
sed 的其他用法
sed -n ‘/^UUID/=’ fstab
sed -n -e ‘/^UUID/p’ -e ‘/^UUID/=’ fstab
sed -e ‘s/brown/green/; s/dog/cat/’ data
sed -f rulesfile file
sed ‘s/^//#/’/etc/fstab
sed ‘s@^/@#@g’/etc/fstab
sed ‘s///#/’/etc/fstab
sed ‘s///#/g/’/etc/fstab
sed ‘G’ data
sed ‘$ !G’ data
sed ‘=’ data | sed ‘N; s/\n/ /’
sed -n ‘$p’ data

查看UUID开头并显示在第几行
在这里插入图片描述
产看另一个文件与这个文件重复的内容在第几行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
全文替换
在这里插入图片描述
同理
在这里插入图片描述
同时使用
在这里插入图片描述
首尾加空行
在这里插入图片描述
只给文件首加空格,尾不加
在这里插入图片描述
加入行号不过在上一行显示
在这里插入图片描述
在行首显示行号
在这里插入图片描述
显示最后一行行号
在这里插入图片描述
实验
修改http的端口
脚本写法
在这里插入图片描述
将listen开头的替换成自己要修改的 并输出回原来的文件
测试
在这里插入图片描述
在这里插入图片描述
记得重启httpd systemctl restart httpd 不然不生效
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值