天天看點

RHCSA 系列(一): 回顧基礎指令及系統文檔

rhcsa (紅帽認證系統工程師) 是由 redhat 公司舉行的認證考試,這家公司給商業公司提供開源作業系統和軟體,除此之外,還為這些企業和機構提供支援、訓練以及咨詢服務等。

RHCSA 系列(一): 回顧基礎指令及系統文檔

rhcsa 考試準備指南

rhcsa 考試(考試編号 ex200)通過後可以擷取由 redhat 公司頒發的證書. rhcsa 考試是 rhct(紅帽認證技師)的更新版,而且 rhcsa 必須在新的 red hat enterprise linux(紅帽企業版)下完成。rhct 和 rhcsa 的主要變化就是 rhct 基于 rhel5,而 rhcsa 基于 rhel6 或者7,這兩個認證的等級也有所不同。

紅帽認證管理者最起碼可以在紅帽企業版的環境下執行如下系統管理任務:

了解并會使用指令管理檔案、目錄、指令行以及系統/軟體包的文檔

在不同的啟動等級操作運作中的系統,識别和控制程序,啟動或停止虛拟機

使用分區和邏輯卷管理本地存儲

建立并且配置本地檔案系統和網絡檔案系統,設定他們的屬性(權限、加密、通路控制表)

部署、配置、并且控制系統,包括安裝、更新和解除安裝軟體

管理系統使用者群組,以及使用集中制的 ldap 目錄進行使用者驗證

確定系統安全,包括基礎的防火牆規則和 selinux 配置

在這個有15章的 rhcsa(紅帽認證管理者)備考系列中,我們将覆寫以下的關于紅帽企業 linux 第七版的最新的資訊:

<a href="https://linux.cn/article-6133-1.html">rhcsa 系列(一): 回顧基礎指令及系統文檔</a>

<a href="https://linux.cn/article-6155-1.html">rhcsa 系列(二): 如何進行檔案和目錄管理</a>

<a href="https://linux.cn/article-6187-1.html">rhcsa 系列(三): 如何管理 rhel7 的使用者群組</a>

<a href="https://linux.cn/article-6229-1.html">rhcsa 系列(四): 編輯文本檔案及分析文本</a>

<a href="https://linux.cn/article-6249-1.html">rhcsa 系列(五): rhel7 中的程序管理:開機,關機</a>

<a href="https://linux.cn/article-6257-1.html">rhcsa 系列(六): 使用 parted 和 ssm 來配置和加密系統存儲</a>

<a href="https://linux.cn/article-6263-1.html">rhcsa 系列(七): 使用 acl(通路控制清單) 和挂載 samba/nfs 共享</a>

<a href="https://linux.cn/article-6266-1.html">rhcsa 系列(八): 加強 ssh,設定主機名及啟用網絡服務</a>

<a href="https://linux.cn/article-6286-1.html">rhcsa 系列(九): 安裝、配置及加強一個 web 和 ftp 伺服器</a>

<a href="https://linux.cn/article-6315-1.html">rhcsa 系列(十一): 使用 firewalld 和 iptables 來控制網絡流量</a>

<a href="https://linux.cn/article-6335-1.html">rhcsa 系列(十二): 使用 kickstart 完成 rhel 7 的自動化安裝</a>

<a href="https://linux.cn/article-6339-1.html">rhcsa 系列(十三):在 rhel 7 中使用 selinux 進行強制通路控制</a>

<a href="https://linux.cn/article-6348-1.html">rhcsa 系列(十四):在 rhel 7 中設定基于 ldap 的認證</a>

<a href="https://linux.cn/article-6362-1.html">rhcsa 系列(十五):虛拟化基礎和使用 kvm 進行虛拟機管理</a>

在第一章,我們講解如何在終端或者 shell 視窗輸入和運作正确的指令,并且講解如何找到、查閱,以及使用系統文檔。

RHCSA 系列(一): 回顧基礎指令及系統文檔

rhcsa:回顧必會的 linux 指令 - 第一部分

