在RHEL 7上使用bash shell-为什么不使用-exec时查找更多文件?

咆哮科技

我正在寻找所有setuid / setgid文件。当我不使用时-exec,它会按预期工作:

# find /usr/bin -type f -perm -4000 -o -perm -2000 
/usr/bin/wall
/usr/bin/ksu
/usr/bin/chage
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/fusermount
/usr/bin/passwd
/usr/bin/write
/usr/bin/su
/usr/bin/umount
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/mount
/usr/bin/pkexec
/usr/bin/crontab
/usr/bin/cgclassify
/usr/bin/cgexec
/usr/bin/ssh-agent
/usr/bin/Xorg
/usr/bin/at
/usr/bin/sudo
/usr/bin/locate
/usr/bin/staprun

当我使用时-exec,我只会得到一部分结果:

# find /usr/bin -type f -perm -4000 -o -perm -2000 -exec ls -l {} \;
-r-xr-sr-x. 1 root tty 15344 Jan 27  2014 /usr/bin/wall
-rwxr-sr-x. 1 root tty 19536 Aug 21  2015 /usr/bin/write
-rwxr-sr-x. 1 root cgred 15624 Sep 21  2014 /usr/bin/cgclassify
-rwxr-sr-x. 1 root cgred 15584 Sep 21  2014 /usr/bin/cgexec
---x--s--x. 1 root nobody 306304 Sep 24  2015 /usr/bin/ssh-agent
-rwx--s--x. 1 root slocate 40504 Jan 26  2014 /usr/bin/locate

为什么?

查尔斯·达菲

您仅-exec在的右侧使用-o因此,它像这样被解析:

# What's actually happening
find /usr/bin '(' -type f -perm -4000 ')' -o '(' -perm -2000 -exec ls -l {} \; ')'

显然,这不是您想要的。


为了使其适用于条件的两端,请添加一些括号以进行分组:

# What you want to happen
find /usr/bin -type f '(' -perm -4000 -o -perm -2000 ')' -exec ls -l {} +

其原因是,如果你没有指定明确的动作,find 假定一个-print作为默认操作。当您自己添加操作时,它将关闭该默认设置,因此只有您明确为其指定操作的项目才会获得一个默认值。

也就是说:

# These commands are all equivalent:
find /usr/bin -type f -perm -4000 -o -perm -2000
find /usr/bin '(' -type f -perm -4000 -o -perm -2000 ')' -print
find /usr/bin '(' '(' -type f -perm -4000 ')' -o '(' -perm -2000 ')' ')' -print

请注意,最后一个暴露了默认行为的警告:您可能希望将-type f应用于的两侧-o,但如果没有显式分组,则将其放在左侧,就像显式-execprint放在右侧一样。

这个故事的寓意:-o在find中使用时,除非您非常确定默认行为是您想要的,否则请明确说明您的分组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在RHEL上登录时将shell切换为bash

来自分类Dev

为什么不使用shell_exec而不是使用输出缓冲将文件“包含”到变量中?

来自分类Dev

如何使用Shell将域附加到RHEL7?

来自分类Dev

为什么在awk中不使用shell变量?

来自分类Dev

为什么不使用查找优化?

来自分类Dev

为什么不使用查找优化?

来自分类Dev

OSX:为什么在终端中手动编写退出而不使用从终端运行的shell脚本时退出工作?

来自分类Dev

Shell脚本使用bash运行,但不使用sh运行。为什么以及如何解决?

来自分类Dev

JVM为什么不使用更多的堆内存

来自分类Dev

为什么在使用class-transformer时不使用enableImplicitConversion?

来自分类Dev

为什么在使用 ContentStringFormat 时不使用 AccessText?

来自分类Dev

为什么某些Linux Shell脚本使用exec运行命令?

来自分类Dev

为什么不使用“ sudo”捆绑安装时出现错误?

来自分类Dev

当不使用常量时,为什么没有警告或提示?

来自分类Dev

为什么在创建DataTable对象时不使用new?

来自分类Dev

为什么在访问动态数组的值时不使用(*)?

来自分类Dev

为什么在启动时不使用/ etc / fstab?

来自分类Dev

为什么不使用fread读取目录文件?

来自分类Dev

为什么不使用Node.js下载文件?

来自分类Dev

为什么从不使用交换文件?

来自分类Dev

为什么在XPath中不使用前缀时NamespaceManager不使用DefaultNamespace

来自分类Dev

为什么JavaScript Promises有时既不使用.catch也不使用.then?

来自分类Dev

为什么JavaScript Promises有时既不使用.catch也不使用.then?

来自分类Dev

在 RHEL 7 上为 /var/lib/docker 使用 Isilon NFS

来自分类Dev

当ksh是shell时使用bash

来自分类Dev

为什么不使用setXXXSize()?

来自分类Dev

为什么不使用@messages?

来自分类Dev

为什么不使用UASP

来自分类Dev

为什么在指定-b时不使用settings.gradle文件?

Related 相关文章

  1. 1

    在RHEL上登录时将shell切换为bash

  2. 2

    为什么不使用shell_exec而不是使用输出缓冲将文件“包含”到变量中?

  3. 3

    如何使用Shell将域附加到RHEL7?

  4. 4

    为什么在awk中不使用shell变量?

  5. 5

    为什么不使用查找优化?

  6. 6

    为什么不使用查找优化?

  7. 7

    OSX:为什么在终端中手动编写退出而不使用从终端运行的shell脚本时退出工作?

  8. 8

    Shell脚本使用bash运行,但不使用sh运行。为什么以及如何解决?

  9. 9

    JVM为什么不使用更多的堆内存

  10. 10

    为什么在使用class-transformer时不使用enableImplicitConversion?

  11. 11

    为什么在使用 ContentStringFormat 时不使用 AccessText?

  12. 12

    为什么某些Linux Shell脚本使用exec运行命令?

  13. 13

    为什么不使用“ sudo”捆绑安装时出现错误?

  14. 14

    当不使用常量时,为什么没有警告或提示?

  15. 15

    为什么在创建DataTable对象时不使用new?

  16. 16

    为什么在访问动态数组的值时不使用(*)?

  17. 17

    为什么在启动时不使用/ etc / fstab?

  18. 18

    为什么不使用fread读取目录文件?

  19. 19

    为什么不使用Node.js下载文件?

  20. 20

    为什么从不使用交换文件?

  21. 21

    为什么在XPath中不使用前缀时NamespaceManager不使用DefaultNamespace

  22. 22

    为什么JavaScript Promises有时既不使用.catch也不使用.then?

  23. 23

    为什么JavaScript Promises有时既不使用.catch也不使用.then?

  24. 24

    在 RHEL 7 上为 /var/lib/docker 使用 Isilon NFS

  25. 25

    当ksh是shell时使用bash

  26. 26

    为什么不使用setXXXSize()?

  27. 27

    为什么不使用@messages?

  28. 28

    为什么不使用UASP

  29. 29

    为什么在指定-b时不使用settings.gradle文件?

热门标签

归档