發(fā)布時(shí)間:2021-12-29 16:00:51來(lái)源:轉(zhuǎn)載
大多數(shù)初學(xué)者在剛剛接觸Linux都會(huì)有非常陌生的感覺(jué)。往往會(huì)有一些疑惑和問(wèn)題。而我們就沿著這些問(wèn)題,從遠(yuǎn)及近,從宏觀到微觀來(lái)理解Linux的簡(jiǎn)潔和美麗。
Winows有注冊(cè)表,為什么Linux沒(méi)有注冊(cè)表
注冊(cè)表是Windows核心組件,對(duì)整個(gè)系統(tǒng)進(jìn)行配置。Linux是以整個(gè)文件系統(tǒng)作為"注冊(cè)表“,Windows注冊(cè)表的樹形結(jié)構(gòu),可以粗略的對(duì)應(yīng)Linux文件系統(tǒng)的樹形結(jié)構(gòu)。
Linux的配置文件就相當(dāng)于注冊(cè)表的鍵,或者說(shuō)Linux采用是的分布式的注冊(cè)表。
那么Linux為什么要這樣設(shè)計(jì)呢?因?yàn)長(zhǎng)inux是所謂的網(wǎng)絡(luò)操作系統(tǒng),所以單臺(tái)電腦不是Linux的界限,如果是多臺(tái)電腦組成的系統(tǒng),那么分布式的管理就有著巨大的優(yōu)勢(shì)。
例如:一個(gè)包含配置文件的磁盤的損害不會(huì)讓整個(gè)系統(tǒng)癱瘓,而可能只是讓部分功能失效。
Windows有完善的圖形界面,而Linux為什么要學(xué)命令行
首先,命令行要比圖形界面先進(jìn)的多。命令行是程序員的第一界面,而圖形界面是普通用戶的第一界面。
也許很多人會(huì)有不同意見(jiàn),其實(shí)我們?cè)傧蚯跋胍徊?,就很清楚了?/p>
命令行的下一步演化是什么?很簡(jiǎn)單就是語(yǔ)音控制,就是把人類自然語(yǔ)言轉(zhuǎn)化為命令
圖形界面的的下一步演化是什么?是姿勢(shì)控制。從目前的Windows系統(tǒng)來(lái)說(shuō)一共只有3種姿勢(shì),單擊,雙擊,拖放。而更先進(jìn)的IPad有撥動(dòng),畫圈等。
姿勢(shì)控制很簡(jiǎn)單,便于用戶上手,語(yǔ)音控制很復(fù)雜,但是控制精度很高。
作為程序員我們要求電腦完成的工作要比普通用戶復(fù)雜的多,所以使用命令行會(huì)非常。
退一步講,圖形界面本質(zhì)也是命令行,只不過(guò)將姿勢(shì)翻譯成命令執(zhí)行而已。
程序員編程的代碼也都是“命令行”,一條一條的指令而已。
總之,只要能打破對(duì)Linux命令行的恐懼感,接下來(lái)的事就會(huì)非常容易了。這個(gè)命令行不是你簡(jiǎn)單想像中的命令行,它是非常智能化的。
Linux有那么多目錄,那么多命令,怎么記得住呢?
首先,Linux目錄是Linux系統(tǒng)較靈魂的東西,所有的硬件都可以被抽象為文件,從而實(shí)現(xiàn)網(wǎng)絡(luò)化。(Internet只不過(guò)是Unix/Linux的進(jìn)一步的演化而已)
所以只要掌握了Linux目錄的規(guī)律,在理解的基礎(chǔ)上記憶就可以容易的多。另外Linux的命令行有智能化功能,可以讓你少打95%以上的字符來(lái)完成命令。
絕非你所想象的傻乎乎的敲一大堆命令,那些用Linux大牛都是絕頂聰明的人,怎么可能讓自己辛苦呢?
Linux的文件夾結(jié)構(gòu)看上去很復(fù)雜,怎么理解呢?
我們這里假設(shè),我們就是設(shè)計(jì)者,如果我們?cè)O(shè)計(jì)一個(gè)文件系統(tǒng),我們會(huì)如何去做呢?
我們需要一個(gè)起點(diǎn),這個(gè)起點(diǎn)就叫根目錄,用“/”來(lái)表示,然后我們需要啟動(dòng)Linux,那么我們就會(huì)把所有核心的啟動(dòng)文件(包括Linux核心本身)都放到一個(gè)“/boot"目錄下。
當(dāng)系統(tǒng)啟動(dòng)后,我們需要執(zhí)行一些基本命令在操作系統(tǒng),這些命令都會(huì)放到“/bin"目錄下。然后這些命令可能會(huì)用到一些庫(kù),這些庫(kù)就被放到“/lib"下面,而這些庫(kù)可能會(huì)會(huì)用到一些設(shè)備驅(qū)動(dòng)文件,
那么這些驅(qū)動(dòng)文件就會(huì)放到“/dev"目錄下。
/:根目錄
/boot:系統(tǒng)啟動(dòng)和內(nèi)核
/bin:系統(tǒng)基本命令(bin是binary的縮寫)
/lib:系統(tǒng)庫(kù)(不能直接運(yùn)行的代碼)(lib是libary的縮寫)
/dev:設(shè)備驅(qū)動(dòng)(dev是device的縮寫)
到目前為止只用5個(gè)目錄,很簡(jiǎn)單吧。
什么是"/usr","/etc"和“/var“
當(dāng)用戶啟動(dòng)系統(tǒng)以后,要做一些更加復(fù)雜的工作,這時(shí)候就會(huì)涉及到一個(gè)叫“/usr",這個(gè)情況稍微有些復(fù)雜,是一個(gè)難點(diǎn)。不過(guò)也很容易解釋清楚。
早期的unix系統(tǒng)都有很多塊硬盤,當(dāng)時(shí)硬盤的容量都很小,所以往往一個(gè)硬盤只放一個(gè)目錄,比如“/boot"可以放在一個(gè)單獨(dú)的"boot"盤上,上面提到的5個(gè)目錄,是系統(tǒng)運(yùn)行必不可少的。
而當(dāng)系統(tǒng)啟動(dòng)以后,我們需要其他一些用于具體工作的程序時(shí),我們就會(huì)加載一個(gè)“/usr"目錄,上面放重要的運(yùn)行程序。
容易引起疑惑的是"usr"這個(gè)名字,在歷,原來(lái)這個(gè)確實(shí)是user的縮寫,不過(guò)現(xiàn)在和user沒(méi)有任何關(guān)系了,你可以把它看成是"universalsoftwareresource"的縮寫。
這個(gè)“/usr"有點(diǎn)類似Windows里面的ProgramFiles。
因此/bin和/usr/bin的區(qū)別,就是/bin里面的程序更加核心
這時(shí)候,很多人會(huì)有疑問(wèn),我們記住哪些命令在/bin還是在/usr/bin呢?
放心,由于所有的bin目錄都會(huì)登記到系統(tǒng)變量PATH里面,因此無(wú)論你在任何當(dāng)前目錄中,只要輸入命令文件的名稱,系統(tǒng)都會(huì)幫你找到這個(gè)命令并運(yùn)行。
要點(diǎn):
1、/usr上面一般都是只讀文件,數(shù)據(jù)文件和配置文件不放在上面(放到哪里,后面會(huì)講)
2,沒(méi)有“/usr",linux系統(tǒng)也能正常運(yùn)行
2、/usr可以被多臺(tái)電腦共享(這里體現(xiàn)Linux系統(tǒng)的網(wǎng)絡(luò)性)
由于/usr只放只讀文件,那么配置文件和數(shù)據(jù)文件放哪里呢?這里就出現(xiàn)了2個(gè)新的目錄“/etc"和“/var"
這里容易初學(xué)者迷惑的就是這個(gè)2個(gè)目錄的名字。
在歷"etc“是“etcetera”,中文意為“其他”,現(xiàn)在這個(gè)和“其他”沒(méi)有任何關(guān)系,就是專門存放配置文件的地方,可以理解為“editabletextconfiguration"的縮寫
比如/etc/mysql就是放mysql的配置文件/ect/apache2/就是apache2的配置文件
在歷“var"是“variable",中文意為“變動(dòng)”,現(xiàn)在主要用來(lái)存放log,lock等文件。
例如/var/mysql就是用來(lái)存放mysql的log
用戶自己產(chǎn)生的數(shù)據(jù)放到哪里?
當(dāng)我們運(yùn)行程序后,會(huì)產(chǎn)生很多自己的成果,這些成果放哪里呢?這里就出現(xiàn)了一個(gè)“/home"目錄,不過(guò)你不能直接放到“/home"目錄下,因?yàn)長(zhǎng)inux是個(gè)多用戶操作系統(tǒng),所以系統(tǒng)會(huì)有一個(gè)以用戶的名字命名的目錄。