前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 命令(95)—— test 命令

Linux 命令(95)—— test 命令

作者头像
恋喵大鲤鱼
发布2019-11-14 16:13:21
8750
发布2019-11-14 16:13:21
举报
文章被收录于专栏:C/C++基础C/C++基础

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/K346K346/article/details/103047324

1.命令简介

test 命令用于文件类型检查和数值与字符串比较。本文介绍的是 GNU 版本的 test,其它版本(如 POSIX 版)的实现可能会有所不同。

2.命令格式

代码语言:javascript
复制
test EXPRESSION
test

省略表达式 EXPRESSION 默认为 false。[] 实际上是 Bash 中 test 命令的简写。即所有的 test EXPRESSION 等于 [ EXPRESSION ]。

3.选项说明

代码语言:javascript
复制
--help
	显示帮助信息并退出
--version
	显示版本信息并退出

# 1.逻辑运算
! EXPRESSION
	逻辑非,EXPRESSION 为 false 返回 true
EXPRESSION1 -a EXPRESSION2
	逻辑与,两个表达式均为 true 返回 true
EXPRESSION1 -o EXPRESSION2
	逻辑或,两个表达式只要有一个为 true 返回 true

# 2.数值间的比较
INTEGER1 -eq INTEGER2
	两整数是否相等
INTEGER1 -ne INTEGER2
	整数 INTEGER1 是否不等于 INTEGER2
INTEGER1 -gt INTEGER2
	整数 INTEGER1 是否大于 INTEGER2
INTEGER1 -ge INTEGER2
	整数 INTEGER1 是否大于等于 INTEGER2
INTEGER1 -lt INTEGER2
	整数 INTEGER1 是否小于 INTEGER2
INTEGER1 -le INTEGER2
	整数 INTEGER1 是否小于等于 INTEGER2

# 3.字符串的比较
-n STRING
	字符串不为空返回 true
-z STRING
	字符串为空返回 true
STRING1 = STRING2
	字符串相等返回 true
STRING1 != STRING2
	字符串不相等返回 true

# 4.文件的比较与类型判断
FILE1 -ef FILE2
	两个文件是否为同一个文件。主要看文件设备号与 inode 是否一致
FILE1 -nt FILE2
	文件 FILE1 是否比 FILE2 新(修改时间新)
FILE1 -ot FILE2
	文件 FILE1 是否比 FILE2 旧(修改时间旧)
-b FILE
	文件存在且是块(block)设备文件
-c FILE
	文件存在且是字符(character)设备文件
-d FILE
	文件存在且是目录(directory)
-e FILE
	文件存在(exist)返回 true
-f FILE
	文件存在且是普通文件
-g FILE
	文件存在且设置了 SGID
-G FILE
	文件存在且属于有效组ID
-h FILE
	文件存在且是软链接。同 -L
-k FILE
	文件存在且设置了粘着位(Sticky Bit)
-L FILE
	文件存在且是软链接。同 -h
-O FILE
	文件存在且属于有效用户ID
-p FILE
	文件存在且属于命名管道
-r FILE
	文件存在且可读
-s FILE
	文件存在且内容不为空
-S FILE
	文件存在且是一个套接字(socket)
-t FD
	文件描述符是在一个终端打开的
-u FILE
	文件存在且设置了 SUID 位
-w FILE
	文件存在且且可写
-x FILE
	文件存在且可执行

注意: (1)test 拥有选项 --help 与 --version,但无法使用。test 将这两个选项当做非空的普通字符串进行处理,并返回 true; (2)文件的比较与类型判断,除了 -h 与 -L,其它所有的选项都对软链接进行解引用。

4.常用示例

(1)判断数值是否相等。

代码语言:javascript
复制
test 0 -eq 0; echo $?
0

test 退出状态码等于 0 表示条件成立。

(2)判断文件是否存在。

代码语言:javascript
复制
test -e /etc/passwd; echo $?
0

test 退出状态码等于 0 表示文件存在。

(3)判断文件是否是同一个文件。

代码语言:javascript
复制
test /etc/passwd -ef /etc/shadow; echo $?
1

test 退出状态码等于 1 表示不是同一个文件。


参考文献

[1] test manual

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.命令简介
  • 2.命令格式
  • 3.选项说明
  • 4.常用示例
  • 参考文献
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档