## 4.2 文字模式下指令的下達
其實我們都是通過“程序”在跟系統作溝通的,本章上面提到的窗口管理員或文字模式都是一組或一只程序在負責我們所想要完成的任務。 文字模式登陸后所取得的程序被稱為殼(Shell),這是因為這支程序負責最外面跟使用者(我們)溝通,所以才被戲稱為殼程序! 更多與操作系統及殼程序的相關性可以參考[第零章、計算機概論](../Text/index.html#program_os)內的說明。
我們Linux的殼程序就是厲害的bash這一支!關于更多的bash我們在第三篇再來介紹。現在讓我們來練一練打字吧!

**Tips** “練打字”真的是開玩笑的!各位觀眾朋友,千萬不要只是“觀眾朋友”而已,您得要自己親身體驗,看看指令下達之后所輸出的信息, 并且理解一下“我敲這個指令的目的是想要完成什么任務?”,再看看輸出的結果是否符合你的需求,這樣才能學到東西!不是單純的鳥哥寫什么, 你就打什么,那只是“練打字”不是“學Linux”喔! ^_^
### 4.2.1 開始下達指令
其實整個指令下達的方式很簡單,你只要記得幾個重要的概念就可以了。舉例來說,你可以這樣下達指令的:
```
[dmtsai@study ~]$ command [-options] parameter1 parameter2 ...
指令 選項 參數(1) 參數(2)
```
上述指令詳細說明如下:
1. 一行指令中第一個輸入的部分絕對是“指令(command)”或“可可執行文件案(例如批次腳本,script)”
2. command 為指令的名稱,例如變換工作目錄的指令為 cd 等等;
3. 中刮號[]并不存在于實際的指令中,而加入選項設置時,通常選項前會帶 - 號,例如 -h;有時候會使用選項的完整全名,則選項前帶有 -- 符號,例如 --help;
4. parameter1 parameter2.. 為依附在選項后面的參數,或者是 command 的參數;
5. 指令, 選項, 參數等這幾個咚咚中間以空格來區分,不論空幾格 shell 都視為一格。所以空格是很重要的特殊字符!;
6. 按下[Enter]按鍵后,該指令就立即執行。[Enter]按鍵代表著一行指令的開始啟動。
7. 指令太長的時候,可以使用反斜線 (\) 來跳脫[Enter]符號,使指令連續到下一行。注意!反斜線后就立刻接特殊字符,才能跳脫!
8. 其他:
1. 在 Linux 系統中,英文大小寫字母是不一樣的。舉例來說, cd 與 CD 并不同。
2. 更多的介紹等到[第十章 bash](../Text/index.html) 時,再來詳述。
注意到上面的說明當中,“第一個被輸入的數據絕對是指令或者是可執行的文件”! 這個是很重要的概念喔!還有,按下[Enter]鍵表示要開始執行此一命令的意思。我們來實際操作一下: 以ls這個“指令”列出“自己主文件夾(~)”下的“所有隱藏文件與相關的文件屬性”, 要達成上述的要求需要加入 -al 這樣的選項,所以:
```
[dmtsai@study ~]$ ls -al ~
[dmtsai@study ~]$ ls -al ~
[dmtsai@study ~]$ ls -a -l ~
```
上面這三個指令的下達方式是一模一樣的執行結果喔!為什么?請參考上面的說明吧! 關于更詳細的文字模式使用方式,我們會在[第十章認識BASH](../Text/index.html)再來強調喔! 此外,請特別留意,在Linux的環境中, “大小寫字母是不一樣的東西!”也就是說,在Linux下面, VBird與vbird這兩個文件是“完全不一樣的”文件呢!所以, 你在下達指令的時候千萬要注意到指令是大寫還是小寫。例如當輸入下面這個指令的時候,看看有什么現象:
```
[dmtsai@study ~]$ date <==結果顯示日期與時間
[dmtsai@study ~]$ Date <==結果顯示找不到指令
[dmtsai@study ~]$ DATE <==結果顯示找不到指令
```
很好玩吧!只是改變小寫成為大寫而已,該指令就變的不存在了! 因此,請千萬記得這個狀態呦!
* 語系的支持
另外,很多時候你會發現,咦!怎么我輸入指令之后顯示的結果的是亂碼? 這跟鳥哥說的不一樣啊!呵呵!不要緊張~我們前面提到過,Linux是可以支持多國語系的,若可能的話, 屏幕的訊息是會以該支持語系來輸出的。但是,我們的終端機接口(terminal)在默認的情況下, 無法支持以中文編碼輸出數據的。這個時候,我們就得將支持語系改為英文,才能夠以英文顯示出正確的訊息。 那怎么做呢?你可以這樣做:
```
1\. 顯示目前所支持的語系
[dmtsai@study ~]$ locale
LANG=zh_TW.utf8 # 語言語系的輸出
LC_CTYPE="zh_TW.utf8" # 下面為許多信息的輸出使用的特別語系
LC_NUMERIC=zh_TW.UTF-8
LC_TIME=zh_TW.UTF-8 # 時間方面的語系數據
LC_COLLATE="zh_TW.utf8"
....中間省略....
LC_ALL= # 全部的數據同步更新的設置值
# 上面的意思是說,目前的語系(LANG)為zh_TW.UTF-8,亦即臺灣繁體中文的萬國碼
[dmtsai@study ~]$ date
鈭? 5??29 14:24:36 CST 2015 # 純命令行下,無法顯示中文字,所以前面是亂碼
2\. 修改語系成為英文語系
[dmtsai@study ~]$ LANG=en_US.utf8
[dmtsai@study ~]$ export LC_ALL=en_US.utf8
# LANG 只與輸出訊息有關,若需要更改其他不同的信息,要同步更新 LC_ALL 才行!
[dmtsai@study ~]$ date
Fri May 29 14:26:45 CST 2015 # 順利顯示出正確的英文日期時間啊!
[dmtsai@study ~]$ locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
....中間省略....
LC_ALL=en_US.utf8
# 再次確認一下,結果出現,確實是en_US.utf8這個英文語系!
```
注意一下,那個“LANG=en_US.utf8”是連續輸入的,等號兩邊并沒有空白字符喔! 這樣一來,就能夠在“這次的登陸”察看英文訊息啰!為什么說是“這次的登陸”呢? 因為,如果你登出Linux后,剛剛下達的指令就沒有用啦! ^_^,這個我們會在[第十章](../Text/index.html)再好好聊一聊的!好啰,下面我們來練習一下一些簡單的指令, 好讓你可以了解指令下達方式的模式:
### 4.2.2 基礎指令的操作
下面我們立刻來操作幾個簡單的指令看看啰!同時請注意,我們已經使用了英文語系作為默認輸出的語言喔!
* 顯示日期與時間的指令: date
* 顯示日歷的指令: cal
* 簡單好用的計算機: bc
* 1\. 顯示日期的指令: date
如果在命令行中想要知道目前Linux系統的時間,那么就直接在命令行界面輸入date即可顯示:
```
[dmtsai@study ~]$ date
Fri May 29 14:32:01 CST 2015
```
上面顯示的是:星期五, 五月二十九日, 14:32 分, 01秒,在 2015 年的 CST 時區!臺灣在CST時區中啦! 請趕快動手做做看呦!好了,那么如果我想要讓這個程序顯示出“2015/05/29”這樣的日期顯示方式呢? 那么就使用date的格式化輸出功能吧!
```
[dmtsai@study ~]$ date +%Y/%m/%d
2015/05/29
[dmtsai@study ~]$ date +%H:%M
14:33
```
那個“+%Y%m%d”就是date指令的一些參數功能啦!很好玩吧!那你問我, 鳥哥怎么知道這些參數的啊?要背起來嗎?當然不必啦!下面再告訴你怎么查這些參數啰!
從上面的例子當中我們也可以知道,指令之后的選項除了前面帶有減號“-”之外,某些特殊情況下, 選項或參數前面也會帶有正號“+”的情況!這部份可不要輕易的忘記了呢!
* 2\. 顯示日歷的指令: cal
那如果我想要列出目前這個月份的月歷呢?呵呵!直接給他下達cal即可!
```
[dmtsai@study ~]$ cal
May 2015
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)這個指令可以做的事情還很多,例如你可以顯示整年的月歷情況:
```
[dmtsai@study ~]$ cal 2015
2015
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這個指令可以接的語法為:
```
[dmtsai@study ~]$ cal [month] [year]
```
所以,如果我想要知道2015年10月的月歷,可以直接下達:
```
[dmtsai@study ~]$ cal 10 2015
October 2015
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月啊?來測試一下這個指令的正確性吧!下達下列指令看看:
```
[dmtsai@study ~]$ cal 13 2015
cal: illegal month value: use 1-12
```
cal竟然會告訴我們“錯誤的月份,請使用1-12”這樣的信息呢!所以, 未來你可以很輕易的就以cal來取得日歷上面的日期啰!簡直就是萬年歷啦! ^_^。 另外,由這個cal指令的練習我們也可以知道,某些指令有特殊的參數存在, 若輸入錯誤的參數,則該指令會有錯誤訊息的提示,通過這個提示我們可以借以了解指令下達錯誤之處。 這個練習的結果請牢記在心中喔!
* 3\. 簡單好用的計算機: bc
如果在文字模式當中,突然想要作一些簡單的加減乘除,偏偏手邊又沒有計算機!這個時候要筆算嗎? 不需要啦!我們的Linux有提供一支計算程序,那就是bc喔。你在命令行輸入bc后,屏幕會顯示出版本信息, 之后就進入到等待指示的階段。如下所示:
```
[dmtsai@study ~]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
_ <==這個時候,光標會停留在這里等待你的輸入
```
事實上,我們是“進入到bc這個軟件的工作環境當中”了! 就好像我們在Windows里面使用“小算盤”一樣!所以,我們下面嘗試輸入的數據, 都是在bc程序當中在進行運算的動作。所以啰,你輸入的數據當然就得要符合bc的要求才行! 在基本的bc計算機操作之前,先告知幾個使用的運算子好了:
* + 加法
* - 減法
* * 乘法
* / 除法
* ^ 指數
* % 余數
好!讓我們來使用bc計算一些咚咚吧!
```
[dmtsai@study ~]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 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就是小數點位數,例如:
```
[dmtsai@study ~]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 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的軟件環境喔! 好了!就是這樣子啦!簡單的很吧!以后你可以輕輕松松的進行加減乘除啦!
從上面的練習我們大概可以知道在命令行界面里面下達指令時,會有兩種主要的情況:
* 一種是該指令會直接顯示結果然后回到命令提示字符等待下一個指令的輸入;
* 一種是進入到該指令的環境,直到結束該指令才回到命令提示字符的環境。
我們以一個簡單的圖示來說明:
圖4.2.1、指令下達的環境,上圖為直接顯示結果,下圖為進入軟件功能
如圖4.2.1所示,上方指令下達后立即顯示訊息且立刻回到命令提示字符的環境。 如果有進入軟件功能的環境(例如上面的bc軟件),那么就得要使用該軟件的結束指令 (例如在bc環境中輸入quit)才能夠回到命令提示字符中!那你怎么知道你是否在命令提示字符的環境呢? 很簡單!你只要看到光標是在“[dmtsai@study ~]$ ”這種提示字符后面, 那就是等待輸入指令的環境了。很容易判斷吧!不過初學者還是很容易忘記啦!
### 4.2.3 重要的幾個熱鍵[Tab], [ctrl]-c, [ctrl]-d
在繼續后面章節的學習之前,這里很需要跟大家再來報告一件事,那就是我們的文字模式里頭具有很多的功能組合鍵, 這些按鍵可以輔助我們進行指令的編寫與程序的中斷呢!這幾個按鍵請大家務必要記住的!很重要喔!
* [Tab]按鍵
[Tab]按鍵就是在鍵盤的大寫燈切換按鍵([Caps Lock])上面的那個按鍵!在各種Unix-Like的Shell當中, 這個[Tab]按鍵算是Linux的Bash shell最棒的功能之一了!他具有“命令補全”與“文件補齊”的功能喔! 重點是,可以避免我們打錯指令或文件名稱呢!很棒吧!但是[Tab]按鍵在不同的地方輸入,會有不一樣的結果喔! 我們舉下面的例子來說明。上一小節我們不是提到 cal 這個指令嗎?如果我在命令行輸入 ca 再按兩次 [tab] 按鍵, 會出現什么訊息?
```
[dmtsai@study ~]$ ca[tab][tab] <==[tab]按鍵是緊接在 a 字母后面!
cacertdir_rehash cairo-sphinx cancel case
cache_check cal cancel.cups cat
cache_dump calibrate_ppa capsh catchsegv
cache_metadata_size caller captoinfo catman
# 上面的 [tab] 指的是“按下那個tab鍵”,不是要你輸入中括號內的tab啦!
```
發現什么事?所有以ca為開頭的指令都被顯示出來啦!很不錯吧!那如果你輸入“ls -al ~/.bash”再加兩個[tab]會出現什么?
```
[dmtsai@study ~]$ ls -al ~/.bash[tab][tab]
.bash_history .bash_logout .bash_profile .bashrc
```
咦!在該目錄下面所有以 .bash 為開頭的文件名稱都會被顯示出來了呢!注意看上面兩個例子喔, 我們按[tab]按鍵的地方如果是在command(第一個輸入的數據)后面時,他就代表著 “命令補全”,如果是接在第二個字以后的,就會變成“文件補齊”的功能了!但是在某些特殊的指令下面,文件補齊的功能可能會變成“參數/選項補齊”喔! 我們同樣使用 date 這個指令來查一下:
```
[dmtsai@study ~]$ date --[tab][tab] <==[tab]按鍵是緊接在 -- 后面!
--date --help --reference= --rfc-3339= --universal
--date= --iso-8601 --rfc-2822 --set= --version
# 瞧!系統會列出來 date 這個指令可以使用的選項有哪些喔~包括未來會用到的 --date 等項目
```
總結一下:
* [Tab] 接在一串指令的第一個字的后面,則為“命令補全”;
* [Tab] 接在一串指令的第二個字以后時,則為“文件補齊”!
* 若安裝 bash-completion 軟件,則在某些指令后面使用 [tab] 按鍵時,可以進行“選項/參數的補齊”功能!
善用 [tab] 按鍵真的是個很好的習慣!可以讓你避免掉很多輸入錯誤的機會!

**Tips** 在這一版的 CentOS 7.x 當中,由于多了一個名為 bash_completion 的軟件,這個軟件會主動的去偵測“各個指令可以下達的選項與參數”等行為, 因此,那個“文件補齊”的功能可能會變成“選項、參數補齊”的功能,不一定會主動補齊文件名了喔!這點得要特別留意。鳥哥第一次接觸 CentOS 7 的時候, 曾經為了無法補齊文件名而覺得奇怪!煩惱了老半天說!
* [Ctrl]-c 按鍵
如果你在Linux下面輸入了錯誤的指令或參數,有的時候這個指令或程序會在系統下面“跑不停”這個時候怎么辦?別擔心, 如果你想讓當前的程序“停掉”的話,可以輸入:[Ctrl]與c按鍵(先按著[Ctrl]不放,且再按下c按鍵,是組合按鍵), 那就是中斷目前程序的按鍵啦!舉例來說,如果你輸入了“find /”這個指令時,系統會開始跑一些東西(先不要理會這個指令串的意義),此時你給他按下 [Ctrl]-c 組合按鍵,嘿嘿!是否立刻發現這個指令串被終止了!就是這樣的意思啦!
```
[dmtsai@study ~]$ find /
....(一堆東西都省略)....
# 此時屏幕會很花,你看不到命令提示字符的!直接按下[ctrl]-c即可!
[dmtsai@study ~]$ <==此時提示字符就會回來了!find程序就被中斷!
```
不過你應該要注意的是,這個組合鍵是可以將正在運行中的指令中斷的, 如果你正在運行比較重要的指令,可別急著使用這個組合按鍵喔! ^_^
* [Ctrl]-d 按鍵
那么[Ctrl]-d是什么呢?就是[Ctrl]與d按鍵的組合啊!這個組合按鍵通常代表著: “鍵盤輸入結束(End Of File, EOF 或 End Of Input)”的意思! 另外,他也可以用來取代exit的輸入呢!例如你想要直接離開命令行,可以直接按下[Ctrl]-d就能夠直接離開了(相當于輸入exit啊!)。
* [shift]+{[PageUP]|[Page Down]}按鍵
如果你在純文本的畫面中執行某些指令,這個指令的輸出訊息相當長啊!所以導致前面的部份已經不在目前的屏幕畫面中, 所以你想要回頭去瞧一瞧輸出的訊息,那怎辦?其實,你可以使用 [Shift]+[Page Up] 來往前翻頁,也能夠使用 [Shift]+[Page Down] 來往后翻頁! 這兩個組合鍵也是可以稍微記憶一下,在你要稍微往前翻畫面時,相當有幫助!

**Tips** 因為目前學生比較常用圖形界面的終端機系統,所以當鳥哥談到 [Shift]+[Page UP] 的功能時,他們很不能理解耶!說都有鼠標磙輪了, 要這組合鈕干麻?唉~真是沒見過世面的小朋友...
總之,在Linux下面,命令行的功能是很強悍的!要多多的學習他,而要學習他的基礎要訣就是...多使用、多熟悉啦!
### 4.2.4 錯誤訊息的察看
萬一我下達了錯誤的指令怎么辦?不要緊呀!你可以借由屏幕上面顯示的錯誤訊息來了解你的問題點, 那就很容易知道如何改善這個錯誤訊息啰!舉個例子來說,假如想執行date卻因為大小寫打錯成為DATE時, 這個錯誤的訊息是這樣顯示的:
```
[dmtsai@study ~]$ DATE
bash: DATE: command not found... # 這里顯示錯誤的訊息
Similar command is: 'date' # 這里竟然給你一個可能的解決方案耶!
```
上面那個bash:表示的是我們的Shell的名稱, 本小節一開始就談到過Linux的默認殼程序就是bash啰! 那么上面的例子說明了bash有錯誤,什么錯誤呢?bash告訴你:
> DATE: command not found
字面上的意思是說“指令找不到”,那個指令呢?就是DATE這個指令啦! 所以說,系統上面可能并沒有DATE這個指令啰!就是這么簡單!通常出現“command not found”的可能原因為:
* 這個指令不存在,因為該軟件沒有安裝之故。解決方法就是安裝該軟件;
* 這個指令所在的目錄目前的用戶并沒有將他加入指令搜尋路徑中,請參考[第十章bash的PATH](../Text/index.html#bash_type)說明;
* 很簡單!因為你打錯字!
從 CentOS 7 開始,bash 竟然會嘗試幫我們找解答耶!看一下上面輸出的第二行“Similar command is: 'date'”,他說,相似的指令是 date 喔! 沒錯啊!我們就是輸入錯誤的大小寫而已~這就已經幫我們找到答案了!看了輸出,你也應該知道如何解決問題了吧?
介紹這幾個指令讓你玩一玩先,更詳細的指令操作方法我們會在第三篇的時候再進行介紹! 現在讓我們來想一想,萬一我在操作date這個指令的時候,手邊又沒有這本書,我要怎么知道要如何加那些奇怪的參數, 好讓輸出的結果符合我想要的輸出格式呢?嘿嘿!到下一節鳥哥來告訴你怎么辦吧!
- 鳥哥的Linux私房菜:基礎學習篇 第四版
- 目錄及概述
- 第零章、計算機概論
- 0.1 電腦:輔助人腦的好工具
- 0.2 個人電腦架構與相關設備元件
- 0.3 數據表示方式
- 0.4 軟件程序運行
- 0.5 重點回顧
- 0.6 本章習題
- 0.7 參考資料與延伸閱讀
- 第一章、Linux是什么與如何學習
- 1.1 Linux是什么
- 1.2 Torvalds的Linux發展
- 1.3 Linux當前應用的角色
- 1.4 Linux 該如何學習
- 1.5 重點回顧
- 1.6 本章習題
- 1.7 參考資料與延伸閱讀
- 第二章、主機規劃與磁盤分區
- 2.1 Linux與硬件的搭配
- 2.2 磁盤分區
- 2.3 安裝Linux前的規劃
- 2.4 重點回顧
- 2.5 本章習題
- 2.6 參考資料與延伸閱讀
- 第三章、安裝 CentOS7.x
- 3.1 本練習機的規劃--尤其是分區參數
- 3.2 開始安裝CentOS 7
- 3.3 多重開機安裝流程與管理(Option)
- 3.4 重點回顧
- 3.5 本章習題
- 3.6 參考資料與延伸閱讀
- 第四章、首次登陸與線上求助
- 4.1 首次登陸系統
- 4.2 文字模式下指令的下達
- 4.3 Linux系統的線上求助man page與info page
- 4.4 超簡單文書編輯器: nano
- 4.5 正確的關機方法
- 4.6 重點回顧
- 4.7 本章習題
- 4.8 參考資料與延伸閱讀
- 第五章、Linux 的文件權限與目錄配置
- 5.1 使用者與群組
- 5.2 Linux 文件權限概念
- 5.3 Linux目錄配置
- 5.4 重點回顧
- 5.5 本章練習
- 5.6 參考資料與延伸閱讀
- 第六章、Linux 文件與目錄管理
- 6.1 目錄與路徑
- 6.2 文件與目錄管理
- 6.3 文件內容查閱
- 6.4 文件與目錄的默認權限與隱藏權限
- 6.5 指令與文件的搜尋
- 6.6 極重要的復習!權限與指令間的關系
- 6.7 重點回顧
- 6.8 本章習題:
- 6.9 參考資料與延伸閱讀
- 第七章、Linux 磁盤與文件系統管理
- 7.1 認識 Linux 文件系統
- 7.2 文件系統的簡單操作
- 7.3 磁盤的分區、格式化、檢驗與掛載
- 7.4 設置開機掛載
- 7.5 內存交換空間(swap)之創建
- 7.6 文件系統的特殊觀察與操作
- 7.7 重點回顧
- 7.8 本章習題 - 第一題一定要做
- 7.9 參考資料與延伸閱讀
- 第八章、文件與文件系統的壓縮,打包與備份
- 8.1 壓縮文件的用途與技術
- 8.2 Linux 系統常見的壓縮指令
- 8.3 打包指令: tar
- 8.4 XFS 文件系統的備份與還原
- 8.5 光盤寫入工具
- 8.6 其他常見的壓縮與備份工具
- 8.7 重點回顧
- 8.8 本章習題
- 8.9 參考資料與延伸閱讀
- 第九章、vim 程序編輯器
- 9.1 vi 與 vim
- 9.2 vi 的使用
- 9.3 vim 的額外功能
- 9.4 其他 vim 使用注意事項
- 9.5 重點回顧
- 9.6 本章練習
- 9.7 參考資料與延伸閱讀
- 第十章、認識與學習BASH
- 10.1 認識 BASH 這個 Shell
- 10.2 Shell 的變量功能
- 10.3 命令別名與歷史命令
- 10.4 Bash Shell 的操作環境:
- 10.5 數據流重導向
- 10.6 管線命令 (pipe)
- 10.7 重點回顧
- 10.8 本章習題
- 10.9 參考資料與延伸閱讀
- 第十一章、正則表達式與文件格式化處理
- 11.1 開始之前:什么是正則表達式
- 11.2 基礎正則表達式
- 11.3 延伸正則表達式
- 11.4 文件的格式化與相關處理
- 11.5 重點回顧
- 11.6 本章習題
- 11.7 參考資料與延伸閱讀
- 第十二章、學習 Shell Scripts
- 12.1 什么是 Shell scripts
- 12.2 簡單的 shell script 練習
- 12.3 善用判斷式
- 12.4 條件判斷式
- 12.5 循環 (loop)
- 12.6 shell script 的追蹤與 debug
- 12.7 重點回顧
- 12.8 本章習題
- 第十三章、Linux 帳號管理與 ACL 權限設置
- 13.1 Linux 的帳號與群組
- 13.2 帳號管理
- 13.3 主機的細部權限規劃:ACL 的使用
- 13.4 使用者身份切換
- 13.5 使用者的特殊 shell 與 PAM 模塊
- 13.6 Linux 主機上的使用者訊息傳遞
- 13.7 CentOS 7 環境下大量創建帳號的方法
- 13.8 重點回顧
- 13.9 本章習題
- 13.10 參考資料與延伸閱讀
- 第十四章、磁盤配額(Quota)與進階文件系統管理
- 14.1 磁盤配額 (Quota) 的應用與實作
- 14.2 軟件磁盤陣列 (Software RAID)
- 14.3 邏輯卷軸管理員 (Logical Volume Manager)
- 14.4 重點回顧
- 14.5 本章習題
- 14.6 參考資料與延伸閱讀
- 第十五章、例行性工作調度(crontab)
- 15.1 什么是例行性工作調度
- 15.2 僅執行一次的工作調度
- 15.3 循環執行的例行性工作調度
- 15.4 可喚醒停機期間的工作任務
- 15.5 重點回顧
- 15.6 本章習題
- 第十六章、程序管理與 SELinux 初探
- 16.1 什么是程序 (process)
- 16.2 工作管理 (job control)
- 16.3 程序管理
- 16.4 特殊文件與程序
- 16.5 SELinux 初探
- 16.6 重點回顧
- 16.7 本章習題
- 16.8 參考資料與延伸閱讀
- 第十七章、認識系統服務 (daemons)
- 17.1 什么是 daemon 與服務 (service)
- 17.2 通過 systemctl 管理服務
- 17.3 systemctl 針對 service 類型的配置文件
- 17.4 systemctl 針對 timer 的配置文件
- 17.5 CentOS 7.x 默認啟動的服務簡易說明
- 17.6 重點回顧
- 17.7 本章習題
- 17.8 參考資料與延伸閱讀
- 第十八章、認識與分析登錄文件
- 18.1 什么是登錄文件
- 18.2 rsyslog.service :記錄登錄文件的服務
- 18.3 登錄文件的輪替(logrotate)
- 18.4 systemd-journald.service 簡介
- 18.5 分析登錄文件
- 18.6 重點回顧
- 18.7 本章習題
- 18.8 參考資料與延伸閱讀
- 第十九章、開機流程、模塊管理與 Loader
- 19.1 Linux 的開機流程分析
- 19.2 核心與核心模塊
- 19.3 Boot Loader: Grub2
- 19.4 開機過程的問題解決
- 19.5 重點回顧
- 19.6 本章習題
- 19.7 參考資料與延伸閱讀
- 第二十章、基礎系統設置與備份策略
- 20.1 系統基本設置
- 20.2 服務器硬件數據的收集
- 20.3 備份要點
- 20.4 備份的種類、頻率與工具的選擇
- 20.5 鳥哥的備份策略
- 20.6 災難復原的考慮
- 20.7 重點回顧
- 20.8 本章習題
- 20.9 參考資料與延伸閱讀
- 第二十一章、軟件安裝:源代碼與 Tarball
- 20.1 開放源碼的軟件安裝與升級簡介
- 21.2 使用傳統程序語言進行編譯的簡單范例
- 21.3 用 make 進行宏編譯
- 21.4 Tarball 的管理與建議
- 21.5 函數庫管理
- 21.6 檢驗軟件正確性
- 21.7 重點回顧
- 21.8 本章習題
- 21.9 參考資料與延伸閱讀
- 第二十二章、軟件安裝 RPM, SRPM 與 YUM
- 22.1 軟件管理員簡介
- 22.2 RPM 軟件管理程序: rpm
- 22.3 YUM 線上升級機制
- 22.4 SRPM 的使用 : rpmbuild (Optional)
- 22.5 重點回顧
- 22.6 本章習題
- 22.7 參考資料與延伸閱讀
- 第二十三章、X Window 設置介紹
- 23.1 什么是 X Window System
- 23.2 X Server 配置文件解析與設置
- 23.3 顯卡驅動程序安裝范例
- 23.4 重點回顧
- 23.5 本章習題
- 23.6 參考資料與延伸閱讀
- 第二十四章、Linux 核心編譯與管理
- 24.1 編譯前的任務:認識核心與取得核心源代碼
- 24.2 核心編譯的前處理與核心功能選擇
- 24.3 核心的編譯與安裝
- 24.4 額外(單一)核心模塊編譯
- 24.5 以最新核心版本編譯 CentOS 7.x 的核心
- 24.6 重點回顧
- 24.7 本章習題
- 24.8 參考資料與延伸閱讀