Linux shell文件属性的判断与比较_优品建站

Linux shell文件属性的判断与比较

  Shell支持大量对文件属性的判断,常用的文件属性操作符很多,如表2-2所示。更多文件属性操作符可以参考命令帮助手册(man test)。
表2-2 文件属性操作符

  首先,需要创建几个用于演示的文件和目录,注意创建文件时最好间隔一定的时间,让两个文件的最后修改时间有点间隔。

[root@centos7~]# touch ver1.txt
[root@centos7~]# touch ver2.txt
[root@centos7~]# mkdir test
[root@centos7~]# [ -e ver1.txt ] && echo对|| echo 错   #判断文件是否存在

[root@centos7~]# [ -e test ] && echo对|| echo 错       #判断目录是否存在

[root@centos7~]# [ ! -e ver1.txt ] && echo对|| echo 错 #判断文件是否不存在

[root@centos7~]# [ -f ver1.txt ] && echo对|| echo 错   #判断存在,且为文件

[root@centos7~]# [ ! -f ver1.txt ] && echo对|| echo 错 #判断该文件不存在

[root@centos7~]# [ -f test/ ] && echo对|| echo 错      #因为不是文件,结果错


[root@centos7~]# [ -d test/ ] && echo对|| echo 错      #判断存在,且为目录

[root@centos7~]# [ -d ver1.txt ] && echo对|| echo 错   #因为不是目录,结果错

下面这个测试,假设系统中有某个磁盘设备,使用-b测试该设备是否存在,且当该设备为块设备时返回值为真,否则返回值为假。

[root@centos7~]# [ -b /dev/sda ] && echo是|| echo 不是

[root@centos7~]# [ -b /etc/passwd ] && echo是|| echo 不是
不是
  Linux系统中的文件链接分为软链接和硬链接两种。软链接创建后,如果源文件被删除,则软链接将无法继续使用,可以跨分区和磁盘创建软链接。硬链接创建后,如果源文件被删除,则硬链接依然可以正常使用、正常读写数据,但硬链接不可以跨分区或磁盘创建。另外,硬链接与源文件使用的是相同的设备、相同的inode编号。使用ls -l[插图]命令查看硬链接文件的属性时,文件属性与普通文件是一样的,而软链接的文件属性则可以看到被l标记,表示该文件为软链接。

[root@centos7~]# ln -s /etc/hosts /root/soft              #创建软链接
[root@centos7~]# ln /etc/hosts /root/hard
#创建硬链接
[root@centos7~]# ls -l /root/soft
lrwxrwxrwx. 1 root root 10 9月 16 20:52 /root/soft -> /etc/hosts
[root@centos7~]# ls -l /root/hard
-rw-r--r--. 3 root root 158 9月 15 15:24 /root/hard
[root@centos7~]# [ -L /root/soft ] && echo是|| echo 不是 #判断是否为软链接

[root@centos7~]# [ ! -L /root/soft ] && echo是|| echo 不是 #判断不是软链接

[root@centos7~]# [ -L /root/hard ] && echo是|| echo 不是
不是
[root@centos7~]# [ /root/hard-ef /etc/hosts ] && echo Y || echo N
Y
  在测试权限时需要注意,超级管理员root在没有rw权限的情况下,也是可以读写文件的,rw权限对超级管理员是无效的。但是如果文件没有x权限,哪怕是root也不可以执行该文件。

[root@centos7~]# ls -l ver1.txt
-rw-r--r--. 1 root root 0 9月 13 17:42 ver1.txt
[root@centos7~]# [ -r ver1.txt ] && echo Y || echo N
Y
[root@centos7~]# chmod -r ver1.txt                        #删除r权限
[root@centos7~]# [ -r ver1.txt ] && echo Y || echo N      #测试结果依然为真
Y
[root@centos7~]# [ ! -r ver1.txt ] && echo Y || echo N   #测试不可读
N
[root@centos7~]# chmod -w ver1.txt                        #删除w权限
[root@centos7~]# ls -l ver1.txt
----------. 1 root root 0 9月 16 20:31 ver1.txt
[root@centos7~]# [ -w ver1.txt ] && echo Y || echo N      #测试结果依然为真
Y
[root@centos7~]# [ -x ver1.txt ] && echo Y || echo N      #测试结果为假
N
[root@centos7~]# chmod +x ver1.txt                        #添加x权限
[root@centos7~]# ls -l ver1.txt
---x--x--x. 1 root root 0 9月 16 20:31 ver1.txt
[root@centos7~]# [ -x ver1.txt ] && echo Y || echo N
Y
  默认touch命令创建的文件都是空文件,在使用-s测试文件是否为非空文件时,因为文件是空文件,所以测试结果为假。当文件中有内容时,测试文件是否为非空时,结果为真。