至少你要熟悉如下指令

rm 指令 (删除檔案)

mkdir 指令 (建立目錄)

在這篇文章中你将會找到更多的關于如何更好的使用他們的正确用法和特殊用法.

雖然沒有嚴格的要求,但是作為讨論常用的 linux 指令和在 linux 中搜尋資訊方法,你應該安裝 rhel7 來嘗試使用文章中提到的指令。這将會使你學習起來更省力。

<a href="http://www.tecmint.com/redhat-enterprise-linux-7-installation/" target="_blank">紅帽企業版 linux(rhel)7 安裝指南</a>

<a target="_blank"></a>

如果我們使用文本模式登入 linux,我們就會直接進入到我們的預設 shell 中。另一方面,如果我們使用圖形化界面登入,我們必須通過啟動一個終端來開啟 shell。無論那種方式,我們都會看到使用者提示符,并且我們可以在這裡輸入并且執行指令(當按下回車時,指令就會被執行)。

指令是由兩個部分組成的:

指令本身

參數

某些參數,稱為選項(通常使用一個連字元開頭),會改變指令的行為方式,而另外一些則指定了指令所操作的對象。

type 指令可以幫助我們識别某一個特定的指令是由 shell 内置的還是由一個單獨的包提供的。這樣的差別在于我們能夠在哪裡找到更多關于該指令的更多資訊。對 shell 内置的指令,我們需要看 shell 的手冊頁;如果是其他的,我們需要看軟體包自己的手冊頁。

RHCSA 系列(一): 回顧基礎指令及系統文檔

檢查shell的内置指令

在上面的例子中, <code>cd</code> 和 <code>type</code> 是 shell 内置的指令,<code>top</code> 和 <code>less</code> 是由 shell 之外的其他的二進制檔案提供的(在這種情況下,type将傳回指令的位置)。

其他的内置指令:

RHCSA 系列(一): 回顧基礎指令及系統文檔

其它内置指令

它用來運作我們指定的外部程式。請注意在多數情況下,隻需要輸入我們想要運作的程式的名字就行,不過<code>exec</code> 指令有一個特殊的特性:不是在 shell 之外建立新的程序運作,而是這個新的程序會替代原來的 shell,可以通過下列指令來驗證。

<code># ps -ef | grep [shell 程序的pid]</code>

當新的程序終止時,shell 也随之終止。運作 <code>exec top</code> ,然後按下 <code>q</code> 鍵來退出 top,你會注意到 shell 會話也同時終止,如下面的螢幕錄像展示的那樣:

<video></video>

給之後執行的指令的輸出環境變量。

展示數行之前的曆史指令。指令編号前面字首上感歎号可以再次執行這個指令。如果我們需要編輯曆史清單中的指令,我們可以按下 <code>ctrl + r</code> 并輸入與指令相關的第一個字元。我們可以看到的指令會自動補全,可以根據我們目前的需要來編輯它:

指令清單會儲存在一個叫 <code>.bash_history</code> 的檔案裡。<code>history</code> 指令是一個非常有用的用于減少輸入次數的工具,特别是進行指令行編輯的時候。預設情況下,bash 保留最後輸入的500個指令,不過可以通過修改 histsize 環境變量來增加:

RHCSA 系列(一): 回顧基礎指令及系統文檔

linux history 指令

但上述變化,在我們的下一次啟動不會保留。為了保持 histsize 變量的變化,我們需要通過手工修改檔案編輯:

<code># 要設定 history 長度,請看 bash(1)文檔中的 histsize 和 histfilesize</code>

<code>histsize=1000</code>

重要: 我們的更改不會立刻生效,除非我們重新開機了 shell 。

沒有參數或使用 <code>-p</code> 選項時将會以“名稱=值”的标準形式輸出别名清單。當提供了參數時,就會按照給定的名字和值定義一個别名。

