shell中常用的基本命令

shell中常用的基本命令

shell在企业中可以制作一些解放自己双手的小工具,更多的是对于数据的一种采集,对系统的健康状态进行一个初步的监控。使用起来比较简单。一般都是做单机,不然效率太低。
代码百分之九十是数据,百分之十是数据,也就是字符串。

diff(用来比较两个文件的不同)

实验测试:

vim westos						
vim westod.new 						##编辑两个文件
diff westos  westos.new  			##使用diff比较不同

输出信息:

【num1,num2】[a|c|d]【num3,num4】
num1,num2第一个文件中的行
num3,num4第二个文件中的行
a 添加
c 更改
d 删除
< 第一个文件中的内容
> 第二个文件中的内容

常用参数:

-b   忽略空格
-i   忽略大小
-B   忽略空行  
-c   显示文件所有内容并标示不同
-r   对比目录。递归对比,知道对比到文件为止。只是单层的话没有区别
-u   合并输出

一般情况下自己不阅读,没有意义,直接让系统输出
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

patch

格式:

dnf install patch -y
patch 原文件  补丁文件
patch  -b  原文件  补丁文件							##备份原文件

diff  -u  westos  westos.new  >  westos.path   		##生成一个补丁
patch  westos  westos.path     						##用这个补丁去更新原文件,此时原文件和新文件内容就一样了
patch -b westos  westos.path     					##-b可以保存原文件,此时原文件的名称是.orig结尾

在这里插入图片描述

cut字符截取命令

cd /mnt
cp /etc/passwd .
cut -d : -f 1 passwd 
cut -d : -f 3,5 passwd
cut -d : -f 3-5 passwd
cut -d : -f 3- passwd
cut -d : -f -5 passwd

-d :    ##指定:分隔符
-f		 ##指定显示的列。5第五列 | 3,5 第 三和第五列 | 3-5 第三到第五列 |5- 第五列以后|-5 到第五列
-c 		 ##指定截取的字符(数字用法同-f)

在这里插入图片描述

sort排序

vim westos
sort westos只是排第一行的第一个字母
	-n 	##纯数字排序
 	-r 	##倒叙
	-u 	##去掉重复
	-o 	##输出到指定文件
	-t 	##指定分隔符
	-k 	##指定排序的列

在这里插入图片描述

uniq重复的部分进行处理

-c  ##合并重复并统计行数
-d  ##显示重复的行
-u  ##显示唯一的行

在这里插入图片描述

tr

大小写的转换和字符的替换,只能替换单个字符

 tr 'a-z' 'A-Z'
 tr  'A-Z' 'a-z'

在这里插入图片描述

&& || 条件判定

&& 符合条件作动作
|| 不符合条件作动作
方法一:直接输入命令

ping 192.168.43.100 -c1 -w1 &> /dev/null  && echo yes  || echo no  
									 ##&> /dev/null  输出到垃圾箱中,也就是不显示
									 ##如果这个命令成功就输出yes,如果失败就输出no

方法二:编写一个脚本,可以在大括号中执行多个命令

vim test.sh

ping 192.168.43.100 -c1 -w1 &> /dev/null &&{
echo yes
date
}||{
echo no
date 
}

sh test.sh

在这里插入图片描述

test

test = [ ]    							##[ ] 就相当于test命令
“test $a =$b ” = [ $a = $b ] 

test 数字对比
=
!=
-eq  		##等于
-ne   		##不等于
-le			##小于等于
-lt 		##小于
-ge 		##大于等于
-gt 		##大于

test的条件关系
-a 			##并且
-o  		##或者

test对空的判定
-n 			##判定内容不为空
-z			##判定内容为空

test对文件的判定
-ef 		##文件节点号是否一致(硬链)
-nt 		##文件1是不是比文件2新
-ot 		##文件1是不是比文件2老
-d 			##目录
-S 			##套结字
-L			##软连接
-e 			##存在
-f 			##普通文件
-b 			##块设备
-c			##字符设备

补充知识:
ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化。
ln的链接分软链接和硬链接两种,软链接就是ln –s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
练习题1:
1、ifconfig网卡,可以显示此网卡的信息,显示信息中包含此网卡使用的ip地址。请用命令过滤此ip并在输出时只显示Ip其他信息不显示。
2、找出能登录系统用户中UID最大的用户,并显示其名称。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
##精简方法,后续会学命令。
练习题2:
题目:检测一个用户的存在
解答:

vim westos.sh

[ -z "$*" ] && {
echo -e "\033[41;33mError: please input username following script!\033[0m"
    exit
}											##如果内容为空就显示此内容,且对字体颜色做了限定
id $* &> /dev/null && {
   echo $* is exist
}||{
echo $* is not exist
}

sh westos.sh westos 
sh westos.ch haha
sh westos.sh

在这里插入图片描述
shell脚本中echo显示内容带颜色显示,需要使用参数-e
格式如下:

echo -e "\033[字背景颜色;文字颜色m字符串\033[0m" 

例如:

echo -e “\033[31m 红色字 \033[0m” 
echo -e “\033[34m 黄色字 \033[0m” 
echo -e “\033[41;33m 红底黄字 \033[0m” 
echo -e “\033[41;37m 红底白字 \033[0m” 

练习题3:
vim /mnt/test.sh
sh test.sh create 用户
sh test.sh delete 用户

sh /mnt/test.sh create lee
当lee存在
lee is exist
当lee不存在
会建立lee并且显示lee is create

sh /mnt/test.sh delete lee
当lee存在时
删除lee并显示lee deleted
当lee不存在时,什么都不作

当sh /mnt/test.sh haha lee
报错:
error:wrong option haha , please input create and delete following script

当sh /mnt/test.sh 后所跟字符串个数不足两个的时候报错:
Usage: /mnt/westos.sh < create | delete >

解答:

#!/bin/bash
[ "$#" -lt 2 ] && {
echo "Usage: /mnt/westos.sh < create | delete > <username> "
exit
}
OPTS=`echo $1 | tr 'A-Z' 'a-z'`
[ "$OPTS" = "create" -o "$OPTS" = "delete" ] ||{
echo "error:wrong option haha , please input create and delete following script"
exit
}
[ "$OPTS" = "create" ] && {
id $2  &> /dev/null && {
	echo " $2 is exist"
	}||{
	useradd $2 && echo " $2 is created"
	}
}||{
id $2 &> /dev/null && userdel  -r $2 && echo "user $2 is deleted"
}

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

练习题4:
题目:编写脚本完成以下条件
/mnt/file_check.sh
如果脚本后未指定检测文件报错“未指定检测文件,请指定”
如果脚本后指定文件不存在报错“此文件不存在”
当文件存在时请检测文件类型并显示到输出中
解答:

#!/bin/bash

[ -z $1 ] && {
    echo "Error : please input file name following script !!"
    exit
}
[ -e $1 ] || {
    echo "$1 is not exist"
    exit
}

[ -L $1 ] && {
    echo "$1 is link file" 
    exit
}

[ -f $1 ] && {
    echo "$1 is common file"
    exit
}

[ -d $1 ] && {
    echo "$1 is directory"
    exit
}

[ -S $1 ] && {
    echo "$1 is socket"
    exit
}

[ -b $1 ] && {
    echo "$1 is block file"
    exit
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值