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