我对以下xargs行为感到困惑。
$ adb shell 'find /system/etc/permissions/ | xargs grep gid=\"system\"'
/system/etc/permissions/com.qualcomm.location.xml: <group gid="system" />
/system/etc/permissions/platform.xml: <group gid="system"/>
/system/etc/permissions/platform.xml: <group gid="system"/>
$ adb shell 'grep -B 4 gid=\"system\" /system/etc/permissions/*'
/system/etc/permissions/com.qualcomm.location.xml-<permission name="com.qualcomm.permission.IZAT" >
/system/etc/permissions/com.qualcomm.location.xml- <group gid="gps" />
/system/etc/permissions/com.qualcomm.location.xml- <group gid="net_raw" />
/system/etc/permissions/com.qualcomm.location.xml- <group gid="net_admin" />
/system/etc/permissions/com.qualcomm.location.xml: <group gid="system" />
-- snip -- snip --
$ adb shell 'find /system/etc/permissions/ | xargs grep -C 4 gid=\"system\"'
usage: grep [-EFivwcloqsHbhn] [-m MAX] [-e REGEX]... [-f REGFILE] [FILE]...
-- snip -- snip --
grep: Unknown option C
$ adb shell 'grep'
usage: grep [-abcDEFGHhIiJLlmnOoPqRSsUVvwxZz] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[pattern] [file ...]
问题1:为什么#3命令不起作用?我错过了什么?也许我不理解xargs的行为。
问题2:根据用法输出,有两个grep命令吗?哪一个是#3 grep,与xargs一起使用?
提前致谢。
问题1解决了。使用/system/bin/grep
代替grep
可以正常工作。但我仍然不知道#3 grep来自哪里。
答案 0 :(得分:3)
仔细看看
usage: grep [-abcDEFGHhIiJLlmnOoPqRSsUVvwxZz] [-A num] [-B num] [-C[num]]
看起来-C
不允许空白,与-A
和-B
不同。尝试
adb shell 'find /system/etc/permissions/ | xargs grep -C4 gid=\"system\"'
测试这个假设。如果这不能解决问题,请尝试使用--context=4
代替-C 4
。