路径中包含空格时,adb命令无法执行

5

我正在尝试使用adb命令删除文件。但是该文件包含空格。因此,在读取文件名一半的空格后,adb命令会抛出错误。是否有方法可以解决这个问题?我正在执行以下adb命令:

当我执行如下命令时:

adb shell rm /sdcard/samsung_Nexus S_converter.xml

错误信息:删除 /sdcard/samsung_Nexus 失败,没有这个文件或目录。
但是当我执行以下命令时:
adb shell rm /sdcard/samsung_Nexus_S_converter.xml

文件删除成功。

我搜索了解决该问题的方法,但是我没有找到任何解决方案。

3个回答

6

由于您正在使用命令行,需要知道空格必须通过使用(反斜杠在特殊字符前面,例如“空格”)进行转义,所以在您的情况下,这也应该可以工作:

adb shell rm /sdcard/samsung_Nexus\ S_converter.xml

希望能有所帮助!

祝好!


太棒了。我错过了那个。现在它对我起作用了。非常感谢!我以为这是特定于adb的。 - Venkatesh
如果这个回答有帮助,请不要忘记将其标记为正确答案,这样其他人就会花时间来回答你的问题... - Martin Cazares
我正在尝试接受答案。但是我只能在提问后15分钟才能接受答案。请给我5分钟,我会处理的。感谢您指出这一点。 - Venkatesh

6

对于我来说,仅使用反斜杠转义空格是不够的:

$ adb shell ls /storage/sdcard1/audio/Die\ Toten\ Hosen/
/storage/sdcard1/audio/Die: No such file or directory
Toten: No such file or directory
Hosen/: No such file or directory        

出于某种原因,我还必须用单引号 ' 包围路径:

$ adb shell ls '/storage/sdcard1/audio/Die\ Toten\ Hosen/'                                                                                                                       
03 - Boxed Set                                                                                                                                                                                                     
04 - Compilations                                                                                                                                                                                                  
05 - Live Albums                             

虽然不使用转义符包围也无法实现:

$ adb shell ls '/storage/sdcard1/audio/Die Toten Hosen'                                                                                                                       
/storage/sdcard1/audio/Die: No such file or directory                                                                                                                                                              
Toten: No such file or directory                                                                                                                                                                                   
Hosen: No such file or directory      

+1,但为什么呢?我想到的是引用只存在于工作机器上,而客户端上的转义字符。 - Mab
好的,我认为我是正确的 adb shell ls "'/storage/sdcard1/audio/Die Toten Hosen'" 也可以工作。 - Mab
@Mab 现在我觉得很合理,我必须将路径括起来,因为它不是本地文件系统上的路径。在本地文件系统上进行转义就足够了,但是该路径作为参数传递给 adb 命令。如果没有括起来,adb 会将其视为3个参数,因为存在空格。 - ka3ak

1

你尝试过转义空格吗?

adb shell rm /sdcard/samsung_Nexus\ S_converter.xml


太棒了。我错过了那个。现在它对我起作用了。非常感谢!我以为这是特定于adb的。 - Venkatesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接