Сначала поговорим про batch.
За самоудаление в bat-файлах отвечает команда del %0. Не сложно догадаться, что в конструкции %0 хранится путь до текущего bat-скрипта, а del удаляет файл по этому пути. Разумеется, всё сработает только при соблюдении всех нужных прав доступа к файлу или при запуске скрипта с правами администратора.
В коде это выглядит примерно так:
@echo off @rem КОДИРОВКА ВЫВОДА chcp 1251 @rem ЗАГОЛОВОК СКРИПТА title Заголовок скрипта @rem КАКИЕ-ЛИБО ДЕЙСТВИЯ СКРИПТА @rem КОМАНДА УДАЛЕНИЯ БАТНИКА del %0 @rem ВЫХОД ИЗ СКРИПТА exit
Теперь bash. Здесь всё аналогично, только путь к скрипту скрывается в конструкции $0. Плюс: я ещё добавил команду cp для резервного копирования файла скрипта в ту же самую папку.
#!/bin/bash # Узнаём директорию скрипта dir="$(dirname -- "$0")" # Переходим в директорию скрипта cd $dir # Создаём копию скрипта cp $0 test.sh.bak # Удаляем файл скрипта rm $0
Кстати, переименовать резервный файл test.sh.bak обратно в test.sh можно командой:
mv test.sh.bak test.sh
Если что-то идёт не так — попробуйте выполнить скрипт с sudo.