德·摩根定律让学习liunx的小伙伴绕得头疼,现在我就用洪荒之力为大家理顺一下这个定律。
由图片可以看出,
A=4+3
B=3+2
非A=2+1
非B=4+1
A且B就是代表既是A又是B的地方,A和B都有色块3,所以色块3代表了A且B
同时,我们再看A=4+3 ,B=3+2,我们可以推断出,且运算的结果就是两个算数式中重复的数字。
A且B=3
A或B就是代表可以是A的部分,也可以是B的部分,所以色块2,3,4的和代表了A或B的范围。再看A=4+3,B=3+2,我们可以推断出,或运算的结果就是两个算术式中所有数字相加,重复的数字只加一次。
A或B=2+3+4
非一个色块,就是除了这个色块的其他所有色块之和。非n个色块,就是除了这n个色块的其他色块之和。
例:
非3=1+2+4
由此,我们可以进行以下的运算
(非A)或(非B)=(2+1)或(4+1)=1+2+4
非(A且B)=非(4+3且3+2)=非(3)=1+2+4
(非A)且(非B)=(2+1)且(4+1)=1
非(A或B)=非(4+3或3+2)=非(4+3+2)=1
我们可以得出以下结论:
(非A)或(非B)=非(A且B)
(非A)且(非B)=非(A或B)
下面让我们来做下练习题:
- chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判断当前用户对/tmp/fiile1文件是否不可读且不可写
方法一:
[[email protected] bin]# cat per.sh
#!/bin/bash
[ ! -r /tmp/file1 -a ! -w /tmp/file1 ] && echo "you can‘t read and write /tmp/file1" || echo "you can read or write /tmp/file1 "
方法二:
[[email protected] bin]# cat per2.sh
#!/bin/bash
! [ -r /tmp/file1 -o -w /tmp/file1 ] && echo "you can‘t read and write /tmp/file1" || echo "you can read or write /tmp/file1 "
红色标记处为两条语句中不同的地方,但两者的功能是相同的。