Полезные команды для андроид в терминале

Полезные команды для андроид в терминале thumbnail

Если у вас есть смартфон на Android и вы знакомы с Linux то наверное хоть раз интересовались как использовать терминал в Android. Как вы знаете операционная система Android основана на ядре Linux, а это значит что здесь есть командная оболочка и в ней доступны множество стандартных команд Linux. По умолчанию стандартной утилиты терминала в Android нет. Получить к нему доступ можно несколькими путями:

  • первый – скачать приложение Android Terminal Emulator с GooglePlay.
  • второй подключиться к смартфону с компьютера с помощью отладчика adb.

Но наша статья не об этом, сегодняшняя тема: команды в Aandroid Terminal Emulator или точнее команды терминала Android.

В интернете есть много статей на эту тему но во всех них чего-то не хватает, описана пара специфичных команд и на этом все, а хочется полный список, включая команды Linux, тогда я и решил написать эту статью. Я не говорю что я опишу все команды, но постараюсь охватить большинство. Здесь приведено лишь короткое описание о некоторых командах Android я расскажу подробнее в следующих статьях, а о командах Linux можно найти подробную информацию в интернете.

Теперь об обозначениях — для некоторых команд необходимы права root, перед ними я буду ставить знак @.

Начнем. Команды терминала это ничто иное как небольшие консольные утилиты, большинство системных утилит находиться в папке /system/bin и еще несколько в /vendor/bin. Те что в vendor мы трогать не будем. Чтобы было удобнее расположу все команды по алфавиту.

adb – Отладчик андроид. Поскольку Android это все же Linux, к нему по USB можно подключать другие устройства в том числе смартфоны, adb позволяет ими управлять и дает доступ к их терминалу. описание его команд и возможностей тянет на целую статью, я опишу все в одной из следующих статей.

am – Менеджер окон (Action Manager), с помощью него можно запустить и остановить любое приложение или сервис. Например запуск приложения настройки:

am start -n com.android.settings/.Settings

badblocks — проверка флешки на наличие битых секторов:

Результат можно записать в файл:

badblocks /dev/block/mmcblk0 > /sdcard/badblocks

или вывести на экран:

badblocks -v /dev/block/mmcblk0

bmgr — управление резервным копированием Android.

cat — консольная утилита для просмотра содержимого файла.

cat /sdcard/text.txt

chmod — аналогична команде Linux, меняет права доступа файла, доступен только восьмеричный формат записи.

Например дать все права (чтение, запись, выполнение):

chmod 777 /sdcard/file

chown — меняет владельца файла в Linux, Например:

chown root /sdcard/file

cmp — сравнивает два файлы

cmp /sdcard/file1 /sdcard/file2

cp — копирует файл, из источника(параметр 1) в приемник(параметр 2).

cp /sdcard/file1 /sdcard1/

Подробнее о cp можно почитать в статье копирование файлов в linux

date — показать текущую дату в системе.

date

Sat Nov 14 13:44:56 EET 2015

dd — создать образ диска, Параметры if= файл устройства диска, of=файл для записи

Например:

dd /dev/block/mmcblk0 /sdcard/img.iso

Будет создан образ флешки mmcblk0.

df — анализ свободного места на диске. Например:

df -h /dev/block/mmcblk1

Filesystem Size Used Free Blksize
/mnt/secure 484.5M 0.0K 484.5M 4096
/mnt/asec 484.5M 0.0K 484.5M 4096
/mnt/obb 484.5M 0.0K 484.5M 4096
/system 1.4G 971.7M 435.8M 4096

dmesg — просмотр лога сообщений ядра.

du — просмотр размера файла.

du /sdcard/file1

@ ext4_resize изменение размера раздела с файловой системой ext4.

@ fsck_msdos — проверка флешки на ошибки.

fsck_msdos /dev/block/mmcblk1p1

grep — утилита для фильтрации текста. Например вывести только строки содержащие terminal:

cat ~/sdcard/file | grep terminal

@ ifconfig — просмотр и управление сетевыми устройствами. Например просмотр информации о карте wifi:

ifconfig wlan0

Или отключение wifi:

ifconfig wlan0 down

Узнать список сетевых устройств можно командой:

ls /sys/class/net

iptables — управление настройками фаервола iptables, это очень обширная тема которой мы касаться не будем.

kill — уничтожить процесс по его PID.

kill 1435

Чтобы узнать pid можно использовать утилиту ps.

ln — создать ссылку на файл или папку, если указан параметр -s — символическую ссылку.

ln /sdcard/file /sdcard/file2

log — записать строку в лог системы.

log “Hollo log”

logcut — просмотр лога системы в реальном времени.

ls — просмотр списка файлов и папок в директории:

ls /mnt/

lsmod — просмотр загруженных модулей ядра

lsof — просмотр открытых в системе файлов.

make_ext4fs — форматировать флешку в файловую систему ext4

md5 — подсчитать контрольную суму файла.

md5 /sdcard/filename

mkdir — создать папку, в текущем каталоге.

mkdir имя_папки

make2fs — форматировать флешку в файловую систему ext2

mount — примонтировать диск, образ или папку. Например:

mount -t ext2 /dev/block/mmcblk1p1 /mnt/sdcard

Подробнее о монтировании можно почитать в моей статье: Монтирование в Android

mv — переместить файл, аналогично cp

netcfg — просмотр информации об сетевых соединениях.

notify — утилита для слежения за изменениями в файловой системы с помощью подсистемы ядра inotify.

ping — известная утилита для проверки доступности сетевого узла.

ping ya.ru

pm — пакетный менеджер android, позволяет, устанавливать, удалять и просматривать установленные пакеты.

ps — просмотр всех запущенных процессов и информации о них.

ps

USER PID PPID VSIZE RSS WCHAN PC NAME
root 1 0 1000 848 c0106ef8 0001bfb4 S /init
root 2 0 0 0 c006e038 00000000 S kthreadd
root 3 2 0 0 c0057a54 00000000 S ksoftirqd/0

reboot — перезагрузить смартфон из консоли.

resize2fs — аналогично resize_ext4, только для ext2

rm — удалить файл.

rm /sdcard/file

rmdir — удалить папку.

rmdir /sdcard/dirname

rmmod — выгрузить модуль ядра.

rmmod имя_модуля

route — управление таблицей маршрутизации.

Читайте также:  Полезные самоделки для дачи своими руками фото

touch — создать пустой файл.

touch /sdcard/file

top — интерактивный вариант списка запущенных процессов.

@ screenshot — сделать снимок экрана.

screenshot /sdcard/screenshot.png

shutdown — выключить смартфон.

shutdown -h now

service — управление сервисами. Например посмотреть список запущенных сервисов:

service list

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

Десерт на сегодня – обзор новой версии Android 6.0 Marshmallow:

Источник

Существует множество инструментов для работы с подключенным с помощью USB-кабеля или Wi-Fi смартфоном. Особо развитые инструменты позволяют перемещать файлы, устанавливать и удалять софт, просматривать контакты, делать скриншоты экрана и даже отправлять СМС, однако ни один графический инструмент не сравнится с мощью, которую может дать консоль Android. В этой статье мы поговорим об ADB (Android Debug Bridge) — стандартном инструменте для отладки и работы с консолью Android с компа.

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

Основы работы с ADB

Для начала работы с ADB его следует активировать на устройстве и установить утилиту adb и драйверы на комп. Первая задача выполняется с помощью включения «Отладки по USB» в пункте настроек «Для разработчиков» (если этот пункт скрыт, нажми семь раз на номер сборки в меню «О телефоне»).

Для установки ADB на комп качаем Adb Kit и распаковываем в любую папку (рекомендую использовать названия папок без русских символов). Также скачиваем и устанавливаем драйверы ADB.

Работать с adb нужно из командной строки. Нажимаем Win + R и вводим cmd, далее переходим в папку, в которой лежит adb. Для моей папки команда будет следующей:

cd android

Чтобы не проделывать все эти манипуляции каждый раз, можно добавить нужную папку в переменную Path. Для этого необходимо зайти в «Панель управления -> Система -> Дополнительные параметры системы -> Переменные среды», найти переменную Path и добавить в конец строки, через точку с запятой, путь до папки с adb. Теперь после запуска консоли можно сразу вводить необходимые команды.

