Команда adb shell rm удаляет файлы на Android-устройстве напрямую через отладочный мост — без корзины, без подтверждения и без возможности отмены. Одна опечатка в пути, например rm /sdcard/DCIM вместо конкретного файла, способна стереть всю папку с фотографиями, поэтому перед выполнением путь стоит проверить командой adb shell ls.
Инструмент применяют в ситуациях, когда файл не удаляется штатными средствами: зависший кэш приложения, повреждённый файл в памяти, остатки удалённых программ, которые занимают место. Через ADB (Android Debug Bridge) вы получаете доступ к файловой системе с правами shell-пользователя — этого достаточно для работы с /sdcard/ и данными некоторых приложений, но недостаточно для системных разделов без root-прав.
Что такое adb shell rm и как это работает
Конструкция состоит из трёх частей: adb вызывает отладочный мост на компьютере, shell открывает командную оболочку на устройстве, а rm — стандартная Unix-команда удаления (от remove). Фактически вы выполняете Linux-команду внутри Android, поскольку система построена на ядре Linux.
Удаление происходит на уровне файловой системы: запись о файле убирается из таблицы размещения, а занимаемое место помечается свободным. Никакой «корзины» при этом не существует — восстановить удалённый через rm файл штатными средствами невозможно. Это принципиальное отличие от удаления через галерею или файловый менеджер.
Работает команда только при выполнении двух условий: на устройстве включена отладка по USB в меню разработчика, а на компьютере установлен пакет Android SDK Platform Tools. Подключение возможно по кабелю или по Wi-Fi (на современных версиях Android — через сопряжение по коду).
Синтаксис и основные флаги
Базовый вид команды предельно прост:
adb shell rm /sdcard/Download/file.apk
Для каталогов и защищённых объектов используются флаги. Их можно комбинировать, например rm -rf удалит папку со всем содержимым без лишних вопросов.
| Флаг | Назначение | Пример |
|---|---|---|
-r | Рекурсивное удаление каталога с содержимым | rm -r /sdcard/temp |
-f | Принудительное удаление без запросов | rm -f /sdcard/log.txt |
-rf | Рекурсивно и принудительно | rm -rf /sdcard/cache |
-i | Запрос подтверждения на каждый файл | rm -i /sdcard/doc.pdf |
Обратите внимание на флаг -i: если вы не уверены в пути, интерактивный режим — разумная страховка. Оболочка будет спрашивать подтверждение перед каждым удалением, и случайная ошибка не приведёт к потере данных.
Подготовка: подключение устройства по ADB
Прежде чем что-либо удалять, необходимо установить связь между компьютером и смартфоном. Последовательность выглядит так:
- 🔧 Включите режим разработчика: откройте «Настройки» → «О телефоне» и несколько раз нажмите на «Номер сборки» (точный путь зависит от оболочки производителя).
- 🔌 В появившемся меню «Для разработчиков» активируйте отладку по USB.
- 💻 Установите Platform Tools на компьютер и подключите устройство кабелем.
- ✅ Выполните
adb devices— на экране смартфона появится запрос на разрешение отладки, подтвердите его.
Если команда adb devices показывает пустой список или статус unauthorized, проверьте кабель (некоторые кабели передают только питание), смените USB-порт и повторно подтвердите разрешение на устройстве. На Windows иногда требуется установка драйвера производителя смартфона.
☑️ Перед первым удалением через adb shell rm
Практические примеры удаления
Разберём типовые сценарии. Удаление одного файла из папки загрузок:
adb shell rm /sdcard/Download/old_backup.zip
Очистка папки кэша целиком:
adb shell rm -rf /sdcard/Android/data/com.example.app/cache
Проверить, что объект существует, перед удалением помогает связка с ls:
adb shell ls /sdcard/DCIM/
Если имя файла содержит пробелы или кириллицу, заключайте путь в кавычки: adb shell rm "/sdcard/Мои документы/отчёт.pdf". Без кавычек оболочка воспримет каждое слово как отдельный аргумент и либо выдаст ошибку, либо — что хуже — попытается удалить не те объекты.
Удаление системных приложений: важное отличие
Частая цель пользователей — избавиться от предустановленных программ. Здесь кроется подвох: rm для системных APK в /system/app/ не сработает без root-прав, поскольку раздел смонтирован в режиме чтения. Вместо этого применяется другая команда:
adb shell pm uninstall -k --user 0 com.vendor.bloatware
Она удаляет приложение только для текущего пользователя, физически пакет остаётся в системном разделе и возвращается после сброса настроек. Это более безопасный путь: система не пострадает, а при необходимости приложение восстанавливается командой adb shell cmd package install-existing имя_пакета.
⚠️ Внимание: удаление системных пакетов через pm uninstall может нарушить работу устройства, если пакет связан с базовыми функциями (телефония, интерфейс, сервисы Google). Предварительно выясните назначение пакета по его имени и не удаляйте то, в чём не уверены.
Как узнать имя пакета приложения
Выполните adb shell pm list packages — команда выведет список всех установленных пакетов. Для фильтрации добавьте часть названия, например: adb shell pm list packages | grep browser (на Windows используйте findstr вместо grep).
Типичные ошибки и их разбор
- 🚫 No such file or directory — путь указан неверно или объект уже удалён. Проверьте содержимое каталога через
lsи учтите регистр букв: в LinuxDownloadиdownload— разные папки. - 🔒 Permission denied — недостаточно прав. Обычно это системные разделы; без root доступ туда закрыт, и обходить ограничение стоит только с полным пониманием рисков.
- 📂 Is a directory — вы пытаетесь удалить папку без флага
-r. Добавьте его либо убедитесь, что цель — именно файл. - ❓ device not found — связь с устройством потеряна: переподключите кабель и повторите
adb devices.
Отдельного внимания заслуживает ситуация, когда команда выполнилась без ошибок, но файл «вернулся». Такое бывает с кэшем активных приложений: работающая программа тут же создаёт файлы заново. Решение — сначала остановить приложение (adb shell am force-stop имя_пакета), затем удалять.
Меры безопасности при работе с rm
Главное правило уже звучало, но повторение здесь оправдано: rm не спрашивает и не прощает. Особенно опасна команда с флагом -rf и широким путём вроде /sdcard/* — она очистит всю внутреннюю память, доступную пользователю: фотографии, документы, загрузки.
⚠️ Внимание: никогда не выполняйте команды видаrm -rf /илиrm -rf /*— даже без root-прав они способны уничтожить все пользовательские данные на устройстве. Такие «шуточные» инструкции встречаются на форумах и приводят к полной потере информации.
Разумная практика — резервное копирование перед экспериментами. Файлы с /sdcard/ можно скопировать на компьютер командой adb pull /sdcard/DCIM/ ./backup/. Это займёт время, но восстановление после ошибки займёт несравнимо больше — если вообще будет возможно.
Часто задаваемые вопросы
Можно ли восстановить файл, удалённый через adb shell rm?
Штатными средствами — нет, корзина при таком удалении не используется. Теоретически данные могут остаться в свободных блоках памяти, но извлечение требует специализированного ПО и root-доступа, а гарантий не даёт. Поэтому резервная копия — единственный надёжный вариант.
Почему rm выдаёт Permission denied?
У shell-пользователя ADB ограниченные права. Удалять можно файлы на /sdcard/ и в данных приложений, доступных для отладки. Системные разделы защищены, и без root-прав команда там не сработает — это штатное ограничение Android, а не неисправность.
Чем rm отличается от pm uninstall?
rm удаляет файлы и папки в файловой системе. pm uninstall деинсталлирует приложение как пакет — корректно убирая его данные и регистрацию в системе. Для удаления программ используйте именно pm uninstall, а не удаление APK-файлов вручную.
Работает ли adb shell rm без root-прав?
Да, для пользовательского раздела /sdcard/ и ряда служебных каталогов root не требуется. Ограничения касаются только системных разделов и чужих данных приложений.
Что делать, если случайно удалил нужную папку?
Немедленно прекратите запись на устройство: не делайте фото, не устанавливайте приложения — каждая новая запись снижает шансы на восстановление. Далее имеет смысл обратиться к специалистам по восстановлению данных, самостоятельные попытки с непроверенными утилитами часто ухудшают ситуацию.