RHCSA 系列(一): 回顧基礎命令及系統文檔
RHCSA 考試準備指南
RHCSA 考試(考試編號 EX200)通過後可以獲取由 RedHat 公司頒發的證書. RHCSA 考試是 RHCT(紅帽認證技師)的升級版,而且 RHCSA 必須在新的 Red Hat Enterprise Linux(紅帽企業版)下完成。RHCT 和 RHCSA 的主要變化就是 RHCT 基於 RHEL5,而 RHCSA 基於 RHEL6 或者7,這兩個認證的等級也有所不同。
紅帽認證管理員最起碼可以在紅帽企業版的環境下執行如下系統管理任務:
- 理解並會使用命令管理文件、目錄、命令行以及系統/軟體包的文檔
- 在不同的啟動等級操作運行中的系統,識別和控制進程,啟動或停止虛擬機
- 使用分區和邏輯卷管理本地存儲
- 創建並且配置本地文件系統和網路文件系統,設置他們的屬性(許可權、加密、訪問控制表)
- 部署、配置、並且控制系統,包括安裝、升級和卸載軟體
- 管理系統用戶和組,以及使用集中制的 LDAP 目錄進行用戶驗證
- 確保系統安全,包括基礎的防火牆規則和 SELinux 配置
關於你所在國家的考試註冊和費用請參考 RHCSA 認證頁面。
在這個有15章的 RHCSA(紅帽認證管理員)備考系列中,我們將覆蓋以下的關於紅帽企業 Linux 第七版的最新的信息:
- RHCSA 系列(一): 回顧基礎命令及系統文檔
- RHCSA 系列(二): 如何進行文件和目錄管理
- RHCSA 系列(三): 如何管理 RHEL7 的用戶和組
- RHCSA 系列(四): 編輯文本文件及分析文本
- RHCSA 系列(五): RHEL7 中的進程管理:開機,關機
- RHCSA 系列(六): 使用 Parted 和 SSM 來配置和加密系統存儲
- RHCSA 系列(七): 使用 ACL(訪問控制列表) 和掛載 Samba/NFS 共享
- RHCSA 系列(八): 加固 SSH,設定主機名及啟用網路服務
- RHCSA 系列(九): 安裝、配置及加固一個 Web 和 FTP 伺服器
- RHCSA 系列(十): Yum 包管理、Cron 自動任務計劃和監控系統日誌志
- RHCSA 系列(十一): 使用 firewalld 和 iptables 來控制網路流量
- RHCSA 系列(十二): 使用 Kickstart 完成 RHEL 7 的自動化安裝
- RHCSA 系列(十三):在 RHEL 7 中使用 SELinux 進行強制訪問控制
- RHCSA 系列(十四):在 RHEL 7 中設置基於 LDAP 的認證
- RHCSA 系列(十五):虛擬化基礎和使用 KVM 進行虛擬機管理
在第一章,我們講解如何在終端或者 Shell 窗口輸入和運行正確的命令,並且講解如何找到、查閱,以及使用系統文檔。
RHCSA:回顧必會的 Linux 命令 - 第一部分
前提:
至少你要熟悉如下命令
- cd 命令 (改變目錄)
- ls 命令 (列舉文件)
- cp 命令 (複製文件)
- mv 命令 (移動或重命名文件)
- touch 命令 (創建一個新的文件或更新已存在文件的時間表)
- rm 命令 (刪除文件)
- mkdir 命令 (創建目錄)
在這篇文章中你將會找到更多的關於如何更好的使用他們的正確用法和特殊用法.
雖然沒有嚴格的要求,但是作為討論常用的 Linux 命令和在 Linux 中搜索信息方法,你應該安裝 RHEL7 來嘗試使用文章中提到的命令。這將會使你學習起來更省力。
使用 Shell 進行交互
如果我們使用文本模式登錄 Linux,我們就會直接進入到我們的默認 shell 中。另一方面,如果我們使用圖形化界面登錄,我們必須通過啟動一個終端來開啟 shell。無論那種方式,我們都會看到用戶提示符,並且我們可以在這裡輸入並且執行命令(當按下回車時,命令就會被執行)。
命令是由兩個部分組成的:
- 命令本身
- 參數
某些參數,稱為選項(通常使用一個連字元開頭),會改變命令的行為方式,而另外一些則指定了命令所操作的對象。
type 命令可以幫助我們識別某一個特定的命令是由 shell 內置的還是由一個單獨的包提供的。這樣的區別在於我們能夠在哪裡找到更多關於該命令的更多信息。對 shell 內置的命令,我們需要看 shell 的手冊頁;如果是其他的,我們需要看軟體包自己的手冊頁。
檢查Shell的內置命令
在上面的例子中, cd
和 type
是 shell 內置的命令,top
和 less
是由 shell 之外的其他的二進位文件提供的(在這種情況下,type將返回命令的位置)。
其他的內置命令:
其它內置命令
exec 命令
它用來運行我們指定的外部程序。請注意在多數情況下,只需要輸入我們想要運行的程序的名字就行,不過exec
命令有一個特殊的特性:不是在 shell 之外創建新的進程運行,而是這個新的進程會替代原來的 shell,可以通過下列命令來驗證。
# ps -ef | grep [shell 進程的PID]
當新的進程終止時,Shell 也隨之終止。運行 exec top
,然後按下 q
鍵來退出 top,你會注意到 shell 會話也同時終止,如下面的屏幕錄像展示的那樣:
export 命令
給之後執行的命令的輸出環境變數。
history 命令
展示數行之前的歷史命令。命令編號前面前綴上感嘆號可以再次執行這個命令。如果我們需要編輯歷史列表中的命令,我們可以按下 Ctrl + r
並輸入與命令相關的第一個字元。我們可以看到的命令會自動補全,可以根據我們目前的需要來編輯它:
命令列表會保存在一個叫 .bash_history
的文件里。history
命令是一個非常有用的用於減少輸入次數的工具,特別是進行命令行編輯的時候。默認情況下,bash 保留最後輸入的500個命令,不過可以通過修改 HISTSIZE 環境變數來增加:
Linux history 命令
但上述變化,在我們的下一次啟動不會保留。為了保持 HISTSIZE 變數的變化,我們需要通過手工修改文件編輯:
# 要設置 history 長度,請看 bash(1)文檔中的 HISTSIZE 和 HISTFILESIZE
HISTSIZE=1000
重要: 我們的更改不會立刻生效,除非我們重啟了 shell 。
alias 命令
沒有參數或使用 -p
選項時將會以「名稱=值」的標準形式輸出別名列表。當提供了參數時,就會按照給定的名字和值定義一個別名。
使用 alias
,我們可以創建我們自己的命令,或使用所需的參數修改現有的命令。舉個例子,假設我們將 ls
定義別名為 ls –color=auto
,這樣就可以使用不同顏色輸出文件、目錄、鏈接等等。
# alias ls='ls --color=auto'
Linux 別名命令
注意: 你可以給你的「新命令」起任何的名字,並且使用單引號包括很多命令,但是你要用分號區分開它們。如下:
# alias myNewCommand='cd /usr/bin; ls; cd; clear'
exit 命令
exit
和 logout
命令都可以退出 shell 。exit
命令可以退出所有的 shell,logout
命令只註銷登錄的 shell(即你用文本模式登錄時自動啟動的那個)。
man 和 info 命令
如果你對某個程序有疑問,可以參考它的手冊頁,可以使用 man
命令調出它。此外,還有一些關於重要文件(inittab、fstab、hosts 等等)、庫函數、shell、設備及其他功能的手冊頁。
舉例:
- man uname (輸出系統信息,如內核名稱、處理器、操作系統類型、架構等)
- man inittab (初始化守護進程的設置)
另外一個重要的信息的來源是由 info
命令提供的,info
命令常常被用來讀取 info 文件。這些文件往往比手冊頁 提供了更多信息。可以通過 info keyword
調用某個命令的信息:
# info ls
# info cut
另外,在 /usr/share/doc
文件夾包含了大量的子目錄,裡面可以找到大量的文檔。它們是文本文件或其他可讀格式。
你要習慣於使用這三種方法去查找命令的信息。重點關注每個命令文檔中介紹的詳細的語法。
使用 expand 命令把製表符轉換為空格
有時候文本文檔包含了製表符,但是程序無法很好的處理。或者我們只是簡單的希望將製表符轉換成空格。這就是用到 expand
地方(由GNU核心組件包提供) 。
舉個例子,我們有個文件 NumberList.txt,讓我們使用 expand
處理它,將製表符轉換為一個空格,並且顯示在標準輸出上。
# expand --tabs=1 NumbersList.txt
Linux expand 命令
unexpand命令可以實現相反的功能(將空格轉為製表符)
使用 head 輸出文件首行及使用 tail 輸出文件尾行
通常情況下,head
命令後跟著文件名時,將會輸出該文件的前十行,我們可以通過 -n
參數來自定義具體的行數。
# head -n3 /etc/passwd
# tail -n3 /etc/passwd
Linux 的 head 和 tail 命令
tail
最有意思的一個特性就是能夠顯示增長的輸入文件(tail -f my.log
,my.log 是我們需要監視的文件。)這在我們監控一個持續增加的日誌文件時非常有用。
使用 paste 按行合併文本文件
paste
命令一行一行的合併文件,默認會以製表符來區分每個文件的行,或者你可以自定義的其它分隔符。(下面的例子就是輸出中的欄位使用等號分隔)。
# paste -d= file1 file2
Linux 中的 merge 命令
使用 split 命令將文件分塊
split
命令常常用於把一個文件切割成兩個或多個由我們自定義的前綴命名的文件。可以根據大小、區塊、行數等進行切割,生成的文件會有一個數字或字母的後綴。在下面的例子中,我們將切割 bash.pdf ,每個文件 50KB (-b 50KB),使用數字後綴 (-d):
# split -b 50KB -d bash.pdf bash_
在 Linux 下切割文件
你可以使用如下命令來合併這些文件,生成原來的文件:
# cat bash_00 bash_01 bash_02 bash_03 bash_04 bash_05 > bash.pdf
使用 tr 命令替換字元
tr
命令多用於一對一的替換(改變)字元,或者使用字元範圍。和之前一樣,下面的實例我們將使用之前的同樣文件file2,我們將做:
- 小寫字母 o 變成大寫
- 所有的小寫字母都變成大寫字母
cat file2 | tr o O
cat file2 | tr [a-z] [A-Z]
在 Linux 中替換字元
使用 uniq 和 sort 檢查或刪除重複的文字
uniq
命令可以幫我們查出或刪除文件中的重複的行,默認會輸出到標準輸出,我們應當注意,uniq
只能查出相鄰的相同行,所以,uniq
往往和 sort
一起使用(sort
一般用於對文本文件的內容進行排序)
默認情況下,sort
以第一個欄位(使用空格分隔)為關鍵欄位。想要指定不同關鍵欄位,我們需要使用 -k 參數,請注意如何使用 sort
和 uniq
輸出我們想要的欄位,具體可以看下面的例子:
# cat file3
# sort file3 | uniq
# sort -k2 file3 | uniq
# sort -k3 file3 | uniq
刪除文件中重複的行
從文件中提取文本的命令
cut
命令基於位元組(-b)、字元(-c)、或者欄位(-f)的數量,從輸入文件(標準輸入或文件)中提取到的部分將會以標準輸出上。
當我們使用欄位 cut
時,默認的分隔符是一個製表符,不過你可以通過 -d 參數來自定義分隔符。
# cut -d: -f1,3 /etc/passwd # 這個例子提取了第一和第三欄位的文本
# cut -d: -f2-4 /etc/passwd # 這個例子提取了第二到第四欄位的文本
從文件中提取文本
注意,簡潔起見,上方的兩個輸出的結果是截斷的。
使用 fmt 命令重新格式化文件
fmt
被用於去「清理」有大量內容或行的文件,或者有多級縮進的文件。新的段落格式每行不會超過75個字元寬,你能通過 -w (width 寬度)參數改變這個設定,它可以設置行寬為一個特定的數值。
舉個例子,讓我們看看當我們用 fmt
顯示定寬為100個字元的時候的文件 /etc/passwd 時會發生什麼。再次,輸出截斷了。
# fmt -w100 /etc/passwd
Linux 文件重新格式化
使用 pr 命令格式化列印內容
pr
分頁並且在按列或多列的方式顯示一個或多個文件。 換句話說,使用 pr
格式化一個文件使它列印出來時看起來更好。舉個例子,下面這個命令:
# ls -a /etc | pr -n --columns=3 -h "Files in /etc"
以一個友好的排版方式(3列)輸出/etc下的文件,自定義了頁眉(通過 -h 選項實現)、行號(-n)。
Linux的文件格式化
總結
在這篇文章中,我們已經討論了如何在 Shell 或終端以正確的語法輸入和執行命令,並解釋如何找到,查閱和使用系統文檔。正如你看到的一樣簡單,這就是你成為 RHCSA 的第一大步。
如果你希望添加一些其他的你經常使用的能夠有效幫你完成你的日常工作的基礎命令,並願意分享它們,請在下方留言。也歡迎提出問題。我們期待您的回復。
via: http://www.tecmint.com/rhcsa-exam-reviewing-essential-commands-system-documentation/
作者:Gabriel Cánepa 譯者:xiqingongzi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive