- RHCSARHCE 紅帽Linux認證學習指南(第7版)EX200 & EX300
- (美)Michael Jang等
- 1962字
- 2020-11-29 00:30:00
認證目標3.01 sheII
shell是一個用戶接口。基于文本的shell也可用作命令行解釋器。在Linux中,shell是一個解釋程序,它允許我們用各種命令與Linux進行交互。只要有合適的文件權限,我們就可以在腳本文件中設置命令,需要時甚至可以在深更半夜時執行這些腳本文件。Linux shell可以按各種順序處理命令,這取決于我們如何管理每個命令的輸入和輸出。每個shell對命令所做的解釋一定程度上取決于它所使用的變量和參數。
Linux中默認的shell是bash,也稱為Bourne-Again shell。本書的主要命令是基于這些命令在bash中的用法。但是也存在很多其他的shell,而且它們也有很多用戶。只要能安裝相應的RPM程序包,用戶就可以啟動任何一個shell。需要時可以在/etc/passwd文件中改變每個用戶的默認shell。
3.1.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。例如,此文件中應用于一位作者的一個普通賬戶的一行內容是:
michael:x:1000:1000:Michael Jang:/home/michael:/bin/bash
例如,要把默認的shell改為ksh,只需要把/bin/bash改為/bin/ksh。另外還需要為Korn shell安裝對應的RPM程序包。
考試提示
盡管對大多數Linux用戶來說很容易,但是RHCSA一個認證目標的一部分是“訪問shell提示符”。現在你應該知道如何訪問不同的shell提示符窗口。
3.1.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的版本、內核的版本號以及系統的主機名而稍有差異:
Red Hat Enterprise Linux Server Kernel 3.10.0-123.el7.x86_64 on an x86_64 server1 login:
用圖形模式登錄時會更加直觀,如圖3-1所示,但需要安裝GNOME顯示管理程序(GNOME Display Manager, GDM)。

圖3-1 第一個GUI登錄控制臺
3.1.3 GUI shell接口
登錄到GUI后,訪問bash shell就很容易。如果我們使用默認的GNOME桌面環境,則單擊Applications | Utilities | Terminal。傳統上,管理員總是從控制臺控制計算機的。但在許多情況下從GUI環境訪問命令行控制臺可能會更加方便,特別當多個控制臺并排出現在屏幕上時。右擊GUI終端界面可以在不同的窗口或者選項卡中打開另外的終端窗口。需要時它還支持終端窗口之間的復制與粘貼。
本書使用的命令行截圖都以基于GUI的命令行窗口為依據,部分原因是在白色屏幕上的黑字更容易閱讀。
3.1.4 普通用戶與管理員用戶的區別
在命令行窗口中可以執行的命令取決于登錄賬戶所擁有的權限。現在有兩個基本的提示符。下面是普通用戶登錄后看到的提示符:
[michael@server1~]$
注意,屏幕上出現了用戶名、本地系統的主機名、當前目錄和$提示符。$是普通用戶的標準提示符。在本書的前言中曾提到,普通用戶執行命令后只顯示如下內容:
$
與此相反,在同一個系統上來看看root管理員用戶的提示符。它與普通用戶的提示信息相似,除賬戶名不同外,唯一的區別是提示符:
[root@server1~]#
本書中,root管理員賬戶執行命令的顯示結果如下:
#
除所有權、權限外,普通用戶與管理員賬戶的其他差別將在第8章中介紹。
3.1.5 文本流與命令重定向
Linux使用三個基本數據流。數據輸入流、數據輸出流和向另一個方向發送的錯誤。這些流分別被稱為標準輸入(stdin)、標準輸出(stdout)和標準錯誤(stderr)。通常情況下,輸入來自鍵盤,而標準輸出和標準錯誤則發送到屏幕。在下例中,當執行cat filename這個命令時,系統把文件的內容作為標準輸出發送到屏幕(就像發送任何錯誤一樣)。
# cat filename
也可以把這些流重定向到文件,或從文件重定向這些流。例如,有一個名為database的程序和一個包含大量數據的數據文件。用左重定向箭頭(<)可以把此數據文件的內容發送到這個數據庫程序。如下所示,這里的數據文件(datafile)被當作標準輸入:
# database < datafile
標準輸入也可以來自某個命令的左側。例如,當我們需要翻頁瀏覽引導信息時,可用管道把dmesg和less兩個命令組合在一起:
# dmesg | less
這里把dmesg命令的輸出重定向為less的標準輸入。后者對前者的輸出內容進行翻頁瀏覽,就像它是一個獨立文件一樣。
標準輸出重定向也一樣容易。例如,下面的命令用右重定向符(>)把ls命令的標準輸出發送到名為filelist的文件中。
# ls > filelist
還可以用雙重定向箭頭命令(如ls>>filelist)在當前文件的末尾添加標準的輸出流。
如果想將某個程序的錯誤消息保存到一個文件中,則用下面的命令重定向此程序的錯誤流:
# program 2> err-list
有時候會想要丟棄所有錯誤。通過將錯誤流重定向到特殊的設備文件/dev/null可實現此目的:
# program 2> /dev/null
&>是另一個有用的重定向符,它將標準輸出和錯誤發送到一個文件或設備。下面給出了一個示例:
# program &> output-and-error
考試提示
>、 >>、 2> 和 | 等命令重定向符在RHCSA認證目標中屬于“輸入/輸出重定向符”。
- Linux系統架構與運維實戰
- Google系統架構解密:構建安全可靠的系統
- WordPress Mobile Web Development:Beginner's Guide
- Kali Linux滲透測試全流程詳解
- Linux就該這么學
- 數據中心系統工程及應用
- 巧學活用Windows 7
- Application Development in iOS 7
- 完美應用RHEL 8
- Learning Magento 2 Administration
- Python UNIX和Linux系統管理指南
- CentOS 6 Linux Server Cookbook
- iOS 10快速開發:18天零基礎開發一個商業應用
- Java EE 8 High Performance
- Mastering Azure Serverless Computing