Shell编写常用命令--diff命令--cut命令--sort命令--$$和||命令--test命令的用法

 {}表示中内容属于哪一个程序
 ()表示括号中内容表示一个整体 	
1、diff命令
1)diff 命令时用俩比较两个文件或者目录的不同
	
	diff file  file1
	diff dir   dir1

2)diff中常用的参数

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

3)diff在比较文件过程中结果读取方式
[num1,num2][a|c|d][num3,num4]
num1,num2表示在第一个文件中的行数
a表示添加-----add
c表示更改-----change
d表示删除-----delete
例:
	root@shell mnt]# diff text text1
	3c3
	< 123				##<表示第一个文件中的内容
	---					##分割线
	> 1233				##>表示第二个文件中的内容
表示第一个文件的第三行和第二个文件的第三行不同,

4)补丁:
diff -u file file1 > file.path			##file.path 就是补丁
yum install patch -y
patch file file.path					##添加补丁,不保留源文件
或patch -b file file.path				##-b 保留原文件,原文件为file.orig,即*.orig
2、cut
cut 命令多用于字符截取
cut -d					##指定分隔符
cut -f	1,7|1-7			##指定截取的列,1,7表示第1列和第7列,1-7表示截取1到7列
cut -c	1,4|1-4			##指定截取的字符位置

在这里插入图片描述
在这里插入图片描述

3、sort
多用于字符排序

sort -n 				##纯数字排序
sort -r					##倒序
sort -u					##去掉重复数字
sort -o					##输出到指定文件中

在这里插入图片描述

sort -t					##指定分隔符
sort -k					##指定要排序的列

在这里插入图片描述

uniq
对重复字符做相应的处理
uniq -u					##显示唯一的行
uniq -d					##显示重复的行
uniq -c					##每行显示一次并统计重复次数

一般sort和uniq组合时用,如
 sort -rn westos | uniq -u
4、$$和||
||表示条件不成立
&&表示不成立
ping -c1 -w1 172.25.254.333 && echo yes ||echo no			##成立输出yes,不成功输出no,-c1 -w1 表示刷新一次,等待时间为一秒

在这里插入图片描述
5、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						##且
	-o						##或
	-z						##表示为空

在这里插入图片描述

例:当cpu使用超过80%时,会在日志中出现报错提示。
在这里插入图片描述
测试:
截取数据

		dd if=/dev/vdb of=/bigfile1  bs=100M count=30	
		dd if=/dev/vdb of=/bigfile2  bs=100M count=30	
		df
		清空日志便于查看

例:运行sh ping.sh,要求检测是有输入ip,并检测网络情况

[ -n "$1" ]&& {
    ping -c1 -w1 $1 &> /dev/null && echo $1 is up || echo $1 is down			## -c1 -w1 表示刷新一次,等待时间为一秒
}||{
	echo "请在命令后加入您要检测的IP" 
}     

在这里插入图片描述
在这里插入图片描述

    -nt		表示比较两个文件哪个时间新
	-ef		表示这两个文件是不是同一个
	-ot		表示哪个文件时间老
	
	[ -z "$1" ] 			##是否是空
	[ -e "$1" ] 			##是否存在
	[ -f "$1" ] 			##纯文本
	[ -L "$1" ]				##链接
	[ -b "$1" ] 			##块设备
	[ -c "$1" ]				##字符设备
	[ -d "$1" ] 			##目录
	[ -S "$1" ]				##套接字

tr 'a-z' 'A-Z' < westos		##替换大小写		

在这里插入图片描述
例子:编写shell 执行sh check_file.sh 时,检测是否有输入,以及输入的文件或者目录的类型

vim check_file.sh
#!/bin/bash
[ -z "$1" ]&& {
        echo "Please show me a file after script !!!" 
        exit
}

        [ -e $1 ] || {
        echo "$1 is not exist"
        exit
}
        [ -L "$1" ]&& {
        echo "$1 is a link file"
        exit
}
        [ -f "$1" ]&& {
        echo "This is a file" 
        exit
}
        [ -c "$1" ]&& {
        echo "$1 zifushebei"
        exit
}
        [ -d "$1" ]&& {
        echo "$1 is a diretcort"
        exit
}
        [ -b "$1" ]&& {
        echo "$1 is a block"
        exit
}	

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值