### [ На русском ] ↔ [ English ]

## КОМАНДЫ, ВЛИЯЮЩИЕ НА ИНТЕРФЕЙС ESPSHELL

Существуют случаи, когда ESPShell управляется другим программным обеспечением — то есть команды вводит и ответы читает не человек. Если это интерфейс Человек↔Машина, мы обычно ожидаем, что Машина будет отображать наш ввод. Именно поэтому мы видим, что печатаем в терминальной программе, и можем редактировать командную строку. А вот в интерфейсе Машина↔Машина нежелателен любой эхо-вывод, так как он будет мешать выводу ESPShell — машине придётся фильтровать собственный ввод.

ESPShell решает эту задачу так же, как это делают модемы. Модем — это пример как интерфейса Человек↔Машина (например, ввод AT-команд в терминале), так и Машина↔Машина (например, драйвер Windows общается с модемом напрямую). В модемах можно включить или отключить эхо-ввод с помощью AT-команд ("ATE1" и "ATE0""). В ESPShell те же функции выполняются командами "echo on" и "echo off".

Весь вывод ESPShell начинается с символа "%", поэтому его легко фильтровать и обрабатывать при необходимости.

В таблице ниже перечислены команды, влияющие на интерфейс ESPShell и полезные при автоматизированном доступе к оболочке. Эти команды **не отображаются** в списке доступных команд (выводимом через "?" или "help"), поскольку они используются редко и были скрыты.

Параметр | Описание
--- | ---
history [on|off] | Включает или отключает историю команд. По умолчанию история включена и доступна через стрелки ↑ и ↓ (в Arduino Serial Monitor это не работает). ESPShell сохраняет до 20 последних команд в буфере истории. Размер буфера можно изменить, отредактировав файл espshell.h (см. раздел "Compile-time settings" в начале файла). Команда "history" без аргументов показывает текущий статус:
      esp32#>history
      % History is enabled
      esp32#>
Значение по умолчанию — "enabled" (включено). При отключении истории также очищается память, использованная под сохранённые команды.
colors [on|off|auto] | Включает или отключает поддержку ANSI-цветов в терминале. Если вы используете терминальные программы вроде PuTTY или TeraTerm — лучше установить значение "on". В простых терминалах, таких как Arduino Serial Monitor, нужно ставить "off", иначе экран будет заполнен непонятными символами: 1;36]m ]]J 7]m и т.п. Значение по умолчанию — "auto". В этом режиме ESPShell пытается определить тип терминала и включить/отключить цвета автоматически. Определение происходит по характеру входящих данных: любые нажатия клавиш с низкими кодами (которые никогда не посылаются Arduino Serial Monitor) включают цветной режим. Если ваш терминал не поддерживает цвета, а ESPShell считает, что поддерживает — вручную отключите цвет с помощью "colors off". Выполнение команды без аргументов показывает текущий режим:
        esp32#>colors
        % Color is "auto"
        esp32#>
echo [on|off|silent] echo [-n] TEXT | Управляет отображением вывода оболочки и эхо-ввода пользователя. По умолчанию всё, что вводит пользователь, отображается обратно ESPShell. Это поведение можно изменить командой "echo". Вызов команды без аргументов покажет текущий режим:
      esp32#>echo
      % Echo is "on"
      esp32#>
echo off: Отключает отображение приглашения и вводимых символов. Ввод продолжает обрабатываться, но не отображается. Команда влияет только на отображение ввода; вывод команд и сообщений (например, ошибок) не подавляется. Это эквивалент команды модема "ATE0". Даже при отключённом эхо всё равно можно пользоваться редактированием строк и прокруткой истории — просто вы этого не увидите. echo on: Включает отображение ввода пользователя. Это поведение по умолчанию, эквивалент "ATE1". echo silent: Полностью отключает любой вывод ESPShell в терминал. Сообщения об ошибках не отображаются. Ввод пользователя не отображается. Команды исполняются, но ничего не выводится. Этот режим используется, когда ESPShell не должен мешать выводу скетча. Скетч полностью управляет последовательным портом, а ESPShell "молчит". echo [-n] TEXT : Отображает произвольный текст (одно или несколько слов, escape-символы не поддерживаются)
      esp32#>echo Hello, World!
отобразит строчку "Hello, World". Можно использовать дополнительный ключ "-n" к этой команде, который выключает автоматическое добавление символов перевода строки к тексту, оставляя курсор на той же строке. Так же поддерживаются тэги оформления, которые используются в самой оболочке для раскрашивания текста в разные цвета: <i>, </>, <u> и так далее. Пример: напечатать Hello, World в красном и желтом цвете
      esp32#>echo <g>Hello, <w>World</>!
      Hello, World!
      esp32#>
Основное назначение этой команды - быть использованной внутри алиасов , например, чтобы сообщать о ходе выполнения той или иной задачи: примеры использования
tty NUMBER | Изменяет источник ввода ESPShell на другой UART. По умолчанию вход осуществляется через UART0 (или USB-CDC), но его можно изменить командой "tty". Это полезно в автоматизации, когда нужно передать управление оболочкой другому пользователю (например, подключённому к UART1). Командой можно "отдать" управление, но не "забрать" обратно — чтобы вернуть контроль, пользователь на UART1 должен выполнить "tty 0".
      esp32#>tty 1
      % See you there
UART, на который осуществляется переключение, должен быть инициализирован — иначе команда завершится ошибкой.
      esp32#>tty 1
      % UART1 is down. Use command "up" to initialize it
      esp32#>
NUMBER — номер UART (от 0 до 3, в зависимости от модели ESP32) или 99 для переключения на интерфейс USB-CDC (например, доступен на ESP32-S3).