run

run выполняет .lil-сценарии с переменными, условиями, захватом результата, вложенными сценариями, предварительной проверкой и упаковкой через тот же механизм команд, что и обычный терминал. Системная оболочка не вызывается.

АвтоматизацияВерсия 1.2.4Стабильная
lil-terminal

Обзор

Повторяющиеся операции удобно записать в .lil-файл и запускать через run. Начинай с -n, чтобы проверить шаги без выполнения.

Автоматизация остаётся внутри lil-terminal

Каждая строка выполняется как обычная команда lil-terminal. Зависимости устанавливаются заранее, @command внутри сценария не используется, -n показывает развёрнутые команды без выполнения, а -x требуется для привилегированных неинтерактивных команд вроде php и ses.

Синтаксис

lil-terminal
run <file.lil|[script]> [-n|-v|-k|-x] · run -p <source.lil> [target.lil]

Справочник

run task.lil

выполнить обычный или упакованный .lil-сценарий

run [md backup | copy public backup/public]

выполнить встроенный сценарий; вертикальная черта без кавычек разделяет команды

run <script> -n

проверить и показать развёрнутые команды без выполнения

run <script> -v

показать полный вывод команд

run <script> -k

продолжать после ошибок; по умолчанию выполнение останавливается при первой ошибке

run <script> -x

разрешить привилегированные неинтерактивные команды, например php и ses

run -p <source.lil> [target.lil]

создать упакованный сценарий с контрольной суммой

lil <script>

псевдоним для run

plain .lil

текст UTF-8: одна команда в строке

packed .lil

заголовок @LIL1, SHA-256 и данные DEFLATE

setup.lil

выполнить один раз после авторизации и удалить после успеха

autoload.lil

выполнить один раз за авторизованную сессию

@<command>

автоматическая установка доступна только интерактивно и отклоняется внутри сценариев

#lil file

линейный сценарий ядра только из обычных команд терминала; запуск по пути или через <

run workflow

использовать run, когда сценарию нужны переменные, условия, вложенность, захват результата или другая логика

На практике

Повторяешь одни и те же действия с файлами? Сохрани команды в текстовый .lil-файл и запускай их через run. Команда выполняет шаги последовательно, показывает ошибки и использует команды самого lil-terminal — не системную оболочку сервера.

Начни с run sandbox/scripts/workflow.lil -n: это предварительная проверка без выполнения. Затем убери -n. Для маленькой задачи подойдёт запись run [pwd | pwd], где | разделяет команды внутри сценария.

В файле каждая команда занимает свою строку. set сохраняет переменную, capture запоминает текст результата, if и else выбирают действия, run вызывает вложенный сценарий. В примере workflow.lil команда if file ${source} проверяет наличие файла, прежде чем продолжать.

-v показывает вывод всех операций. По умолчанию выполнение прекращается при первой ошибке; -k продолжает следующие шаги, но общий результат остаётся Stopped, если была ошибка. Пробный запуск -n не гарантирует, что реальный запуск позже завершится успешно.

Простой файл с первой строкой #lil запускается встроенным механизмом Base Core: только команды по порядку. Полный run нужен для переменных, условий и вложенных процессов. Minimum рассчитан на один аргумент — имя файла. Короткая запись без пробелов, например run [pwd], тоже может работать; для нескольких inline-команд и дополнительных флагов нужен Base.

setup.lil рядом с lil.php выполняется после авторизации и удаляется только при успехе; autoload.lil выполняется раз за авторизованную сессию. -p упаковывает сценарий в формат @LIL1 с SHA-256 и DEFLATE, но **не шифрует** его.

Сценарии работают с правами текущего PHP-пользователя. Интерактивные действия и @install запрещены; для неинтерактивных php/ses нужен явный -x. Лимиты: текст 256 КиБ, упакованный файл 384 КиБ, 1000 команд, 10 уровней вложенности, 60 секунд. Автоматического отката файловых изменений нет.

Подробности

