Как запустить команду оболочки adb и остаться в оболочке? - PullRequest
10 голосов
/ 21 февраля 2012

Кто-нибудь знает, как запускать команды из оболочки adb и оставаться в сеансе оболочки? Я пытаюсь установить псевдонимы в оболочке adb.

Я попробовал следующее безуспешно

adb shell <<< "ls"

После выполнения этой команды действительно остается в оболочке, но не может получить вывод какой-либо дальнейшей команды.

Я также попробовал следующее:

adb shell <<EOF
ls
EOF

с тем же результатом.

Ответы [ 3 ]

15 голосов
/ 04 апреля 2012

Когда вы запускаете:

adb shell ls

Вы выполняете эту команду в настоящее время вне ADB.

Сначала вам нужно ввести ADB:

adb shell

После входа в оболочку ADB вы можете продолжать видеть вывод и вводить дополнительные команды.

ls
help

КомуДля выхода из ADB просто введите «выход» или нажмите «Ctrl + C»

4 голосов

expect решение

adb-cmd:

#!/usr/bin/env expect
spawn adb shell
expect "#"
send [ concat [ join $argv " " ] ]
send "\r"
interact

Использование:

adb-cmd 'cd /data/data; ls'

Протестировано на хосте Ubuntu 16.04, AndroidО гость.

2 голосов
/ 08 июня 2016

Был ответ на аналогичный вопрос в комментариях здесь .

Короче, запустите следующее с вашего терминала:

stty raw -echo ; ( echo "ls" && cat ) | adb shell ; stty sane

Примечание: без магии stty команда передается на adb и вкладка завершена и т. Д. Не распознается.

...