【发布时间】:2012-03-12 02:28:04
【问题描述】:
有谁知道如何从 adb shell 运行命令并保持在 shell 会话中? 我想要实现的是在 adb shell 中设置别名。
我尝试了以下但没有成功
adb shell <<< "ls"
执行此命令后确实保留在 shell 中,但无法接收任何进一步命令的输出。
我还尝试了以下方法:
adb shell <<EOF
ls
EOF
结果相同。
【问题讨论】:
有谁知道如何从 adb shell 运行命令并保持在 shell 会话中? 我想要实现的是在 adb shell 中设置别名。
我尝试了以下但没有成功
adb shell <<< "ls"
执行此命令后确实保留在 shell 中,但无法接收任何进一步命令的输出。
我还尝试了以下方法:
adb shell <<EOF
ls
EOF
结果相同。
【问题讨论】:
expect解决方案
这将运行命令,并自动将您留在 ADB shell 中。
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 O 客户机中测试。
【讨论】:
adb 的一个相当新的用户,这救了我的理智!
当你运行时:
adb shell ls
您当前正在 ADB 之外运行此命令。
首先需要进入ADB:
adb shell
进入 ADB shell 后,可以继续看到输出并输入更多命令。
ls
help
要退出 ADB,只需键入“exit”或按“Ctrl + C”
【讨论】:
cmetshere也有类似的问题回答。
简而言之,从终端运行以下命令:
stty raw -echo ; ( echo "ls" && cat ) | adb shell ; stty sane
注意:如果没有stty 魔法,命令将通过管道传送到adb,并且无法识别制表符完成等。
【讨论】: