test.1 - 9base - revived minimalist port of Plan 9 userland to Unix | |
git clone git://git.suckless.org/9base | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
test.1 (3534B) | |
--- | |
1 .TH TEST 1 | |
2 .SH NAME | |
3 test \- set status according to condition | |
4 .SH SYNOPSIS | |
5 .B test | |
6 .I expr | |
7 .SH DESCRIPTION | |
8 .I Test | |
9 evaluates the expression | |
10 .IR expr . | |
11 If the value is true the exit status is null; otherwise the | |
12 exit status is non-null. | |
13 If there are no arguments the exit status is non-null. | |
14 .PP | |
15 The following primitives are used to construct | |
16 .IR expr . | |
17 .TP "\w'\fIn1 \fL-eq \fIn2\fLXX'u" | |
18 .BI -r " file" | |
19 True if the file exists (is accessible) and is readable. | |
20 .PD0 | |
21 .TP | |
22 .BI -w " file" | |
23 True if the file exists and is writable. | |
24 .TP | |
25 .BI -x " file" | |
26 True if the file exists and has execute permission. | |
27 .TP | |
28 .BI -e " file | |
29 True if the file exists. | |
30 .TP | |
31 .BI -f " file" | |
32 True if the file exists and is a plain file. | |
33 .TP | |
34 .BI -d " file" | |
35 True if the file exists and is a directory. | |
36 .TP | |
37 .BI -s " file" | |
38 True if the file exists and has a size greater than zero. | |
39 .TP | |
40 .BI -t " fildes | |
41 True if the open file whose file descriptor number is | |
42 .I fildes | |
43 (1 by default) | |
44 is the same file as | |
45 .BR /dev/cons . | |
46 .TP | |
47 .BI -A " file" | |
48 True if the file exists and is append-only. | |
49 .TP | |
50 .BI -L " file" | |
51 True if the file exists and is exclusive-use. | |
52 .TP | |
53 .BI -T "file" | |
54 True if the file exists and is temporary. | |
55 .TP | |
56 .IB s1 " = " s2 | |
57 True | |
58 if the strings | |
59 .I s1 | |
60 and | |
61 .I s2 | |
62 are identical. | |
63 .TP | |
64 .IB s1 " != " s2 | |
65 True | |
66 if the strings | |
67 .I s1 | |
68 and | |
69 .I s2 | |
70 are not identical. | |
71 .TP | |
72 s1 | |
73 True if | |
74 .I s1 | |
75 is not the null string. | |
76 (Deprecated.) | |
77 .TP | |
78 .BI -n " s1" | |
79 True if the length of string | |
80 .I s1 | |
81 is non-zero. | |
82 .TP | |
83 .BI -z " s1" | |
84 True if the length of string | |
85 .I s1 | |
86 is zero. | |
87 .TP | |
88 .IB n1 " -eq " n2 | |
89 True if the integers | |
90 .I n1 | |
91 and | |
92 .I n2 | |
93 are arithmetically equal. | |
94 Any of the comparisons | |
95 .BR -ne , | |
96 .BR -gt , | |
97 .BR -ge , | |
98 .BR -lt , | |
99 or | |
100 .BR -le | |
101 may be used in place of | |
102 .BR -eq . | |
103 The (nonstandard) construct | |
104 .BI -l " string\f1, | |
105 meaning the length of | |
106 .IR string , | |
107 may be used in place of an integer. | |
108 .TP | |
109 .IB a " -nt " b | |
110 True if file | |
111 .I a | |
112 is newer than (modified after) file | |
113 .IR b . | |
114 .TP | |
115 .IB a " -ot " b | |
116 True if file | |
117 .I a | |
118 is older than (modified before) file | |
119 .IR b . | |
120 .TP | |
121 .IB f " -older " t | |
122 True if file | |
123 .I f | |
124 is older than (modified before) time | |
125 .IR t . | |
126 If | |
127 .I t | |
128 is a integer followed by the letters | |
129 .BR y (years), | |
130 .BR M (months), | |
131 .BR d (days), | |
132 .BR h (hours), | |
133 .BR m (minutes), | |
134 or | |
135 .BR s (seconds), | |
136 it represents current time minus the specified time. | |
137 If there is no letter, it represents seconds since | |
138 epoch. | |
139 You can also concatenate mixed units. For example, | |
140 .B 3d12h | |
141 means three days and twelve hours ago. | |
142 .PD | |
143 .PP | |
144 These primaries may be combined with the | |
145 following operators: | |
146 .TP "\w'\fL( \fIexpr\fL )XX'u" | |
147 .B ! | |
148 unary negation operator | |
149 .PD0 | |
150 .TP | |
151 .B -o | |
152 binary | |
153 .I or | |
154 operator | |
155 .TP | |
156 .B -a | |
157 binary | |
158 .I and | |
159 operator; higher precedence than | |
160 .BR -o | |
161 .TP | |
162 .BI "( " expr " )" | |
163 parentheses for grouping. | |
164 .PD | |
165 .PP | |
166 The primitives | |
167 .BR -b , | |
168 .BR -u , | |
169 .BR -g , | |
170 and | |
171 .BR -s | |
172 return false; they are recognized for compatibility with POSIX. | |
173 .PP | |
174 Notice that all the operators and flags are separate | |
175 arguments to | |
176 .IR test . | |
177 Notice also that parentheses and equal signs are meaningful | |
178 to | |
179 .I rc | |
180 and must be enclosed in quotes. | |
181 .SH EXAMPLES | |
182 .I Test | |
183 is a dubious way to check for specific character strings: | |
184 it uses a process to do what an | |
185 .IR rc (1) | |
186 match or switch statement can do. | |
187 The first example is not only inefficient but wrong, because | |
188 .I test | |
189 understands the purported string | |
190 .B \&"-c" | |
191 as an option. | |
192 .IP | |
193 .EX | |
194 if (test $1 '=' "-c") echo OK # wrong! | |
195 .EE | |
196 .LP | |
197 A better way is | |
198 .IP | |
199 .EX | |
200 if (~ $1 -c) echo OK | |
201 .EE | |
202 .PP | |
203 Test whether | |
204 .L abc | |
205 is in the current directory. | |
206 .IP | |
207 .B test -f abc -o -d abc | |
208 .SH SOURCE | |
209 .B \*9/src/cmd/test.c | |
210 .SH "SEE ALSO" | |
211 .IR rc (1) |