Введение

Часть 13

Соберите личную библиотеку рабочих приёмов

На этом этапе терминал перестаёт быть списком команд. Он становится набором методов, которым вы доверяете: так я исследую такую проблему, так преобразую такие файлы, так упаковываю проект, так проверяю выпуск, так восстанавливаю среду.

Храните методы в библиотеке, а не в памяти

Создайте каталоги по назначению — например, checks, deploy, media, migration, diagnostics — и храните в каждом короткий сценарий или заметку для проверенного приёма. Имя каталога должно объяснять, когда этот инструмент понадобится даже через полгода.

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

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

Сочетайте небольшие сценарии вместо одного огромного

Хороший небольшой сценарий отвечает на один вопрос или выполняет одно ограниченное преобразование. hosting-baseline.lil, package-project.lil и network-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

Обслуживайте инструмент заранее, а не во время аварии

Иногда запускайте core, doctor -q и upgrade -c, когда всё работает. Так вы узнаёте, как выглядит «норма», и замечаете обновления или отсутствующие зависимости до сбоя на рабочем проекте.

Хорошее обслуживание скучно. Осознанно выбирайте доверенный репозиторий, просматривайте изменения, сохраняйте резервные копии и фиксируйте немногочисленные локальные решения, которыми этот хост отличается от другого.

core
doctor -q
upgrade -c

Умейте сбросить один слой, не сжигая всю среду

clear сбрасывает только экран. Модули удаляются по одному. Необязательный интерфейс можно сбросить отдельно. Слой расширений можно убрать, оставив Core. Полный kill существует, но это последняя граница, а не универсальный способ устранения неполадок.

Такая послойная модель полезна в любом терминале: найдите минимальное состояние, которое действительно сломано, и сбрасывайте только его. Полное уничтожение редко заменяет диагностику.

clear

Закончите сценарием, результат которого можно доказать

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

Сначала запустите его с -n, затем с -v. Меняйте значения $root и $archive только после того, как поняли вывод. Цель не в конкретном архиве, а в привычке строить процедуры, которые сами объясняют свои шаги.

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