Добавление adb в переменную PathДобавление adb в переменную Path

Проверим наше подключение к телефону с помощью следующей команды (она должна вывести список подключенных устройств):

adb devices

С ADB можно работать через Wi-Fi. Для этого нужны права root и приложение WiFi ADB. Запускаем приложение, жмем переключатель и подсоединяемся к смартфону с помощью команды connect и показанного приложением IP-адреса:

adb connect IP-адрес

Далее работа с ADB ничем не отличается.

INFO

Скопировать вывод консоли после выделения мышкой, а также вставить скопированную команду или имя файла в консоль можно правой кнопкой мыши. Включается в свойствах консоли.

Установка программ

ADB можно использовать для установки приложений без необходимости копировать их на смартфон. Достаточно выполнить такую команду:

adb install d:/downloads/имя_файла.apk

В команду также можно добавить дополнительные ключи. Полезными будут — переустановить приложение с сохранением данных и -d — установить версию меньше текущей.

Программы можно и удалять, но для этого нужно знать название пакета (как узнать, расскажу чуть позже). На примере игры Angry Birds Seasons команда будет выглядеть так:

adb uninstall com.rovio.angrybirdsseasons

Бэкап приложений

В Android есть встроенные функции бэкапа, которые также можно запустить с помощью командной строки. Для этого используется команда adb backup и набор опций:

adb backup [опции] <приложения>

  • -f указывает имя создаваемого файла и его расположение на компе. При отсутствии ключа будет создан файл backup.ab в текущем каталоге;
  • -apk|-noapk указывает, включать ли в бэкап только данные приложения или сам .apk тоже (по умолчанию не включает);
  • -obb|-noobb указывает, включать ли в бэкап расширения .obb для приложений (по умолчанию не включает);
  • -shared|-noshared указывает, включать ли в бэкап содержимое приложения на SD-карте (по умолчанию не включает);
  • -all указывает на необходимость бэкапа всех установленных приложений;
  • -system|-nosystem указывает, включать ли в бэкап системные приложения (по умолчанию включает);
  • — перечень пакетов для бэкапа.

Если мы хотим создать бэкап всех несистемных прог, включая сами .apk, в определенное место, то команда будет выглядеть так:

adb backup -f c:androidbackup.ab -apk -all -nosystem

После ввода необходимо подтвердить начало выполнения бэкапа на самом устройстве. Для восстановления полученного бэкапа нужно выполнить соответствующую команду:

adb restore c:androidbackup.ab
Процесс бэкапаПроцесс бэкапа

Консоль в консоли

Наряду с упомянутой консолью, которая является DOS-консолью под Windows, в Android существует и своя. Она вызывается через adb shell и представляет собой по сути стандартную Linux-консоль, но с неполным набором команд, расширить который можно, установив из маркета BusyBox. Использовать эту консоль можно двумя способами. В интерактивном режиме она запускается командой

adb shell

В консоли появляется знак $ (далее по тексту этот знак будет означать необходимость ввода предварительной команды adb shell), и после этого можно вводить серию команд, получая после каждой отклик. Второй способ — если необходимо ввести только одну команду, можно писать ее подряд за adb shell.

В шелле работают стандартные команды для копирования, перемещения и удаления файлов: cp, mv и rm. Можно менять каталоги (cd) и смотреть их содержимое (ls). Кроме стандартных Linux-команд, о которых можно узнать из любого справочника, в Android есть несколько своих специализированных инструментов, но, чтобы использовать некоторые из них, придется получить на смартфоне права root, а после запуска консоли выполнять команду su:

adb shell
su

Это нужно делать, если в ответ на какую-либо команду ты видишь строку, похожую на «access denied» или «are you root?». В случае успеха знак $ сменится на #.

Читайте также:  Что можно сделать полезного из пивных банок

Вывод свободного пространства на устройстве командой adb shell dfВывод свободного пространства на устройстве командой adb shell df
Пример работы команды ls для вывода информации о разделахПример работы команды ls для вывода информации о разделах

Создание скриншота

