📄 terminology.xhtml
字号:
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><!--file : Documentation/CommandLine/Terminology.xhtmlauthor : Boris Kolpackov <boris@kolpackov.net>copyright : Copyright (c) 2002-2003 Boris Kolpackovlicense : http://kolpackov.net/license.html--><head> <title>Command Line Processing Model and Terminology</title> <meta name="author" content="Boris Kolpackov"/> <meta name="copyright" content="© 2002-2003 Boris Kolpackov"/> <meta name="keywords" content="command,line,terminology,model,argv,argc,argument,command,option,operand"/> <meta name="description" content="Command Line Processing Model and Terminology"/> <link rel="stylesheet" type="text/css" href="../Style/Default.css"/> <style type="text/css"> table.center { border-collapse : collapse; } table.center * td { text-align : center; vertical-align : middle; } </style></head><body><h1>Introduction</h1><p>Command line is probably the most universal way of passing information fromcaller to the program. Concept of a command line is part of most operatingsystems and programming languages including C and C++. However model andterminology for command line processing vary greatly among differentsystems.</p><p><a href="http://unix.org/online.html">Single UNIX Specification</a> contains<a href="http://opengroup.org/onlinepubs/007904975/basedefs/xbd_chap12.html">Utility Argument Syntax Conventions and Guidelines</a> which document basicterminology for command line processing. Single UNIX Specification model isa "common denominator" for different UNIX implementations. It is somewhatminimal and targets system utilities rather than a wide spectrum ofapplications. Another de-facto command line processing model is<a href="http://gnu.org/prep/standards_18.html"> GNU Standard for CommandLine Interfaces</a> which generally encourages conformance to the Single UNIXSpecification but adds few extensions and uses different terminology.</p><p>The idea behind this document is to establish terminology and complete modelfor command line processing. Terms translation between this document, SingleUNIX Specification and GNU Standard for Command Line Interfaces is providedin Appendix A.</p><h1>Model and Terminology</h1><p><em>Command line</em> is an array of character strings and not justa string with spaces between words as some people tend to think.</p><p>Each string in a command line array is referred to as <em>argument</em>. First argument usually contains a string that refers to an executable.</p><p>Interpretation of arguments is completely up to a program logic howeverconventions exist that vary among different systems. Usually groups ofarguments are translated into a higher-level objects such as commands,options, and operands. These objects form a model for command line processing.All of them are defined below.</p><p><em>Command</em> is usually a word, or a single letter that representsa command to the program logic. Neither Single UNIX Specification nor GNUStandard for Command Line Interfaces has the notion of a command. Other termsfor command include <em>action</em> and <em>function</em>. Command is usually(but not necessarily) the first argument after executable name. Here are fewexamples:</p><p><code>tar x</code></p><p class="indent">Here we have a one letter command <code>'x'</code> (extract). In GNU tarmanual it is called <em>functional letter</em>.</p><p><code>tar xvf</code></p><p class="indent">Here we have three commands encoded as a single letter each. Actuallysemantically only <code>'x'</code> is a command while <code>'v'</code>(verbose) and <code>'f'</code> (read from a file) are options.</p><p><code>openssl req</code></p><p class="indent">Here we have a word command <code>'req'</code> (operations with certificaterequests).</p><p><code>cvs checkout foo</code></p><p class="indent">Here we have a word command <code>'checkout'</code> and command operand<code>foo</code>.</p><p><code>tar --help</code></p><p class="indent">Even though <code>'--help'</code> is usually considered to be an optionsemantically it is a command.</p><p><em>Option</em> consists of <em>option name</em> and optionallyone or more <em>option values</em>. Options are usually optional.Non-optional options are usually better represented by commands or operands.</p><p>Option name usually takes up one argument. Option names usually start witha prefix (e.g. <code>'--compile-only'</code>, <code>'-c'</code> or <code>'/c'</code>). This helps distinguish them from commands and operands. Option namemay have aliases (e.g. for option name <code>'--output-dir'</code> there couldbe an <code>'-o'</code> alias).</p><p>Option without a value is alway optional and represents an option with impliedbinary value (e.g. {0, 1} or {false, true} etc.). Such option is sometimescalled <em>flag</em>.</p><p>Option can be associated with a program or a command. Thus the concept ofoption can be further refined to <em>program option</em> and <em>command option</em>. Program option alters behavior of the program as awhole while command option is only affecting particular command.</p><p>Following are some examples:</p><p><code>g++ -o hello.o hello.cpp</code></p><p class="indent">Here we have an option with name <code>'-o'</code> which has a value<code>'hello.o'</code>. <code>'hello.cpp'</code> is an operand.</p><p><code>ls -l</code></p><p class="indent">Here we have a flag with name <code>'-l'</code>.</p><p><code>foo --bar=a,b,c</code><br/><code>foo -b "a,b,c"</code><br/><code>foo /baz a b c</code></p><p class="indent">Here we have a more elaborate example of a multi-format option. It hasa name <code>'--bar'</code> and two aliases: <code>'-b'</code> and<code>'/baz'</code>. It also has three values (in our case they are<code>'a'</code>, <code>'b'</code>, and <code>'c'</code>).</p><p><code>cvs -z 6 checkout -P foo</code></p><p class="indent">Here we have a program option with name <code>'-z'</code> and value<code>'6'</code> (set compression level to be 6). <code>'checkout'</code>is a command. <code>-P</code> is a command flag (prune empty directories).<code>'foo'</code> is a command operand.</p><p><em>operand</em> usually represents an input value or a parameter.Operands can be mandatory or optional. Interpretation of operands is usuallyapplication-specific.</p><p>Same as with option the concept of operand can be further refined to<em>program operand</em> and <em>command operand</em>.</p><h1>Appendix A: Terms Translation</h1><table summary="Terms Translation" border="1" cellspacing="0" cellpadding="4" class="center"> <col width="34%" /> <col width="33%" /> <col width="33%" /> <tr> <th>Term</th> <th>Single UNIX Specification</th> <th>GNU</th> </tr> <tr> <td>command line</td> <td>command line</td> <td>command line</td> </tr> <tr> <td>argument</td> <td>argument</td> <td>argument</td> </tr> <tr> <td>command</td> <td>--</td> <td>--</td> </tr> <tr> <td>option</td> <td>--</td> <td>option</td> </tr> <tr> <td>option name</td> <td>option</td> <td>name</td> </tr> <tr> <td>option value</td> <td>option-argument</td> <td>--</td> </tr> <tr> <td>program option</td> <td>--</td> <td>--</td> </tr> <tr> <td>command option</td> <td>--</td> <td>--</td> </tr> <tr> <td>operand</td> <td>operand</td> <td>argument</td> </tr> <tr> <td>program operand</td> <td>--</td> <td>--</td> </tr> <tr> <td>command operand</td> <td>--</td> <td>--</td> </tr></table></body></html><!-- Terminology.xhtml,v 1.1 2005/05/24 04:33:12 turkaye Exp -->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -