/[public]/getopt/trunk/getopt.1
ViewVC logotype

Contents of /getopt/trunk/getopt.1

Parent Directory Parent Directory | Revision Log Revision Log


Revision 365 - (show annotations)
Thu Nov 20 20:15:01 2014 UTC (10 years ago) by frodo
File size: 14132 byte(s)
(Frodo) Sync man page with util-linux (git 20141120).
There are some slight differences, mostly because it is not a part of
util-linux by default.

1 .TH GETOPT "1" "June 2012" "Linux" "User Commands"
2 .SH NAME
3 getopt \- parse command options (enhanced)
4 .SH SYNOPSIS
5 .BI getopt
6 .I optstring parameters
7 .br
8 .B getopt
9 .RI [ options ]
10 .RB [ \-\- ]
11 .I optstring parameters
12 .br
13 .B getopt
14 .RI [ options ]
15 .BR \-o | \-\-options
16 .I optstring
17 .RI [ options ]
18 .RB [ \-\- ]
19 .I parameters
20 .SH DESCRIPTION
21 .B getopt
22 is used to break up
23 .RI ( parse )
24 options in command lines for easy parsing by shell procedures, and to
25 check for legal options. It uses the
26 .SM GNU
27 .BR getopt (3)
28 routines to do this.
29 .PP
30 The parameters
31 .B getopt
32 is called with can be divided into two parts: options which modify
33 the way
34 .B getopt
35 will do the parsing
36 .RI "(the " options
37 and the
38 .I optstring
39 in the
40 .BR SYNOPSIS ),
41 and the parameters which are to be parsed
42 .RI ( parameters
43 in the
44 .BR SYNOPSIS ).
45 The second part will start at the first non\-option parameter that is
46 not an option argument, or after the first occurrence of
47 .RB ' \-\- '.
48 If no
49 .RB ' \-o '
50 or
51 .RB ' \-\-options '
52 option is found in the first part, the first parameter of the second
53 part is used as the short options string.
54 .PP
55 If the environment variable
56 .B GETOPT_COMPATIBLE
57 is set, or if the first \fIparameter\fR is not an option (does not start
58 with a
59 .RB ' \- ',
60 the first format in the
61 .BR SYNOPSIS ),
62 .B getopt
63 will generate output that is compatible with that of other versions of
64 .BR getopt (1).
65 It will still do parameter shuffling and recognize optional arguments
66 (see section
67 .B COMPATIBILITY
68 for more information).
69 .PP
70 Traditional implementations of
71 .BR getopt (1)
72 are unable to cope with whitespace and other (shell\-specific)
73 special characters in arguments and non\-option parameters. To solve
74 this problem, this implementation can generate quoted output which
75 must once again be interpreted by the shell (usually by using the
76 .B eval
77 command). This has the effect of preserving those characters, but
78 you must call
79 .B getopt
80 in a way that is no longer compatible with other versions (the second
81 or third format in the
82 .BR SYNOPSIS ).
83 To determine whether this enhanced version of
84 .BR getopt (1)
85 is installed, a special test option
86 .RB ( \-T )
87 can be used.
88 .SH OPTIONS
89 .TP
90 .BR \-a , " \-\-alternative"
91 Allow long options to start with a single
92 .RB ' \- '.
93 .TP
94 .BR \-h , " \-\-help"
95 Display help text and exit. No other output is generated.
96 .TP
97 .BR \-l , " \-\-longoptions \fIlongopts\fP"
98 The long (multi\-character) options to be recognized. More than one
99 option name may be specified at once, by separating the names with
100 commas. This option may be given more than once, the
101 .I longopts
102 are cumulative. Each long option name in
103 .I longopts
104 may be followed by one colon to indicate it has a required argument,
105 and by two colons to indicate it has an optional argument.
106 .TP
107 .BR \-n , " \-\-name \fIprogname\fP"
108 The name that will be used by the
109 .BR getopt (3)
110 routines when it reports errors. Note that errors of
111 .BR getopt (1)
112 are still reported as coming from getopt.
113 .TP
114 .BR \-o , " \-\-options \fIshortopts\fP"
115 The short (one\-character) options to be recognized. If this option
116 is not found, the first parameter of
117 .B getopt
118 that does not start with a
119 .RB ' \- '
120 (and is not an option argument) is used as the short options string.
121 Each short option character in
122 .I shortopts
123 may be followed by one colon to indicate it has a required argument,
124 and by two colons to indicate it has an optional argument. The first
125 character of shortopts may be
126 .RB ' + '
127 or
128 .RB ' \- '
129 to influence the way options are parsed and output is generated (see
130 section
131 .B SCANNING MODES
132 for details).
133 .TP
134 .BR \-q , " \-\-quiet"
135 Disable error reporting by getopt(3).
136 .TP
137 .BR \-Q , " \-\-quiet\-output"
138 Do not generate normal output. Errors are still reported by
139 .BR getopt (3),
140 unless you also use
141 .BR \-q .
142 .TP
143 .BR \-s , " \-\-shell \fIshell\fP"
144 Set quoting conventions to those of \fIshell\fR.
145 If the \fB\-s\fR option is not given, the
146 .SM BASH
147 conventions are used. Valid arguments are currently
148 .RB ' sh '
149 .RB ' bash ',
150 .RB ' csh ',
151 and
152 .RB ' tcsh '.
153 .TP
154 .BR \-u , " \-\-unquoted"
155 Do not quote the output. Note that whitespace and special
156 (shell\-dependent) characters can cause havoc in this mode (like they
157 do with other
158 .BR getopt (1)
159 implementations).
160 .TP
161 .BR \-T , " \-\-test"
162 Test if your
163 .BR getopt (1)
164 is this enhanced version or an old version. This generates no
165 output, and sets the error status to 4. Other implementations of
166 .BR getopt (1),
167 and this version if the environment variable
168 .B GETOPT_COMPATIBLE
169 is set, will return
170 .RB ' \-\- '
171 and error status 0.
172 .TP
173 .BR \-V , " \-\-version"
174 Display version information and exit. No other output is generated.
175 .SH PARSING
176 This section specifies the format of the second part of the
177 parameters of
178 .B getopt
179 (the
180 .I parameters
181 in the
182 .BR SYNOPSIS ).
183 The next section
184 .RB ( OUTPUT )
185 describes the output that is generated. These parameters were
186 typically the parameters a shell function was called with. Care must
187 be taken that each parameter the shell function was called with
188 corresponds to exactly one parameter in the parameter list of
189 .B getopt
190 (see the
191 .BR EXAMPLES ).
192 All parsing is done by the GNU
193 .BR getopt (3)
194 routines.
195 .PP
196 The parameters are parsed from left to right. Each parameter is
197 classified as a short option, a long option, an argument to an
198 option, or a non\-option parameter.
199 .PP
200 A simple short option is a
201 .RB ' \- '
202 followed by a short option character. If the option has a required
203 argument, it may be written directly after the option character or as
204 the next parameter (i.e. separated by whitespace on the command
205 line). If the option has an optional argument, it must be written
206 directly after the option character if present.
207 .PP
208 It is possible to specify several short options after one
209 .RB ' \- ',
210 as long as all (except possibly the last) do not have required or
211 optional arguments.
212 .PP
213 A long option normally begins with
214 .RB ' \-\- '
215 followed by the long option name. If the option has a required
216 argument, it may be written directly after the long option name,
217 separated by
218 .RB ' = ',
219 or as the next argument (i.e. separated by whitespace on the command
220 line). If the option has an optional argument, it must be written
221 directly after the long option name, separated by
222 .RB ' = ',
223 if present (if you add the
224 .RB ' = '
225 but nothing behind it, it is interpreted as if no argument was
226 present; this is a slight bug, see the
227 .BR BUGS ).
228 Long options may be abbreviated, as long as the abbreviation is not
229 ambiguous.
230 .PP
231 Each parameter not starting with a
232 .RB ' \- ',
233 and not a required argument of a previous option, is a non\-option
234 parameter. Each parameter after a
235 .RB ' \-\- '
236 parameter is always interpreted as a non\-option parameter. If the
237 environment variable
238 .B POSIXLY_CORRECT
239 is set, or if the short option string started with a
240 .RB ' + ',
241 all remaining parameters are interpreted as non\-option parameters as
242 soon as the first non\-option parameter is found.
243 .SH OUTPUT
244 Output is generated for each element described in the previous
245 section. Output is done in the same order as the elements are
246 specified in the input, except for non\-option parameters. Output
247 can be done in
248 .I compatible
249 .RI ( unquoted )
250 mode, or in such way that whitespace and other special characters
251 within arguments and non\-option parameters are preserved (see
252 .BR QUOTING ).
253 When the output is processed in the shell script, it will seem to be
254 composed of distinct elements that can be processed one by one (by
255 using the shift command in most shell languages). This is imperfect
256 in unquoted mode, as elements can be split at unexpected places if
257 they contain whitespace or special characters.
258 .PP
259 If there are problems parsing the parameters, for example because a
260 required argument is not found or an option is not recognized, an
261 error will be reported on stderr, there will be no output for the
262 offending element, and a non\-zero error status is returned.
263 .PP
264 For a short option, a single
265 .RB ' \- '
266 and the option character are generated as one parameter. If the
267 option has an argument, the next parameter will be the argument. If
268 the option takes an optional argument, but none was found, the next
269 parameter will be generated but be empty in quoting mode, but no
270 second parameter will be generated in unquoted (compatible) mode.
271 Note that many other
272 .BR getopt (1)
273 implementations do not support optional arguments.
274 .PP
275 If several short options were specified after a single
276 .RB ' \- ',
277 each will be present in the output as a separate parameter.
278 .PP
279 For a long option,
280 .RB ' \-\- '
281 and the full option name are generated as one parameter. This is
282 done regardless whether the option was abbreviated or specified with
283 a single
284 .RB ' \- '
285 in the input. Arguments are handled as with short options.
286 .PP
287 Normally, no non\-option parameters output is generated until all
288 options and their arguments have been generated. Then
289 .RB ' \-\- '
290 is generated as a single parameter, and after it the non\-option
291 parameters in the order they were found, each as a separate
292 parameter. Only if the first character of the short options string
293 was a
294 .RB ' \- ',
295 non\-option parameter output is generated at the place they are found
296 in the input (this is not supported if the first format of the
297 .B SYNOPSIS
298 is used; in that case all preceding occurrences of
299 .RB ' \- '
300 and
301 .RB ' + '
302 are ignored).
303 .SH QUOTING
304 In compatible mode, whitespace or 'special' characters in arguments
305 or non\-option parameters are not handled correctly. As the output
306 is fed to the shell script, the script does not know how it is
307 supposed to break the output into separate parameters. To circumvent
308 this problem, this implementation offers quoting. The idea is that
309 output is generated with quotes around each parameter. When this
310 output is once again fed to the shell (usually by a shell
311 .B eval
312 command), it is split correctly into separate parameters.
313 .PP
314 Quoting is not enabled if the environment variable
315 .B GETOPT_COMPATIBLE
316 is set, if the first form of the
317 .B SYNOPSIS
318 is used, or if the option
319 .RB ' \-u '
320 is found.
321 .PP
322 Different shells use different quoting conventions. You can use the
323 .RB ' \-s '
324 option to select the shell you are using. The following shells are
325 currently supported:
326 .RB ' sh ',
327 .RB ' bash ',
328 .RB ' csh '
329 and
330 .RB ' tcsh '.
331 Actually, only two 'flavors' are distinguished: sh\-like quoting
332 conventions and csh\-like quoting conventions. Chances are that if
333 you use another shell script language, one of these flavors can still
334 be used.
335 .SH "SCANNING MODES"
336 The first character of the short options string may be a
337 .RB ' \- '
338 or a
339 .RB ' + '
340 to indicate a special scanning mode. If the first calling form in
341 the
342 .B SYNOPSIS
343 is used they are ignored; the environment variable
344 .B POSIXLY_CORRECT
345 is still examined, though.
346 .PP
347 If the first character is
348 .RB ' + ',
349 or if the environment variable
350 .B POSIXLY_CORRECT
351 is set, parsing stops as soon as the first non\-option parameter
352 (i.e. a parameter that does not start with a
353 .RB ' \- ')
354 is found that is not an option argument. The remaining parameters
355 are all interpreted as non\-option parameters.
356 .PP
357 If the first character is a
358 .RB ' \- ',
359 non\-option parameters are outputted at the place where they are
360 found; in normal operation, they are all collected at the end of
361 output after a
362 .RB ' \-\- '
363 parameter has been generated. Note that this
364 .RB ' \-\- '
365 parameter is still generated, but it will always be the last
366 parameter in this mode.
367 .SH COMPATIBILITY
368 This version of
369 .BR getopt (1)
370 is written to be as compatible as possible to other versions.
371 Usually you can just replace them with this version without any
372 modifications, and with some advantages.
373 .PP
374 If the first character of the first parameter of getopt is not a
375 .RB ' \- ',
376 .B getopt
377 goes into compatibility mode. It will interpret its first
378 parameter as the string of short options, and all other arguments
379 will be parsed. It will still do parameter shuffling (i.e. all
380 non\-option parameters are output at the end), unless the
381 environment variable
382 .B POSIXLY_CORRECT
383 is set.
384 .PP
385 The environment variable
386 .B GETOPT_COMPATIBLE
387 forces
388 .B getopt
389 into compatibility mode. Setting both this environment variable and
390 .B POSIXLY_CORRECT
391 offers 100% compatibility for 'difficult' programs. Usually, though,
392 neither is needed.
393 .PP
394 In compatibility mode, leading
395 .RB ' \- '
396 and
397 .RB ' + '
398 characters in the short options string are ignored.
399 .SH RETURN CODES
400 .B getopt
401 returns error code
402 .B 0
403 for successful parsing,
404 .B 1
405 if
406 .BR getopt (3)
407 returns errors,
408 .B 2
409 if it does not understand its own parameters,
410 .B 3
411 if an internal error occurs like out\-of\-memory, and
412 .B 4
413 if it is called with
414 .BR \-T .
415 .SH EXAMPLES
416 Example scripts for (ba)sh and (t)csh are provided with the
417 .BR getopt (1)
418 distribution, and are optionally installed in
419 .BR /usr/local/share/getopt/
420 or
421 .BR /usr/share/getopt/ .
422 .SH ENVIRONMENT
423 .IP POSIXLY_CORRECT
424 This environment variable is examined by the
425 .BR getopt (3)
426 routines. If it is set, parsing stops as soon as a parameter is
427 found that is not an option or an option argument. All remaining
428 parameters are also interpreted as non\-option parameters, regardless
429 whether they start with a
430 .RB ' \- '.
431 .IP GETOPT_COMPATIBLE
432 Forces
433 .B getopt
434 to use the first calling format as specified in the
435 .BR SYNOPSIS .
436 .SH BUGS
437 .BR getopt (3)
438 can parse long options with optional arguments that are given an
439 empty optional argument (but can not do this for short options).
440 This
441 .BR getopt (1)
442 treats optional arguments that are empty as if they were not present.
443 .PP
444 The syntax if you do not want any short option variables at all is
445 not very intuitive (you have to set them explicitly to the empty
446 string).
447 .SH AUTHOR
448 .MT frodo@frodo.looijaard.name
449 Frodo Looijaard
450 .ME
451 .SH "SEE ALSO"
452 .BR getopt (3),
453 .BR bash (1),
454 .BR tcsh (1).
455 .SH AVAILABILITY
456 You can download the latest getopt from
457 .UR http://frodo.looijaard.name/project/getopt
458 the author's home page
459 .UE .
460 It is also part of the util-linux package which is available from
461 .UR ftp://\:ftp.kernel.org\:/pub\:/linux\:/utils\:/util-linux/
462 Linux Kernel Archive
463 .UE .

frodo@frodo.looijaard.name
ViewVC Help
Powered by ViewVC 1.1.26