Выполняется одной строчкой:

adb shell screencap /sdcard/screen.png

После этого картинку нужно выдернуть из устройства командой adb pull:

adb pull /sdcard/screen.png

В recovery скриншот можно сделать следующей командой:

adb pull /dev/graphics/fb0

Затем необходимо преобразовать файл fb0 в нормальное изображение с помощью FFmpeg, который нужно скачать и положить в папку с adb. Расширение необходимо ставить своего устройства:

ffmpeg -f rawvideo -pix_fmt rgb32 -s 1080×1920 -i fb0 fb0.png

Запись видео, происходящего на экране устройства

adb shell screenrecord –size 1280×720 –bit-rate 6000000 –time-limit 20 –verbose /sdcard/video.mp4

Данная команда начнет записывать видео с разрешением 1280 x 720 (если не указать, то будет использовано нативное разрешение экрана устройства), с битрейтом 6 Мбит/с, длиной 20 с (если не указать, то будет выставлено максимальное значение 180 с), с показом логов в консоли. Записанное видео будет находиться в /sdcard (файл video.mp4).

INFO

Все запущенные из консоли и в adb shell процессы, занимающие некоторое время для выполнения, можно прервать с помощью комбинации Ctrl + C. Выйти из шелла и вернуться к выполнению обычных команд adb — Ctrl + D.

Управление приложениями

Для управления приложениями используются две команды: pm (package manager) — менеджер пакетов и am (activity manager) — менеджер активностей. У данных команд есть немало ключей, которые можно посмотреть на портале разработчиков. Остановимся на некоторых.

Для начала получим список установленных на устройстве приложений в виде названий пакетов, которые пригодятся позже:

$ pm list packages

Добавив в конец -s, ты увидишь только системные приложения, -3 — только сторонние, -f покажет пути установки пакетов, а -d — отключенные приложения. Далее, зная названия пакетов, можно совершать над ними различные насильственные действия :). Например, отключить ненужный календарь:

$ pm disable com.google.android.calendar

Очистить данные:

$ pm clear com.dropbox.android

Ну а совсем удалить можно так:

$ pm uninstall com.dropbox.android

Для использования activity manager понадобятся более глубокие знания структуры Android и понимание того, что такое Avtivity и Intent. Это позволит тебе запускать различные приложения, например браузер или настройки:

$ am start -n com.android.browser/.BrowserActivity
$ am start -n com.android.settings/.Settings

Завершить работу приложения можно противоположной командой:

$ am kill com.android.browser

Ну а убить все запущенные приложения — такой командой:

$ am kill-all

Тот же activity manager поможет сделать звонок на нужный номер телефона:

$ am start -a android.intent.action.CALL tel:123

А так можно открыть страницу в браузере:

$ am start -a android.intent.action.VIEW ‘http:/xakep.ru’
Запуск браузера из консолиЗапуск браузера из консоли

А с помощью вариации предыдущей команды можно отправить СМС:

$ am start -a android.intent.action.SENDTO -d sms:НОМЕР_ТЕЛЕФОНА –es sms_body “ТЕКСТ_СМС” –ez exit_on_sent true
$ input keyevent 22
$ input keyevent 66

В данной команде input keyevent эмулирует нажатие кнопок и может использоваться как для хардварных, так и для кнопок внутри приложения. В нашем примере 22 соответствует перевод фокуса вправо (джойстик вправо — dpad right), а 66 — Enter.

С помощью команды input можно, например, разблокировать телефон. Для этого необходимо ввести:

$ input keyevent 82

Погасит экран keyevent 26, что соответствует нажатию кнопки Power. Можно также поэкспериментировать с цифрами 3 — Home, 4 — Back, 24 — Volume Up, 25 — Volume Down, 27 — физическая кнопка Camera. Последнюю кнопку можно передать и через широковещательные сообщения (полный список широковещательных сообщений ты найдешь тут):

$ am broadcast -a android.intent.action.CAMERA_BUTTON

Другое широковещательное сообщение переведет телефон в режим самолета:

$ am broadcast -a android.intent.action.AIRPLANE_MODE –ez state true

