【问题标题】:How to run an adb shell command and remain in the shell?如何运行 adb shell 命令并保留在 shell 中?
【发布时间】:2012-03-12 02:28:04
【问题描述】:

有谁知道如何从 adb shell 运行命令并保持在 shell 会话中? 我想要实现的是在 adb shell 中设置别名。

我尝试了以下但没有成功

adb shell <<< "ls"

执行此命令后确实保留在 shell 中,但无法接收任何进一步命令的输出。

我还尝试了以下方法:

adb shell <<EOF
ls
EOF

结果相同。

【问题讨论】:

    标签: android shell adb


    【解决方案1】:

    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 的一个相当新的用户,这救了我的理智!
    • @TedLyngmo 别担心,Android 迟早会找到消耗你理智的方法! :-)
    【解决方案2】:

    当你运行时:

    adb shell ls
    

    您当前正在 ADB 之外运行此命令。

    首先需要进入ADB:

    adb shell
    

    进入 ADB shell 后,可以继续看到输出并输入更多命令。

    ls
    help
    

    要退出 ADB,只需键入“exit”或按“Ctrl + C”

    【讨论】:

      【解决方案3】:

      cmetshere也有类似的问题回答。

      简而言之,从终端运行以下命令:

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

      注意:如果没有stty 魔法,命令将通过管道传送到adb,并且无法识别制表符完成等。

      【讨论】:

        最近更新 更多