page_title: Command-line interface
section_title: Built-in usage help
hierarchical_section_title: Command-line interface / Anatomy of a shell CLI / Built-in usage help
caption_attribution_description: English: The end of the HELP command output from RT-11SJ running on a PDP-11/34 displayed on a VT100.
context_page_description: A command-line interface processes commands to a computer program in the form of lines of text. The program which handles the interface is called a command-line interpreter or command-line processor. Operating systems implement a command-line interface in a shell for interactive access to operating system functions or services. Such access was primarily provided to users by computer terminals starting in the mid-1960s, and continued to be used throughout the 1970s and 1980s on VAX/VMS, Unix systems and personal computer systems including DOS, CP/M and Apple DOS.
  Today, many users rely upon graphical user interfaces and menu-driven interactions. However some programming and maintenance tasks may not have a graphical user interface and may still use a command line.
  Alternatives to the command line interface include text-based user interface menus, keyboard shortcuts, and various desktop metaphors centered on the pointer. Examples of this include the Microsoft Windows, DOS Shell, and Mouse Systems PowerPanel.
context_section_description: One of the criticisms of a CLI is the lack of cues to the user as to the available actions.  In contrast, GUIs usually inform the user of available actions with menus, icons, or other visual cues. To overcome this limitation, many CLI programs display a brief summary of its valid parameters, typically when invoked with no arguments or one of ?, -?, -h, -H, /?, /h, /H, /Help, -help, or --help.  
  However, entering a program name without parameters in the hope that it will display usage help can be hazardous, as programs and scripts for which command line arguments are optional will execute without further notice.
  Although desirable at least for the help parameter, programs may not support all option lead-in characters exemplified above.
  Under DOS, where the default command-line option character can be changed from / to -, programs may query the SwitChar API in order to determine the current setting. So, if a program is not hardwired to support them all, a user may need to know the current setting even to be able to reliably request help.
  If the SwitChar has been changed to - and therefore the / character is accepted as alternative path delimiter also at the DOS command line, programs may misinterpret options like /h or /H as paths rather than help parameters. However, if given as first or only parameter, most DOS programs will, by convention, accept it as request for help regardless of the current SwitChar setting.
  In some cases, different levels of help can be selected for a program. Some programs supporting this allow to give a verbosity level as an optional argument to the help parameter (as in /H:1, /H:2, etc.) or they give just a short help on help parameters with question mark and a longer help screen for the other help options.
  Depending on the program, additional or more specific help on accepted parameters is sometimes available by either providing the parameter in question as an argument to the help parameter or vice versa (as in /H:W or in /W:? (assuming /W would be another parameter supported by the program)).
  In a similar fashion to the help parameter, but much less common, some programs provide additional information about themselves (like mode, status, version, author, license or contact information) when invoked with an "about" parameter like -!, /!, -about, or --about.
  Since the ? and ! characters typically also serve other purposes at the command line, they may not be available in all scenarios, therefore, they should not be the only options to access the corresponding help information.
  If more detailed help is necessary than provided by a program's built-in internal help, many systems support a dedicated external "help command" command (or similar), which accepts a command name as calling parameter and will invoke an external help system.
  In the DR-DOS family, typing /? or /H at the COMMAND.COM prompt instead of a command itself will display a dynamically generated list of available internal commands; 4DOS and NDOS support the same feature by typing ? at the prompt (which is also accepted by newer versions of DR-DOS COMMAND.COM); internal commands can be individually disabled or reenabled via SETDOS /I. In addition to this, some newer versions of DR-DOS COMMAND.COM also accept a ?% command to display a list of available built-in pseudo-environment variables. Besides their purpose as quick help reference this can be used in batchjobs to query the facilities of the underlying command-line processor.
caption: The end of the HELP command output from RT-11SJ displayed on a VT100
exif: {"GPS GPSImgDirection": "50", "GPS GPSImgDirectionRef": "M", "GPS GPSLatitudeRef": "N", "GPS GPSLatitude": "[40, 43, 154573/5000]", "GPS GPSLongitudeRef": "W", "GPS GPSLongitude": "[73, 59, 138533/2500]", "GPS GPSAltitudeRef": "0", "GPS GPSAltitude": "0", "GPS GPSTimeStamp": "[0, 1, 2]", "GPS GPSProcessingMethod": "ASCII", "GPS GPSDate": "2014:05:16", "Image GPSInfo": "462", "Image Model": "Nexus 5", "Image ExifOffset": "134", "Image YCbCrPositioning": "Centered", "Image YResolution": "72", "Image ResolutionUnit": "Pixels/Inch", "Image XResolution": "72", "Image Make": "LGE", "Thumbnail YResolution": "72", "Thumbnail ResolutionUnit": "Pixels/Inch", "Thumbnail XResolution": "72", "Thumbnail Compression": "JPEG (old-style)", "Thumbnail JPEGInterchangeFormat": "807", "Thumbnail JPEGInterchangeFormatLength": "13700", "EXIF ApertureValue": "63/25", "Interoperability InteroperabilityIndex": "R98", "Interoperability InteroperabilityVersion": "[48, 49, 48, 48]", "EXIF InteroperabilityOffset": "432", "EXIF DateTimeDigitized": "2014:05:15 20:01:12", "EXIF ShutterSpeedValue": "4907/1000", "EXIF ColorSpace": "sRGB", "EXIF DateTimeOriginal": "2014:05:15 20:01:12", "EXIF FlashPixVersion": "0100", "EXIF ExposureBiasValue": "0", "EXIF ExifImageLength": "2448", "EXIF ExifVersion": "0220", "EXIF ExifImageWidth": "3264", "EXIF FocalLength": "397/100", "EXIF Flash": "Flash did not fire", "EXIF ExposureTime": "1/30", "EXIF ISOSpeedRatings": "299", "EXIF ComponentsConfiguration": "YCbCr", "EXIF FNumber": "12/5"}