Но данная команда не сработает на последних версиях Android. Для управления питанием и беспроводными коммуникациями там используется утилита svc. Например, включить передачу данных через мобильную сеть или управлять Wi-Fi можно через команды

$ svc data enable
$ svc wifi disable

Также можно заставить смартфон оставаться включенным при подключении к USB-порту/зарядке/Wi-Fi-сети или всегда:

$ svc power stayon usb
$ svc power stayon ac
$ svc power stayon wireless
$ svc power stayon true

Возвращаясь к команде input, стоит выделить еще одну команду для вставки текста в текущее поле. Кому-то это может показаться более привлекательным способом набора текста с компа, чем нажимать на кнопки небольшой области экрана. Выглядит команда так:

$ input text “Текст для вставки”

Кроме опции text, у команды input есть и другие. Полная форма команды такова:

$ input [<source>] <command> [<arg>…]

В качестве источника можно указывать trackball, joystick, touchnavigation, mouse, keyboard, gamepad, touchpad, dpad, stylus, touchscreen. В качестве команд будут:

  • text (Default: touchscreen) [delay]
  • keyevent [–longpress] … (Default: keyboard)
  • tap (Default: touchscreen)
  • swipe [duration(ms)] (Default: touchscreen)
  • press (Default: trackball)
  • roll (Default: trackball)

Как видно из команд, можно, хотя и с трудом, управлять устройством через команды input touch и input swipe при разбитом экране, если не поддерживается работа мышки через USB-OTG. Например, вытянуть шторку с уведомлениями получится так (отсчет координат идет от левого верхнего угла):

$ input swipe 10 10 10 1000

А так можно узнать разрешение экрана:

$ dumpsys window | sed -n ‘/mUnrestrictedScreen/ s/^.*) ([0-9][0-9]*)x([0-9][0-9]*)/1 2/p’

Для Nexus 5 разрешение выдаст 1080 х 1920. Тогда нажать на кнопку «Меню приложений» стандартного лаунчера от Google, которая находится над кнопкой «Домой», можно так:

$ input touchscreen tap 500 1775

Скрипты

Выполнение всех описываемых в статье серий команд можно автоматизировать. Для этого вставляем их в текстовый файл (строки, следующие за adb shell), который имеет в начале строку #!/system/bin/sh, сохраняем с расширением sh и закидываем на устройство. После этого можно запускать скрипт через тот же adb:

Читайте также:  Творог при диабете полезен или нет

adb shell sh /sdcard/имя_файла.sh

Системные утилиты

Кратко остановлюсь на нескольких полезных командах (работоспособность некоторых, однако, может зависеть от версии прошивки и модели телефона).

Изменение DPI. Не требует root и работает на Android 5.0+. Стандартное значение для Nexus 5 — 480. При значении 420 на рабочем столе стокового лаунчера помещается пять иконок в ряд вместо четырех:

$ wm density 420 && adb reboot

Подключение /system в режиме записи. Для части команд, которые меняют системные файлы, необходимо сначала перемонтировать раздел /system на запись. Это необходимо в том числе при удалении системных приложений. Перемонтирование выполняется следующей командой:

$ su
# mount -o rw,remount /system

Мягкая перезагрузка:

$ setprop ctl.restart zygote

Перевод смартфона в режим энергосбережения Doze (Android M+):

$ dumpsys battery unplug
$ dumpsys deviceidle step

…повторяем действия, пока не увидим idle.

Батарейка в процентах (Android 4.4+):

$ content insert –uri content://settings/system –bind name:s:status_bar_show_battery_percent –bind value:i:1

Снятие логов

Очень часто, когда для решения проблемы пользователь обращается на форум устройства, там его просят скинуть логи работы телефона или приложения. Отвечают за это две утилиты: logcat и dmesg. Первая позволяет увидеть системные сообщения в реальном времени, а вторая постфактум покажет работу ядра, включая сообщения ошибок ввода-вывода, загрузку драйверов, подключение USB-устройств и так далее. Полный лог можно вывести сразу в файл следующей командой:

adb logcat > logcat.txt

