眾所周知,shell是運(yùn)行在Linux系統(tǒng)上的一個(gè)腳本語言,是每個(gè)運(yùn)維人員必須掌握的知識(shí);而我們?cè)谑褂肔inux系統(tǒng)的時(shí)候,必須通過命令來操作,那么shell腳本語言與Linux命令有什么聯(lián)系?它們之間的區(qū)別是什么?這篇文章為大家講解一下。
巴中ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
shell翻譯成殼的意思,它是包裹在Linux內(nèi)核外層的,一個(gè)可通過一系列的Linux命令對(duì)操作系統(tǒng)發(fā)出相關(guān)指令的人機(jī)界面。shell可以通過其條件語句和循環(huán)語句等,把一系列Linux命令結(jié)合在一起,形成一個(gè)相當(dāng)于面向過程的程序,即shell
script,從而實(shí)現(xiàn)一些復(fù)雜的功能。
shell可以說是Linux命令集的概稱,屬于命令行的人機(jī)界面。shell是一個(gè)用C語言編寫的程序,它是用戶使用Linux的橋梁。shell既是一個(gè)命令語言,也是一個(gè)程序設(shè)計(jì)語言;其次,shell也指一種應(yīng)用程序,這個(gè)應(yīng)用程序提供了一個(gè)界面,用戶通過這個(gè)界面訪問操作系統(tǒng)內(nèi)核的服務(wù)。
由此可見,shell相當(dāng)于經(jīng)過裝飾的命令行,它與命令行一樣,都能操作Linux;但是shell是面向過程的,相當(dāng)于有了一定的邏輯和過程,而命令行只是單一的操作。
shell與Linux命令的區(qū)別
1、直接在命令行執(zhí)行,就是在當(dāng)前的shell環(huán)境下執(zhí)行,比如涉及到一些環(huán)境變量的時(shí)候,必須在當(dāng)前shell環(huán)境里執(zhí)行。
2、在腳本執(zhí)行的話,會(huì)fork一個(gè)子進(jìn)程,所有操作都在子進(jìn)程中進(jìn)行。如果涉及到一些在腳本里設(shè)置環(huán)境變量的東西,腳本結(jié)束了,環(huán)境變量就消失了,如果是修改環(huán)境變量的話,需要特別注意。
3、shell可以重復(fù)或批量地進(jìn)行一些命令,你也可以把自己要重復(fù)執(zhí)行的命令寫到腳本里面執(zhí)行,而命令行的話就需要一個(gè)一個(gè)的輸入命令,比較麻煩。
su和sudo都是Linux操作系統(tǒng)里面比較常見的命令,而且sudo命令很多方面類似于su命令,所以有的時(shí)候大家分不清楚它們,那么Linux中su和sudo命令有什么區(qū)別?如果你還不清楚,這篇文章千萬別錯(cuò)過!
定義上的區(qū)別:
su為switch
user,即切換用戶的簡(jiǎn)寫。su是最簡(jiǎn)單的身份切換名,用su我們能夠進(jìn)行不論什么用戶的切換,一般都是su-username,然后輸入password就OK了,可是root用su切換到其他身份的時(shí)候是不需要輸入password的。
sudo是一種權(quán)限管理機(jī)制,依賴于/etc/sudoers,其定義了授權(quán)給哪個(gè)用戶可以以管理員的身份能夠執(zhí)行什么樣的管理命令。
格式上的區(qū)別:
su格式有兩種:su -l USERNAME、su USERNAME。
sudo格式:sudo -u USERNAME COMMAND。
密碼上的區(qū)別:
兩個(gè)命令的最大區(qū)別是:sudo命令需要輸入當(dāng)前用戶的密碼,su命令需要輸入root用戶的密碼。
日志記錄上的區(qū)別:
盡管sudo命令以目標(biāo)用戶的身份執(zhí)行命令,但是它們會(huì)使用sudoer所配置的用戶名來記錄是誰執(zhí)行的命令。而su命令是無法直接跟蹤記錄用戶切換到root用戶之后執(zhí)行了什么操作。
靈活性上的區(qū)別:
sudo命令比su命令靈活很多,甚至可以限制sudo用戶可以訪問哪些命令。換句話來講,用戶通過sudo命令只能訪問他們工作需要的命令,而su命令讓用戶有權(quán)限做任何事情。
Linux命令的cp -r和-R的區(qū)別為:復(fù)制不同、覆蓋不同、識(shí)別依據(jù)不同。
1、復(fù)制不同
-r:既復(fù)制當(dāng)前目錄下的文件,也復(fù)制當(dāng)前目錄下的文件夾。
-R:只復(fù)制當(dāng)前目錄下的文件,不復(fù)制當(dāng)前目錄下的文件夾。
2、覆蓋不同
-r:含文件的文件夾會(huì)覆蓋不含文件的同名文件夾,文件也會(huì)覆蓋。
-R:不會(huì)覆蓋含內(nèi)容的文件夾,但是會(huì)覆蓋同名的空文件。
3、識(shí)別依據(jù)不同
-r:不以文件后綴名作為識(shí)別依據(jù)。
-R:以文件后綴名作為識(shí)別依據(jù)。
linux命令有內(nèi)部命令和外部命令之分。內(nèi)部命令實(shí)際上是shell程序的一部分,其中包含的是一些比較簡(jiǎn)練的linux系統(tǒng)命令,這些命令由shell程序識(shí)別并在shell程序內(nèi)部完成運(yùn)行,通常在linux系統(tǒng)加載運(yùn)行時(shí)shell就被加載并駐留在系統(tǒng)內(nèi)存中。外部命令是linux系統(tǒng)中的實(shí)用程序部分,因?yàn)閷?shí)用程序的功能通常都比較強(qiáng)大,所以它們包含的程序量也會(huì)很大,在系統(tǒng)加載時(shí)并不隨系統(tǒng)一起被加載到內(nèi)存中,而是在需要時(shí)才將其調(diào)進(jìn)內(nèi)存。通常外部命令的實(shí)體并不包含在shell中,但是其命令執(zhí)行過程是由shell 程序控制的。shell程序管理外部命令執(zhí)行的路徑查找、加載存放,并控制命令的執(zhí)行。
1、切換root身份不同
su命令:su只是切換了root身份,但shell環(huán)境仍然是普通用戶的shell;而su-連用戶和shell環(huán)境一切切換成root身份了。只有切換了shell環(huán)境才不會(huì)出現(xiàn)PATH環(huán)境變量錯(cuò)誤,報(bào)command not found的錯(cuò)誤。
su-命令:su切換成root用戶以后,pwd一下,發(fā)現(xiàn)工作目錄仍然是普通用戶的工作目錄;而用su-命令切換以后,工作目錄變成root的工作目錄了。
2、采用su deploy命令后,取目標(biāo)用戶不同
su命令:su不會(huì)讀取目標(biāo)用戶的環(huán)境配置文件。
su-命令:su-讀取目標(biāo)用戶的環(huán)境配置文件。
3、service命令
su命令:使用su root切換到root用戶后,不可以使用service命令;
su-命令:使用su-后,就可以使用service命令了。
4、用echo $PATH命令后,環(huán)境量不同
su命令:環(huán)境量變?yōu)閡sr。
su-命令:環(huán)境量變?yōu)閛racle。