【问题标题】:How to remove all symlinks to a specified file with an android/busybox shell command? [closed]如何使用 android/busybox shell 命令删除指向指定文件的所有符号链接? [关闭]
【发布时间】:2013-10-13 05:49:34
【问题描述】:

我想在我的安卓手机上删除/system/bin/目录中所有指向/system/bin/toolbox的符号链接,其他的符号链接应该保留。

即删除cat -> toolboxdf -> toolbox等,保留mount -> busybox

如何编写命令? (我已经安装了busybox。)

提前致谢!

【问题讨论】:

  • 你知道如何使用adb shell吗?
  • 是的,我可以在电脑上的 adb shell 或手机上的 android 终端模拟器中输入命令。我只是不知道哪个命令可以完成这项任务。也许“找到”? @btse

标签: android linux command


【解决方案1】:

喂,

在 bash shell 中,您在阅读完这篇文章后会想要运行以下命令:

#find / -type l -exec unlink {} +

此命令将搜索根文件系统(更改为搜索路径的路径)并定位符号链接(由 -type l 标识)。一旦找到符号链接,它将使用 --exec 参数运行命令。在这种情况下,该命令是取消链接的,并且文件路径被替换为该命令中出现 {} 的位置。该命令以加号结束。

此命令具有破坏性,仅应在您理解该命令并且这是您想要的意图时运行,但是在当前状态下,此命令可能会使任何 Linux 系统无法启动,因为 Linux 通常依赖于符号链接。

【讨论】:

  • 谢谢。我用/system/bin替换了/,但似乎unlink只接受one参数,所以这不起作用...find /system/bin -type l -exec unlink {} ;find /system/bin -type l -exec rm {} +find /system/bin -type l -delete 都可以。
  • 我正在寻找一个可以删除所有符号链接到 toolbox 的命令,例如cat -> toolboxdf -> boolbox。应保留其他符号链接,例如mount -> busybox.
  • 查找指向某个目录的符号链接将变得更加困难,因为没有基于符号链接指向的位置进行搜索的 find 选项(据我所知)。您希望这是使用 -exec ls -l {} 然后使用 awk 解析出链接位置和目标,然后使用 awk 脚本查看目标是否匹配。如果它确实打印出链接位置并将其传送到 xargs 以取消链接/删除。
  • 请注意,bash 在相关设备上不可用。
  • 似乎更难...我最初的目标是用busybox 替换toolbox,并且我找到了使用环境变量$PATH 的更好解决方案。感谢您的帮助:)@CitizenKepler
猜你喜欢
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多