linux shell是什么意思?shell是一個用戶接口?;谖谋镜膕hell也可用作命令行解釋器。在Linux中,shell是一個解釋程序,它允許我們用各種命令與Linux進(jìn)行交互。只要有合適的文件權(quán)限,我們就可以在腳本文件中設(shè)置命令,需要時甚至可以在深更半夜時執(zhí)行這些腳本文件。
Linux shell可以按各種順序處理命令,這取決于我們?nèi)绾喂芾砻總€命令的輸入和輸出。每個shell對命令所做的解釋一定程度上取決于它所使用的變量和參數(shù)。
Linux中默認(rèn)的shell是bash,也稱為Bourne-Again shell,但是也存在很多其他的shell,而且它們也有很多用戶。只要能安裝相應(yīng)的RPM程序包,用戶就可以啟動任何一個shell。需要時可以在/etc/passwd文件中改變每個用戶的默認(rèn)shell。
1、其他shell
RHEL 7中有4種命令行shell,用戶可以選擇其中任何一種。雖然bash是默認(rèn)的shell,但是長期使用Linux和Unix的用戶可能喜歡其他shell:
● bash 默認(rèn)的Bourne-Again shell,它以Stephen Bourne最早開發(fā)的命令行解釋程序?yàn)榛A(chǔ)。
● ksh 即Korn shell,由貝爾實(shí)驗(yàn)室的David Korn在20世紀(jì)80年代開發(fā),結(jié)合了Bourne和C shell的最佳功能。
● tcsh Unix C shell的增強(qiáng)版。
● zsh 一個高級shell,類似于Korn shell。
這些shell都在/bin目錄中配置。如果用戶想把其中一個作為默認(rèn)的shell,則并非難事。最直接的方法是在/etc/passwd文件中修改默認(rèn)shell。例如,此文件中應(yīng)用于一位作者的一個普通賬戶的一行內(nèi)容是:
例如,要把默認(rèn)的shell改為ksh,只需要把/bin/bash改為/bin/ksh。另外還需要為Korn shell安裝對應(yīng)的RPM程序包。
考試提示
盡管對大多數(shù)Linux用戶來說很容易,但是RHCSA一個認(rèn)證目標(biāo)的一部分是“訪問shell提示符”?,F(xiàn)在你應(yīng)該知道如何訪問不同的shell提示符窗口。
2、虛擬終端
如果能訪問RHEL系統(tǒng)的控制臺,就可以使用6個虛擬終端來打開6個獨(dú)立的登錄會話。但是,默認(rèn)情況下只激活一個虛擬終端。當(dāng)切換到未使用的終端時,其他登錄提示符會動態(tài)啟動。虛擬終端由/etc/systemd目錄中的logind.conf文件定義。
觀察該文件,可看到一個名為NAutoVTs的選項(xiàng),它定義了可被激活的較大虛擬終端數(shù)。虛擬終端與設(shè)備文件/dev/tty1通過/dev/tty6關(guān)聯(lián)。當(dāng)系統(tǒng)配置了一個GUI,則它使用/dev/tty1。我們可以配置更多的虛擬終端,但是受/etc/securetty文件中為root管理員用戶分配的虛擬終端數(shù)量的限制。
通常情況下,為在虛擬終端之間切換,要按下Alt和對應(yīng)終端關(guān)聯(lián)的功能鍵。例如,Alt+F2鍵可以切換到第二個控制臺。但在RHEL GUI中,Alt+Fn鍵組合用來提供其他功能,例如Alt+F2可啟動Run Application工具。因此,在GUI中需要按Ctrl+Alt+Fn才可以切換到第n個虛擬控制臺。
登錄文本控制臺時會看到如下提示信息,但是具體內(nèi)容可能會因RHEL的版本、內(nèi)核的版本號以及系統(tǒng)的主機(jī)名而稍有差異:
用圖形模式登錄時會更加直觀,如圖1所示,但需要安裝GNOME顯示管理程序(GNOME Display Manager, GDM)。
圖1 第一個UI登錄控制臺
3、GUI shell接口
登錄到GUI后,訪問bash shell就很容易。如果我們使用默認(rèn)的GNOME桌面環(huán)境,則單擊Applications | Utilities | Terminal。
傳統(tǒng)上,管理員總是從控制臺控制計(jì)算機(jī)的。但在許多情況下從GUI環(huán)境訪問命令行控制臺可能會更加方便,特別當(dāng)多個控制臺并排出現(xiàn)在屏幕上時。
右擊GUI終端界面可以在不同的窗口或者選項(xiàng)卡中打開另外的終端窗口。需要時它還支持終端窗口之間的復(fù)制與粘貼。
4、普通用戶與管理員用戶的區(qū)別
在命令行窗口中可以執(zhí)行的命令取決于登錄賬戶所擁有的權(quán)限。現(xiàn)在有兩個基本的提示符。下面是普通用戶登錄后看到的提示符:
注意,屏幕上出現(xiàn)了用戶名、本地系統(tǒng)的主機(jī)名、當(dāng)前目錄和$提示符。$是普通用戶的標(biāo)準(zhǔn)提示符。
與此相反,在同一個系統(tǒng)上來看看root管理員用戶的提示符。它與普通用戶的提示信息相似,除賬戶名不同外,唯一的區(qū)別是提示符:
root管理員賬戶執(zhí)行命令的顯示結(jié)果如下:
5、文本流與命令重定向
Linux使用三個基本數(shù)據(jù)流。數(shù)據(jù)輸入流、數(shù)據(jù)輸出流和向另一個方向發(fā)送的錯誤。這些流分別被稱為標(biāo)準(zhǔn)輸入(stdin)、標(biāo)準(zhǔn)輸出(stdout)和標(biāo)準(zhǔn)錯誤(stderr)。通常情況下,輸入來自鍵盤,而標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤則發(fā)送到屏幕。在下例中,當(dāng)執(zhí)行cat filename這個命令時,系統(tǒng)把文件的內(nèi)容作為標(biāo)準(zhǔn)輸出發(fā)送到屏幕(就像發(fā)送任何錯誤一樣)。
也可以把這些流重定向到文件,或從文件重定向這些流。例如,有一個名為database的程序和一個包含大量數(shù)據(jù)的數(shù)據(jù)文件。用左重定向箭頭(<)可以把此數(shù)據(jù)文件的內(nèi)容發(fā)送到這個數(shù)據(jù)庫程序。如下所示,這里的數(shù)據(jù)文件(datafile)被當(dāng)作標(biāo)準(zhǔn)輸入:
標(biāo)準(zhǔn)輸入也可以來自某個命令的左側(cè)。例如,當(dāng)我們需要翻頁瀏覽引導(dǎo)信息時,可用管道把dmesg和less兩個命令組合在一起:
這里把dmesg命令的輸出重定向?yàn)閘ess的標(biāo)準(zhǔn)輸入。后者對前者的輸出內(nèi)容進(jìn)行翻頁瀏覽,就像它是一個獨(dú)立文件一樣。標(biāo)準(zhǔn)輸出重定向也一樣容易。例如,下面的命令用右重定向符(>)把ls命令的標(biāo)準(zhǔn)輸出發(fā)送到名為filelist的文件中。
還可以用雙重定箭頭命令(如ls>>filelist)在當(dāng)前文件的末尾添加標(biāo)準(zhǔn)的輸出流。如果想將某個程序的錯誤消息保存到一個文件中,則用下面的命令重定向此程序的錯誤流:
有時候會想要丟棄所有錯誤。通過將錯誤流重定向到特殊的設(shè)備文件/dev/null可實(shí)現(xiàn)此目的:
&>是另一個有用的重定向符,它將標(biāo)準(zhǔn)輸出和錯誤發(fā)送到一個文件或設(shè)備。下面給出了一個示例:
考試提示>、 >>、 2> 和 | 等命令重定向符在RHCSA認(rèn)證目標(biāo)中屬于“輸入/輸出重定向符”。