Обычный текст ограничен 256 КиБ, упакованный вход — 384 КиБ, сценарий — 1000 командами, вложенность — 10 уровнями, время — 60 секундами. Упаковка использует SHA-256 и DEFLATE для целостности, но не является шифрованием.

Безопасность

Сценарии выполняются с правами текущего PHP-процесса. Интерактивные команды запрещены, а php и ses доступны только с явным -x. Не запускайте непроверенные сценарии.

Автоматическая установка

Сокращение @command относится к интерактивному ядру, а не к языку автоматизации. .lil-сценарий, пытающийся начать команду с @, отклоняется. Зависимости сценария следует устанавливать явно до запуска автоматизации, чтобы рабочий процесс не менял набор исполняемых модулей неявно.

Линейные сценарии ядра и run

Файл, начинающийся с #lil, намеренно проще сценария Run: каждая строка, не являющаяся комментарием, — обычная команда терминала; верхнеуровневые разделители | выполняются слева направо, а первая ошибка останавливает последовательность. Такой файл запускается непосредственно по пути или через < file.lil. Используйте run, когда нужны переменные, условия, вложенные сценарии, захват результата, проверочный запуск или другие средства управления потоком.

Во всём сценарии, включая вложенные .lil, допускается не более 1000 непустых строк-команд и инструкций. При ошибке проверки -n выводит Stopped, а не Checked; предварительная проверка ничего не исполняет.

Интерактивный пример из `/sandbox/`

Запускайте подготовленные примеры прямо на странице. Результат заранее сформирован и показывается в браузере; команды терминала на сервере не выполняются.

Выполнить обычный или упакованный .lil-сценарий

Установка и управление

Устанавливайте актуальную совместимую версию. Для полного набора возможностей выбирайте Base, для сокращённого — Minimum; уже установленный модуль обновляет команда upgrade.

Base и Minimum — два пакета одного текущего релиза модуля, а не разные версии команды.

Пакет Base

Установить полный пакет с локальной справкой и всеми опубликованными режимами.

install run
Пакет Minimum

Установить сокращённый пакет без локальной справки; help <cmd> -i открывает актуальную серверную справку.

install run -m
Точная публичная версия

Установить именно эту опубликованную версию.

install run -v 1.2.4
Проверить или обновить

Поручить upgrade проверить совместимость и заменить установленный блок только при необходимости.

upgrade run
Удалить модуль

Удалить блок расширения, не затрагивая ядро и остальные модули.

install run -u

Примеры

Примеры можно копировать, но сайт их не выполняет. Перед запуском на реальном проекте проверьте пути, права и разрушающие флаги.

Выполнить обычный или упакованный .lil-сценарий
run sandbox/scripts/workflow.lil
001 + pwd
002 + pwd
Completed: 2
Показать полный вывод команд
run sandbox/scripts/workflow.lil -v
001 + pwd
    sandbox
002 + pwd
    sandbox
Completed: 2
Проверить и показать развёрнутые команды без выполнения
run sandbox/scripts/workflow.lil -n
001 · pwd
002 · pwd
Checked: 2
Проверить и показать развёрнутые команды без выполнения
run sandbox/scripts/workflow.lil -n -v
001 · pwd
002 · pwd
Checked: 2
Псевдоним для run
lil sandbox/scripts/workflow.lil
001 + pwd
002 + pwd
Completed: 2

lil — короткий псевдоним run; сохранённые .lil-сценарии и вставленная автоматизация используют один и тот же путь выполнения команд.

Выполнить встроенный сценарий; вертикальная черта без кавычек разделяет команды
run [pwd | pwd]
001 + pwd
002 + pwd
Completed: 2
Run · name
run [set name demo | if eq demo demo | pwd | else | stop mismatch | end]
001 + pwd
Completed: 1
Run · file
run [if file sandbox/data/sample.txt | pwd | end]
001 + pwd
Completed: 1
Run · not
run [if not exists sandbox/missing.txt | pwd | end]
001 + pwd
Completed: 1
Run · location
run [capture location pwd | pwd] -v
001 + pwd
    sandbox
