鸟哥的Linux私房菜(基础篇)-第五章、首次登陆与在线求助 man page
最近升級日期:2009/08/17
| 終于可以開始使用Linux這個有趣的系統了!由于Linux系統使用了異步的磁盤/內存數據傳輸模式,同時又是個多人多任務的環境, 所以你不能隨便的不正常關機,關機有一定的程序喔!錯誤的關機方法可能會造成磁盤數據的損毀呢! 此外,Linux有多種不同的操作方式,圖形接口與文字接口的操作有何不同? 我們能否在文字接口取得大量的命令說明,而不需要硬背某些命令的選項與參數等等。這都是這一章要來介紹的呢! |
首次登陸系統
登陸系統有這么難嗎?并不難啊!雖然說是這樣說,然而很多人第一次登陸Linux的感覺都是『接下來我要干啥?』如果是以圖形接口登陸的話,或許還有很多好玩的事物, 但要是以文字接口登陸的話,面對著一片黑壓壓的屏幕,還真不曉得要干嘛呢!為了讓大家更了解如何正確的使用Linux, 正確的登陸與離開系統還是需要說明的!
1. 首次登陸系統
1.1 首次登陸CentOS 5.x圖形接口
1.2 GNOME的操作與注銷
1.3 KDE的操作與注銷
1.4 X Window與文本模式的切換
1.5 在終端界面登陸linux
2. 文本模式下命令的下達
2.1 開始下達命令, 語系的支持
2.2 基礎命令的操作, date, cal, bc
2.3 重要的幾個熱鍵[Tab], [ctrl]-c, [ctrl]-d
2.4 錯誤信息的查看
3. Linux系統的在線求助man page與info page
3.1 man page
3.2 info page
3.3 其他有用的文件(documents)
4. 超簡單文書編輯器: nano
5. 正確的關機方法: sync, shutdown, reboot, halt, poweroff, init
6. 啟動過程的問題排解
7. 重點回顧
8. 本章習題
9. 參考數據與延伸閱讀
10. 針對本文的建議:http://phorum.vbird.org/viewtopic.php?t=23877
首次登陸CentOS 5.x圖形接口
啟動就啟動呀!怎么還有所謂的登陸與離開呀?不是啟動就能夠用計算機了嗎? 開什么玩笑,在Linux系統中由于是多人多任務的環境,所以系統隨時都有很多任務在進行,因此正確的開關機可是很重要的! 不正常的關機可能會導致文件系統錯亂,造成數據的毀損呢!這也是為什么通常我們的Linux主機都會加掛一個不斷電系統啰!
如果在第四章一切都順利的將CentOS 5.x完成安裝并且重新啟動后, 應該就會出現如下的等待登陸的圖形畫面才對。畫面的左上方是CentOS 5的distribution說明, 而1號箭頭所指處的四個文字則是可以改變工作環境的地方,2號箭頭說明今天的日期/時間與主機名(www.vbird.tsai), 3號箭頭就是我們可以使用賬號登陸的輸入框框啰。
圖1.1.1、X等待登陸的畫面
讓我們來了解一下上圖1號箭頭所指的那四個功能吧!先點選一下『語言』按鈕,你會發現屏幕出現很多可以選擇的語系數據! 鳥哥擷取部分畫面如下所示。在下圖中你可以選擇不同的中文或者是其他語言,等一下你登陸后, 屏幕就會顯示你所選擇的語系畫面了。不過要注意的是,如果你選擇的語系的軟件文件并沒有被安裝, 那么登陸系統后就會出現很多亂碼啊!如下圖所示,鳥哥先選擇臺灣的繁體中文,然后按下『改變語言』按鈕即可。
圖1.1.2、選擇語系的畫面
接下來讓我們單擊『作業階段』按鈕吧!按下作業階段后屏幕就會出現如下的畫面。 所謂的作業階段指的是你可以使用不同的圖形接口來操作整個Linux系統。 這個圖形接口并不是只有將壁紙背景更改而已,而是整個顯示、控制、管理、圖形軟件都不相同了! 非常的好玩!目前CentOS 5.x默認至少就提供GNOME/KDE這兩種圖形接口(我們稱為窗口管理員, Window Manager,注1)。 如下圖所示。CentOS 5.x默認使用的是GNOME這個玩意兒,如果你沒有改變的話,那等一下就會登陸GNOME的圖形接口啰。
圖1.1.3、更改作業階段的窗口示意圖
接下來準備要登陸啦!我們在經過第四章的安裝過程后,理論上現在會有兩個可用的賬號,以鳥哥的安裝為例, 我有root及vbird兩個可用的賬號喔!那第四章我們也說過,最好不要使用root啦!因此, 鳥哥就在圖1.1.1的地方開始用vbird來登陸了,如下所示,記得輸入完畢后要按『Enter』喔!
圖1.1.4、輸入使用者賬號的地方
接著系統會要你輸入密碼,此時請在密碼欄填入該賬號的密碼!在你輸入密碼時該字段會顯示黑點來取代! 這是為了保密啦!輸入完畢后請按下『Enter』開始登陸啰!
圖1.1.5、輸入密碼的示意圖
由于鳥哥在圖1.1.2曾經修改過語系數據,因此系統就會詢問你, 是否要將剛剛的配置變更成為默認值?還是只有這次登陸才使用呢?你可以按下『成為默認值』, 讓你這次的決定套用到未來的操作喔!OK!讓我們開始來玩一玩GNOME這個默認的窗口管理員吧!
圖1.1.6、詢問是否將配置值更改為默認值的窗口
GNOME的操作與注銷
終于給他看到圖形接口啦!真是很開心吧!如下圖所示,整個GNOME的窗口大約分為三個部分:
- 上方任務欄(control panel)
上半部有應用程序、位置與系統及快捷鍵的地方,可以看成是任務欄,你可以使用鼠標在1號箭頭處 (應用程序) 點擊一下, 就會有更多的程序集出現!然后移動鼠標就能夠使用各個軟件了。至于3號箭頭所指的地方,就是系統時間與聲音調整。 另外,在3號箭頭的左邊不是有個打X的符號嗎?那個是CentOS 5.x的在線升級系統(update)。由于我們尚未連上Internet, 所以這邊就會顯示X喔。
- 壁紙
整個畫面中央就是壁紙啦!在壁紙上默認有三個小按鈕,例如箭頭2所指的就是文件總管。你可以使用鼠標連擊兩下就能夠打開該功能。 其實計算機與個人數據夾都是文件總管啦!如果有運行各種程序,程序的顯示也都是在壁紙位置喔。
- 下方任務欄
下方任務欄的目的是將各工作顯示在這里,可以方便使用者點選之用。其中4號箭頭所指處為將所有工作最小化隱藏, 至于5號箭頭處指的那四個玩意兒,就是四個虛擬壁紙(Virtual Desktop)了!GNOME提供四個壁紙給使用者操作, 你可以在那四個壁紙隨便點一點,看看有啥不同!尤其是當你有運行不同的程序時,就會發現他的功能啦! ^_^
圖1.2.1、GNOME的窗口畫面示意圖
Linux壁紙的使用方法幾乎跟Windows一模一樣,你可以在壁紙上按下右鍵就可以有額外的菜單出現; 你也可以直接按下壁紙上的『個人數據夾』,就會出現類似Windows的『文件總管』的文件/目錄管理窗口, 里面則出現你自己的工作目錄;好了,讓我們點擊一下『應用程序』那個按鈕吧!看看下拉式菜單中有什么軟件可用! 如下圖所示。你要注意的是,因為我們的Linux尚未連上Internet,所以在線升級系統會有警告信息(2號箭頭處), 請你將他關閉吧!
| Tips: 關于『個人數據夾』的內容,記得我們之前說過Linux是多人多任務的操作系統吧? 每個人都會有自己的『工作目錄』,這個目錄是用戶可以完全掌控的, 所以就稱為『用戶個人家目錄』了。一般來說,家目錄都在/home底下, 以鳥哥這次的登陸為例,我的賬號是vbird,那么我的家目錄就應該在/home/vbird/啰! |
圖1.2.2、應用程序的下拉式菜單示意圖
| Tips: 那個在線升級的按鈕不是不重要喔!而是因為我們尚未連上Internet所以這里才先將他略過的。 你的系統穩不穩定、安不安全與這個玩意兒相關性可大了!千萬別小看他啰! 有興趣的朋友可以到google先搜尋一下yum這個機制來看看先! ^_^ 因為你的Linux尚未在線升級過,所以先不要連上Internet喔! |
- 使用文件總管
首先我們來了解一下常用的GNOME文件總管要怎么用?要說明的是,GNOME的文件總管其實稱為『鸚鵡螺(Nautilus)』, 只是我們比較習慣稱呼文件總管就是了。^_^。當你在壁紙中點選『個人數據夾』就會出現如下圖示。默認鸚鵡螺是用小圖標來顯示文件,而且隱藏文件也沒有顯示出來呢! 所以你只會看到一個文件。注意1號箭頭所指的地方,你可以按下那個小按鈕來切換到不同的目錄去喔!
圖1.2.3、鸚鵡螺文件總管的默認顯示畫面
鳥哥還是比較喜歡列表式的將所有數據都列出來,所以我們的配置需要修正一下。 請在上圖中按下『編輯』點選『偏好配置』后,會出現如下圖示,請將箭頭所在處的兩個地方修訂一下, 包括以列表顯示及顯示隱藏文件喔!填完就按下右下角的『關閉』即可。
圖1.2.4、鸚鵡螺文件總管的偏好配置窗口
將原本的畫面關閉再重開一個文件總管,請如下圖所示,按下『顯示』選擇『顯示隱藏文件』及『以列表方式顯示』后, 就可以發現到好多文件啰!什么是隱藏檔呢?其實檔名開頭為小數點『.』的, 那個文件就是隱藏檔了。所以在如下圖的畫面中,你會看到多出來的文件檔名都是小數點開頭的!
圖1.2.5、家目錄下的隱藏文件數據
除了自己的家目錄之外,你可以在上圖的左下角『vbird』處點一下,然后選擇根目錄(/),就會出現如下圖示。 1號箭頭告訴我們,這個vbird賬號無法登陸該目錄,所以有個紅色的禁止圖示;如果想要查閱某目錄的內容, 如2號箭頭所指處,你可以點一下三角形的圖示,就能夠將該目錄內的數據捉出來了;最后,如同3號箭頭所指的, 如果是出現紙張的圖示,代表那是個文件而不是目錄啰!
圖1.2.6、鸚鵡螺文件總管的目錄/文件顯示情況
- 中文輸入法
在CentOS 5.x當中所使用的中文輸入法為SCIM軟件,你要啟動SCIM很簡單,只要叫出任何一個能夠輸入文字的軟件, 然后按下『Ctrl』+『Space(空格鍵)』就能夠呼叫出來了!以下圖為例,鳥哥運行『附屬應用程序』內的『文字編輯』軟件, 然后按下[ctrl]+[space]就出現下圖。然后點一下圖中的箭頭所指處,你就會看到很多輸入法了! 比較有趣的是那個『新酷音』輸入法, 其實那就是大家常用的新注音啦!可以自動挑字的輸入法!不錯用喔!
圖1.2.7、SCIM中文輸入法呼叫示意圖
- 注銷GNOME
如果你沒有想要繼續玩X Window了,那就注銷吧!如何注銷呢?如下圖所示,點選『系統』內的『注銷』即可。 要記得的是,注銷前最好將所有不需要的程序都關閉了再注銷啊!
圖1.2.8、注銷GNOME的按鈕
會有一個確認窗口跑出來給我們確認一下,就給他點選『注銷』吧!
圖1.2.9、注銷GNOME的確認窗口
請注意喔,注銷并不是關機!只是讓你的賬號離開系統而已喔!
- 其他練習
底下的例題請大家自行參考并且實作一下喔!題目很簡單,所以鳥哥就不額外抓圖了!
- 如何在上方任務欄中新增其他的圖示(icons),讓操作更方便?請嘗試新增終端機圖標;
- 嘗試瀏覽一下/etc這個目錄內,有哪些文件/目錄存在;
- 請將/etc/crontab這個文件『復制』到你的家目錄中;
- 請修改四個Virtual Desktop的壁紙,讓他們都不相同;
- 嘗試修改屏幕分辨率;
KDE的操作與注銷
玩過了GNOME之后,接下來讓我們來了解一下KDE這個也是很常見的窗口管理程序吧! 請回到圖1.1.1中,在按下『作業階段』后請選擇KDE,然后輸入你的賬號密碼來登陸KDE的環境。 登陸后的默認畫面如下所示:
圖1.3.1、KDE登陸后的默認畫面
上圖中的箭頭所指處的功能說明如下:
- 壁紙:上圖中整個藍色畫面就是壁紙。而一號箭頭指的地方,一開始僅有垃圾桶而已,你可以自行添加其他的快速按鈕在壁紙! 當有工作被運行時,該工作就是顯示在這個壁紙的區域中;
- 任務欄快捷鍵:2號箭頭指的地方就是KDE的K菜單!你給他單擊該菜單就會出現更多的選項功能。 感覺上就是開始菜單啰!至于K菜單的右邊還有很多的快捷按鈕,你可以自行點選看看;
- 虛擬壁紙:3號箭頭所指的就是虛擬壁紙。與GNOME相似的,CentOS的KDE也提供四個虛擬壁紙。 你可以在各個壁紙分別放置不同的底圖哩!自己玩看看吧!
- 任務欄:4號箭頭處,當你有運行任何工作時,該工作的圖標就會顯示到這個地方。
- 小時鐘:5號箭頭所指的地方就是目前的時間。默認是數字時鐘,你可以將他改為圓形的小時鐘喔!
- KDE內的文件管理
同樣的,得先來了解一下文件管理的軟件啊!在GNOME文件總管稱為鸚鵡螺, 在KDE文件總管稱為『Konqueror, 征服家』。你可以按下『K菜單』然后選擇『家目錄』,如下所示:
圖1.3.2、開啟征服家的方式之一
啟動征服家默認會出現如下圖所示的畫面:
圖1.3.3、KDE的征服家顯示文件數據圖標
如上圖所示為征服家的默認顯示情況。畫面的左邊有點類似目錄的列表,右邊則是文件詳細的信息。 而征服家可以讓妳僅選擇使用者可以隨意應用的家目錄 (2號箭頭處) 或者是整個系統的文件信息 (1號箭頭處)。 征服家默認顯示的是家目錄啦。3號箭頭處指出該目錄內有哪些信息,4號箭頭則是詳細的文件參數啦。 接下來請點選『Root文件夾』吧!讓我們瞧瞧整個文件系統有些什么東西?
圖1.3.4、根目錄數據的顯示
如上圖所示,當你點選Root文件夾,并且按下/etc那個文件夾后,畫面右邊就會出現/etc文件夾的文件內容了。 一開始文件是以小圖標來顯示,如果你按下列表圖標,就是上圖中3號箭頭處,那就會出現詳細的文件數據了。 如下圖所示:
圖1.3.5、文件數據的詳細列表顯示
如上圖所示,按下2號箭頭處讓加號 (+) 展開,妳就能夠看到更詳細的文件數據。然后拉動4號箭頭處的移動鈕, 你就能夠看到3號箭頭處的更詳細的信息,包括文件大小、類型、更動時間、所屬使用者與群組等參數數據。 其他更詳細的數據就請自己玩玩吧!
- 注銷KDE或關機
如果不想要玩KDE了,請按下『K菜單』,然后選擇『注銷』功能,就會出現如下圖示:
圖1.3.6、KDE的注銷畫面示意圖
如上圖所示,畫面最上方的『vbird』指的是你的賬號,如果你使用不同的賬號登陸,這里就會有不同的賬號名稱。 至于畫面中的三個按鈕功能為:
- 『關閉目前的會話』:就是注銷而已,會回到圖1.1.1等待登陸的畫面;
- 『關閉計算機』:就是關機的功能;
- 『重新啟動計算機』:就是重新啟動的功能!
至于更多的X window相關的使用技巧,以及相關的軟件應用,鳥哥這里就不多說了, 因為鳥哥著重在Linux操作系統的基礎應用以及網絡服務器的應用啊! ^_^ 如果你還真的有興趣, 建議你可以前往楊老師的網站上看看喔!http://apt.nc.hcc.edu.tw/docs/FC3_X/ 。
- 其他練習
- 由『K菜單』-->『尋找文件/文件夾』啟動搜尋,并找尋檔名為 crontab 的文件在哪里?
- 任務欄的最右方原本是數字形態的時鐘,請將他改為圖形顯示的時鐘;
- 如何叫出控制臺?控制面板的『區域性』里面的『鍵盤布局』有何用處?
- 重新啟動X Window的快速按鈕
一般來說,我們是可以手動來直接修改X Window的配置文件的,不過,修改完成之后的配置項目并不會立刻被加載, 必須要重新啟動X才行(特別注意,不是重新啟動,而是重新啟動X!) 。那么如何重新啟動X呢? 最簡單的方法就是:
- 直接注銷,然后再重新登陸即可;
- 在X的畫面中直接按下[Alt] + [Ctrl] + [Backspace]
第二個方法比較有趣,[backspace]是退格鍵,你按下三個按鈕后X Window立刻會被重新啟動。 如果你的X Window因為不明原因導致有點問題時,也可以利用這個方法來重新啟動X喔!^_^
X window與文本模式的切換
我們前面一直談到的是X Window的窗口管理員環境,那么在這里面有沒有純文本接口的環境啊? 當然有啊!但是,要怎么切換X Window與文本模式呢?注意喔,通常我們也稱文本模式為終端機接口, terminal 或 console喔!Linux默認的情況下會提供六個Terminal來讓使用者登陸, 切換的方式為使用:[Ctrl] + [Alt] + [F1]~[F6]的組合按鈕。
那這六個終端接口如何命名呢,系統會將[F1] ~ [F6]命名為tty1 ~ tty6的操作接口環境。 也就是說,當你按下[crtl] + [Alt] + [F1]這三個組合按鈕時 (按著[ctrl]與[Alt]不放,再按下[F1]功能鍵), 就會進入到tty1的terminal界面中了。同樣的[F2]就是tty2啰!那么如何回到剛剛的X窗口接口呢?很簡單啊!按下[Ctrl] + [Alt] + [F7]就可以了!我們整理一下登陸的環境如下:
- [Ctrl] + [Alt] + [F1] ~ [F6]? :文字接口登陸 tty1 ~ tty6 終端機;
- [Ctrl] + [Alt] + [F7]?? :圖形接口壁紙。
在Linux默認的登陸模式中,主要分為兩種,一種是僅有純文本接口(所謂的運行等級run level 3)的登陸環境,在這種環境中你可以有tty1~tty6的終端界面,但是并沒有圖形窗口接口的環境喔。 另一種則是圖形接口的登陸環境(所謂的運行等級run level 5),這也是我們第四章安裝妥當后的默認環境! 在這個環境中你就具有tty1~tty7了!其中的tty7就是啟動完成后的默認等待登陸的圖形環境!
如果你是以純文本環境啟動Linux的,默認的tty7是沒有東西的!萬一如此的話,那要怎么啟動X窗口畫面呢? 你可以在tty1~tty6的任意一個終端接口使用你的賬號登陸后(登陸的方法下一小節會介紹), 然后下達如下的命令即可:
| [vbird@www ~]$ startx |
不過startx這個命令并非萬靈丹,你要讓startx生效至少需要底下這幾件事情的配合:
- 你的tty7并沒有其他的窗口軟件正在運行(tty7必須是空出來的);
- 你必須要已經安裝了X Window system,并且X server是能夠順利啟動的;
- 你最好要有窗口管理員,例如GNOME/KDE或者是陽春的TWM等;
- 啟動X所必須要的服務,例如字型服務器(X Font Server, xfs)必須要先啟動。
剛剛我們談到的Linux啟動時可以選擇純文本或者是窗口環境,也談到了運行等級(run level)這東西! Linux默認提供了七個Run level給我們使用,其中最常用到的就是run level 3與run level 5這兩者了。 如果你想要讓Linux在下次啟動時使用純文本環境(run level 3)來登陸,只要修訂一下/etc/inittab這個文件的內容,就能夠在下次重新啟動時生效了! 因為我們尚未提到vi以及啟動過程的詳細信息, 所以啊,這部分得到系統管理員篇幅的時候再說明!別擔心,再仔細的看下去吧!
在終端界面登陸linux
剛剛你如果有按下[Ctrl] + [Alt] + [F1]就可以來到tty1的登陸畫面,而如果你是使用純文本接口(其實是run level 3)啟動Linux主機的話,那么默認就是會來到tty1這個環境中。這個環境的等待登陸的畫面有點像這樣:
| CentOS release 5.3 (Final) Kernel 2.6.18-128.el5 on an i686 www login: vbird Password: [vbird@www ~]$ _ |
上面顯示的內容是這樣的:
顯示Linux distribution的名稱(CentOS)與版本(5.3);
顯示核心的版本為2.6.18-128.el5, 且目前這部主機的硬件等級為i686。如果是使用x86_64的Linux版本且安裝到64位的PC,那你的硬件等級就會是『X86_64』喔!
那個www是你的主機名。我們在第四章安裝時有填寫主機名為: www.vbird.tsai,主機名的顯示通常只取第一個小數點前的字母,所以就成為www啦!至于login:則是一支可以讓我們登陸的程序。 你可以在login:后面輸入你的賬號。以鳥哥為例,我輸入的就是第四章創建的vbird那個賬號啦! 當然啰,你也可以使用root這個賬號來登陸的。不過『root』這個賬號代表在Linux系統下無窮的權力, 所以盡量不要使用root賬號來登陸啦!
這一行則在第三行的vbird輸入后才會出現,要你輸入密碼啰! 請注意,在輸入密碼的時候,屏幕上面『不會顯示任何的字樣!』, 所以不要以為你的鍵盤壞掉去!很多初學者一開始到這里都會拼命的問!啊我的鍵盤怎么不能用...
這一行則是正確登陸之后才顯示的信息, 最左邊的vbird顯示的是『目前用戶的賬號』,而@之后接的www則是『主機名』,至于最右邊的~則指的是 『目前所在的目錄』,那個$則是我們常常講的『提示字符』啦!
| Tips: 那個 ~ 符號代表的是『用戶的家目錄』的意思,他是個『變量!』 這相關的意義我們會在后續的章節依序介紹到。舉例來說,root的家目錄在/root, 所以 ~ 就代表/root的意思。而vbird的家目錄在/home/vbird, 所以如果你以vbird登陸時,他看到的 ~ 就會等于/home/vbird喔! 至于提示字符方面,在Linux當中,默認root的提示字符為 # ,而一般身份用戶的提示字符為 $ 。 還有,上面的第一、第二行的內容其實是來自于/etc/issue這個文件喔! |
好了這樣就是登陸主機了!很快樂吧!耶~
另外,再次強調,在Linux系統下最好常使用一般賬號來登陸即可,所以上例中鳥哥是以自己的賬號vbird來登陸的。 因為系統管理員賬號(root)具有無窮大的權力,例如他可以刪除任何一個文件或目錄。因此若你以root身份登陸Linux系統, 一個不小心下錯命令,這個時候可不是『欲哭無淚』就能夠解決的了問題的~
因此,一個稱職的網絡/系統管理人員,通常都會具有兩個賬號,平時以自己的一般賬號來使用Linux主機的任何資源, 有需要動用到系統功能修訂時,才會轉換身份成為root呢!所以,鳥哥強烈建議你創建一個普通的賬號來供自己平時使用喔! 更詳細的賬號信息,我們會在后續的『第十四章賬號管理』再次提及! 這里先有概念即可!
那么如何離開系統呢?其實應該說『注銷Linux』才對!注銷很簡單,直接這樣做:
| [vbird@www ~]$ exit |
就能夠注銷Linux了。但是請注意:『離開系統并不是關機!』 基本上,Linux本身已經有相當多的工作在進行,你的登陸也僅是其中的一個『工作』而已, 所以當你離開時,這次這個登陸的工作就停止了,但此時Linux其他的工作是還是繼續在進行的! 本章后面我們再來提如何正確的關機,這里先創建起這個概念即可!
文本模式下命令的下達
其實我們都是透過『程序』在跟系統作溝通的,本章上面提到的窗口管理員或文本模式都是一組或一只程序在負責我們所想要完成的命令。 文本模式登陸后所取得的程序被稱為殼(Shell),這是因為這支程序負責最外面跟使用者(我們)溝通,所以才被戲稱為殼程序! 更多與操作系統及殼程序的相關性可以參考第零章、計算器概論內的說明。
我們Linux的殼程序就是厲害的bash這一支!關于更多的bash我們在第三篇再來介紹。現在讓我們來練一練打字吧!
開始下達命令
其實整個命令下達的方式很簡單,你只要記得幾個重要的概念就可以了。 舉例來說,你可以這樣下達命令的:
| [vbird@www ~]$ command [-options] parameter1 parameter2 ... 命令 選項 參數(1) 參數(2) 說明: 0. 一行命令中第一個輸入的部分絕對是『命令(command)』或『可運行文件案』 1. command 為命令的名稱,例如變換路徑的命令為 cd 等等; 2. 中刮號[]并不存在于實際的命令中,而加入選項配置時,通常選項前會帶 - 號, 例如 -h;有時候會使用選項的完整全名,則選項前帶有 -- 符號,例如 --help; 3. parameter1 parameter2.. 為依附在選項后面的參數,或者是 command 的參數; 4. 命令, 選項, 參數等這幾個咚咚中間以空格來區分,不論空幾格 shell 都視為一格; 5. 按下[Enter]按鍵后,該命令就立即運行。[Enter]按鍵代表著一行命令的開始啟動。 6. 命令太長的時候,可以使用反斜杠 (\) 來跳脫[Enter]符號,使命令連續到下一行。 注意!反斜杠后就立刻接特殊字符,才能跳脫! 其他: a. 在 Linux 系統中,英文大小寫字母是不一樣的。舉例來說, cd 與 CD 并不同。 b. 更多的介紹等到第十一章 bash 時,再來詳述。 |
注意到上面的說明當中,『第一個被輸入的數據絕對是命令或者是可運行的文件』! 這個是很重要的概念喔!還有,按下[Enter]鍵表示要開始運行此一命令的意思。我們來實際操作一下: 以ls這個『命令』列出『自己家目錄(~)』下的『所有隱藏檔與相關的文件屬性』, 要達成上述的要求需要加入 -al 這樣的選項,所以:
| [vbird@www ~]$ ls -al ~ [vbird@www ~]$ ls -al ~ [vbird@www ~]$ ls -a -l ~ |
上面這三個命令的下達方式是一模一樣的運行結果喔!為什么?請參考上面的說明吧! 關于更詳細的文本模式使用方式,我們會在第十一章認識BASH再來強調喔! 此外,請特別留意,在Linux的環境中, 『大小寫字母是不一樣的東西!』也就是說,在Linux底下, VBird與vbird這兩個文件是『完全不一樣的』文件呢!所以, 你在下達命令的時候千萬要注意到命令是大寫還是小寫。例如當輸入底下這個命令的時候,看看有什么現象:
| [vbird@www ~]$ date <==結果顯示日期與時間 [vbird@www ~]$ Date <==結果顯示找不到命令 [vbird@www ~]$ DATE <==結果顯示找不到命令 |
很好玩吧!只是改變小寫成為大寫而已,該命令就變的不存在了! 因此,請千萬記得這個狀態呦!
- 語系的支持
另外,很多時候你會發現,咦!怎么我輸入命令之后顯示的結果的是亂碼? 這跟鳥哥說的不一樣啊!呵呵!不要緊張~我們前面提到過,Linux是可以支持多國語系的,若可能的話, 屏幕的信息是會以該支持語系來輸出的。但是,我們的終端機接口(terminal)在默認的情況下, 無法支持以中文編碼輸出數據的。這個時候,我們就得將支持語系改為英文,才能夠以英文顯示出正確的信息。 那怎么做呢?你可以這樣做:
| 1. 顯示目前所支持的語系 [vbird@www ~]$ echo $LANG zh_TW.UTF-8 # 上面的意思是說,目前的語系(LANG)為zh_TW.UTF-8,亦即臺灣繁體中文的萬國碼 2. 修改語系成為英文語系 [vbird@www ~]$ LANG=en_US # 注意到上面的命令中沒有空格符,且英文語系為en_US才對喔! [vbird@www ~]$ echo $LANG en_US # 再次確認一下,結果出現,確實是en_US這個英文語系! |
注意一下,那個『LANG=en_US』是連續輸入的,等號兩邊并沒有空格符喔! 這樣一來,就能夠在『這次的登陸』察看英文信息啰!為什么說是『這次的登陸』呢? 因為,如果你注銷Linux后,剛剛下達的命令就沒有用啦! ^_^,這個我們會在第十一章再好好聊一聊的!好啰,底下我們來練習一下一些簡單的命令, 好讓你可以了解命令下達方式的模式:
基礎命令的操作
底下我們立刻來操作幾個簡單的命令看看啰!
- 顯示日期與時間的命令: date
- 顯示日歷的命令: cal
- 簡單好用的計算器: bc
1. 顯示日期的命令: date
如果在文字接口中想要知道目前Linux系統的時間,那么就直接在命令列模式輸入date即可顯示:
| [vbird@www ~]$ date Mon Aug 17 17:02:52 CST 2009 |
上面顯示的是:星期一, 八月十七日, 17:02 分, 52秒,在 2009 年的 CST 時區!臺灣在CST時區中啦! 請趕快動手做做看呦!好了,那么如果我想要讓這個程序顯示出『2009/08/17』這樣的日期顯示方式呢? 那么就使用date的格式化輸出功能吧!
| [vbird@www ~]$ date +%Y/%m/%d 2009/08/17 [vbird@www ~]$ date +%H:%M 17:04 |
那個『+%Y%m%d』就是date命令的一些參數功能啦!很好玩吧!那你問我, 鳥哥怎么知道這些參數的啊?要背起來嗎?當然不必啦!底下再告訴你怎么查這些參數啰!
從上面的例子當中我們也可以知道,命令之后的選項除了前面帶有減號『-』之外,某些特殊情況下, 選項或參數前面也會帶有正號『+』的情況!這部份可不要輕易的忘記了呢!
2. 顯示日歷的命令: cal
那如果我想要列出目前這個月份的月歷呢?呵呵!直接給他下達cal即可!
| [vbird@www ~]$ cal August 2009 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
除了本月的日歷之外,連同今日所在處都會有反白的顯示呢!真有趣!cal (calendar)這個命令可以做的事情還很多,例如你可以顯示整年的月歷情況:
| [vbird@www ~]$ cal 2009 2009 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 6 7 4 5 6 7 8 9 10 8 9 10 11 12 13 14 8 9 10 11 12 13 14 11 12 13 14 15 16 17 15 16 17 18 19 20 21 15 16 17 18 19 20 21 18 19 20 21 22 23 24 22 23 24 25 26 27 28 22 23 24 25 26 27 28 25 26 27 28 29 30 31 29 30 31 April May June Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 1 2 1 2 3 4 5 6 5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13 12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20 19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27 26 27 28 29 30 24 25 26 27 28 29 30 28 29 30 31 ....(以下省略).... |
基本上cal這個命令可以接的語法為:
| [vbird@www ~]$ cal [month] [year] |
所以,如果我想要知道2009年10月的月歷,可以直接下達:
| [vbird@www ~]$ cal 10 2009 October 2009 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
那請問今年有沒有13月啊?來測試一下這個命令的正確性吧!下達下列命令看看:
| [vbird@www ~]$ cal 13 2009 cal: illegal month value: use 1-12 |
cal竟然會告訴我們『錯誤的月份,請使用1-12』這樣的信息呢!所以, 未來你可以很輕易的就以cal來取得日歷上面的日期啰!簡直就是萬年歷啦! ^_^。 另外,由這個cal命令的練習我們也可以知道,某些命令有特殊的參數存在, 若輸入錯誤的參數,則該命令會有錯誤信息的提示,透過這個提示我們可以藉以了解命令下達錯誤之處。 這個練習的結果請牢記在心中喔!
3. 簡單好用的計算器: bc
如果在文本模式當中,突然想要作一些簡單的加減乘除,偏偏手邊又沒有計算器!這個時候要筆算嗎? 不需要啦!我們的Linux有提供一支計算程序,那就是bc喔。你在命令列輸入bc后,屏幕會顯示出版本信息, 之后就進入到等待指示的階段。如下所示:
| [vbird@www ~]$ bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. _ <==這個時候,光標會停留在這里等待你的輸入 |
事實上,我們是『進入到bc這個軟件的工作環境當中』了! 就好像我們在Windows里面使用『小算盤』一樣!所以,我們底下嘗試輸入的數據, 都是在bc程序當中在進行運算的動作。所以啰,你輸入的數據當然就得要符合bc的要求才行! 在基本的bc計算器操作之前,先告知幾個使用的運算符好了:
- + 加法
- - 減法
- * 乘法
- / 除法
- ^ 指數
- % 余數
好!讓我們來使用bc計算一些咚咚吧!
| [vbird@www ~]$ bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 1+2+3+4 <==只有加法時 10 7-8+3 2 10*52 520 10%3 <==計算『余數』 1 10^2 100 10/100 <==這個最奇怪!不是應該是 0.1 嗎? 0 quit <==離開 bc 這個計算器 |
在上表當中,粗體字表示輸入的數據,而在每個粗體字的底下就是輸出的結果。 咦!每個計算都還算正確,怎么10/100會變成0呢?這是因為bc默認僅輸出整數,如果要輸出小數點下位數,那么就必須要運行 scale=number ,那個number就是小數點位數,例如:
| [vbird@www ~]$ bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. scale=3 <==沒錯!就是這里!! 1/3 .333 340/2349 .144 quit |
注意啊!要離開bc回到命令提示字符時,務必要輸入『quit』來離開bc的軟件環境喔! 好了!就是這樣子啦!簡單的很吧!以后你可以輕輕松松的進行加減乘除啦!
從上面的練習我們大概可以知道在命令列模式里面下達命令時,會有兩種主要的情況:
- 一種是該命令會直接顯示結果然后回到命令提示字符等待下一個命令的輸入;
- 一種是進入到該命令的環境,直到結束該命令才回到命令提示字符的環境。
我們以一個簡單的圖示來說明:
圖2.2.1、命令下達的環境,上圖為直接顯示結果,下圖為進入軟件功能
如圖2.2.1所示,上方命令下達后立即顯示信息且立刻回到命令提示字符的環境。 如果有進入軟件功能的環境(例如上面的bc軟件),那么就得要使用該軟件的結束命令 (例如在bc環境中輸入quit)才能夠回到命令提示字符中!那你怎么知道你是否在命令提示字符的環境呢? 很簡單!你只要看到光標是在『[vbird@www ~]$』這種提示字符后面, 那就是等待輸入命令的環境了。很容易判斷吧!不過初學者還是很容易忘記啦!
重要的幾個熱鍵[Tab], [ctrl]-c, [ctrl]-d
在繼續后面章節的學習之前,這里很需要跟大家再來報告一件事,那就是我們的文本模式里頭具有很多的功能組合鍵, 這些按鍵可以輔助我們進行命令的編寫與程序的中斷呢!這幾個按鍵請大家務必要記住的!很重要喔!
- [Tab]按鍵
[Tab]按鍵就是在鍵盤的大寫燈切換按鍵([Caps Lock])上面的那個按鍵!在各種Unix-Like的Shell當中, 這個[Tab]按鍵算是Linux的Bash shell最棒的功能之一了!他具有『命令補全』與『文件補齊』的功能喔! 重點是,可以避免我們打錯命令或文件名呢!很棒吧!但是[Tab]按鍵在不同的地方輸入,會有不一樣的結果喔! 我們舉下面的例子來說明。上一小節我們不是提到 cal 這個命令嗎?如果我在命令列輸入 ca 再按兩次 [tab] 按鍵, 會出現什么信息?
| [vbird@www ~]$ ca[tab][tab] <==[tab]按鍵是緊接在 a 字母后面! cadaver callgrind_control capifax card cal cameratopam capifaxrcvd case caller cancel capiinfo cat callgrind_annotate cancel.cups captoinfo catchsegv # 上面的 [tab] 指的是『按下那個tab鍵』,不是要你輸入中括號內的tab啦! |
發現什么事?所有以ca為開頭的命令都被顯示出來啦!很不錯吧!那如果你輸入『ls -al ~/.bash』再加兩個[tab]會出現什么?
| [vbird@www ~]$ ls -al ~/.bash[tab][tab] .bash_history .bash_logout .bash_profile .bashrc |
咦!在該目錄下面所有以 .bash 為開頭的文件名都會被顯示出來了呢!注意看上面兩個例子喔, 我們按[tab]按鍵的地方如果是在command(第一個輸入的數據)后面時,他就代表著 『命令補全』,如果是接在第二個字以后的,就會變成『文件補齊』的功能了!總結一下:
- [Tab] 接在一串命令的第一個字的后面,則為命令補全;
- [Tab] 接在一串命令的第二個字以后時,則為『文件補齊』!
善用 [tab] 按鍵真的是個很好的習慣!可以讓你避免掉很多輸入錯誤的機會!
- [Ctrl]-c 按鍵
如果你在Linux底下輸入了錯誤的命令或參數,有的時候這個命令或程序會在系統底下『跑不停』這個時候怎么辦?別擔心, 如果你想讓當前的程序『停掉』的話,可以輸入:[Ctrl]與c按鍵(先按著[Ctrl]不放,且再按下c按鍵,是組合按鍵), 那就是中斷目前程序的按鍵啦!舉例來說,如果你輸入了『find /』這個命令時,系統會開始跑一些東西(先不要理會這個命令串的意義),此時你給他按下 [Ctrl]-c 組合按鍵,嘿嘿!是否立刻發現這個命令串被終止了!就是這樣的意思啦!
| [vbird@www ~]$ find / ....(一堆東西都省略).... # 此時屏幕會很花,你看不到命令提示字符的!直接按下[ctrl]-c即可! [vbird@www ~]$ <==此時提示字符就會回來了!find程序就被中斷! |
不過你應該要注意的是,這個組合鍵是可以將正在運行中的命令中斷的, 如果你正在運行比較重要的命令,可別急著使用這個組合按鍵喔! ^_^
- [Ctrl]-d 按鍵
那么[Ctrl]-d是什么呢?就是[Ctrl]與d按鍵的組合啊!這個組合按鍵通常代表著: 『鍵盤輸入結束(End Of File, EOF 或 End Of Input)』的意思! 另外,他也可以用來取代exit的輸入呢!例如你想要直接離開文字接口,可以直接按下[Ctrl]-d就能夠直接離開了(相當于輸入exit啊!)。
總之,在Linux底下,文字接口的功能是很強悍的!要多多的學習他,而要學習他的基礎要訣就是...多使用、多熟悉啦!
錯誤信息的察看
萬一我下達了錯誤的命令怎么辦?不要緊呀!你可以藉由屏幕上面顯示的錯誤信息來了解你的問題點, 那就很容易知道如何改善這個錯誤信息啰!舉個例子來說,假如想運行date卻因為大小寫打錯成為DATE時, 這個錯誤的信息是這樣顯示的:
| [vbird@www ~]$ DATE -bash: DATE: command not found |
上面那個bash:表示的是我們的Shell的名稱, 本小節一開始就談到過Linux的默認殼程序就是bash啰! 那么上面的例子說明了bash有錯誤,什么錯誤呢?bash告訴你:
DATE: command not found字面上的意思是說『命令找不到』,那個命令呢?就是DATE這個命令啦! 所以說,系統上面可能并沒有DATE這個命令啰!就是這么簡單!通常出現『command not found』的可能原因為:
- 這個命令不存在,因為該軟件沒有安裝之故。解決方法就是安裝該軟件;
- 這個命令所在的目錄目前的用戶并沒有將他加入命令搜尋路徑中,請參考bash的PATH說明;
- 很簡單!因為你打錯字!
另外常見的錯誤就是我們曾經看過的例子,如下所示:
| [vbird@www ~]$ cal 13 2009 cal: illegal month value: use 1-12 |
屏幕會告訴我們錯誤的信息啦!照著屏幕的信息去處理即可解決你的錯誤啦!是否很簡單啊! 因此,以后如果出現了問題,屏幕上的信息真的是很重要的呢!不要忽略了他呦!
介紹這幾個命令讓你玩一玩先,更詳細的命令操作方法我們會在第三篇的時候再進行介紹! 現在讓我們來想一想,萬一我在操作date這個命令的時候,手邊又沒有這本書,我要怎么知道要如何加那些奇怪的參數, 好讓輸出的結果符合我想要的輸出格式呢?嘿嘿!到下一節鳥哥來告訴你怎么辦吧!
Linux系統的在線求助man page與info page
先來了解一下Linux有多少命令呢?在文本模式下,你可以直接按下兩個[Tab]按鍵,看看總共有多少命令可以讓你用?
| [vbird@www ~]$ <==在這里不要輸入任何字符,直接輸入兩次[tab]按鍵 Display all 2450 possibilities? (y or n) <==如果不想要看,按 n 離開 |
如上所示,鳥哥安裝的這個系統中,少說也有2000多個以上的命令可以讓vbird這個賬號使用。 那在Linux里面到底要不要背『命令』啊?可以啊!你背啊!這種事,鳥哥這個『忘性』特佳的老人家實在是背不起來 @_@ ~當然啦,有的時候為了要考試(例如一些認證考試等等的)還是需要背一些重要的命令與選項的! 不過,鳥哥主要還是以理解『在什么情況下,應該要使用哪方面的命令』為準的!
既然鳥哥說不需要背命令,那么我們如何知道每個命令的詳細用法?還有,某些配置文件的內容到底是什么? 這個可就不需要擔心了!因為在Linux上開發的軟件大多數都是自由軟件,而這些軟件的開發者為了讓大家能夠了解命令的用法, 都會自行制作很多的文件,而這些文件也可以直接在在線就能夠輕易的被使用者查詢出來喔!很不賴吧! 這根本就是『聯機幫助文件』嘛!哈哈!沒錯!確實如此。我們底下就來談一談,Linux到底有多少的在線文件數據呢?
man page
嗄?不知道怎么使用date這個命令?嘿嘿!不要擔心,我們Linux上面的在線求助系統已經都幫你想好要怎么辦了, 所以你只要使用簡單的方法去尋找一下說明的內容,馬上就清清楚楚的知道該命令的用法了!怎么看呢?就是找男人(man) 呀!喔!不是啦!這個man是manual(操作說明)的簡寫啦!只要下達:『man date』 馬上就會有清楚的說明出現在你面前喔!如下所示:
| [vbird@www ~]$ LANG="en" # 還記得這個咚咚的用意吧?前面提過了,是為了『語系』的需要啊!下達過一次即可! [vbird@www ~]$ man date DATE(1) User Commands DATE(1) # 請注意上面這個括號內的數字 NAME <==這個命令的完整全名,如下所示為date且說明簡單用途為配置與顯示日期/時間 date - print or set the system date and time SYNOPSIS <==這個命令的基本語法如下所示 date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] DESCRIPTION <==詳細說明剛剛語法談到的選項與參數的用法 Display the current time in the given FORMAT, or set the system date. -d, --date=STRING <==左邊-d為短選項名稱,右邊--date為完整選項名稱 display time described by STRING, not 'now' -f, --file=DATEFILE like --date once for each line of DATEFILE -r, --reference=FILE display the last modification time of FILE ....(中間省略).... # 找到了!底下就是格式化輸出的詳細數據! FORMAT controls the output. The only valid option for the second form specifies Coordinated Universal Time. Interpreted sequences are: %% a literal % %a locale's abbreviated weekday name (e.g., Sun) %A locale's full weekday name (e.g., Sunday) ....(中間省略).... ENVIRONMENT <==與這個命令相關的環境參數有如下的說明 TZ Specifies the timezone, unless overridden by command line parameters. If neither is specified, the setting from /etc/localtime is used. AUTHOR <==這個命令的作者啦! Written by David MacKenzie. REPORTING BUGS <==有問題請留言給底下的email的意思! Report bugs to <bug-coreutils@gnu.org>. COPYRIGHT <==受到著作權法的保護!用的就是 GPL 了! Copyright ? 2006 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the extent permitted by law. SEE ALSO <==這個重要,你還可以從哪里查到與date相關的說明文件之意 The full documentation for date is maintained as a Texinfo manual. If the info and date programs are properly installed at your site, the command info date should give you access to the complete manual. date 5.97 May 2006 DATE(1) |
| Tips: 進入man命令的功能后,你可以按下『空格鍵』往下翻頁,可以按下『 q 』按鍵來離開man的環境。 更多在man命令下的功能,本小節后面會談到的! |
看(鳥哥沒罵人!)馬上就知道一大堆的用法了!如此一來,不就可以知道date的相關選項與參數了嗎?真方便! 而出現的這個屏幕畫面,我們稱呼他為man page, 你可以在里頭查詢他的用法與相關的參數說明。如果仔細一點來看這個man page的話,你會發現幾個有趣的東西。
首先,在上個表格的第一行,你可以看到的是:『DATE(1)』,DATE我們知道是命令的名稱, 那么(1)代表什么呢?他代表的是『一般用戶可使用的命令』的意思!咦!還有這個用意啊!呵呵! 沒錯~在查詢數據的后面的數字是有意義的喔!他可以幫助我們了解或者是直接查詢相關的數據。 常見的幾個數字的意義是這樣的:
| 代號 | 代表內容 |
| 1 | 使用者在shell環境中可以操作的命令或可運行文件 |
| 2 | 系統核心可呼叫的函數與工具等 |
| 3 | 一些常用的函數(function)與函式庫(library),大部分為C的函式庫(libc) |
| 4 | 裝置文件的說明,通常在/dev下的文件 |
| 5 | 配置文件或者是某些文件的格式 |
| 6 | 游戲(games) |
| 7 | 慣例與協議等,例如Linux文件系統、網絡協議、ASCII code等等的說明 |
| 8 | 系統管理員可用的管理命令 |
| 9 | 跟kernel有關的文件 |
上述的表格內容可以使用『man 7 man』來更詳細的取得說明。透過這張表格的說明, 未來你如果使用man page在察看某些數據時,就會知道該命令/文件所代表的基本意義是什么了。 舉例來說,如果你下達了『man null』時,會出現的第一行是:『NULL(4)』,對照一下上面的數字意義, 嘿嘿!原來null這個玩意兒竟然是一個『裝置文件』呢!很容易了解了吧!
| Tips: 上表中的1, 5, 8這三個號碼特別重要,也請讀者要將這三個數字所代表的意義背下來喔! |
再來,man page的內容也分成好幾個部分來加以介紹該命令呢!就是上頭man date那個表格內, 以NAME作為開始介紹,最后還有個SEE ALSO來作為結束。基本上,man page大致分成底下這幾個部分:
| 代號 | 內容說明 |
| NAME | 簡短的命令、數據名稱說明 |
| SYNOPSIS | 簡短的命令下達語法(syntax)簡介 |
| DESCRIPTION | 較為完整的說明,這部分最好仔細看看! |
| OPTIONS | 針對 SYNOPSIS 部分中,有列舉的所有可用的選項說明 |
| COMMANDS | 當這個程序(軟件)在運行的時候,可以在此程序(軟件)中下達的命令 |
| FILES | 這個程序或數據所使用或參考或連結到的某些文件 |
| SEE ALSO | 可以參考的,跟這個命令或數據有相關的其他說明! |
| EXAMPLE | 一些可以參考的范例 |
| BUGS | 是否有相關的臭蟲! |
有時候除了這些外,還可能會看到Authors與Copyright等,不過也有很多時候僅有NAME與DESCRIPTION等部分。 通常鳥哥在查詢某個數據時是這樣來查閱的:
大致上了解了man page的內容后,那么在man page當中我還可以利用哪些按鍵來幫忙查閱呢?首先, 如果要向下翻頁的話,可以按下鍵盤的空格鍵,也可以使用[Page Up]與[Page Down]來翻頁呢!同時,如果你知道某些關鍵詞的話, 那么可以在任何時候輸入『/word』,來主動搜尋關鍵詞!例如在上面的搜尋當中,我輸入了『/date』會變成怎樣?
| DATE(1) User Commands DATE(1) NAME date - print or set the system date and time SYNOPSIS date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] DESCRIPTION Display the current time in the given FORMAT, or set the system date. ....(中間省略).... /date <==只要按下/,光標就會跑到這個地方來,你就可以開始輸入搜尋字符串咯 |
看到了嗎,當你按下『/』之后,光標就會移動到屏幕的最下面一行, 并等待你輸入搜尋的字符串了。此時,輸入date后,man page就會開始搜尋跟date有關的字符串, 并且移動到該區域呢!很方便吧!最后,如果要離開man page時,直接按下『 q 』就能夠離開了。 我們將一些在man page常用的按鍵給他整理整理:
| 按鍵 | 進行工作 |
| 空格鍵 | 向下翻一頁 |
| [Page Down] | 向下翻一頁 |
| [Page Up] | 向上翻一頁 |
| [Home] | 去到第一頁 |
| [End] | 去到最后一頁 |
| /string | 向『下』搜尋 string 這個字符串,如果要搜尋 vbird 的話,就輸入 /vbird |
| ?string | 向『上』搜尋 string 這個字符串 |
| n, N | 利用 / 或 ? 來搜尋字符串時,可以用 n 來繼續下一個搜尋 (不論是 / 或 ?) ,可以利用 N 來進行『反向』搜尋。舉例來說,我以 /vbird 搜尋 vbird 字符串, 那么可以 n 繼續往下查詢,用 N 往上查詢。若以 ?vbird 向上查詢 vbird 字符串, 那我可以用 n 繼續『向上』查詢,用 N 反向查詢。 |
| q | 結束這次的 man page |
要注意喔!上面的按鍵是在man page的畫面當中才能使用的! 比較有趣的是那個搜尋啦!我們可以往下或者是往上搜尋某個字符串,例如要在man page內搜尋vbird這個字符串, 可以輸入 /vbird 或者是 ?vbird ,只不過一個是往下而一個是往上來搜尋的。而要重復搜尋 某個字符串時,可以使用 n 或者是 N 來動作即可呢! 很方便吧!^_^
既然有man page,自然就是因為有一些文件數據,所以才能夠以man page讀出來啰!那么這些man page的數據 放在哪里呢?不同的distribution通常可能有點差異性,不過,通常是放在/usr/share/man這個目錄里頭,然而,我們可以透過修改他的man page搜尋路徑來改善這個目錄的問題!修改/etc/man.config (有的版本為man.conf或manpath.conf)即可啰!至于更多的關于man的信息你可以使用『 man man 』來查詢呦!關于更詳細的配置,我們會在第十一章 bash 當中繼續的說明喔!
- 搜尋特定命令/文件的man page說明文件
在某些情況下,你可能知道要使用某些特定的命令或者是修改某些特定的配置文件,但是偏偏忘記了該命令的完整名稱。 有些時候則是你只記得該命令的部分關鍵詞。這個時候你要如何查出來你所想要知道的man page呢? 我們以底下的幾個例子來說明man這個命令有用的地方喔!
例題: 你可否查出來,系統中還有哪些跟『man』這個命令有關的說明文件呢? 答: 你可以使用底下的命令來查詢一下:
|
除此之外,我們還可以利用『關鍵詞』找到更多的說明文件數據喔!什么是關鍵詞呢? 從上面的『man -f man』輸出的結果中,我們知道其實輸出的數據是:
- 左邊部分:命令(或文件)以及該命令所代表的意義(就是那個數字);
- 右邊部分:這個命令的簡易說明,例如上述的『-macros to format man pages』
當使用『man -f 命令』時,man只會找數據中的左邊那個命令(或文件)的完整名稱,有一點不同都不行! 但如果我想要找的是『關鍵詞』呢?也就是說,我想要同時找上面說的兩個地方的內容,只要該內容有關鍵詞存在, 不需要完全相同的命令(或文件)就能夠找到時,該怎么辦?請看下個范例啰!
例題: 找出系統的說明文件中,只要有man這個關鍵詞就將該說明列出來。 答:
|
事實上,還有兩個命令與man page有關呢!而這兩個命令是man的簡略寫法說~就是這兩個:
| [vbird@www ~]$ whatis [命令或者是數據] <==相當于 man -f [命令或者是數據] [vbird@www ~]$ apropos [命令或者是數據] <==相當于 man -k [命令或者是數據] |
而要注意的是,這兩個特殊命令要能使用,必須要有創建 whatis 數據庫才行!這個數據庫的創建需要以 root 的身份下達如下的命令:
| [root@www ~]# makewhatis |
| Tips: 一般來說,鳥哥是真的不會去背命令的,只會去記住幾個常見的命令而已。那么鳥哥是怎么找到所需要的命令呢? 舉例來說,打印的相關命令,鳥哥其實僅記得 lp (line print)而已。那我就由 man lp 開始,去找相關的說明, 然后,再以 lp[tab][tab] 找到任何以 lp 為開頭的命令,找到我認為可能有點相關的命令后, 再以 man 去查詢命令的用法!呵呵!所以,如果是實際在管理 Linux , 那么真的只要記得幾個很重要的命令即可,其他需要的,嘿嘿!努力的找男人(man)吧! |
info page
在所有的Unix Like系統當中,都可以利用 man 來查詢命令或者是相關文件的用法; 但是,在Linux里面則又額外提供了一種在線求助的方法,那就是利用info這個好用的家伙啦!
基本上,info與man的用途其實差不多,都是用來查詢命令的用法或者是文件的格式。但是與man page一口氣輸出一堆信息不同的是,info page則是將文件數據拆成一個一個的段落,每個段落用自己的頁面來撰寫, 并且在各個頁面中還有類似網頁的『超鏈接』來跳到各不同的頁面中,每個獨立的頁面也被稱為一個節點(node)。 所以,你可以將info page想成是文本模式的網頁顯示數據啦!
不過你要查詢的目標數據的說明文件必須要以info的格式來寫成才能夠使用info的特殊功能(例如超鏈接)。 而這個支持info命令的文件默認是放置在/usr/share/info/這個目錄當中的。 舉例來說,info這個命令的說明文件有寫成info格式,所以,你使用『 info info 』可以得到如下的畫面:
| [vbird@www ~]$ info info File: info.info, Node: Top, Next: Getting Started, Up: (dir) Info: An Introduction ********************* The GNU Project distributes most of its on-line manuals in the "Info format", which you read using an "Info reader". You are probably using an Info reader to read this now. ....(中間省略).... To read about expert-level Info commands, type `n' twice. This brings you to `Info for Experts', skipping over the `Getting Started' chapter. * Menu: * Getting Started:: Getting started using an Info reader. * Expert Info:: Info commands for experts. * Creating an Info File:: How to make your own Info file. * Index:: An index of topics, commands, and variables. --zz-Info: (info.info.gz)Top, 29 lines --Top------------------------------ Welcome to Info version 4.8. Type ? for help, m for menu item. |
仔細的看到上面這個顯示的結果,里面的第一行顯示了很多的信息喔!第一行里面的數據意義為:
- File:代表這個info page的數據是來自info.info文件所提供的;
- Node:代表目前的這個頁面是屬于Top節點。 意思是info.info內含有很多信息,而Top僅是info.info文件內的一個節點內容而已;
- Next:下一個節點的名稱為Getting Started,你也可以按『N』到下個節點去;
- Up:回到上一層的節點總攬畫面,你也可以按下『U』回到上一層;
- Prev:前一個節點。但由于Top是info.info的第一個節點,所以上面沒有前一個節點的信息。
從第一行你可以知道這個節點的內容、來源與相關鏈接的信息。更有用的信息是,你可以透過直接按下N, P, U來去到下一個、上一個與上一層的節點(node)!非常的方便! 第一行之后就是針對這個節點的說明。在上表的范例中,第二行以后的說明就是針對info.info內的Top這個節點所做的。
再來,你也會看到有『Menu』那個咚咚吧!底下共分為四小節,分別是Getting Started等等的,我們可以使用上下左右按鍵來將光標移動到該文字或者『 * 』上面,按下Enter, 就可以前往該小節了!另外,也可以按下[Tab]按鍵,就可以快速的將光標在上表的畫面中的node間移動, 真的是非常的方便好用。如果將info.info內的各個節點串在一起并繪制成圖表的話,情況有點像底下這樣:
圖3.2.1、info page各說明文件相關性的示意圖
如同上圖所示,info的說明文件將內容分成多個node,并且每個node都有定位與連結。 在各連結之間還可以具有類似『超鏈接』的快速按鈕,可以透過[tab]鍵在各個超鏈接間移動。 也可以使用U,P,N來在各個階層與相關鏈接中顯示!非常的不錯用啦! 至于在info page當中可以使用的按鍵,可以整理成這樣:
| 按鍵 | 進行工作 |
| 空格鍵 | 向下翻一頁 |
| [Page Down] | 向下翻一頁 |
| [Page Up] | 向上翻一頁 |
| [tab] | 在 node 之間移動,有 node 的地方,通常會以 * 顯示。 |
| [Enter] | 當光標在 node 上面時,按下 Enter 可以進入該 node 。 |
| b | 移動光標到該 info 畫面當中的第一個 node 處 |
| e | 移動光標到該 info 畫面當中的最后一個 node 處 |
| n | 前往下一個 node 處 |
| p | 前往上一個 node 處 |
| u | 向上移動一層 |
| s(/) | 在 info page 當中進行搜尋 |
| h | 顯示求助菜單 |
| ? | 命令一覽表 |
| q | 結束這次的 info page |
info page是只有Linux上面才有的產物,而且易讀性增強很多~不過查詢的命令說明要具有info page功能的話,得用info page的格式來寫成在線求助文件才行!我們CentOS 5將info page的文件放置到/usr/share/info/目錄中!至于非以info page格式寫成的說明文件(就是man page),雖然也能夠使用info來顯示,不過其結果就會跟man相同。 舉例來說,你可以下達『info man』就知道結果了! ^_^
其他有用的文件(documents)
剛剛前面說,一般而言,命令或者軟件制作者,都會將自己的命令或者是軟件的說明制作成『聯機幫助文件』! 但是,畢竟不是每個文件都需要做成聯機幫助文件的,還有相當多的說明需要額外的文件!此時,這個所謂的 How-To(如何做的意思)就很重要啦!還有,某些軟件不只告訴你『如何做』, 還會有一些相關的原理會說明呢。
那么這些說明文件要擺在哪里呢?哈哈!就是擺在/usr/share/doc這個目錄啦!所以說,你只要到這個目錄底下, 就會發現好多好多的說明文件檔啦!還不需要到網絡上面找數據呢!厲害吧!^_^ 舉例來說,你想要知道這一版的CentOS相關的各項信息,可以直接到底下的目錄去瞧瞧:
- /usr/share/doc/centos-release-notes-5.3/
那如果想要知道本章講過多次的bash是什么,則可以到/usr/share/doc/bash-3.2/ 這個目錄中去瀏覽一番!很多東西呦!而且/usr/share/doc這個目錄下的數據主要是以套件(packages)為主的, 例如GCC這個套件的相關信息在/usr/share/doc/gcc-xxx(那個xxx表示版本的意思!)。 未來可得多多查閱這個目錄喔! ^_^
總結上面的三個咚咚(man, info, /usr/share/doc/),請記住喔:
- 在文字接口下,有任何你不知道的命令或文件格式這種玩意兒,但是你想要了解他,請趕快使用man或者是info來查詢!
- 而如果你想要架設一些其他的服務,或想要利用一整組軟件來達成某項功能時,請趕快到/usr/share/doc 底下查一查有沒有該服務的說明檔喔!
- 另外,再次的強調,因為Linux畢竟是外國人發明的,所以中文文件確實是比較少的! 但是不要害怕,拿本英文字典在身邊吧!隨時查閱!不要害怕英文喔!
超簡單文書編輯器: nano
在Linux系統當中有非常多的文書編輯器存在,其中最重要的就是后續章節我們會談到的vi這家伙! 不過其實還有很多不錯用的文書編輯器存在的!在這里我們就介紹一下簡單的nano這一支文書編輯器來玩玩先!
nano的使用其實很簡單,你可以直接加上檔名就能夠開啟一個舊檔或新檔!底下我們就來開啟一個名為test.txt的檔名來看看:
| [vbird@www ~]$ nano text.txt # 不管text.txt存不存在都沒有關系!存在就開啟舊檔,不存在就開啟新檔 GNU nano 1.3.12 File: text.txt <==這個是光標所在處 [ New File ] ^G Get Help^O WriteOut^R Read Fil^Y Prev Pag^K Cut Text^C Cur Pos ^X Exit ^J Justify ^W Where Is^V Next Pag^U UnCut Te^T To Spell # 上面兩行是命令說明列,其中^代表的是[ctrl]的意思 |
如上圖所示,你可以看到第一行反白的部分,那僅是在宣告nano的版本與檔名(File: text.txt)而已。 之后你會看到最底下的三行,分別是文件的狀態(New File)與兩行命令說明列。命令說明列反白的部分就是組合鍵, 接的則是該組合鍵的功能。那個指數符號(^)代表的是鍵盤的[Ctrl]按鍵啦!底下先來說說比較重要的幾個組合按鍵:
- [ctrl]-G:取得聯機幫助(help),很有用的!
- [ctrl]-X:離開naon軟件,若有修改過文件會提示是否需要儲存喔!
- [ctrl]-O:儲存文件,若你有權限的話就能夠儲存文件了;
- [ctrl]-R:從其他文件讀入數據,可以將某個文件的內容貼在本文件中;
- [ctrl]-W:搜尋字符串,這個也是很有幫助的命令喔!
- [ctrl]-C:說明目前光標所在處的行數與列數等信息;
- [ctrl]-_:可以直接輸入行號,讓光標快速移動到該行;
- [alt]-Y:校正語法功能開啟或關閉(單擊開、再單擊關)
- [alt]-M:可以支持鼠標來移動光標的功能
比較常見的功能是這些,如果你想要取得更完整的說明,可以在nano的畫面中按下[ctrl]-G或者是[F1]按鍵, 就能夠顯示出完整的naon內命令說明了。好了,請你在上述的畫面中隨便輸入許多字, 輸入完畢之后就儲存后離開,如下所示:
| GNU nano 1.3.12 File: text.txt Type some words in this nano editor program. You can use [ctrl] plus some keywords to go to some functions. Hello every one. Bye bye. <==這個是由標所在處 [ New File ] ^G Get Help^O WriteOut^R Read Fil^Y Prev Pag^K Cut Text^C Cur Pos ^X Exit ^J Justify ^W Where Is^V Next Pag^U UnCut Te^T To Spell |
此時按下[crtl]-X會出現類似下面的畫面:
| GNU nano 1.3.12 File: text.txt Type some words in this nano editor program. You can use [ctrl] plus some keywords to go to some functions. Hello every one. Bye bye. Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ? ▋ Y Yes N No ^C Cancel |
如果不要儲存數據只想要離開,可以按下N即可離開。如果確實是需要儲存的,那么按下Y后,最后三行會出現如下畫面:
| File Name to Write: text.txt▋ <==可在這里修改檔名或直接按[enter] ^G Get Help ^T To Files M-M Mac Format M-P Prepend ^C Cancel M-D DOS Format M-A Append M-B Backup File |
如果是單純的想要儲存而已,直接按下[enter]即可儲存后離開nano程序。不過上圖中最底下還有兩行,我們知道指數符號代表[crtl], 那個M是代表什么呢?其實就是[alt]啰!其實nano也不需要記太多命令啦!只要知道怎么進入nano、怎么離開,怎么搜尋字符串即可。 未來我們還會學習更有趣的vi呢!
正確的關機方法
OK!大概知道啟動的方法,也知道基本的命令操作,而且還已經知道在線查詢了,好累呦! 想去休息呢!那么如何關機呢?我想,很多朋友在DOS的年代已經有在玩計算機了! 在當時我們關掉DOS的系統時,常常是直接關掉電源開關,而 Windows 在你不爽的時候,按著電源開關四秒也可以關機!但是在Linux則相當的不建議這么做!
Why?在 Windows (非 NT 主機系統) 系統中,由于是單人假多任務的情況,所以即使你的計算機關機, 對于別人應該不會有影響才對!不過呢,在 Linux 底下,由于每個程序 (或者說是服務) 都是在在背景下運行的,因此,在你看不到的屏幕背后其實可能有相當多人同時在你的主機上面工作, 例如瀏覽網頁啦、傳送信件啦以 FTP 傳送文件啦等等的,如果你直接按下電源開關來關機時, 則其他人的數據可能就此中斷!那可就傷腦筋了!
此外,最大的問題是,若不正常關機,則可能造成文件系統的毀損 (因為來不及將數據回寫到文件中,所以有些服務的文件會有問題!)。所以正常情況下,要關機時需要注意底下幾件事:
- 觀察系統的使用狀態:
如果要看目前有誰在在線,可以下達『who』這個命令,而如果要看網絡的聯機狀態,可以下達 『 netstat -a 』這個命令,而要看背景運行的程序可以運行『 ps -aux 』這個命令。使用這些命令可以讓你稍微了解主機目前的使用狀態!當然啰,就可以讓你判斷是否可以關機了 (這些命令在后面Linux常用命令中會提及喔!)
- 通知在線使用者關機的時刻:
要關機前總得給在線的使用者一些時間來結束他們的工作,所以,這個時候你可以使用 shutdown 的特別命令來達到此一功能。
- 正確的關機命令使用:
例如 shutdown 與 reboot 兩個命令!
所以底下我們就來談一談幾個與關機/重新啟動相關的命令啰!
- 將數據同步寫入硬盤中的命令: sync
- 慣用的關機命令: shutdown
- 重新啟動,關機: reboot, halt, poweroff
| Tips: 由于Linux系統的關機/重新啟動是很重大的系統運行,因此只有root才能夠進行例如shutdown, reboot等命令。 不過在某些distributions當中,例如我們這里談到的CentOS系統,他允許你在本機前的tty7使用圖形接口登陸時, 可以用一般賬號來關機或重新啟動!但某些distributions則在你要關機時,他會要你輸入root的密碼呢!^_^ |
數據同步寫入磁盤: sync
在第零章、計算器概論里面我們談到過數據在計算機中運行的模式, 所有的數據都得要被讀入內存后才能夠被CPU所處理,但是數據又常常需要由內存寫回硬盤當中(例如儲存的動作)。 由于硬盤的速度太慢(相對于內存來說),如果常常讓數據在內存與硬盤中來回寫入/讀出,系統的效能就不會太好。
因此在Linux系統中,為了加快數據的讀取速度,所以在默認的情況中, 某些已經加載內存中的數據將不會直接被寫回硬盤,而是先緩存在內存當中,如此一來, 如果一個數據被你重復的改寫,那么由于他尚未被寫入硬盤中,因此可以直接由內存當中讀取出來, 在速度上一定是快上相當多的!
不過,如此一來也造成些許的困擾,那就是萬一你的系統因為某些特殊情況造成不正常關機 (例如停電或者是不小心踢到power)時,由于數據尚未被寫入硬盤當中,哇!所以就會造成數據的升級不正常啦! 那要怎么辦呢?這個時候就需要sync這個命令來進行數據的寫入動作啦! 直接在文字接口下輸入sync,那么在內存中尚未被升級的數據,就會被寫入硬盤中!所以,這個命令在系統關機或重新啟動之前, 很重要喔!最好多運行幾次!
雖然目前的 shutdown/reboot/halt 等等命令均已經在關機前進行了 sync 這個工具的呼叫, 不過,多做幾次總是比較放心點~呵呵~
| [root@www ~]# sync |
| Tips: 事實上sync也可以被一般賬號使用喔!只不過一般賬號用戶所升級的硬盤數據就僅有自己的數據, 不像root可以升級整個系統中的數據了。 |
慣用的關機命令: shutdown
由于Linux的關機是那么重要的工作,因此除了你是在主機前面以tty7圖形接口來登陸系統時, 不論用什么身份都能夠關機之外,若你是使用遠程管理工具(如透過pietty使用ssh服務來從其他計算機登陸主機), 那關機就只有root有權力而已喔!
嗯!那么就來關機試試看吧!我們較常使用的是shutdown這個命令,而這個命令會通知系統內的各個程序 (processes),并且將通知系統中的run-level內的一些服務來關閉。shutdown可以達成如下的工作:
- 可以自由選擇關機模式:是要關機、重新啟動或進入單人操作模式均可;
- 可以配置關機時間: 可以配置成現在立刻關機, 也可以配置某一個特定的時間才關機。
- 可以自定義關機信息:在關機之前,可以將自己配置的信息傳送給在線 user 。
- 可以僅發出警告信息:有時有可能你要進行一些測試,而不想讓其他的使用者干擾, 或者是明白的告訴使用者某段時間要注意一下!這個時候可以使用 shutdown 來嚇一嚇使用者,但卻不是真的要關機啦!
- 可以選擇是否要 fsck 檢查文件系統 。
那么shutdown的語法是如何呢?聰明的讀者大概已經開始找『男人』了!沒錯,隨時隨地的 man 一下,是很不錯的舉動!好了,簡單的語法守則為:
| [root@www ~]# /sbin/shutdown [-t 秒] [-arkhncfF] 時間 [警告信息] 選項與參數: -t sec : -t 后面加秒數,亦即『過幾秒后關機』的意思 -k : 不要真的關機,只是發送警告信息出去! -r : 在將系統的服務停掉之后就重新啟動(常用) -h : 將系統的服務停掉后,立即關機。 (常用) -n : 不經過 init 程序,直接以 shutdown 的功能來關機 -f : 關機并啟動之后,強制略過 fsck 的磁盤檢查 -F : 系統重新啟動之后,強制進行 fsck 的磁盤檢查 -c : 取消已經在進行的 shutdown 命令內容。 時間 : 這是一定要加入的參數!指定系統關機的時間!時間的范例底下會說明。 范例: [root@www ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins' # 告訴大家,這部機器會在十分鐘后關機!并且會顯示在目前登陸者的屏幕前方! # 至于參數有哪些呢?以下介紹幾個吧! |
此外,需要注意的是,時間參數請務必加入命令中,否則shutdown會自動跳到 run-level 1 (就是單人維護的登陸情況),這樣就傷腦筋了!底下提供幾個時間參數的例子吧:
| [root@www ~]# shutdown -h now 立刻關機,其中 now 相當于時間為 0 的狀態 [root@www ~]# shutdown -h 20:25 系統在今天的 20:25 分會關機,若在21:25才下達此命令,則隔天才關機 [root@www ~]# shutdown -h +10 系統再過十分鐘后自動關機 [root@www ~]# shutdown -r now 系統立刻重新啟動 [root@www ~]# shutdown -r +30 'The system will reboot' 再過三十分鐘系統會重新啟動,并顯示后面的信息給所有在在線的使用者 [root@www ~]# shutdown -k now 'This system will reboot' 僅發出警告信件的參數!系統并不會關機啦!嚇唬人! |
重新啟動,關機: reboot, halt, poweroff
還有三個命令可以進行重新啟動與關機的任務,那就是reboot, halt, poweroff。 其實這三個命令呼叫的函式庫都差不多,所以當你使用『man reboot』時,會同時出現三個命令的用法給你看呢。 其實鳥哥通常都只有記shutdown與reboot這兩個命令啦!不過使用poweroff這個命令卻比較簡單就是了!^_^ 通常鳥哥在重新啟動時,都會下達如下的命令喔:
| [root@www ~]# sync; sync; sync; reboot |
既然這些命令都能夠關機或重新啟動,那他有沒有什么差異啊?基本上,在默認的情況下, 這幾個命令都會完成一樣的工作!(因為halt會先呼叫shutdown,而shutdown最后會呼叫halt!)。 不過,shutdown可以依據目前已啟動的服務來逐次關閉各服務后才關機;至于halt卻能夠在不理會目前系統狀況下, 進行硬件關機的特殊功能!你可以在你的主機上面使用root進行底下兩個命令來關機,比較看看差異在哪里喔!
| [root@www ~]# shutdown -h now [root@www ~]# poweroff -f |
更多halt與poweroff的選項功能,請務必使用man去查詢一下喔!
切換運行等級: init
本章上頭有談到過關于run level的問題。之前談到的是系統運行的模式,分為純文本(run level 3)及圖形接口模式(run level 5)。除了這兩種模式外,有沒有其他模式呢?其實Linux共有七種運行等級, 七種等級的意義我們在后面會再談到。本章你只要知道底下四種運行等級就好了:
- run level 0:關機
- run level 3:純文本模式
- run level 5:含有圖形接口模式
- run level 6:重新啟動
那如何切換各模式呢?可以使用init這個命令來處理喔!也就是說,如果你想要關機的話, 除了上述的shutdown -h now以及poweroff之外,你也可以使用如下的命令來關機:
| [root@www ~]# init 0 |
啟動過程的問題排解
事實上,Linux主機是很穩定的,除非是硬件問題與系統管理員不小心的動作,否則, 很難會造成一些無法挽回的錯誤的。但是,畢竟我們目前使用的可能是練習機,會常常開開關關的, 所以確實可能會有一些小問題發生。好了,我們先來簡單的談一談,如果無法順利啟動時, 你應該如何解決。要注意的是,底下說到的內容很多都還沒有開始介紹, 因此,看不懂也不要太緊張~在本書全部都讀完且看第二遍時,你自然就會有感覺了! ^_^
文件系統錯誤的問題
在啟動的過程中最容易遇到的問題就是硬盤可能有壞軌或文件系統發生錯誤(數據損毀)的情況, 這種情況雖然不容易發生在穩定的Linux系統下,不過由于不當的開關機行為, 還是可能會造成的,常見的發生原因可能有:
- 最可能發生的原因是因為斷電或不正常關機所導致的文件系統發生錯誤, 鳥哥的主機就曾經發生過多次因為跳電,家里的主機又沒有安裝不斷電系統, 結果就導致硬盤內的文件系統錯誤!文件系統錯誤并非硬件錯誤,而是軟件數據的問題喔!
- 硬盤使用率過高或主機所在環境不良也是一個可能的原因, 例如你開放了一個FTP服務,里面有些數據很有用, 所以一堆人搶著下載,如果你又不是使用較穩定的SCSI接口硬盤,僅使用一般PC使用的硬盤, 雖然機率真的不高,但還是有可能造成硬盤壞軌的。此外,如果主機所在環境沒有散熱的設備, 或者是相對濕度比較高的環境,也很容易造成硬盤的損壞喔!
解決的方法其實很簡單,不過因為出錯扇區所掛載的目錄不同,處理的流程困難度就有差異了。 舉例來說,如果你的根目錄『/』并沒有損毀,那就很容易解決,如果根目錄已經損毀了,那就比較麻煩!
- 如果根目錄沒有損毀:
假設你發生錯誤的partition是在/dev/sda7這一塊,那么在啟動的時候,屏幕應該會告訴你:press root password or ctrl+D :這時候請輸入root的密碼登陸系統,然后進行如下動作:
- 在光標處輸入root密碼登陸系統,進行單人單機的維護工作;
- 輸入『 fsck /dev/sda7 』(fsck 為文件系統檢查的命令,/dev/sda7為錯誤的partition,請依你的情況下達參數), 這時屏幕會顯示開始修理硬盤的信息,如果有發現任何的錯誤時,屏幕會顯示:clear [Y/N]? 的詢問信息,就直接輸入 Y 吧!
- 修理完成之后,以 reboot 重新啟動啰!
- 如果根目錄損毀了
一般初學者喜歡將自己的硬盤只劃分為一個大partition,亦即只有根目錄, 那文件系統錯誤一定是根目錄的問題啰!這時你可以將硬盤拔掉,接到另一臺Linux系統的計算機上, 并且不要掛載(mount)該硬盤,然后以root的身份運行『 fsck /dev/sdb1 』(/dev/sdb1 指的是你的硬盤裝置文件名,你要依你的實際狀況來配置),這樣就 OK 啰!
另外,也可以使用近年來很熱門的Live CD,也就是利用光盤啟動就能夠進入Linux操作系統的特性, 你可以前往:『http://knoppix.tnc.edu.tw/』 這個網站來下載,并且刻錄成為CD,這個時候先用Live CD光盤啟動,然后使用fsck去修復原本的根目錄, 例如: fsck /dev/sda1 ,就能夠救回來了!
- 如果硬盤整個壞掉:
如果硬盤實在壞的離譜時,那就先將舊硬盤內的數據,能救出來的救出來,然后換一顆硬盤來重新安裝Linux吧! 不要不愿意換硬盤啊!啥時后硬盤會壞掉誰也說不準的!
那么硬盤該如何預防發生文件系統錯誤的問題呢?可以參考底下說明:
- 妥善保養硬盤:
例如:主機通電之后不要搬動,避免移動或震動硬盤;盡量降低硬盤的溫度,可以加裝風扇來冷卻硬盤; 或者可以換裝 SCSI 硬盤。
- 劃分不同的partition:
為什么磁盤分區這么重要!因為Linux每個目錄被讀寫的頻率不同,妥善的塊分配將會讓我們的Linux更安全! 通常我們會建議劃分下列的磁盤區塊:
- /
- /boot
- /usr
- /home
- /var
忘記 root 密碼:
常常有些朋友在配置好了Linux之后,結果root密碼給他忘記去!要重新安裝嗎?不需要的, 你只要以單人維護模式登陸即可更改你的root密碼喔!由于lilo這個啟動管理程序已經很少見了, 這里鳥哥使用grub啟動管理程序作為范例來介紹啰!
先將系統重新啟動,在讀秒的時候按下任意鍵就會出現如同第四章圖3.2的菜單畫面,仔細看菜單底下的說明, 按下『e』就能夠進入grub的編輯模式了。此時你看到的畫面有點像底下這樣:
| root (hd0,0) kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ rhgb quiet initrd /initrd-2.6.18-128.el5.img |
此時,請將光標移動到kernel那一行,再按一次『 e 』進入kernel該行的編輯畫面中, 然后在出現的畫面當中,最后方輸入 single :
| kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ rhgb quiet single |
再按下『 Enter 』確定之后,按下 b 就可以啟動進入單人維護模式了! 在這個模式底下,你會在tty1的地方不需要輸入密碼即可取得終端機的控制權(而且是使用root的身份喔!)。 之后就能夠修改root的密碼了!請使用底下的命令來修改root的密碼喔!
| [root@www ~]# passwd # 接下來系統會要求你輸入兩次新的密碼,然后再來reboot即可順利修訂root密碼了! |
這里僅是介紹一個簡單的處理方法而已,更多的原理與說明將會在后續的各相關章節介紹的喔!
重點回顧
- 為了避免瞬間斷電造成的Linux系統危害,建議做為服務器的Linux主機應該加上不斷電系統來持續提供穩定的電力;
- 默認的圖形模式登陸中,可以選擇語系以及作業階段。作業階段為多種窗口管理員軟件所提供,如GNOME及KDE等;
- CentOS 5.x默認的中文輸入法為使用SCIM這個軟件所提供的輸入;
- 不論是KDE還是GNOME默認都提供四個Virtual Desktop給使用者使用;
- 在X的環境下想要重新啟動X的組合按鍵為:『[alt]+[ctrl]+[backspace]』;
- 默認情況下,Linux提供tty1~tty6的文字接口登陸,以及tty7的圖形接口登陸環境;
- 除了run level 5默認取得圖形接口之外,run level 3亦可使用 startx 進入圖形環境;
- 在終端機環境中,可依據提示字符為$或#判斷為一般賬號或root賬號;
- 取得終端機支持的語系數據可下達『echo $LANG』或『locale』命令;
- date可顯示日期、cal可顯示日歷、bc可以做為計算器軟件;
- 組合按鍵中,[tab]按鍵可做為命令補齊或檔名補齊,[crtl]-[c]可以中斷目前正在運行中的程序;
- 聯機幫助系統有man及info兩個常見的命令;
- man page說明后面的數字中,1代表一般賬號可用命令,8代表系統管理員常用命令,5代表系統配置文件格式;
- info page可將一份說明文件拆成多個節點(node)顯示,并具有類似超鏈接的功能,添加易讀性;
- 系統需正確的關機比較不容易損壞,可使用shutdown, poweroff等命令關機。
本章習題
( 要看答案請將鼠標移動到『答:』底下的空白處,按下左鍵圈選空白處即可察看)
情境模擬題一:我們在tty1里面看到的歡迎畫面,就是在那個login:之前的畫面(CentOS release 5.3 (Final)...)是怎么來的?
- 目標:了解到終端機接口的歡迎信息是怎么來的?
- 前提:歡迎信息的內容,是記錄到/etc/issue當中的
- 需求:利用man找到該文件當中的變量內容
| CentOS release 5.3 (Final) Kernel \r on an \m |
簡答題部分:
- 請問如果我以文本模式登陸Linux主機時,我有幾個終端機接口可以使用?如何切換各個不同的終端機接口? 共有六個, tty1 ~ tty6 ,切換的方式為 Crtl + Alt + [F1]~[F6],其中, [F7] 為圖形接口的使用。
- 在Linux系統中,/VBird與/vbird是否為相同的文件? 兩者為不同的文件,因為 Linux 系統中,大小寫字母代表意義不一樣!
- 我想要知道 date 如何使用,應該如何查詢? 最簡單的方式就是使用 man date 或 info date 來查看,如果該套件有完整說明的話,那么應該也可以在 /usr/share/doc 里面找到說明檔!
- 我想要在今天的 1:30 讓系統自己關機,要怎么做? shutdown -h 1:30
- 如果我 Linux 的 X Window 突然發生問題而掛掉,但 Linux 本身還是好好的,那么我可以按下哪三個按鍵來讓 X window 重新啟動? [crtl]+[alt]+[backspace]
- 我想要知道 2010 年 5 月 2 日是星期幾?該怎么做? 最簡單的方式直接使用 cal 5 2010 即可找出 2010 年 5 月份的月歷。
- 使用 man date 然后找出顯示目前的日期與時間的參數,成為類似:2009/10/16-20:03 date +%Y/%m/%d-%H:%M
- 若以 X-Window 為默認的登陸方式,那請問如何進入 Virtual console 呢? 可以按下 [Ctrl] + [Alt] + [F1] ~ [F6] 進入 Virtual console ( 共六個 ); 而按下 [Ctrl] + [Alt] + [F8] 或 [F7] 可回到 X-Window 的 desktop 中!
- 簡單說明在 bash shell 的環境下, [tab] 按鍵的用途? [Tab] 按鍵可做為命令補齊或文件補齊的功能,與所接的命令位置有關。 接在一串命令的第一個單字后面,則為命令補齊,否則則為文件補齊!
- 如何強制中斷一個程序的進行?(利用按鍵,非利用 kill 命令) 可以利用 [Ctrl] + c 來中斷!
- Linux 提供相當多的在線查詢,稱為 man page,請問,我如何知道系統上有多少關于 passwd 的說明?又,可以使用其他的程序來取代 man 的這個功能嗎? 可以利用 man -f passwd 來查詢,另外,如果有提供 info 的文件數據時 (在 /usr/share/info/ 目錄中) ,則能夠利用 info passwd 來查詢之!
- man -k passwd 與 man -K passwd 有什么差異(大小寫的 K )? 小寫的 -k 為查詢關鍵詞,至于 -K 則是整個系統的 man page 查詢~ 每個被檢查到有關鍵詞的 man page file 都會被詢問是否要顯示, 你可以輸入『ynq』,來表示:y:要顯示到屏幕上;n:不顯示;q:結束 man 的查詢。
- 在 man 的時候, man page 顯示的內容中,命令(或文件)后面會接一組數字,這個數字若為 1, 5, 8 ,表示該查詢的命令(或文件)意義為何? 代表意義為 1) 一般用戶可以使用的命令或可運行文件案 5)一些配置文件的文件內容格式 8)系統管理員能夠使用的管理命令。
- man page 顯示的內容的文件是放置在哪些目錄中? 放置在 /usr/share/man/ 與 /usr/local/man 等默認目錄中。
- 請問這一串命令『 foo1 -foo2 foo3 foo4 』中,各代表什么意義? foo1 一定是命令, -foo2 則是 foo1 這個命令的選擇項目參數, foo3 與 foo4 則不一定, 可能是 foo1 的參數配置值,也可能是額外加入的 parameters。
- 當我輸入 man date 時,在我的終端機卻出現一些亂碼,請問可能的原因為何?如何修正? 如果沒有其他錯誤的發生,那么發生亂碼可能是因為語系的問題所致。 可以利用 LANG=en 或者是 LANG=en_US 等配置來修訂這個問題。
- 我輸入這個命令『ls -al /vbird』,系統回復我這個結果:『ls: /vbird: No such file or directory』 請問發生了什么事?』 不要緊張,很簡單的英文,因為系統根本沒有 /vbird 這個文件的存在啊! ^_^
- 你目前的 Linux 底下,默認共有多少可以被你運行的命令? 最簡單的做法,直接輸入兩次 [tab] 按鍵即可知道有多少命令可以被運行。
- 我想知道目前系統有多少命令是以 bz 為開頭的,可以怎么作? 直接輸入 bz[tab][tab] 就可以知道了!
- 承上題,在出現的許多命令中,請問 bzip2 是干嘛用的? 在使用 man bzip2 之后,可以發現到,其實 bzip2 是用來作為壓縮與解壓縮文件案用的!
- Linux 提供一些在線文獻數據,這些數據通常放在那個目錄當中 通常放在 /usr/share/doc 當中!
- 在終端機里面登陸后,看到的提示字符 $ 與 # 有何不同?平時操作應該使用哪一個? # 代表以 root 的身份登陸系統,而 $ 則代表一般身份使用者。依據提示字符的不同, 我們可以約略判斷登陸者身份。一般來說,建議日常操作使用一般身份使用者登陸,亦即是 $ !
- 我使用dmtsai這個賬號登陸系統了,請問我能不能使用reboot來重新啟動? 若不能,請說明原因,若可以,請說明命令如何下達? 理論上reboot僅能讓root運行。不過,如果dmtsai是在主機前面以圖形接口登陸時,則dmtsai還是可以透過圖形接口功能來關機。
參考數據與延伸閱讀
- 注1:為了讓Linux的窗口顯示效果更佳,很多團體開始發展壁紙應用的環境,GNOME/KDE都是。 他們的目標就是發展出類似Windows壁紙的一整套可以工作的壁紙環境,他可以進行窗口的定位、放大、縮小、 同時還提供很多的壁紙應用軟件。底下是KDE與GNOME的相關連結:
http://www.kde.org/
http://www.gnome.org/ - 楊錦昌老師的X Window操作圖解,以Fedora Core 3為例:http://apt.nc.hcc.edu.tw/docs/FC3_X/
- man 7 man :取得更詳細的數字說明內容
2002/07/16:第一次完成吧?
2003/02/06:重新編排與加入 FAQ
2004/05/01:在shutdown的命令部分,修改 shutdown -k "messages" 成為 shutdown -k now "messages",很抱歉,寫錯了!
2005/06/17:將原本的文章移動到 這里
2005/06/27:終于寫完了!寫的真久~沒辦法,將 man page 擴大解釋,添加的幅度還挺多的!
2005/08/23:剛剛才發現,那個man page的內部命令說明中, n 與 N 的說明錯誤了!已訂正!
2007/12/08:透過網友sheaushyong的發現,之前將Live CD中,說明要掛載 / 才 fsck 是不對的!請查閱此處。
2008/09/03:將原本的Fedora Core IV的文章移動到此處。
2008/09/08:加入了一些圖示說明,尤其是info的部分多了一個示意圖!
2008/09/09:加入了nano這個簡單的文書編輯器說明,以及情境模擬題的解釋!
2009/09/17:修訂了顯示的信息,將圖片重新抓圖匯整。
出處:http://vbird.dic.ksu.edu.tw/linux_basic/0160startlinux.php
總結
以上是生活随笔為你收集整理的鸟哥的Linux私房菜(基础篇)-第五章、首次登陆与在线求助 man page的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸟哥的Linux私房菜(基础篇)-第四章
- 下一篇: 鸟哥的Linux私房菜(基础篇)- 第六