run

run 通过与交互式终端相同的命令执行路径运行 .lil 工作流,支持变量、条件、结果捕获、嵌套脚本、预演和打包文件,并且不会调用操作系统命令行。

自动化版本 1.2.3稳定
lil-terminal

概览

当命令序列需要逻辑或受控执行时使用 run。固定的普通命令列表可以保留在更简单的 #lil 文件中;run 增加工作流能力,但不会引入第二套 shell 语言。

自动化始终留在 lil-terminal 内部

每条可执行语句都按普通 lil-terminal 命令解析。依赖必须预先安装,工作流中不使用 @command-n 只显示展开后的命令而不执行,运行 phpses 等高权限非交互命令前必须显式使用 -x

语法

lil-terminal
run <file.lil|[script]> [options] · run -p <source.lil> [target.lil]

参考

run task.lil

执行普通或打包的 .lil 脚本

run [md backup | copy public backup/public]

执行内联脚本;未加引号的 | 用于分隔语句

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

创建带校验和保护的打包脚本

-n

仅验证并显示展开后的命令,不执行

-v

显示完整命令输出

-k

出错后继续;默认在第一次错误时停止

-x

允许 php、ses 等特权非交互命令

plain .lil

UTF-8 文本,每行一条语句

packed .lil

包含 SHA-256 和 DEFLATE 数据的 @LIL1 头

setup.lil

授权后执行一次,成功后删除

autoload.lil

每个已授权会话执行一次

lil <script>

run 的别名

@<command>

自动安装仅用于交互模式,在脚本中会被拒绝

#lil file

只包含普通终端命令的 core 线性脚本;可通过路径或 < 启动

run workflow

需要变量、条件、嵌套、capture 或其他流程逻辑时使用 run

详细信息

普通文本限制为 256 KiB,打包输入为 384 KiB,脚本最多 1000 条语句、10 层嵌套和 60 秒。SHA-256 与 DEFLATE 用于完整性,不提供加密。

安全

脚本使用当前 PHP 进程的权限。交互命令被禁止,php 与 ses 必须显式使用 -x。不要运行未经检查的脚本。

自动安装

@command 便捷语法属于交互核心,而不是自动化语言。在 .lil 脚本中,以 @ 开头的命令会被拒绝。应在自动化之前显式安装脚本依赖,避免工作流在执行过程中隐式改变可用模块集合。

Core 线性脚本与 Run

#lil 开头的文件刻意保持得比 Run workflow 更简单:每个非注释行都是普通终端命令,顶层 | 分隔符按从左到右执行,并在第一次失败时停止。文件可直接按路径运行,也可用 < file.lil。当脚本需要变量、条件、嵌套脚本、capture、dry-run 或其他 workflow 能力时,请使用 run

交互式 sandbox 预览

可直接在页面中运行预先准备的示例。结果已预先生成并在浏览器中显示;服务器不会执行任何终端命令。

Run · script

安装与管理

安装当前兼容版本。完整功能请选择 Base,精简包请选择 Minimum;已安装模块的更新请使用 upgrade。

Base 与 Minimum 是同一当前模块版本的两个包。

Base 包

安装包含本地参考和全部已发布模式的完整包。

install run
Minimum 包

安装精简包。该包不包含本地参考;help <cmd> -i 会打开当前服务器参考。

install run -m
精确公开版本

安装这个确切的已发布版本。

install run -v 1.2.3
检查或升级

让 upgrade 检查兼容性,仅在需要时替换已安装块。

upgrade run
删除模块

删除扩展块,不影响核心和其他模块。

install run -u

示例

示例可复制,但网站不会执行。请先检查路径、权限和破坏性选项。

Run · script
run sandbox/task.lil -v
001 + cd sandbox
    config/
    data/
    db/
    images/
    logs/
    public/
    scripts/
    tmp/
    workspace/
002 + pwd
    /home/account/public_html/sandbox
Completed: 2
执行普通或打包的 .lil 脚本
run sandbox/task.lil
001 + cd sandbox
002 + pwd
Completed: 2
Run · inline
run sandbox/task.lil -n
001 · cd sandbox
002 · pwd
Checked: 2
执行内联脚本;未加引号的 | 用于分隔语句
run [md sandbox/backup | copy sandbox/data sandbox/backup/data]
001 + md sandbox/backup
002 + copy sandbox/data sandbox/backup/data
Completed: 2
创建带校验和保护的打包脚本
run -p sandbox/task.lil sandbox/task.packed.lil
Packed task.lil > sandbox/task.packed.lil
15 B > 101 B
执行普通或打包的 .lil 脚本
run sandbox/task.packed.lil
001 + cd sandbox
002 + pwd
Completed: 2
Run 的别名
lil sandbox/task.lil
001 + cd sandbox
002 + pwd
Completed: 2

lilrun 的短别名;保存的 .lil 工作流和粘贴执行的自动化都使用同一套命令执行路径。

执行普通或打包的 .lil 脚本
run sandbox/missing.lil
未找到脚本文件

本示例使用的文件: sandbox/scripts/demo.lil

该示例使用受保护的 /sandbox/ 文档工作区中的文件或目录。

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

相关文档

当前公开版本

v1.2.32026-08-12

语言同步

完成 run 的本地帮助与服务器帮助同步,并加强本地化安全性。