|
|
1.1 ! root 1: .TH TEST 1 ! 2: .CT 1 shell ! 3: .SH NAME ! 4: test, [, newer \- condition commands ! 5: .SH SYNOPSIS ! 6: .B test ! 7: .I expr ! 8: .PP ! 9: \fB[\fR ! 10: .I expr ! 11: \fB]\fR ! 12: .PP ! 13: .B newer ! 14: .I file1 file2 ! 15: .SH DESCRIPTION ! 16: .I Test ! 17: evaluates the expression ! 18: .IR expr . ! 19: If the value is true the exit status is 0; otherwise the ! 20: exit status is nonzero. ! 21: If there are no arguments the exit status is nonzero. ! 22: .PP ! 23: The following primitives are used to construct ! 24: .IR expr . ! 25: .TP \w'\fL-t\fI\ fildes\ 'u ! 26: .BI -r " file" ! 27: True if the file exists (is accessible) and is readable. ! 28: .PD0 ! 29: .TP ! 30: .BI -w " file" ! 31: True if the file exists and is writable. ! 32: .TP ! 33: .BI -x " file" ! 34: True if the file exists and has execute permission. ! 35: .TP ! 36: .BI -e " file ! 37: True if the file exists. ! 38: .TP ! 39: .BI -f " file" ! 40: True if the file exists and is a plain file. ! 41: .TP ! 42: .BI -d " file" ! 43: True if the file exists exists and is a directory. ! 44: .TP ! 45: .BI -c " file" ! 46: True if the file exists and is a character special file. ! 47: .TP ! 48: .BI -b " file" ! 49: True if the file exists and is a block special file. ! 50: .TP ! 51: .BI -L " file" ! 52: True if the file is a symbolic link. ! 53: .TP ! 54: .BI -u " file" ! 55: True if the file exists and has set userid permission. ! 56: .TP ! 57: .BI -g " file" ! 58: True if the file exists and has set groupid permission. ! 59: .TP ! 60: .BI -s " file" ! 61: True if the file exists and has a size greater than zero. ! 62: .TP ! 63: .BI -t " fildes ! 64: True if the open file whose file descriptor number is ! 65: .I fildes ! 66: (1 by default) ! 67: is associated with a terminal device. ! 68: .TP ! 69: .B -S ! 70: True if the effective userid is zero. ! 71: .TP ! 72: .IB s1 " = " s2 ! 73: True ! 74: if the strings ! 75: .I s1 ! 76: and ! 77: .I s2 ! 78: are identical. ! 79: .TP ! 80: .IB s1 " != " s2 ! 81: True ! 82: if the strings ! 83: .I s1 ! 84: and ! 85: .I s2 ! 86: are not identical. ! 87: .TP ! 88: s1 ! 89: True if ! 90: .I s1 ! 91: is not the null string. ! 92: (Deprecated.) ! 93: .TP ! 94: .BI -z " s1" ! 95: True if the length of string ! 96: .I s1 ! 97: is zero. ! 98: .TP ! 99: .IB n1 " -eq " n2 ! 100: True if the integers ! 101: .I n1 ! 102: and ! 103: .I n2 ! 104: are arithmetically equal. ! 105: Any of the comparisons ! 106: .BR -ne , ! 107: .BR -gt , ! 108: .BR -ge , ! 109: .BR -lt , ! 110: or ! 111: .BR -le ! 112: may be used in place of ! 113: .BR -eq . ! 114: The (nonstandard) construct ! 115: .BI -l " string, ! 116: meaning the length of ! 117: .I string, ! 118: may be used in place of an integer. ! 119: .PD ! 120: .PP ! 121: These primaries may be combined with the ! 122: following operators: ! 123: .TP ! 124: .B ! ! 125: unary negation operator ! 126: .PD0 ! 127: .TP ! 128: .B -o ! 129: binary ! 130: .I or ! 131: operator ! 132: .TP ! 133: .B -a ! 134: binary ! 135: .I and ! 136: operator; higher precedence than ! 137: .BR -o ! 138: .TP ! 139: .BI "( " expr " )" ! 140: parentheses for grouping. ! 141: .PD ! 142: .PP ! 143: Notice that all the operators and flags are separate ! 144: arguments to ! 145: .IR test . ! 146: Notice also that parentheses are meaningful ! 147: to the Shell and must be escaped. ! 148: .PP ! 149: .B [ ! 150: is a synonym for ! 151: .I test, ! 152: except that ! 153: .B [ ! 154: requires a closing ! 155: .BR ] . ! 156: .PP ! 157: .I Newer ! 158: returns a zero exit code if ! 159: .I file1 ! 160: exists and ! 161: .I file2 ! 162: does not, or if ! 163: .I file1 ! 164: and ! 165: .I file2 ! 166: both exist and ! 167: .I file1 ! 168: was modified at least as recently ! 169: as ! 170: .IR file2 . ! 171: It returns a non-zero return code otherwise. ! 172: .SH EXAMPLES ! 173: .I Test ! 174: is a dubious way to check for specific character strings: ! 175: it uses a process to do what a shell case statement can do. ! 176: The first example is not only inefficient but wrong, because ! 177: .I test ! 178: understands the purported string ! 179: .B \&"-c" ! 180: as an option. ! 181: Furthermore ! 182: .B $1 ! 183: might be empty. ! 184: .IP ! 185: .EX ! 186: if test $1 = "-c" # wrong! ! 187: then echo OK ! 188: fi ! 189: .EE ! 190: .LP ! 191: A correct way is ! 192: .IP ! 193: .EX ! 194: case "$1" in ! 195: -c) echo OK ! 196: esac ! 197: .EE ! 198: .PP ! 199: Test whether ! 200: .L abc ! 201: is in the current directory. ! 202: .IP ! 203: .B test -e abc -o -L abc ! 204: .SH "SEE ALSO" ! 205: .IR sh (1), ! 206: .IR find (1)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.