使用 <code>alias</code> ,我們可以建立我們自己的指令,或使用所需的參數修改現有的指令。舉個例子,假設我們将 <code>ls</code>定義别名為 <code>ls –color=auto</code> ,這樣就可以使用不同顔色輸出檔案、目錄、連結等等。

<code># alias ls='ls --color=auto'</code>

RHCSA 系列(一): 回顧基礎指令及系統文檔

linux 别名指令

注意: 你可以給你的“新指令”起任何的名字,并且使用單引号包括很多指令,但是你要用分号區分開它們。如下:

<code># alias mynewcommand='cd /usr/bin; ls; cd; clear'</code>

<code>exit</code> 和 <code>logout</code> 指令都可以退出 shell 。<code>exit</code> 指令可以退出所有的 shell,<code>logout</code> 指令隻登出登入的 shell(即你用文本模式登入時自動啟動的那個)。

如果你對某個程式有疑問,可以參考它的手冊頁,可以使用 <code>man</code> 指令調出它。此外,還有一些關于重要檔案(inittab、fstab、hosts 等等)、庫函數、shell、裝置及其他功能的手冊頁。

舉例:

man uname (輸出系統資訊,如核心名稱、處理器、作業系統類型、架構等)

man inittab (初始化守護程序的設定)

另外一個重要的資訊的來源是由 <code>info</code> 指令提供的,<code>info</code> 指令常常被用來讀取 info 檔案。這些檔案往往比手冊頁 提供了更多資訊。可以通過 <code>info keyword</code> 調用某個指令的資訊:

<code># info ls</code>

<code># info cut</code>

另外,在 <code>/usr/share/doc</code> 檔案夾包含了大量的子目錄,裡面可以找到大量的文檔。它們是文本檔案或其他可讀格式。

你要習慣于使用這三種方法去查找指令的資訊。重點關注每個指令文檔中介紹的詳細的文法。

有時候文本文檔包含了制表符,但是程式無法很好的處理。或者我們隻是簡單的希望将制表符轉換成空格。這就是用到 <code>expand</code> 地方(由gnu核心元件包提供) 。

舉個例子,我們有個檔案 numberlist.txt,讓我們使用 <code>expand</code> 處理它,将制表符轉換為一個空格,并且顯示在标準輸出上。

<code># expand --tabs=1 numberslist.txt</code>

RHCSA 系列(一): 回顧基礎指令及系統文檔

linux expand 指令

unexpand指令可以實作相反的功能(将空格轉為制表符)

通常情況下,<code>head</code> 指令後跟着檔案名時,将會輸出該檔案的前十行,我們可以通過 <code>-n</code> 參數來自定義具體的行數。

<code># head -n3 /etc/passwd</code>

<code># tail -n3 /etc/passwd</code>

RHCSA 系列(一): 回顧基礎指令及系統文檔

linux 的 head 和 tail 指令

<code>tail</code> 最有意思的一個特性就是能夠顯示增長的輸入檔案(<code>tail -f my.log</code>,my.log 是我們需要監視的檔案。)這在我們監控一個持續增加的日志檔案時非常有用。

<a href="http://www.tecmint.com/view-contents-of-file-in-linux/" target="_blank">使用 head 和 tail 指令有效地管理檔案</a>

<code>paste</code> 指令一行一行的合并檔案,預設會以制表符來區分每個檔案的行,或者你可以自定義的其它分隔符。(下面的例子就是輸出中的字段使用等号分隔)。

<code># paste -d= file1 file2</code>

RHCSA 系列(一): 回顧基礎指令及系統文檔

linux 中的 merge 指令

<code>split</code> 指令常常用于把一個檔案切割成兩個或多個由我們自定義的字首命名的檔案。可以根據大小、區塊、行數等進行切割,生成的檔案會有一個數字或字母的字尾。在下面的例子中,我們将切割 bash.pdf ,每個檔案 50kb (-b 50kb),使用數字字尾 (-d):

<code># split -b 50kb -d bash.pdf bash_</code>

RHCSA 系列(一): 回顧基礎指令及系統文檔

在 linux 下切割檔案

