在Linux中,我们常常需要对一些条件进行判断,而对于多个条件的组合判断是基于摩根定律而进行的。所以理解摩根定律对于我们学习条件判断是很有必要的,下面我们就先介绍摩根定律进而引出其在一些具体场景上的应用。
一、摩根定律
在Linux中的条件判断中,摩根定律可以以下式来表示:
!( A || B )=!A && !B
!( A && B )=!A || !B
为了方便理解,我们以下面的图例来进行分析:
如上图,我们先来看一下摩根定律等式两边在图中的颜色范围:
!(A || B):我们知道,A || B在图中的颜色范围为黄+红+绿三种颜色的范围,所以!(A || B)的取值范围就是图中灰色范围;
!A && !B:我们可以看出,!A在图中的颜色范围为灰+绿两种颜色,!B在图中的颜色范围为灰+黄,两者取交集,即为灰色;
!(A && B):可以看出,A && B在图中的颜色范围为红色,那么!(A && B)在图中就表示除红色外的所有部分,即灰+黄+绿三种颜色范围;
!A || !B:我们知道,!A在图中的颜色范围为除黄+红外的所有范围,即灰+绿;!B在图中的颜色范围为除绿+红之外的所有范围,即灰+黄;那么对于!A || !B,取!A与!B的并集,即灰+黄+绿三种颜色范围;
综上,我们对于摩根定律中的两个等式应该能够彻底理解了。
二、摩根定律的应用
了解了摩根定律,下面我们来看摩根定律在一些场景下的应用。
Ø 编写一个脚本,当用户给出一个文件时,判断当前用户对此文件是否不可读且不可写;
由上图我们可以看到,当我们使用[ ! –r $file –a ! –w $file ]与! [ -r $file –o –w $file ]进行判断时,其判断结果相同,即符合摩根定律!( A || B )=!A && !B;
Ø 查找系统中没有属主或没有属组的文件
由上图我们可以看到,当我们使用-not –user root –o –not –group root与-not \( -user root –a –group root \)进行查找时,其结果相同,即符合摩根定律!( A && B )=!A || !B;
原创文章,作者:luoliumeng,如若转载,请注明出处:http://www.178linux.com/36002
评论列表(1条)
摩根定律是我们理解查找关系中的与或非是至关重要的,摩根定律只是find命令的一部分,对我们理解-/perm选项来说是很重要的,只有理清了find摩根定律,我们才能深刻理解权限查找中的与或非。