Linux中shell常用的基础命令

本文详细介绍了Linux中用于文件操作和比较的常见命令,包括`diff`进行文件差异对比,`patch`应用补丁,`cut`截取文件信息,`sort`进行排序,`uniq`统计重复行,`&&`和`||`进行条件操作,以及`test`进行条件判断。通过实例展示了如何使用这些命令,并提供了编写脚本检查文件存在的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

## 1.diff ##对比文件或目录的不同
用法:
diff [options] files|directorys

diff westos westos1


输出信息:
[num1,num2][a|c|d][num3,num4]
num1,num2    ##第一个文件中的行
a        ##添加
c        ##更改
d        ##删除
<        ##第一个文件中的内容
>        ##第二个文件中的内容
num3,num4    ##第二个文件中的行


常用参数:
-b    ##忽略空格
-B    ##忽略空行
-i    ##忽略大小写
-c    ##显示文件所有内容并标示不同
-r    ##对比目录
-u    ##合并输出


2.patch  补丁
dnf install patch -y 下载补丁服务
diff -u westos westos1 > westos.path  生成补丁
patch  原文件 布丁文件
patch westos westos.path
-b    ##备份原文件
patch -b westos westos.path

3.cut  截取文件信息

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


4.sort   对文件信息进行排序
-n    ##纯数字排序
-r    ##倒叙
-u    ##去掉重复
-o    ##输出到指定文件
-t    ##指定分隔符
-k    ##指定排序的列

5.uniq   统计重复信息
-c    #合并重复并统计重复个数
-d    #显示重复的行
-u    #显示唯一的行

测试:
(1.ifconfig 网卡 可以显示此网卡的信息
  显示信息中包含此网卡使用的ip地址
  请用命令过滤此ip并在输出时只显示ip其他信息不显示
ifconfig ens3 | head -n 2 | tail -n  1 | cut -d " " -f 10


(2.找出能登陆系统用户中UID最大的用户,并显示其名称
grep bash /etc/passwd | sort -rn -t : -k 3 | cut -d : -f 1 |head -n 1

6.&& ||
&&    符合条件作动作     命令成功执行&&之后的命令
||    不符合条件作动作    命令失败执行||之后的命令
例 ping -c1 -w1 172.25.254.125 &> /dev/null && echo up || down

检测125是否能ping通
vim test.sh
#!/bin/bash
ping -c1 -w1 172.25.254.125 &> /dev/null && {
        echo up
}||{
        echo down
}
sh test.sh
检测用户在系统中是否存在
vim test.sh
#!/bin/bash
id $1 &> /dev/null && {
        echo hello is exist
}||{
        echo hello is not exist
}

sh test.sh westos

7.tr
tr 'a-z' 'A-Z'        ##小写转大写
tr  'A-Z' 'a-z'        ##大写转小写
tr  'e' 'x'             ##转换单个字符

8.test    对比判定
test = []    ##[] 就相当于test命令
test "$a" = "$b" = [ "$a" = "$b" ]
在书写[]内容时 两边必须有空格,元素必须用引号引起来
test数字对比
=
!=
-eq        ##等于
-ne        ##不等于
-le        ##小于等于
-lt        ##小于
-ge        ##大于等于
-gt        ##大于


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

检测是否是10以内数字

vim check.sh
#!/bin/bash
[ "$1" -ge "0" -a "$1" -lt "10" ] && {
        echo $1 is in 0-9
}||{
        echo $1 is not 0-9
}

sh check.sh 11

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

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


学员检测
编写脚本完成以下条件
file_check.sh 在执行时
如果脚本后未指定检测文件报错“未指定检测文件,请指定”
如果脚本后指定文件不存在报错“此文件不存在”
当文件存在时请检测文件类型并显示到输出中

vim file_check.sh

#!/bin/bash
[ -z "$1" ] && {
        echo 未制定测试文件,请制定
} || {
        [ -e "$1" ] && {
        file $1

        } || {

        echo $1 不存在
        }
}


sh file_check.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值