2 :ID: 46115263-ed3d-4acc-9ec5-523d7acf87b8
4 #+TITLE: Commandline interface arguments processing
5 #+AUTHOR: Svjatoslav Agejenko
8 - [[id:bb4f96cd-458c-495b-a605-313b2e3e28d2][Back to CLI Helper - library main page]]
11 ** Command and argument
13 Every command-line application has a way of receiving input from
14 users, usually in the form of command-line arguments. A command-line
15 argument is a piece of information provided to the command-line
16 application when it's invoked. These arguments are provided as an
17 array of strings. The first element of the array (argument 0) is
18 typically the name of the command itself.
20 In the example below, 'my-video-coder' is our command, and the rest
24 my-video-coder encode --input vid1.mp4 vid2.mp4 vid3.mp4 --quality 5
27 To better understand how these concepts work together, let's break
28 down our example command:
30 | argument # | value(s) | type |
31 |------------+----------------------------+-------------------------------|
32 | 0 | my-video-coder | command |
33 | 1 | encode | [[id:94242e8a-c59b-42fd-8cc7-ba3df1938119][subcommand]] |
34 | 2 | --input | [[id:ffedf388-4d23-41eb-98d0-83fd3940b24d][option1]] |
35 | 3, 4, 5 | vid1.mp4 vid2.mp4 vid3.mp4 | [[id:8a39d20c-421f-4bc7-94e4-8e561e58bea0][parameters for --input option]] |
36 | 6 | --quality | [[id:ffedf388-4d23-41eb-98d0-83fd3940b24d][option2]] |
37 | 7 | 5 | [[id:8a39d20c-421f-4bc7-94e4-8e561e58bea0][parameter for --quaily option]] |
41 :ID: 94242e8a-c59b-42fd-8cc7-ba3df1938119
44 Subcommands are arguments that invoke more specific action that a
45 command can perform. They are often used with commands that have
46 multiple functions. In our example, *encode* is a subcommand of
51 :ID: ffedf388-4d23-41eb-98d0-83fd3940b24d
54 Options are arguments that change the behavior of a command or
55 subcommand. They usually start with a dash (-) or double dash
56 (--). For instance, *--input* and *--quality* are options in our
61 :ID: 8a39d20c-421f-4bc7-94e4-8e561e58bea0
64 Parameter provides additional information to a command, subcommand or
67 For instance, in our example:
68 - 'vid1.mp4 vid2.mp4 vid3.mp4' are parameters for the *--input* option.
69 - '5' is a parameter for the *--quality* option.