linux条件判断之判断文件是否存在

简介:
参数 说明
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真

实例演示:

cd /binif test -e ./bashthen
    echo '文件已存在!'else
    echo '文件不存在!'fi

输出结果:

文件已存在!

另外,Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o"最低。例如:

cd /binif test -e ./notFile -o -e ./bashthen
    echo '有一个文件存在!'else
    echo '两个文件都不存在'fi

输出结果:

有一个文件存在!



举几个例子:

a. 如果文件存在且为普通文件则为真

eg:

#判断/cisco是否存在且是否为文件,是的话就输出/cisco is a file

#不是的话,就输出/cisco是一个目录

vim 4.sh

if [ -f /cisco ]

then

        echo /cisco is a file

else

        echo /cisco is director

fi

实验下:

[root@wenwen ~]# touch /cisco

[root@wenwen ~]# ls

123   1.txt  3.sh  567.sql   sedWSS6gg              桌面

1.sh  2.sh   4.sh  prac3.py  求1,100之间的质数.sh

[root@wenwen ~]# ./4.sh 

/cisco is a file



b. 如果文件存在且为目录则为真:

#判断/cisco/31是否存在且为目录,存在且为目录的话,就输出"ok",不存在或者/cisco/31不是目录的话,输出1,另外创建该目录 /cisco/31/

vim 3.sh

if [ -d /cisco/31/ ]

then

        echo ok

else

        echo 1

        rm -rf /cisco/31

        mkdir -p /cisco/31

fi

实验过程,在/cisco下创建文件名为31的文件:

[root@wenwen ~]# cd /cisco

[root@wenwen cisco]# ls

[root@wenwen cisco]# touch 31

[root@wenwen cisco]# cd

[root@wenwen ~]# ./3.sh

1

本文转自飞奔的小GUI博客51CTO博客,原文链接http://blog.51cto.com/9237101/1918344如需转载请自行联系原作者

ziwenzhou
相关文章
|
1天前
|
固态存储 Ubuntu Linux
Linux(29) 多线程快速解压缩|删除|监视大型文件
Linux(29) 多线程快速解压缩|删除|监视大型文件
7 1
|
1天前
|
Ubuntu Linux 数据安全/隐私保护
Linux(24) 如何在Ubuntu中操作rootfs.img文件
Linux(24) 如何在Ubuntu中操作rootfs.img文件
2 0
|
6天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
12 0
|
7天前
|
Linux Shell 开发工具
Linux文件常用操作
Linux文件常用操作(几乎覆盖所有日常使用)
79 0
|
9天前
|
Linux 内存技术 Perl
【ZYNQ】制作从 QSPI Flash 启动 Linux 的启动文件
【ZYNQ】制作从 QSPI Flash 启动 Linux 的启动文件
|
14天前
|
Linux
linux 超过4个G的文件传不上去的解决办法
linux 超过4个G的文件传不上去的解决办法
9 0
|
14天前
|
Linux 索引
linux 文件查找 和文件管理常用命令
linux 文件查找 和文件管理常用命令
22 0
|
16天前
|
Linux 开发者
Linux文件编程(open read write close函数)
通过这些函数,开发者可以在Linux环境下进行文件的读取、写入和管理。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
84 4
|
17天前
|
监控 Linux
|
19天前
|
Ubuntu Linux 编译器
Linux通过/proc/version文件
`/proc/version`文件在Linux系统中提供当前内核版本详情,属于伪文件系统 `/proc`,展示内核、硬件和进程信息。通过`cat /proc/version`可查看,如`Linux version 5.4.0-80-generic...`,显示内核版本、编译日期等。但此文件不包含发行版信息,查询发行版详情可查看`/etc/os-release`或用`lsb_release`命令。
23 6