Как называются элементы CLI в NodeJS и какие их комбинации возможны?
======================================================================

 Я специально сузил вопрос до CLI NodeJS-приложений, потому что если брать нативные терминалы, то ответом на этот вопрос будут тысячи страниц документации. В данном вопросе я также интересуюсь английскими официальными названиями, поскольку это важно для правильного именования переменных.  

  

**Что мне уже известно по этому поводу**  

  

![614e8f321a575806434468.png](https://habrastorage.org/webt/61/4e/8f/614e8f321a575806434468.png)  

  

1. По сути, это имя вызываемого консольного приложения (**applicationName**?)  

2. Я называю это командной фразой (**commandPhrase**), потому что она не обязательно должна состоять из одного слова (то есть называние "ключевое слово" не подходит.). Этот элемент опциональный, так как такие утилиты, как **gulp** **webpack**, без него обходятся (пример команды `webpack --mode production`)  

3. По сути это строчный параметр (**stringParameter**), где 3.1 - имя (**parameterName**) и 3.2 - значение (**parameterValue**). Есть ещё альтернативных синтаксис `parameterName=parameterValue`.  

4. Это булевский параметр (**booleanParameter**), наличие которого означает значение `true`. Если после `--foo` идёт `--bar`, а не значение, то значит `--foo` - булевский.   

  

Другие типы элементов CLI мне неизвестны. 

 command line interface уже давно выработал очень простой стандарт.  

  

Есть **команда** (внутренняя команда оболочки или внешняя утилита, вроде nodejs)  

Есть **аргументы** к команде  

Аргументы логически делятся на **опции** и **параметры**.  

  

Опции обычно начинаются с дефиса или двух (в POSIX стандарте один дефис для коротких опций, вроде -h, -e, два дефиса для длинных опций, вроде --help, --environment)  

Некоторые опции могут требовать параметр (--environment prod), некоторые нет.  

  

Параметры - это сами данные - названия файлов, устройств, другие данные в виде текста  

  

По стандарту POSIX короткие опции, которые не требуют дополнительного параметра, могут объединяться под одним дефисом ( пример: rm -rf )  

  

Список конкретных опций и параметров у каждой утилиты свой. Не все утилиты строго следуют POSIX, поэтому могут быть варианты. Для этого читай документацию конкретной утилиты.  

Таким образом твой вопрос относится не к nodejs, а к общим стандартам работы в командной строке.  

  

Ну и еще в CLI есть перенаправления, это отдельная лекция.