你可以使用如下指令來合并這些檔案,生成原來的檔案:

<code># cat bash_00 bash_01 bash_02 bash_03 bash_04 bash_05 &gt; bash.pdf</code>

<code>tr</code> 指令多用于一對一的替換(改變)字元,或者使用字元範圍。和之前一樣,下面的執行個體我們将使用之前的同樣檔案file2,我們将做:

小寫字母 o 變成大寫

所有的小寫字母都變成大寫字母

<code>cat file2 | tr o o</code>

<code>cat file2 | tr [a-z] [a-z]</code>

RHCSA 系列(一): 回顧基礎指令及系統文檔

在 linux 中替換字元

<code>uniq</code> 指令可以幫我們查出或删除檔案中的重複的行,預設會輸出到标準輸出,我們應當注意,<code>uniq</code>隻能查出相鄰的相同行,是以,<code>uniq</code> 往往和 <code>sort</code> 一起使用(<code>sort</code> 一般用于對文本檔案的内容進行排序)

預設情況下,<code>sort</code> 以第一個字段(使用空格分隔)為關鍵字段。想要指定不同關鍵字段,我們需要使用 -k 參數,請注意如何使用 <code>sort</code> 和 <code>uniq</code> 輸出我們想要的字段,具體可以看下面的例子:

<code># cat file3</code>

<code># sort file3 | uniq</code>

<code># sort -k2 file3 | uniq</code>

<code># sort -k3 file3 | uniq</code>

RHCSA 系列(一): 回顧基礎指令及系統文檔

删除檔案中重複的行

<code>cut</code> 指令基于位元組(-b)、字元(-c)、或者字段(-f)的數量,從輸入檔案(标準輸入或檔案)中提取到的部分将會以标準輸出上。

當我們使用字段 <code>cut</code> 時,預設的分隔符是一個制表符,不過你可以通過 -d 參數來自定義分隔符。

<code># cut -d: -f1,3 /etc/passwd # 這個例子提取了第一和第三字段的文本</code>

<code># cut -d: -f2-4 /etc/passwd # 這個例子提取了第二到第四字段的文本</code>

RHCSA 系列(一): 回顧基礎指令及系統文檔

從檔案中提取文本

注意,簡潔起見,上方的兩個輸出的結果是截斷的。

<code>fmt</code> 被用于去“清理”有大量内容或行的檔案,或者有多級縮進的檔案。新的段落格式每行不會超過75個字元寬,你能通過 -w (width 寬度)參數改變這個設定,它可以設定行寬為一個特定的數值。

舉個例子,讓我們看看當我們用 <code>fmt</code> 顯示定寬為100個字元的時候的檔案 /etc/passwd 時會發生什麼。再次,輸出截斷了。

<code># fmt -w100 /etc/passwd</code>

RHCSA 系列(一): 回顧基礎指令及系統文檔

linux 檔案重新格式化

<code>pr</code> 分頁并且在按列或多列的方式顯示一個或多個檔案。 換句話說,使用 <code>pr</code> 格式化一個檔案使它列印出來時看起來更好。舉個例子,下面這個指令:

<code># ls -a /etc | pr -n --columns=3 -h "files in /etc"</code>

以一個友好的排版方式(3列)輸出/etc下的檔案,自定義了頁眉(通過 -h 選項實作)、行号(-n)。

RHCSA 系列(一): 回顧基礎指令及系統文檔

linux的檔案格式化

在這篇文章中,我們已經讨論了如何在 shell 或終端以正确的文法輸入和執行指令,并解釋如何找到,查閱和使用系統文檔。正如你看到的一樣簡單,這就是你成為 rhcsa 的第一大步。

如果你希望添加一些其他的你經常使用的能夠有效幫你完成你的日常工作的基礎指令,并願意分享它們,請在下方留言。也歡迎提出問題。我們期待您的回複。

本文來自雲栖社群合作夥伴“linux中國”,原文釋出日期:2015-09-02  

繼續閱讀