1.shell中常用的基础命令

1.shell中常用的基础命令

1.diff
用法:
diff file1 file2 ##比较两文件的不同
在这里插入图片描述

输出信息:
[num1,num2]  [a|c|d]  [num3,num4]
num1,num2    ##第一个文件中的行
a                     ##添加
c                     ##更改
d                     ##删除
<                     ##第一个文件中的内容
> 第二个文件中的内容
num3,num4    ##第二个文件中的行
常用参数描述
-b忽略空格
-B忽略空行
-i忽略大小写
-c显示文件所有内容并标识不同
-r对比目录的不同
-u合并输出

2.path
diff -u一般用来生成补丁,安装patch。可以用patch命令给指定文件打补丁,-b备份原文件

diff -u file1 file2 > file.path
patch -b file1 file.path             ##给file1打补丁让file1与file2相同
ls file1.orig                        ##备份文件

3.cut

-d :                          ##指定:为分隔符
-d " "                       ##指定空格为分隔符
-f                            ##指定显示的列

    5         ##第五列

    3,5     ##3和5列

    3-5     ##3到5列

    5-       ##第五列以后

    -5       ##开始到第五列

-c                         ##指定截取第几个字符(数字用法同-f)
cut -d : -f 3-5 /etc/passwd     ##显示以:为分隔符的3到5列 
cut -d : -f 3,5 /etc/passwd     ##3和5列
cut -d : -f 3- /etc/passwd      ##3列及往后
cut -c -7 /etc/passwd           ##显示7个字符往前

.ifconfig 网卡 可以显示此网卡的信息,显示信息中包含此网卡使用的ip地址,请用命令过滤此ip并在输出时只显示ip其他信息不显示。

ifconfig ens3 | head -n 2 | tail -n 1 | cut -d " " -f 10

4.sort

-n                           ##纯数字排序
-r                            ##倒叙
-u                           ##去掉重复
-o                           ##输出到指定文件
-t                           ##指定分隔符
-k                          ##指定排序的列
sort -n westos             ##按数字排顺序
sort -nr westos            ##按数字排倒序
sort -nru westos           ##-u去除重复
sort -nru westos -o test   ##-o保存到test
sort -t : -k 2 westos      ##以:为分隔符,以第2列为基准进行排序

找出能登陆系统用户中UID最大的用户,并显示其名称

grep bash /etc/passwd | sort -nr -t : -k 3 | cut -d : -f 1 | head -n 1

5.uniq

sort -n westos | uniq -c    ##合并重复并统计重复个数
sort -n westos | uniq -d    ##显示重复的行
sort -n westos | uniq -u    ##显示不重复的行

6.tr

tr 'a-z' 'A-Z' < westos	    ##将westos里的内容转换为大写
tr  'l' 'X' < westos	##将L换为X

在这里插入图片描述
7.text
test = [] ##[] 就相当于test命令
“test $a = b " 相 当 于 [ " b" 相当于[ " b"["a” = “$b” ]

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

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

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

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


[ -e “/mnt/file” ] && echo yes || echo no          ##判定文件是否存在
[ -b “/dev/vda” ] && echo yes || echo no           ##判定目标是否为块设备
[ -f “/mnt/file” ] && echo yes || echo no          ##判定目标是否为文件
[ -d “/mnt/dir” ] && echo yes || echo no           ##判定目标是否为目录
[ -L “/mnt/file” ] && echo yes || echo no          ##判定连接
[ -c “/dev/pts/0” ] && echo yes || echo no         ##判定目标是否为字符设备
[ -S “/var/lib/mysql/mysql.sock” ] && echo yes || echo no  ##判定目标是否为套节字
[ “/mnt/file” -ef “/mnt/file1” ] && echo yes || echo no ##判定两个文件是否为相同的节点号
[ “/mnt/file” -nt “/mnt/file1” ] && echo yes || echo no ##判定file文件是否比file1文件新
[ “/mnt/file” -ot “/mnt/file1” ] && echo yes || echo no ##判定file文件是否比file1文件老

TEXT

1.编写脚本test.sh 识别用户是否存在

#!/bin/bash 
id $1 &> /dev/null && {
echo $1 is exist 
} || {
echo $1 is not exist
}
2. 编写脚本判断数字是否在0-9之间

#!/bin/bash
[ "$1" -ge "0" -a "$1" -le "9" ] && {
        echo $1 is in 0-9
}||{
        echo $1 is not in 0-9
}
3.编写脚本判断文件类型

#!/bin/bash
[ -z "$1" ] && {
echo "未指定检测文件,请输入文件名称"
exit
}
 
[ -e "$1" ] || {
echo "文件不存在"
exit
}
 
[ -d "$1" ]  && {
echo "此文件为目录"
exit
}
[ -S "$1" ]  && {
echo "此文件为套接字"
exit
}
 
[ -L "$1" ]  && {
echo "此文件为软连接"
exit
}
 
[ -f "$1" ]  && {
echo "此文件为普通文件"
exit
}
 
[ -b "$1" ]  && {
echo "此文件为块设备"
exit
}
 
[ -c "$1" ]  && {
echo "此文件为字符设备"
exit
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值