test (检查文件类型)

rose1 发表于 2020-07-27 17:41
浏览次数:
在手机上阅读

在类似Unix的操作系统上,test命令检查文件类型并比较值。 本文档介绍了GNU / Linux版本的测试。

查看英文版

目录

1 test 运行系统环境

2 test 说明

3 test 语法

4 test 例子

test 运行系统环境

Linux

test 说明

测试用作有条件执行Shell命令的一部分。

测试以EXPRESSION确定的状态退出。将EXPRESSION放在方括号([和])之间与使用test测试EXPRESSION相同。要在命令提示符下查看退出状态,请回显值“ $? ”。值0表示表达式的值为true,值为1表示表达式的值为false。

test is used as part of the conditional execution of shell commands.

test exits with the status determined by EXPRESSION. Placing the EXPRESSION between square brackets ([ and ]) is the same as testing the EXPRESSION with test. To see the exit status at the command prompt, echo the value "$?" A value of 0 means the expression evaluated as true, and a value of 1 means the expression evaluated as false.

查看英文版

查看中文版

test 语法

test EXPRESSION
[ EXPRESSION ]

表达方式

表达式采用以下形式:

( EXPRESSION ) 表达是真的
! EXPRESSION 表达式为假
EXPRESSION1 -a EXPRESSION2 这两个表达式和表达式2为真
EXPRESSION1 -o EXPRESSION2 无论是表达式或表达式2为真
-n STRING STRING的长度不为零
STRING 等效于-n STRING
-z STRING STRING的长度为零
STRING1 = STRING2 字符串相等
STRING1 != STRING2 字符串不相等
INTEGER1 -eq INTEGER2 INTEGER1等于INTEGER2
INTEGER1 -ge INTEGER2 INTEGER1大于或等于INTEGER2
INTEGER1 -gt INTEGER2 INTEGER1大于INTEGER2
INTEGER1 -le INTEGER2 INTEGER1小于或等于INTEGER2
INTEGER1 -lt INTEGER2 INTEGER1小于INTEGER2
INTEGER1 -ne INTEGER2 INTEGER1不等于INTEGER2
FILE1 -ef FILE2 FILE1和FILE2具有相同的设备和inode编号
FILE1 -nt FILE2 FILE1比FILE2更新(修改日期)
FILE1 -ot FILE2 FILE1早于FILE2
-b FILE FILE存在且块特殊
-c FILE FILE存在且字符特殊
-d FILE FILE存在并且是目录
-e FILE FILE存在
-f FILE FILE存在并且是常规文件
-g FILE FILE存在且为set-group-ID
-G FILE FILE存在并且由有效组ID拥有
-h FILE FILE存在并且是符号链接(与-L相同)
-k FILE FILE存在并且已设置其粘性位
-L FILE FILE存在并且是符号链接(与-h相同)
-O FILE FILE存在并且由有效用户ID拥有
-p FILE FILE存在并且是一个命名管道
-r FILE FILE存在并且授予读取权限
-s FILE FILE存在且大小大于零
-S FILE FILE存在并且是一个套接字
-t FD 在终端上打开文件描述符FD
-u FILE FILE存在,并且其设置用户ID位置1
-w FILE FILE存在并且授予写权限
-x FILE FILE存在并授予执行(或搜索)权限

除了-h和-L以外,所有与FILE相关的测试都取消引用符号链接。请注意,对于shell,括号需要转义(例如,用反斜杠)。INTEGER也可以是-l STRING,其值为STRING的长度。

注意:您的外壳可能具有自己的test版本,通常会取代此处描述的版本。请参阅您的Shell文档以获取有关其支持的选项的详细信息。

test EXPRESSION
[ EXPRESSION ]

Expressions

Expressions take the following forms:

( EXPRESSION ) EXPRESSION is true
! EXPRESSION EXPRESSION is false
EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true
EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true
-n STRING the length of STRING is nonzero
STRING equivalent to -n STRING
-z STRING the length of STRING is zero
STRING1 = STRING2 the strings are equal
STRING1 != STRING2 the strings are not equal
INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2
INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2
INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2
INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2
INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2
INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2
FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers
FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2
FILE1 -ot FILE2 FILE1 is older than FILE2
-b FILE FILE exists and is block special
-c FILE FILE exists and is character special
-d FILE FILE exists and is a directory
-e FILE FILE exists
-f FILE FILE exists and is a regular file
-g FILE FILE exists and is set-group-ID
-G FILE FILE exists and is owned by the effective group ID
-h FILE FILE exists and is a symbolic link (same as -L)
-k FILE FILE exists and has its sticky bit set
-L FILE FILE exists and is a symbolic link (same as -h)
-O FILE FILE exists and is owned by the effective user ID
-p FILE FILE exists and is a named pipe
-r FILE FILE exists and read permission is granted
-s FILE FILE exists and has a size greater than zero
-S FILE FILE exists and is a socket
-t FD file descriptor FD is opened on a terminal
-u FILE FILE exists and its set-user-ID bit is set
-w FILE FILE exists and write permission is granted
-x FILE FILE exists and execute (or search) permission is granted

Except for -h and -L, all FILE-related tests dereference symbolic links. Beware that parentheses need to be escaped (e.g., by backslashes) for shells. INTEGER may also be -l STRING, which evaluates to the length of STRING.

NOTE: your shell may have its own version of test, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.

查看英文版

查看中文版

test 例子

test 100 -gt 99 && echo "Yes, that's true." || echo "No, that's false."

因为100大于99,所以此命令将打印文本“ 是的,是的” 。

test 100 -lt 99 && echo "Yes." || echo "No."

该命令将打印文本“ No. ”,因为100不少于99。

[ "awesome" = "awesome" ]; echo $?

该命令将打印“ 0 ”,因为该表达式为真;这两个字符串是相同的。

[ 5 -eq 6 ]; echo $?

该命令将打印“ 1 ”,因为表达式为假;否则为0。5不等于6。

test 100 -gt 99 && echo "Yes, that's true." || echo "No, that's false."

This command will print the text "Yes, that's true." because 100 is greater than 99.

test 100 -lt 99 && echo "Yes." || echo "No."

This command will print the text "No." because 100 is not less than 99.

[ "awesome" = "awesome" ]; echo $?

This command will print "0" because the expression is true; the two strings are identical.

[ 5 -eq 6 ]; echo $?

This command will print "1" because the expression is false; 5 does not equal 6.

查看英文版

查看中文版

其他命令行

tabs | tac | talk | tail | tcopy | tty | tar | tbl | tcpdump | time | tee | timex | telinit | telnet | top | touch | tput | tr | troff | traceroute |

如此好文,分享给朋友