Все события будут записываться непрерывно по мере работы устройства. Остановить запись можно стандартной комбинацией Ctrl + C. Однако в лог попадает вся информация, что сильно затрудняет поиск нужной. Поэтому для работы обычно используют набор ключей и фильтров, подходящих к конкретной ситуации. Существует семь приоритетов сообщений по мере возрастания: V — Verbose, D — Debug, I — Info, W — Warning, E — Error, F — Fatal, S — Silent. Например, для вывода всех сообщений с приоритетом Е и выше следует ввести:

adb logcat *:E

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

adb logcat -b events
Вывод команды adb logcat -b eventsВывод команды adb logcat -b events

Продвинутый уровень

В одной из своих статей я показывал, как можно доставать информацию из баз данных различных приложений. Ну а теперь посмотрим, как проделать это прямо из консоли, не качая базы на комп и не устанавливая на устройство просмотрщики баз. Для этого используется команда sqlite3. Выведем на экран историю браузера Chrome:

$ cd /data/data/com.android.chrome
$ su
# sqlite3 app_chrome/Default/History
> .schema urls
> select * from urls where url like “%android%”;

Чтобы база читалась, необходимо выгрузить браузер из работающих приложений. Прервать выполнение скрипта sqlite можно, нажав Ctrl + Z, а выйти — командой .quit. Если в ответ на команду ты получишь ошибку /system/bin/sh: sqlite3: not found, значит, на смартфоне нет sqlite3 и ее придется скачать, закинуть в /system/bin и дать файлу все права. Я использую sqlite3, который вытащил когда-то из Titanium Backup.

История браузера ChromeИстория браузера Chrome

Также с помощью sqlite3 можно выдернуть все контакты с телефона. Для этого в консоли на компе должен использоваться шрифт Lucida Console и перед началом выполнения команд необходимо перевести кодировку на UTF-8. Иначе вместо русских букв будут отображаться непонятные символы. Сами команды выглядят так:

chcp 65001
adb shell
$ su
# cd /data/data/com.android.providers.contacts/databases
# sqlite3 contacts2.db
> select t1.raw_contact_id,t1.normalized_number,t2.display_name from phone_lookup as t1, raw_contacts as t2 where t1.raw_contact_id=t2._id Order by display_name;

Если все сделано правильно, то в консоли ты увидишь таблицу с порядковым номером записи, номером телефона и контактами, отсортированными по имени. Для контактов с более одного номера будет несколько записей подряд.

Вывод контактов из базы contacts2.dbВывод контактов из базы contacts2.db

Можно вывести данные не на экран, а сразу в текстовый файл. Для этого команды нужно изменить:

adb shell
$ su
# cd /data/data/com.android.providers.contacts/databases
# sqlite3 contacts2.db “select t1.raw_contact_id,t1.normalized_number,t2.display_name from phone_lookup as t1, raw_contacts as t2 where t1.raw_contact_id=t2._id;” > /sdcard/contacts.txt

Альтернативный способ вывода контактов в файл — команда, требующая установленного BusyBox:

content query –uri content://contacts/phones –projection number:name –sort “name ASC”| awk -F= ‘{gsub(/[-() name]/,””,$2);print $2″ “$3}’| sed ‘s/,//g’ >/sdcard/contacts.txt

Снятие графического ключа, PIN, facelock

Допустим, ты забыл PIN или не совсем трезвым поставил графический ключ, ну или друзья пошутили и поставили распознавание по лицу… Так вот, если устройство по какой-то причине заблокировано, то блокировку можно снять (при условии включенной отладки по USB) через ту же консоль:

adb shell
$ su
# cd /data/system
# rm *.key

Команда удалит все пароли и графические ключи. Сами файлы в зависимости от прошивки и модели устройства могут быть: gesture.key, password.key, cm_gesture.key, personalpattern.key, personalbackuppin.key. Также за блокировку отвечают файлы locksettings.db, locksettings.db-shm, locksettings.db-wal.

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

adb shell
$ cd /data/data/com.android.providers.settings/databases
$ sqlite3 settings.db
> update system set value=0 where name=’lock_pattern_autolock’;
> update system set value=0 where name=’lockscreen.lockedoutpermanently’;

Выводы

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

Источник