bash知识点:文件测试

本文介绍了Bash脚本中的文件测试操作,包括如何检查文件的存在性、类型及权限等。通过具体示例展示了如何利用这些测试来实现条件判断,如创建目录、下载文件和复制不同类型文件等。

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

bash知识点:文件测试(测试文件是否存在,文件是某种类型)

单目测试-e file:测试文件是是否存在

-a file:测试文件是是否存在

-f file:测试是否为普通文件,是为真,否则为假

-d file:测试是否为目录文件,是为真,否则为假

-b file:测试是否存在,并且是否是块设备文件

-c file:测试是否存在,并且是否是字符设备文件

-h file:测试是否存在,并且是否是符号链接文件

-p file:测试是否存在,并且是否是管道文件

-r file:测试是否存在,并且当前用户是否有读取权限

-w file:测试是否存在,并且当前用户是否有写权限

-x file:测试是否存在,并且当前用户是否有执行权限

双目测试:

file1 -nt file2:测试file1是否比file2新一些。




例1:如果/tmp/hellodir不存在则创建。

#!/bin/bash

fileName=/tmp/hellodir

if [ -e $fileName ];then

mkdir $fileName

fi


例2:下载一个文件,如果which wget不存在,则退出5,如果不可执行which wget,则退出6


#!/bin/bash

url ='http://s2.51cto.com/wyfs02/M01/48/35/wKiom1QGaT2yybbeAAGp1WmlJ7k673.jpg'

which wget &> /dev/null || exit 5

downloader=`which wget`

[ -x $downloader ] || exit 6

$downloader $url


例3:写一个脚本,完成如下任务

1、分别复制/var/log下的文件到/tmp/logs/中

2、复制目录是,才使用cp -r

3、复制文件时,使用 cp

4、复制链接文件,使用cp -d

5、其他类型,使用cp -a

#!/bin/bash


targetDir='/tmp/logs'


[ -d $targetDir ] || mkdir $targetDir


for fileName in /var/log/*; do

   if [ -d $fileName ];then

copyCommand='cp -r'

   elif [ -f $fileName ];then

copyCommand='cp'

   elif [ -h $fileName ];then

copyCommand='cp -d'

    else 

copyCommand='cp -a'

    fi

$copyCommand $fileName $targetDir

done













本文转自lzf0530377451CTO博客,原文链接:http://blog.51cto.com/8757576/1555522 ,如需转载请自行联系原作者



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值