[root@centos7~]# [ -s ver1.txt ] && echo Y || echo N
N
[root@centos7~]# echo "hello" > ver1.txt
[root@centos7~]# [ -s ver1.txt ] && echo Y || echo N
Y
  前面在创建ver1.txt和ver2.txt文件时,故意让两个文件创建的时间有所不同,现在可以使用测试条件判断两个文件的创建时间,看看哪个文件是新文件,哪个文件是旧文件。new than表示更新,old than表示更旧。根据下面的输出结果可知,ver2.txt文件比ver1.txt文件更新。

[root@centos7~]# ls -l ver*.txt
-rw-r--r--. 1 root root 0 9月 13 17:42 ver1.txt
-rw-r--r--. 1 root root 0 9月 13 17:43 ver2.txt
[root@centos7~]# [ ver1.txt -nt ver2.txt ] && echo Y || echo N
N
[root@centos7~]# [ ver2.txt -nt ver1.txt ] && echo Y || echo N
Y
[root@centos7~]# [ ver1.txt -ot ver2.txt ] && echo Y || echo N
Y
[root@centos7~]# [ ver2.txt -ot ver1.txt ] && echo Y || echo N
N

  • Linux服务器的管理和维护建议
    下面这些服务器操作规范和建议初学者可能不容易看懂,但是这些经验之谈对服务器的管理和维护都非常重要。
  • 配置Linux网络时间服务器
    配置Linux异构网络下的NTP服务器,NTP服务的配置文件。
  • Linux远程登录取消telnet而采用SSH方式
    telnet是一种古老的远程登录认证服务,它在网络上用明文传送口令和数据,因此别有用心的人就会非常容易截获这些口令和数据。
  • 服务器运维必会知识:利用U盘安装Linux系统
    光盘介质没有U盘携带方便,有的服务器为节省成本甚至没有安装光驱,所以很多管理员习惯做一个U盘的安装盘,随身携带以备不时之需。如果使用U盘作为安装介质,那么U盘需要进行一定的配置,本文我们来学习一下如何使用U盘安装Linux。
  • Linux平台下安装与配置MySQL 8.0
    Linux操作系统有众多的发行版,不同的平台上需要安装不同的MySQL版本,MySQL主要支持的Linux版本有SUSE Linux Enterprise Server和Red Hat & Oracle Enterprise Linux。本节将介绍Linux平台下MySQL的安装过程。
  • Linux合理使用su、sudo命令
    su命令是一个切换用户的工具,经常用于将普通用户切换到超级用户下,当然也可以从超级用户切换到普通用户。
  • 学习Linux的建议及解决问题的方法
    本节旨在介绍对于初学者如何学习Linux的建议。如果你已经确定对Linux产生了兴趣,那么接下来我们介绍一下学习Linux的方法。
  • Linux脚本文件的各种执行方式
    编写好脚本文件后,接下来就是执行了。执行脚本文件的方式有很多种,有需要执行权限的方式、有不需要执行权限的方式、有开启子进程的方式、有不开启子进程的方式。
  • Linux账号管理及相关命令
    Linux账号管理是Linux系统管理员的一个重要工作,具体来说,涉及账号的添加、删除和修改等操作。从账号类型来说,Linux用户按照使用方式分为三种:一是根用户,二是系统用户,三是普通用户。
  • linux+php如何启动暂定redis?
    本文教大家如何进行Redis的启动和暂停,很简单但是也很实用。
  • 网站制作 服务

    免费网站制作报价,免费优化,1对1服务,个性化定制服务

    pc和wap网站制作

    多年建站经验,上千个成功案例,
    为您提供一站式服务

    网站维护改版

    大厂经验工程师对现有网站进行
    改版,修复,维护。

    小程序制作

    微信小程序,支付宝小程序,
    百度小程序

    响应式网页设计

    响应式网页设计可以与多种设备兼容,
    如智能手机,平板电脑和PC