Linux下的Shell编程(欧拉篇三)test方括号命令的使用方法之比较两个文件的节点是否相同或者新旧

本文详细介绍了如何在LinuxShell中使用test方括号命令进行文件节点判定(是否相同、最新、最旧),通过实例展示了[FILE1-efFILE2],[FILE1-ntFILE2],[FILE1-otFILE2]表达式的用法及其在文件比较中的应用。
摘要由CSDN通过智能技术生成

Linux下的Shell编程(欧拉篇三)test方括号命令的使用方法之比较两个文件的节点是否相同或者新旧

  • 摘要:文件节点判定、文件最新判定、文件最旧判定。

比较两个文件的节点或者新旧

一、相同节点文件判定表达式:[ FILE1 -ef FILE2 ]

  • 表达式说明:FILE1 和 FILE2 具有相同的设备和索引节点号,表达式返回值 true
实例:判断链接文件是否指向同一个节点
#!/bin/bash

if [ "$1" -ef "$2" ]
then
    echo "文件 $1 和 文件 $2 指向同一个节点。"
else
    echo "文件 $1 与 文件 $2 没有指向同一个节点。"
fi
  • 准备测试文件
[root@localhost ~]$ls | grep vartest03.sh
vartest03.sh
  • 建立一个硬链接
[root@localhost ~]$ln vartest03.sh abc.sh
  • 查看确认两个文件
[root@localhost ~/test]$ls -l | grep -E "abc.sh|vartest03.sh"
-rwsr-sr-x. 2 root root  232  38 23:59 abc.sh
-rwsr-sr-x. 2 root root  232  38 23:59 vartest03.sh
  • 运行脚本,查看运行结果。
[root@localhost ~/test]$./vartest21.sh abc.sh vartest03.sh
文件 abc.sh 和 文件 vartest03.sh 指向同一个节点。
[root@localhost ~/test]$
[root@localhost ~/test]$./vartest21.sh abc.sh vartest04.sh
文件 abc.sh 与 文件 vartest04.sh 没有指向同一个节点。
[root@localhost ~/test]$

二、最新文件判定表达式:[ FILE1 -nt FILE2 ]

  • 表达式说明:FILE1 比 FILE2 更新(修改日期),表达式返回值true
实例:判定文件1比文件2新
[root@localhost ~]$cat vartest05.sh
#!/bin/bash

if [ "$1" -nt "$2" ]
then
    echo "文件 $1 比 文件 $2 新。"
elif [ "$2" -nt "$1" ]
then
    echo "文件 $2 比 文件 $1 新。"
else
    echo "文件 $1 与 文件 $2 无法进行比较。"
fi
  • 查看两个将要测试的文件状态:
[root@localhost ~]$ls -l  | grep -E "vartest03.sh|vattest03-1.sh"
-rwxr-xr-x. 2 root root  232  38 23:59 vartest03.sh
-rwxr-xr-x. 1 root root  232  329 20:12 vattest03-1.sh
  • 运行脚本,查看运行结果:
[root@localhost ~]$./vartest05.sh vartest03.sh vattest03-1.sh
文件 vattest03-1.sh 比 文件 vartest03.sh 新。
[root@localhost ~]$

三、旧文件判定表达式:[ FILE1 -ot FILE2 ]

  • 表达式说明:FILE1 比 FILE2 旧(修改日期),表达式返回值 true
实例:判定文件1比文件2旧。
// 这个参数与 -nt 正好相反
[root@localhost ~]$cat vartest07.sh
#!/bin/bash

if [ "$1" -ot "$2" ]
then
    echo "文件 $1 比 文件 $2 旧。"
elif [ "$2" -ot "$1" ]
then
    echo "文件 $2 比 文件 $1 旧。"
else
    echo "文件 $1 与 文件 $2 无法进行比较。"
fi
  • 查看两个将要测试的文件状态:
[root@localhost ~]$ls -l  | grep -E "vartest03.sh|vattest03-1.sh"
-rwxr-xr-x. 2 root root  232  38 23:59 vartest03.sh
-rwxr-xr-x. 1 root root  232  329 20:12 vattest03-1.sh
  • 运行脚本,显示运行结果:
[root@localhost ~]$./vartest07.sh vartest03.sh vattest03-1.sh
文件 vartest03.sh 比 文件 vattest03-1.sh 旧。
[root@localhost ~]$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m976382

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值