002 + pwd
    sandbox
Completed: 2
Использовать run, когда сценарию нужны переменные, условия, вложенность, захват результата или другая логика
run sandbox/scripts/nested.lil -v
001 + pwd
    sandbox
002 + pwd
    sandbox
Completed: 2
Выполнить обычный или упакованный .lil-сценарий
run [upload | pwd]
001 – upload
    Command is not allowed in scripts
Stopped: 1
Продолжать после ошибок; по умолчанию выполнение останавливается при первой ошибке
run [upload | pwd] -k
001 – upload
    Command is not allowed in scripts
002 + pwd
Stopped: 2
Run · 14
run [stop maintenance]
Line 001 – maintenance
Stopped: 0
Разрешить привилегированные неинтерактивные команды, например php и ses
run [pwd | php -v]
001 + pwd
002 – php -v
    Command is not allowed in scripts
Stopped: 2
Разрешить привилегированные неинтерактивные команды, например php и ses
run [pwd | php -v] -x -v
001 + pwd
    sandbox
002 + php -v
    PHP 8.4.24
Completed: 2
Разрешить привилегированные неинтерактивные команды, например php и ses
run sandbox/scripts/privileged.lil
001 – php -v
    Command is not allowed in scripts
Stopped: 1
Разрешить привилегированные неинтерактивные команды, например php и ses
run sandbox/scripts/privileged.lil -x -v
001 + php -v
    PHP 8.4.24
Completed: 1
Проверить и показать развёрнутые команды без выполнения
run sandbox/scripts/invalid.lil -n
001 · pwd
Line 003 – Missing end
Stopped: 1
Использовать run, когда сценарию нужны переменные, условия, вложенность, захват результата или другая логика
run sandbox/scripts/recursive.lil
Recursive script detected
Stopped: 0
Выполнить обычный или упакованный .lil-сценарий
run sandbox/scripts/blocked.lil
001 – @install find
    Automatic installation is not allowed in scripts
Stopped: 1
Продолжать после ошибок; по умолчанию выполнение останавливается при первой ошибке
run sandbox/scripts/recover.lil -k
001 – upload
    Command is not allowed in scripts
002 + pwd
Stopped: 2
Создать упакованный сценарий с контрольной суммой
run -p sandbox/scripts/workflow.lil sandbox/scripts/workflow.export.lil
Packed workflow.lil > sandbox/scripts/workflow.export.lil
182 B > 256 B
Выполнить обычный или упакованный .lil-сценарий
run sandbox/scripts/workflow.packed.lil
001 + pwd
002 + pwd
Completed: 2
Проверить и показать развёрнутые команды без выполнения
run sandbox/scripts/workflow.packed.lil -n
001 · pwd
002 · pwd
Checked: 2
Выполнить обычный или упакованный .lil-сценарий
run [@install find]
001 – @install find
    Automatic installation is not allowed in scripts
Stopped: 1
Выполнить обычный или упакованный .lil-сценарий
run [upload]
001 – upload
    Command is not allowed in scripts
Stopped: 1
Выполнить обычный или упакованный .lil-сценарий
run sandbox/scripts/missing.lil
Script file not found
Выполнить обычный или упакованный .lil-сценарий
run sandbox/data/sample.txt
Script must use the .lil extension
Выполнить обычный или упакованный .lil-сценарий
run sandbox/scripts/workflow.lil -z
Unknown run option: -z
Выполнить встроенный сценарий; вертикальная черта без кавычек разделяет команды
run [pwd
Inline script is missing ]
Выполнить обычный или упакованный .lil-сценарий
run
?

Файл из примера: sandbox/scripts/demo.lil

Пример использует файл или каталог из защищённой учебной папки /sandbox/.

# lil-sandbox workflow
pwd
dir 1 sandbox
echo sandbox/data/sample.txt

Связанная документация

Текущая публичная версия

v1.2.42026-11-01

Производственная доработка

Актуальная стабильная версия run. run выполняет `.