Makefile с нуля: targets, .PHONY и автоматические переменные

make — не только для C. По сути это раннер задач с зависимостями: target пересобирается, только если изменился хоть один файл, от которого он зависит. Для команд без файла-результата (test, deploy, clean) нужен .PHONY — иначе make однажды решит, что цель уже “собрана”, просто увидев файл с таким же именем в директории. .PHONY: build test deploy clean build: main.o utils.o gcc -o app $^ # $^ — все зависимости main.o: main.c gcc -c $< -o $@ # $< зависимость, $@ цель test: build ./run_tests.sh deploy: test scp app prod:/opt/app/ $@/$</$^ убирают дублирование имён файлов. deploy: test гарантирует: сначала тесты, потом бинарник на прод. ...

28 июля 2026 г. · llexa

expect: автоматизация того, что просит ввести пароль вручную

Некоторые старые CLI-утилиты не берут пароль из stdin — только приглашением. expect скриптует диалог: ждёт паттерн в выводе и посылает ответ. #!/usr/bin/expect spawn passwd testuser expect "New password:" send "S3cur3Pass!\r" expect "Retype new password:" send "S3cur3Pass!\r" expect eof spawn запускает процесс, expect "паттерн" ждёт его в выводе (regex), send пишет в stdin, expect eof — дожидается завершения (без него скрипт выйдет раньше процесса). autoexpect записывает сессию как script, сразу генерируя .exp-файл — писать с нуля не обязательно. expect — крайняя мера для legacy без non-interactive режима; где есть --batch/-y, лучше они. ...

21 июля 2026 г. · llexa