寻求有关如何在 ADB 命令行中转义“&”的帮助——任何指导将不胜感激!
我正在尝试从运行 B&N Nook 应用程序的 Android 平板电脑中提取 .epub 图书文件。NOOK 应用程序将电子书文件存储在“/data/data/bn.ereader/files/B&N Downloads/Books”中 “B&N Downloads”字符串导致 ADB shell 命令出现问题。我尝试通过以下方式转义“&”和“空格”......
$ ./adb shell cd ./data/data/bn.ereader/files/B&N Downloads/Books(原始命令)
$ ./adb shell cd ./data/data/bn.ereader/files/B\&N\ Downloads/书籍
$ ./adb shell cd ./data/data/bn.ereader/files/'B&N Downloads'/Books
$ ./adb shell cd './data/data/bn.ereader/files/B&N Downloads/Books'
$ ./adb shell cd ./data/data/bn.ereader/files/"B&N Downloads"/Books
$ ./adb shell cd ./data/data/bn.ereader/files/B^&N^ Downloads/Books
(即最后来自另一个答案的建议:Trying to give "&" as part of adb shell input text )
总是导致相同的错误...
/system/bin/sh: N: 未找到
/system/bin/sh: cd: /data/data/bn.ereader/files/B: 没有那个文件或目录
ADB电脑:
MacBookPro 9,2(2012年中)
系统版本:macOS 10.14.6(18G9323)“Mojave”
内核版本:Darwin 18.7.0。
目标 Android 设备:
B&N Nook HD+(运行 CyanogenMod)
Android 版本:7.1.1
内核版本:3.0.101 (dmaces@gc-xenial #1)内部版本
号:cm_ovation-userdebug 7.1.1 NMF26Q 161222 测试密钥
还在 Lenovo Tab M10 Plus 3rd Gen 上尝试了这个,结果相同:
Android 版本:12
内核版本:4.14.186-ga2e751134649内部版本
号:TB125FU_S000118_220927_ROW
[注意:我已经通过简单地在问题“B&N Downloads”文件夹上方执行整个该死的目录树的“拉”来完成我的原始任务,但是如何转义“&”的问题仍然存在]
看到帖子 adb shell input text does not take &ersand character。
接受的答案是这样说的:
另一个答案是:
hello1"&"hello2
。还有一个答案是这样说的:
此问题的解决方案由@davidgo 作为评论发布...
双重转义 & 字符 - 即 \\\& 因此单个转义 & 被传递到 shell,在那里它被转义。因此命令是:
./adb shell cd ./data/data/bn.ereader/files/B\\\&N\\\ Downloads/Books
太棒了!
我发现的备选 #2 是:
$ ./adb shell(将控制台置于 Android 设备上的 shell 模式)
# cd data/data/bn.ereader/files/B\&N\ Downloads/Books/
替代方案 #2 的一个好处是 Android 上的选项卡自动完成功能现在也可以使用。注意:Android shell 模式中的任何错误似乎都会中止该模式并将控制台控制返回给客户端。