Linux test 详细使用介绍

test 测试语法

在bash的各种流程控制中通常要进行各种测试,然后根据测试结果执行的不同的操作,有时候也会通过与IF等条件语句相结合

语法说明

格式1: test 测试表达式

格式2: [ 测试表达式 ]

格式3: [[ 测试表达式 ]]

推荐使用格式2

说明:

格式1和格式2是等价的

格式3为扩展的test命令

提示:

在[[]]中可以使用通配符进行模式匹配。&&、||、>、<等操作符可以应用在[[]]中,但是不能应用在[]括号中

1. 关于某个文件名的『类型』侦测(存在与否),如 test -e filename

-e 该『文件名』是否存在?(常用)

-f 该『文件名』是否为文件(file)?(常用)

-d 该『文件名』是否为目录(directory)?(常用)

-b 该『文件名』是否为一个 block device 装置?

-c 该『文件名』是否为一个 character device 装置?

-S 该『文件名』是否为一个 Socket 文件?

-p 该『文件名』是否为一个 FIFO (pipe) 文件?

-L 该『文件名』是否为一个连结档?

2. 关于文件的权限侦测,如 test -r filename

-r 侦测该文件名是否具有『可读』的属性?

-w 侦测该文件名是否具有『可写』的属性?

-x 侦测该文件名是否具有『可执行』的属性?

-u 侦测该文件名是否具有『SUID』的属性?

-g 侦测该文件名是否具有『SGID』的属性?

-k 侦测该文件名是否具有『Sticky bit』的属性?

-s 侦测该文件名是否为『非空白文件』?

3. 两个文件之间的比较,如: test file1 -nt file2

-nt (newer than)判断 file1 是否比 file2 新

-ot (older than)判断 file1 是否比 file2 旧

-ef 判断 file2 与 file2 是否为同一文件,可用在判断 hard link 的判定上。 主要意义在判定,两个文件是否均指向同一个 inode 哩!

4. 关于两个整数之间的判定,例如 test n1 -eq n2

-eq 两数值相等 (equal)

-ne 两数值不等 (not equal)

-gt n1 大于 n2 (greater than)

-lt n1 小于 n2 (less than)

-ge n1 大于等于 n2 (greater than or equal)

-le n1 小于等于 n2 (less than or equal)

注意:上面的比较符合都只能在格式1或者格式2中使用,如果在格式3[[]]或者在(())中的方法如下

=======================================================================

在[]中使用的比较符合      在(())或者[[]]中使用的比较符合

-eq ==

-ne !=

-gt >

-lt <

-ge >=

-le <=

如果在(())或者[[]]中使用的==、!=、等,如果想要在[]中使用,需要加转义,

如[ "$a" \= "%b" ]但偶尔转义可以也能不正常.最好还是按照规定的使用

===========================================================================

5. 判定字符串的数据

test -z string 判定字符串是否为 0 ?若 string 为空字符串,则为 true

test -n string 判定字符串是否非为 0 ?若 string 为空字符串,则为 false。

test str1 = str2 判定 str1 是否等于 str2 ,若相等,则回传 true (可以用“==”代替“=”)

test str1 != str2 判定 str1 是否不等于 str2 ,若相等,则回传 false(可以用“!==”代替“!=”)

特别注意:

字符串或者字符串变量判断或者比较的时候,每个字符串最好用“”引起了,如果是变量,也最好要用“”引起了。

字符串或者字符串变量比较,比较符合两端最好有空格。如:在=或者!=两边需要有空格

6. 逻辑操作符,例如: test -r filename -a -x filename

-a (and)两状况同时成立!

例如 test -r file -a -x file,则 file 同时具有 r 与 x 权限时,才回传 true。

-o (or)两状况任何一个成立!

例如 test -r file -o -x file,则 file 具有 r 或 x 权限时,就可回传 true。

! 反相状态!

如 test ! -x file ,当 file 不具有 x 时,回传 true

=======================================================

在[]和[[]]中逻辑操作符的使用区别

在[]中使用的逻辑操作符      在[[]]中更实用的逻辑操作符

-a &&

-o ||

!  !

=======================================================

时间: 2024-10-07 21:44:25

Linux test 详细使用介绍的相关文章

