与adb shell一起使用时,会混淆xargs的行为

时间:2017-04-28 08:51:24

标签: linux grep xargs

我对以下xargs行为感到困惑。

1此命令有效。

$ 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"/>

2此命令也有效。

$ 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 --

3此命令不起作用。

$ 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

4其他信息。

$ 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来自哪里。

1 个答案:

答案 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