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