linux 防火墙详细介绍

1.其实匹配扩展中,还有需要加-m引用模块的显示扩展,默认是隐含扩展,不要使用 -m状态检测的包过滤-m state       --state {NEW,ESTATBLISHED,INVALID,RELATED}  指定检测那种状态-m multiport 指定多端口号      --sport      --dport      --ports-m iprange 指定IP段      --src-range ip-ip      --dst-range ip-ip-m connlimit

Linux及文件系统基本介绍

Linux及文件系统基本介绍 1   互联网行业现状 在服务器端市场: 超级计算机 2014年11月的数据显示前500系统中的485个系统都在运行着 Linux 的发布系统,而仅仅只有一台运行着 Windows 系统 截止到目前,运行 Linux 系统的处理器有 22,851,693 个之多,而 windows 系统仅仅只有 30,720 云计算 2014年 Linux 基金会撰写了一个报告,研究发现 75% 的大公司在使用 Linux 系统作为他们的主要平台,相对的使用 Windows 系统的

linux程序分析工具介绍(一)—-”/proc”

写在最前面:在开始本文之前,笔者认为先有必要介绍一下linux下的man,如果读者手头用linux系统,直接在终端输入man man便可以看到详细的说明,我在这里简单的总结一下,man命令是用来查看linux下各种命令.工具等的用户手册(manual)的.一种比较常用的用法是"man n field",这里的n是要查找的手册了类型,field是关键字.在这里介绍一下n: 0 /usr/include下的头文件 1 可执行程序和shell命令 2 系统调用 3 系统库函数 4 /dev下

2)Linux程序设计入门--进程介绍

2)Linux程序设计入门--进程介绍 Linux下进程的创建 前言: 这篇文章是用来介绍在Linux下和进程相关的各个概念.我们将会学到: 进程的概念 进程的身份 进程的创建 守护进程的创建 1.进程的概念 Linux操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命 令.那么操作系统是怎么实现多用户的环境呢? 在现代的操作系统里面,都有程序和进程 的概念.那么什么是程序,什么是进程呢? 通俗的讲程序是一个包含可以执行代码的文件 ,是一个静态的文件.而进程是一个开始执行但是还

linux常用命令的介绍

本文主要介绍Linux常用命令工具,比如用户创建,删除,文件管理,常见的网络命令等 如何创建账号: 1. 创建用户 useradd -m username -m 表示会在/home 路径下添加创建用户的文件夹,username 为你的用户名,可天换成你喜欢的用户名 2. 创建密码 passwd username 之后会出现一个交互狂,让你输入密码和确认密码 3. 删除帐号 userdel -r username -r 代表着会删除/home 目录下该帐号的文件夹,如果要保留文件夹,则不需要加上-

linux系统原始版本介绍

*/--> pre.src {background-color: Black; color: White;} linux系统原始版本介绍 linux正式对外公布是在1991年 0.11 正是向外公布的内核版本 0.95加入虚拟文件系统思想 0.96加入网络支持和虚拟文件系统VFS 0.97 加入对新的SCSI驱动程序的支持 0.98 改善了对TCP/IP网络的支持 0.99重新设计对内存使用情况的使用分配,每个进程有4GB线性空间

Linux 下 Redis使用介绍

出自http://blog.csdn.net/ajun_studio/article/details/6698147 和http://www.oschina.net/question/12_18065?sort=time Redis 是一个高性能的key-value数据库. redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用.它提供了Python,Ruby,Erlang,PHP,Java客户端,使用很方便. Redis

doT.js详细使用介绍

官网: http://olado.github.iodoT.js详细使用介绍 使用方法: {{= }} for interpolation {{ }} for evaluation {{~ }} for array iteration {{? }} for conditionals {{! }} for interpolation with encoding {{# }} for compile-time evaluation/includes and partials {{## #}} for

Linux curl使用简单介绍

http://www.linuxidc.com/Linux/2008-01/10891.htm -------------------------------------------------- Linux curl使用简单介绍 [日期:2008-01-29]     来源:Linux公社  作者:notech Curl是Linux下一个很强大的http命令行工具,其功能十分强大. 1) 二话不说,先从这里开始吧!$ curl http://www.linuxidc.com回车之后,www.l