入门

第 13

建立个人方法库:把有用的工作变成可以带走的手艺

走到这里,终端不再是一份命令清单。它变成你信任的方法集合:这种问题我这样检查,这类文件我这样转换,这个项目我这样打包,这个发布版本我这样验证,这套环境我这样恢复。

把方法存进库里,不要只存进记忆里

按用途建目录——检查、部署、媒体、迁移、诊断——每个验证过的流程保存一个短脚本或说明。目录名应该让六个月后的你也知道什么时候该来找它。

一个在项目之间复制的私有目录,本身就是可迁移的个人工作环境。它能保存多年积累的小决定,避免每次都从零重新摸索。

cd lil-playground
md library
md library/checks
md library/deploy
md library/media

优先保留可以组合的小流程

好的流程只回答一个问题,或完成一个边界清楚的转换。hosting-baseline.lilpackage-project.lilnetwork-check.lil 比一个同时改配置、上传文件、改权限、操作数据库的巨型脚本更容易信任。

组合会让风险保持可见。线性 #lil 文件调用普通命令;需要判断时,run 工作流可以调用子工作流。让名称、预期输入和输出都保持明显。

记录“差异”,而不只是记录最终文件

diff 把两个文本状态变成可审查的变更,也可以保存补丁。它通常比另一个叫 final-final-2.txt 的副本更有信息,因为变化本身可以被检查。

为发布产物配合使用 hash。补丁说明改了什么;摘要可以在以后回答字节是否仍然完全相同。二者都不是备份,但一起使用会让交接与验证安心得多。

echo "status=review" > library/routine-v1.txt -r
echo "status=done" > library/routine-v2.txt -r
diff library/routine-v1.txt library/routine-v2.txt
diff library/routine-v1.txt library/routine-v2.txt -o library/routine.patch

小而精确的工具可以避免不必要的一次性代码

rand 可以生成安全整数、令牌和 UUID;math 处理经过验证的计算与转换。工作流只需要一个精确值,而临时 PHP 脚本反而增加复杂度时,它们很合适。

密码学安全的随机值仍然不是敏感信息管理系统,计算器也不是业务规则引擎。小工具解决小问题,重要策略保持在工作流中明确可读。

rand -uuid
rand 1 100
math clamp 105 0 100
math round 82.456 1

不要等到事故发生后才让维护变得紧急

环境健康时,偶尔运行 coredoctor -qupgrade -c。这样你会知道“正常”是什么样子,也能在生产故障前发现更新或缺失依赖。

最好的维护往往很无聊。有意识地决定是否信任软件仓库,审查变更,保留备份,并记录少量真正让这个主机与其他主机不同的本地差异。

core
doctor -q
upgrade -c

学会只重置一层,而不是烧掉整个环境

clear 只重置你看到的终端记录。模块可以单独卸载。可选界面可以独立重置。扩展层可以被删除而 Core 保留。完整 kill 确实存在,但它是最后边界,不应该成为排障时的条件反射。

这种分层模型是通用终端习惯:找出真正坏掉的最小状态,只重置那个状态。破坏性操作很少能代替诊断。

clear

用一个“结果可以被证明”的工作流收尾

最终示例检查工作目录是否存在,创建归档,测试 TAR,检查产物,再计算摘要。每一步要么确认前置条件,要么为下一步产生证据。

先用 -n,再用 -v。理解输出之前不要改根目录和归档名称。目标不是这个具体归档,而是形成一种习惯:让流程自己解释自己。

run library/release-check.lil -n
run library/release-check.lil -v

真正的技能是方法,而不是命令词汇量

Linux、macOS、Windows 和托管环境并不相同,lil-terminal 也没有假装它们相同。真正能迁移的是文化:检查当前状态、做一个有边界的修改、验证结果,再保存可重复的部分。

当这变成自然习惯,新的终端就不再是一堵陌生语法之墙。你已经知道要问什么问题、收集什么证据、调整哪些流程。这套入门课程的目标不是让学习结束,而是让命令行成为你知道如何工作的地方。

把它保存成脚本

把最终工作流保存为 library/release-check.lil。它并不了解你的业务项目;它展示一种可复用的发布检查流程:确认工作目录、创建归档、测试、检查产物,并记录摘要。

set root lil-playground
set archive lil-playground-checkpoint.tar

if dir "$root"
    dir "$root" 1 -G
    tar "$root" "$archive" -f
    tar "$archive" -t
    stat "$archive"
    hash "$archive"
else
    stop "Workspace is missing"
end