在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.www58058.com/36002
摩根定律是我們理解查找關系中的與或非是至關重要的,摩根定律只是find命令的一部分,對我們理解-/perm選項來說是很重要的,只有理清了find摩根定律,我們才能深刻理解權限查找中的與或非。