概述
当要检测系统上的某些文件或者相关属性时,利用test这个命令来工作:
测试的标志
代表意义
-e
该文件名是否存在
-f
该文件名是否存在且为文件
-d
该文件名是否存在且为目录
-b
该文件名是否存在且为一个block device设备
-c
该文件名是否存在且为一个character device设备
-S
该文件名是否存在且为一个Socket文件
-p
该文件名是否存在且为一个FIFO文件
-L
该文件名是否存在且为一个连接文件
关于文件的权限检测
-r
检测该文件名是否存在且具有“可读”权限
-w
检测该文件名是否存在且具有“可写”权限
-x
检测该文件名是否存在且具有“可执行”权限
-u
检测该文件名是否具有“SUID”的属性
-g
检测该文件名是否存在且具有“SGID”的属性
-k
检测该文件名是否存在且具有“Sticky bit”的属性
-s
检测该文件名是否存在且为“非空白文件”
两个文件之间的比较,如:test file1 –nt file2
-nt
判断file1是否比file2新
-ot
判断file1是否比file2旧
-ef
判断file1与file2是否为同一文件,可用在判断hard link的判定上。主要意义在于判断两个文件是否均指向同一个iNode
关于两个整数之间的判定,如:test n1 –eq n2
-eq
两数值相等
-ne
两数值不相等
-gt
n1大于n2
-lt
n1小于n2
-ge
n1大于等于n2
-le
n1小于等于n2
判定字符串的数据
test –z string
判定字符串是否为0,若string为空字符串,则true
test –n string
判定字符串是否非为0,若string为空字符串,则为false,注:-n也可以省略
test str1=str2
判定str1是否等于str2,若相等,则会回传true
test str1 != str2
判定str1是否不等于str2,若相等,则回传false
多重条件判定,例如:test –r filename –a –x filename
-a
两个条件同时成立!,例如test –r file –a –x,则file同时具有r与x权限时,才回传true
-o
任何一个条件成立,例如,test –r file –o –x file,则file具有r或x权限时,就可回传true
!
反向状态,如,test ! –x file,当file不具有x时,回传true 现在就利用test来做一个简单的例子
~# vim sh05.sh
#!/bin/bash
#Program
#User input a filename, program will check the flowing;
#1)exist? 2) file/directory? 3) file permissions
#History
#2015/2/3 tian First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e "Please input a filename I will check the filename's type and
permission.n "
read -p "Please input a filename: " filename
test -z $filename && echo "You Must input a filename." && exit 0
test ! -e $filename && echo "The filename '$filename' Do Not exist" && exit 0
test -f $filename && filetype="regular file"
test -d $filename && filetype="directory"
test -r $filename && perm="readable"
test -w $filename && perm="$perm writeable"
test -x $filename && perm="$perm excutable"
echo "The filename: $filename is a $filetype"
echo "And the permissions are : $perm"
~# source sh05.sh
Please input a filename I will check the filename's type andpermission.
Please input a filename: tianfile
The filename: tianfile is a regular file
And the permissions are : readable writeable
最后
以上就是专一荷花为你收集整理的linux命令test功能,linux利用test命令的测试功能的全部内容,希望文章能够帮你解决linux命令test功能,linux利用test命令的测试功能所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复