.Dd 2015-10-08 .Dt TEST 1 .Os sbase .Sh NAME .Nm test .Nd evaluate expression .Sh SYNOPSIS .Nm .Ar expression .Sh DESCRIPTION .Nm returns the status of the .Ar expression . .Sh OPTIONS .Bl -tag -width Ds .It ! Ar expression invert .Ar expression . .It ( Fl e | Fl s ) Ar file .Ar file exists and has (any size .Op Fl e | non-zero size .Op Fl s ) . .It ( Fl f | Fl d | Fl p | Fl hL | Fl S | Fl b | Fl c ) Ar file .Ar file exists and is a (regular file .Op Fl f | directory .Op Fl d | named pipe .Op Fl p | symbolic link .Op Fl h | Fl L | socket .Op Fl S | block special .Op Fl b | character special .Op Fl c ) . .It ( Fl k | Fl g | Fl u | Fl r | Fl w | Fl x ) Ar file .Ar file exists and has .Xr ( sticky 1 .Op Fl k | .Xr setgid 2 .Op Fl g | .Xr setuid 4 .Op Fl u | .Xr read 4 .Op Fl r | .Xr write 2 .Op Fl w | .Xr execute 1 .Op Fl x ) permissions. .It Fl t Ar fd .Ar fd as a file descriptor is associated with a terminal. .It Ar string True if .Ar string is not the null string. .It ( Fl z | Fl n ) Ar string True if .Ar string has (zero .Op Fl z | non-zero .Op Fl n ) length. .It Ar s1 Sy ( = | != ) Ar s2 True if strings .Ar s1 and .Ar s2 are (identical .Oo Sy = Oc | different .Oo Sy != Oc ) . .It Ar n1 ( Fl eq | Fl ne | Fl gt | Fl ge | Fl le | Fl lt ) Ar n2 True if integers .Ar n1 and .Ar n2 are (= .Op Fl eq | != .Op Fl ne | > .Op Fl gt | >= .Op Fl ge | <= .Op Fl le | < .Op Fl lt ) . .It Ar f1 ( Fl ef | Fl ot | Fl nt ) Ar f2 True if file .Ar f1 (refer to the same inode as .Op Fl ef | has an older mtime than .Op Fl ot | has a newer mtime than .Op Fl nt ) file .Ar f2 . .El .Sh EXIT STATUS .Bl -tag -width Ds .It 0 .Ar expression is true. .It 1 .Ar expression is false. .It > 1 An error occurred. .El .Sh SEE ALSO .Xr expr 1 .Sh STANDARDS The .Nm utility is compliant with the .St -p1003.1-2013 specification.