我如何在Android文件系统上模拟文件的“tail”命令?

时间:2010-06-02 11:03:24

标签: android adb

我在SD-CARD和我的应用程序上使用它作为日志文件。 是否可以通过adb实时查看所有更改的文件? 与tail -f /sdcard/myfile.log命令一样。

5 个答案:

答案 0 :(得分:7)

这似乎对我有用:

adb shell "while true; do cat; sleep 1; done < /sdcard/myfile.log"

答案 1 :(得分:1)

您可以使用logcat执行此操作。您可以添加一个仅显示应用程序日志条目的视图,并且该视图将不断更新。

答案 2 :(得分:1)

您可以安装busybox,然后安装:

adb shell
tail -f /path/of/your/file

但请记住,您应具有root权限才能安装busybox。如果您使用模拟器,请检查以下内容: How to get root access on Android emulator?

答案 3 :(得分:0)

有一个很棒的应用程序:Terminal IDE。它包含许多linux命令,并且不需要root访问权限。您可以从GooglePlay安装它。是免费的(和开源,GPLv2)。

其最佳功能之一是可以通过telnet使用它。在手机上启动它,然后输入telnetd命令。它将启动一个telnet守护进程,默认情况下侦听端口8080。 之后,您可以使用以下命令从PC连接它:(在Windows上使用cygwin)

telnet 192.168.1.8 8080

您应该使用手机的IP地址而不是上述地址。连接成功后,您的PC上将有一个任意大小的终端,可以在您的手机上运行tail -f命令。以及许多其他内容,例如bash及其所有内置命令。

答案 4 :(得分:0)

以Jesse的答案为基础,对应用程序专用存储区域中的文件执行类似操作:

adb shell "while true; do run-as com.yourdomain.yourapp cat /data/data/com.yourdomain.yourapp/app_flutter/yourfile.txt; sleep 5; done" | egrep -o 'sometext.{0,50}'

(此示例适用于Android上的flutter应用程序,但与app_flutter目录类似。)

do run-as将在其下运行命令的用户更改为应用程序。默认情况下,adb shell用户不应访问应用程序专用存储区下的任何文件。

| egrep -o 'sometext.{0,50}' cat命令将文件内容发送到STDOUT。 egrep正在获取内容并使用正则表达式搜索-o(仅)sometext + 50个字符(因此,egrep代替了grep)。

仅最后一行

cat替换为tail -n 1

--line-buffered添加到egrep

adb shell "while true; do run-as com.yourdomain.yourapp tail -n 1 /data/data/com.yourdomain.yourapp/app_flutter/yourfile.txt; sleep 5; done" | egrep --line-buffered -o 'sometext.{0,50}'