Hi,
Below are the common command line options (-a to -z) found to be appropriate in all UNIX flavored systems.
- -a
- All (without argument). If there is a GNU-style --all option, for -a to be anything but a synonym for it would be quite surprising.
- -b
- Buffer or block size (with argument). Set a critical buffer
size, or (in a program having to do with archiving or managing storage
media) set a block size. Examples:
du(1),
df(1),
tar(1).
Batch. If the program is naturally interactive, -b may be used to suppress prompts or set other options appropriate to accepting input from a file rather than a human operator. Example: flex(1). - -c
- Command (with argument). If the program is an interpreter that
normally takes commands from standard input, it is expected that the
option of a -c argument will be passed to it as a
single line of input. This convention is particularly strong for
shells and shell-like interpreters. Examples:
sh(1),
ash(1),
bsh(1),
ksh(1),
python(1).
Compare -e below.
Check (without argument). Check the correctness of the file argument(s) to the command, but don't actually perform normal processing. Frequently used as a syntax-check option by programs that do interpretation of command files. Examples: getty(1), perl(1). - -d
- Debug (with or without argument). Set the level of debugging
messages. This one is very common.
Occasionally -d has the sense of ‘delete’ or ‘directory’. - -D
- Define (with argument). Set the value of some symbol in an interpreter, compiler, or (especially) macro-processor-like application. The model is the use of -D by the C compiler's macro preprocessor. This is a strong association for most Unix programmers; don't try to fight it.
- -e
- Execute (with argument). Programs that are wrappers, or that can
be used as wrappers, often allow -e to set the program they hand off
control to. Examples:
xterm(1),
perl(1).
Edit. A program that can open a resource in either a read-only or editable mode may allow -e to specify opening in the editable mode. Examples: crontab(1), and the get(1) utility of the SCCS version-control system.
Occasionally -e has the sense of ‘exclude’ or ‘expression’.
- -f
- File (with argument). Very often used with an argument to
specify an input (or, less frequently, output) file for programs that
need to randomly access their input or output (so that redirection via
< or > won't suffice). The classic example is
tar(1);
others abound. It is also used to indicate that arguments normally
taken from the command line should be taken from a file instead; see
awk(1)
and egrep(1)
for classic examples.
Compare -o below; often,
-f is the input-side analog of -o.
Force (typically without argument). Force some operation (such as a file lock or unlock) that is normally performed conditionally. This is less common.
Daemons often use -f in a way that combines these two meanings, to force processing of a configuration file from a nondefault location. Examples: ssh(1), httpd(1), and many other daemons. - -h
- Headers (typically without argument). Enable, suppress, or
modify headers on a tabular report generated by the program.
Examples:
pr(1),
ps(1).
Help. This is actually less common than one might expect offhand — for much of Unix's early history developers tended to think of on-line help as memory-footprint overhead they couldn't afford. - -i
- Initialize (usually without argument). Set some critical
resource or database associated with the program to an initial or
empty state. Example:
ci(1)
in RCS.
Interactive (usually without argument). Force a program that does not normally query for confirmation to do so. There are classical examples (rm(1), mv(1)) but this use is not common. - -I
- Include (with argument). Add a file or directory name to those searched for resources by the application. All Unix compilers with any equivalent of source-file inclusion in their languages use -I in this sense. It would be extremely surprising to see this option letter used in any other way.
- -k
- Keep (without argument). Suppress the normal deletion of
some file, message, or resource. Examples:
passwd(1),
bzip(1),
and
fetchmail(1).
Occasionally -k has the sense of ‘kill’. - -l
- List (without argument). If the program is an archiver or
interpreter/player for some kind of directory or archive format, it
would be quite surprising for -l to do anything but request an item
listing. Examples:
arc(1),
binhex(1),
unzip(1). (However,
tar(1)
and
cpio(1)
are exceptions.)
In programs that are already report generators, -l almost invariably means “long” and triggers some kind of long-format display revealing more detail than the default mode. Examples: ls(1), ps(1).
Load (with argument). If the program is a linker or a language interpreter, -l invariably loads a library, in some appropriate sense. Examples: gcc(1), f77(1), emacs(1).
Login. In programs such as rlogin(1) and ssh(1) that need to specify a network identity, -l is how you do it.
Occasionally -l has the sense of ‘length’ or ‘lock’. - -m
- Message (with argument). Used with an argument,
-m passes it
in as a message string for some logging or announcement purpose.
Examples:
ci(1),
cvs(1).
Occasionally -m has the sense of ‘mail’, ‘mode’, or ‘modification-time’. - -n
- Number (with argument). Used, for example, for page number
ranges in programs such as
head(1),
tail(1),
nroff(1),
and
troff(1). Some
networking tools that normally display DNS names accept
-n as an option that causes them to display the raw
IP addresses instead;
ifconfig(1)
and
tcpdump(1)
are the archetypal examples.
Not (without argument). Used to suppress normal actions in programs such as make(1). - -o
- Output (with argument). When a program needs to specify an output file or device by name on the command line, the -o option does it. Examples: as(1), cc(1), sort(1). On anything with a compiler-like interface, it would be extremely surprising to see this option used in any other way. Programs that support -o often (like gcc) have logic that allows it to be recognized after ordinary arguments as well as before.
- -p
- Port (with argument). Especially used for options that specify
TCP/IP port numbers.
Examples:
cvs(1),
the PostgreSQL tools, the
smbclient(1),
snmpd(1),
ssh(1).
Protocol (with argument). Examples: fetchmail(1), snmpnetstat(1). - -q
- Quiet (usually without argument). Suppress normal result or diagnostic output. This is very common. Examples: ci(1), co(1), make(1). See also the ‘silent’ sense of -s.
- -r (also -R)
- Recurse (without argument). If the program operates on a
directory, then this option might tell it to recurse on all
subdirectories. Any other use in a utility that operated on
directories would be quite surprising. The classic example is, of
course, cp(1).
Reverse (without argument). Examples: ls(1), sort(1). A filter might use this to reverse its normal translation action (compare -d). - -s
- Silent (without argument). Suppress normal diagnostic or result
output (similar to -q; when both are supported, q
means ‘quiet’ but -s means ‘utterly
silent’). Examples:
csplit(1),
ex(1),
fetchmail(1)
Subject (with argument). Always used with this meaning on commands that send or manipulate mail or news messages. It is extremely important to support this, as programs that send mail expect it. Examples: mail(1), elm(1), mutt(1).
Occasionally -s has the sense of ‘size’. - -t
- Tag (with argument). Name a location or give a string for a program to use as a retrieval key. Especially used with text editors and viewers. Examples: cvs(1), ex(1), less(1), vi(1).
- -u
- User (with argument). Specify a user, by name or numeric UID. Examples: crontab(1), emacs(1), fetchmail(1), fuser(1), ps(1).
- -v
- Verbose (with or without argument). Used to enable
transaction-monitoring, more voluminous listings, or debugging
output. Examples:
cat(1),
cp(1),
flex(1),
tar(1),
many others.
Version (without argument). Display program's version on standard output and exit. Examples: cvs(1), chattr(1), patch(1), uucp(1). More usually this action is invoked by -V. - -V
- Version (without argument). Display program's version on standard output and exit (often also prints compiled-in configuration details as well). Examples: gcc(1), flex(1), hostname(1), many others. It would be quite surprising for this switch to be used in any other way.
- -w
- Width (with argument). Especially used for specifying widths in
output formats. Examples:
faces(1),
grops(1),
od(1),
pr(1),
shar(1).
Warning (without argument). Enable warning diagnostics, or suppress them. Examples: fetchmail(1), flex(1), nsgmls(1). - -x
- Enable debugging (with or without argument). Like
-d. Examples:
sh(1),
uucp(1).
Extract (with argument). List files to be extracted from an archive or working set. Examples: tar(1), zip(1). - -y
- Yes (without argument). Authorize potentially destructive actions for which the program would normally require confirmation. Examples: fsck(1), rz(1).
- -z
- Enable compression (without argument). Archiving and backup programs often use this. Examples: bzip(1), GNU tar(1), zcat(1), zip(1), cvs(1).