重定向’time’命令的输出到文件

4次阅读
没有评论

问题描述

在尝试将 time 命令的输出重定向到文件时遇到了问题。具体来说,在使用 adb shell su 来提升权限时,命令执行失败。而在不使用 su 的情况下,同样的命令可以成功执行。

解决方案

方案1

注意:此方案适用于大多数情况,但在某些环境中可能无法正常工作,请先备份重要数据。

使用 sh -c 来执行命令

由于 adb shellsu 在处理参数和 I/O 流方面存在不一致的行为,推荐使用 sh -c 来执行命令,以确保命令被正确解析。以下是具体步骤:

  1. 创建命令字符串:将 time 命令及其输出重定向的部分放入一个字符串中。
  2. 使用 adb shellsu -c 执行命令:使用 adb shell 连接到设备,并使用 su -c 来执行包含 time 命令的字符串。
adb shell 'su -c "time -p echo hello world > /data/local/tmp/file"'

示例说明

上述命令中,su -c 用于执行括号内的命令字符串。time -p echo hello world 会输出 hello world 并记录时间,结果会被重定向到 /data/local/tmp/file 文件中。

方案2

请谨慎使用,此方案可能在某些特定环境下不可行。

使用 sh -c 直接执行命令

如果 su -c 仍然无法解决问题,可以尝试直接使用 sh -c 来执行命令,如下所示:

adb shell 'sh -c "time -p echo hello world > /data/local/tmp/file"'

示例说明

此方法与方案1类似,但是直接使用 sh -c 来执行命令字符串。这种方式确保了命令的正确解析和执行。

方案3

请谨慎使用,此方案可能在某些特定环境下不可行。

使用分步执行命令

如果上述方法仍然无效,可以考虑分步执行命令,先使用 adb shell 连接到设备,然后在交互模式下手动执行命令。

  1. 连接到设备:使用 adb shell 连接到设备。
  2. 切换到 root 用户:执行 su 命令切换到 root 用户。
  3. 执行 time 命令:在 root 用户下执行 time 命令并重定向输出。
adb shell
su
time -p echo hello world > /data/local/tmp/file

示例说明

这种方法避免了 adb shellsu 在参数处理上的问题,但需要手动操作。

总结

以上三种方法均适用于解决 time 命令输出重定向的问题。建议优先尝试方案1,如果不行再尝试方案2和方案3。在实际操作过程中,请确保设备和环境配置正确,并做好数据备份。

正文完