由摩根定律引发的思考

Linux中,我们常常需要对一些条件进行判断,而对于多个条件的组合判断是基于摩根定律而进行的。所以理解摩根定律对于我们学习条件判断是很有必要的,下面我们就先介绍摩根定律进而引出其在一些具体场景上的应用。

 

一、摩根定律

Linux中的条件判断中,摩根定律可以以下式来表示:

!( A || B )=!A && !B

!( A && B )=!A || !B

       为了方便理解,我们以下面的图例来进行分析:

摩根定律.png

如上图,我们先来看一下摩根定律等式两边在图中的颜色范围:

!(A || B):我们知道,A || B在图中的颜色范围为黄++绿三种颜色的范围,所以!(A || B)的取值范围就是图中灰色范围;

!A && !B:我们可以看出,!A在图中的颜色范围为灰+绿两种颜色,!B在图中的颜色范围为灰+黄,两者取交集,即为灰色

!(A && B):可以看出,A && B在图中的颜色范围为红色,那么!(A && B)在图中就表示除红色外的所有部分,即++绿三种颜色范围;

!A || !B:我们知道,!A在图中的颜色范围为除黄+红外的所有范围,即灰+绿;!B在图中的颜色范围为除绿+红之外的所有范围,即灰+黄;那么对于!A || !B,取!A!B的并集,即++绿三种颜色范围;

综上,我们对于摩根定律中的两个等式应该能够彻底理解了。

 

二、摩根定律的应用

了解了摩根定律,下面我们来看摩根定律在一些场景下的应用。

Ø  编写一个脚本,当用户给出一个文件时,判断当前用户对此文件是否不可读且不可写;

摩根定律1.PNG

由上图我们可以看到,当我们使用[ ! –r $file –a ! –w $file ]! [ -r $file –o –w $file ]进行判断时,其判断结果相同,即符合摩根定律!( A || B )=!A && !B

Ø  查找系统中没有属主或没有属组的文件

摩根定律2.PNG

由上图我们可以看到,当我们使用-not –user root –o –not –group root-not \( -user root –a –group root \)进行查找时,其结果相同,即符合摩根定律!( A && B )=!A || !B

原创文章,作者:luoliumeng,如若转载,请注明出处:http://www.178linux.com/36002

(0)
luoliumengluoliumeng
上一篇 2016-08-16 13:59
下一篇 2016-08-16 13:59

相关推荐

  • shell脚本

    最近学了shell脚本,自己感觉挺有难度的,今天就简单整理一些shell脚本的练习和作业 练习:    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。#!/bin/bash# ———&#…

    2017-08-05
  • 如何在CentOS上构架一个简易的局域网web服务器

    首先,要取得适用你系统版本的http源码包,这里推荐两个网站: httpd.apache.org www.kernel.org 根据自己系统的版本下载相应的源码包; CentOS7 下载 httpd-2.4.25.tar CentOS6 下载 httpd-2.2.32.tar 以CentOS 6 示例: 首先,我们先来为http…

    2017-03-09
  • select和case用法

    一、作业 1、斐波那契数列又称黄金分割数列,因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2) 写一个函数,求n阶斐波那契数列 2、汉诺塔(又称河内塔)问…

    Linux干货 2016-08-21
  • 学而时习之

    1、 Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理类命令 ls, 查看:cat,more,less,tail,head,tac 复制:cp 移动:mv 删除:rm 创建:touch 元数据属性:stat 查看内容类型:file 文本编辑器:nano,vi Linux的文件类型       &…

    Linux干货 2016-09-24
  • 软件包管理

    软件包管理 软件运行和编译 ABI:应用程序二进制接口;直接给编译好的二进制使用; windows与linux不兼容, windows: ELF linux: PE 库级别的虚拟化: linux:WINE windows:Cywin API:定义了和库之间的接口;编写应用程序时调用的函数之类的; 编译程序源代码(.c) –> 预编译(.i)…

    Linux干货 2017-04-21
  • Linux高级文件系统管理之磁盘配额、RAID和LVM的使用

    磁盘配额Quota 磁盘配额(Quota)的作用:   在Linux系统中,由于是多用户、多任务的环境,所以会有多用户共同使用一个硬盘空间的情况发生,如果其中有少数几个用户大量占掉了硬盘空间的话,那肯定影响其他用户的使用权限。因此管理员应该适当限制硬盘的空间给用户,以妥善分配系统资源。 磁盘配额的一般用途    比较常使用的几种…

    Linux干货 2016-09-02

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-19 08:48

    摩根定律是我们理解查找关系中的与或非是至关重要的,摩根定律只是find命令的一部分,对我们理解-/perm选项来说是很重要的,只有理清了find摩根定律,我们才能深刻理解权限查找中的与或非。