Professional Documents
Culture Documents
使用 Debian GNU/Linux
寫在前頭
為了讓更多初學者可以更容易入門 UNIX / Linux ,筆者將自己所學
以及整理網路資源,用淺顯易懂的方式寫成這份文件,希望能將自己的學習
經驗分享給大家。這份文件定位於『初學入門』的參考講義,至今內容仍持
續在擴充與修訂;假使各位對於文件有任何問題與建議,非常歡迎各位來信
指教,希望可以讓這份參考講義更為完美。
更新紀錄
2006-2-23-AM2:10 —『一二篇全部內容』完成
2006-2-23-AM2:00 —『第三篇、第四篇大綱』完成
2006-2-22-PM10:40 —『7-5 文字過濾器』完成
2006-2-22- PM3:50 —『7-4 檔案搜尋』完成
.
.
.
.
.
Contents
目錄
第一篇:認識 Linux 系統
第 1 章 緒論
1-1 UNIX 學習建議 .........................................................................5
1-2 學習心態 .................................................................................6
1-3 線上教學網 ..............................................................................7
1-4 Linux 能做什麼?.....................................................................7
1-5 該學哪個版本?........................................................................9
1-6 線上資源 ...............................................................................11
第 2 章 Linux 簡介
2-1 什麼是 Linux? ......................................................................14
2-2 Linux 發行套件 ......................................................................15
2-3 取得 Linux ............................................................................17
第 3 章 安裝 Linux
3-1 安裝的流程 ............................................................................18
3-2 磁碟分割與目錄規劃 ...............................................................18
3-3 安裝 Debian GNU/Linux........................................................24
第 4 章 系統結構與目錄架構
4-1 Linux 系統結構 ......................................................................34
4-2 Linux 目錄架構 ......................................................................36
-1-
第二篇:Linux 基礎使用
第 5 章 上機使用 Linux
5-1 登入的方式 ............................................................................40
5-2 登入與登出 ............................................................................41
5-3 登入後的環境 .........................................................................42
5-4 切換使用者 ............................................................................44
5-5 開機與關機 ............................................................................48
第 6 章 認識 Bash Shell
6-1 基礎概念 ...............................................................................51
6-2 相對路徑與絕對路徑 ...............................................................54
6-3 資料流重導向 .........................................................................56
6-4 管線應用 ...............................................................................61
6-5 線上資源 ...............................................................................62
第 7 章 Linux 基本工具
7-1 檔案與目錄操作......................................................................63
7-2 打包與壓縮 ............................................................................75
7-3 更改檔案權限 .........................................................................82
7-4 搜尋檔案 ...............................................................................92
7-5 文字過濾器 ......................................................................... 102
7-6 萬用字元 ............................................................................ 108
7-7 正規表示式 ......................................................................... 110
第 8 章 文字編輯器
8-1 Vi 模式介紹 ........................................................................ 112
8-2 Vi 指令操作 ........................................................................ 113
-2-
第三篇:Linux 基礎管理
第 9 章 帳號管理
9-1 使用者與群組概念................................................................ 117
9-2 相關設定檔 ......................................................................... 118
9-3 基本指令操作 ...................................................................... 119
第 10 章 套件管理
10-1 背景知識 .......................................................................... 120
10-2 套件管理工具 .................................................................... 121
10-3 原始碼安裝軟體................................................................. 122
10-4 手動安裝 (一) .................................................................... 123
10-5 手動安裝 (二) .................................................................... 124
第 11 章 行程管理
11-1 背景與前景工作................................................................. 125
11-2 基本指令操作 .................................................................... 126
第 12 章 工作排程
12-1 背景知識 .......................................................................... 127
12-2 相關設定檔 ....................................................................... 128
12-3 基本指令操作 .................................................................... 129
-3-
第四篇:Linux 進階管理
第 13 章 檔案系統管理
13-1 磁碟分割與格式化 ............................................................. 130
13-2 檔案系統掛載 .................................................................... 130
13-3 相關設定檔 ....................................................................... 130
13-4 相關工具使用 .................................................................... 130
13-5 磁碟配額 .......................................................................... 130
第 14 章 系統開機流程
14-1 開機管理程式 .................................................................... 131
14-2 系統運作層級 .................................................................... 131
14-3 相關設定檔 ....................................................................... 131
14-4 相關工具使用 .................................................................... 131
第 15 章 系統備份與救援
15-1 備份策略 .......................................................................... 132
15-2 相關工具使用 .................................................................... 132
15-3 救援模式 (一) .................................................................... 132
15-4 救援模式 (二) .................................................................... 132
第 16 章 系統紀錄檢視
16-1 背景知識 .......................................................................... 133
16-2 相關設定檔 ....................................................................... 133
16-3 相關工具使用 .................................................................... 133
-4-
認識 Linux 系統
第 1 章 緒論
1-1 UNIX 學習建議
首先筆者轉貼一則由『國立政治大學–應用數學系』蔡炎龍教授
所提出的『Unix系統基本學習建議』。
(http://riemann.math.nccu.edu.tw/forum/viewtopic.php?t=7)
以下為引述內容:
-5-
1-2 學習心態
各位可以抱持著一種『重頭學習』一個『新的』作業系統的心態,
撇開原本操作其他系統的觀念,以全新的角度,用心去體驗 Linux 所帶來的
強大功能與特色!這樣的學習方式,相信您也會感覺到比較有趣呢!
相關資源:
『GNU/Linux 初學之旅』
— http://www.study-area.org/tips/linux_entry.htm
— http://www.study-area.org/tips/linux_entry.pdf
『鳥哥的私房菜–如何學習 Linux』
— http://linux.vbird.org/linux_basic/0120howtolinux.php
『鳥哥的私房菜–Linux 的學習曲線,一個老人家的建議!』
— http://linux.vbird.org/new_linux.php
學習 Linux,手上最好要有一本參考書籍,假使沒有打算買
那也沒有關係,因為筆者將在下一章節中介紹一些 Linux 線上教學資源。
-6-
1-3 線上教學網
筆者整理一些教學資源給各位參考,這些連結除了中文的 Linux
教學網站之外,還有英文的 Unix Administration Courses。想當初筆者
自己剛學習 Linux 時,也是由這些教學網站來入門的呢!
線上教學網站:
『鳥哥的私房菜』
— http://linux.vbird.org/
『Study-Area–學習 Linux』
— http://www.study-area.org/linux/linuxfr.htm
-7-
Linux 擁有圖形化的操作介面,您可以在上面做任何的桌面應用以及
辦公室應用;可以拿 Linux 開發程式、架設網路伺服器。玩家們甚至可以在
Linux 上打線上遊戲—魔獸世界;透過 WINE (http://www.winehq.com/)
您還可以在 Linux 上跑 Windows 的應用程式呢!(很神奇吧!)
Linux 有一個吸引人的特點—『您可以不用安裝防毒軟體!』大部份的
病毒以及後門程式多半針對 Windows 系統而寫,這些惡意程式對於 Linux
系統是一點作用都沒有。
Linux 的桌面應用:
『Linux 應用軟體總表』
— http://www.ossacc.org/software/application/index_html
『Linux 程式系統總表』
— http://www.ossacc.org/software/system/
目前很多入口網站 (Portal)、資料庫系統、電子商務網站等,均建構在
-8-
Linux 作業系統上;公司企業將 Linux 作為伺服器應用,知名的 Google
Inc.、Amazon.com, Inc 等,都是絕佳的典範。
透過 NetCraft:http://news.netcraft.com/,您可以看到世界上
有龐大數量的網路伺服器,全部都是建立在 Linux 平台上。
除此之外,有個著名的『網路伺服軟體應用組合』縮寫名稱『LAMP』
也是 Linux 網路應用的典型例子;這個 LAMP 架構常被用來建立公司企業
以及個人網站服務。
LAMP:
LAMP 是一個縮寫,它指一組通常一起使用來運行動態網站或者伺服器的自由軟體:
* Linux, 作業系統;
* Apache, 網頁伺服器;
* MySQL, 資料庫管理系統 (或者資料庫伺服器);
* Perl, PHP, 和/或者 Python, 腳本語言。
Linux 是一套『作業系統』,作為人類與電腦硬體之間的溝通橋樑,
大家可以透過 Linux 來達成自己想要的任務。Linux 能做的事情遠多過於
我們所能想到的;與其思考它能做什麼,不如直接問『要拿它做什麼?』
因為我們要做的事情,Linux 它都能做! (沒錯,這就是 Linux。 )
1-5 該學哪個版本?
精確的說,『Linux』只能算是個『kernel』(作業系統的核心);
常見的 Linux 發行版本則是『Linux Kernel + 開放源碼應用程式』
的一項產物 (套裝 / 發行版本)。
-9-
這些 Linux 發行版本,它們的核心都是使用『Linux kernel』,
所使用的公用程式也大都是『GNU 軟體』以及其他『開放源碼軟體
(Open Source Software) 』。
Linux Distribution:
每一個發行版本的『設計哲學』以及『管理方式』都不盡相同。
各位可以多嘗試不同的 distribution,然後選擇一套自己『特別喜歡』的
來深入研究;這樣的學習方式會更好玩,更有趣唷!
- 10 -
補充說明:
1-6 線上資源
學習 Linux 除了看書以及實作之外,一定要學會『上網找資料』。
網路上的 Linux 資源非常豐富,若想學更多相關的知識,一定要多參考網路
資源。筆者在下方整理一些 Linux 其他的資源,提供給各位參考。
其他資源:
Linux 相關網站
『鳥哥的私房菜—網路連結』
— http://linux.vbird.org/othersites
Linux 文獻計畫
- 11 -
Usenet 網上論壇
『comp.os.linux』
— http://groups.google.com.tw/groups/dir?sel=33583540
『tw.bbs.comp.linux』
— http://groups.google.com.tw/group/tw.bbs.comp.linux/topics
在問問題之前,記得要先看過這篇『提問的智慧』哦!
— http://phorum.vbird.org/viewtopic.php?t=96
Linux 討論區網站:
『摩托學園討論區』
— http://moto.debian.org.tw/
『自由軟體技術交流網』
— http://freesf.tnc.edu.tw/
『KNOPPIX 中文交流網』
— http://knoppix.tnc.edu.tw/
『酷!學園討論區』
— http://phorum.study-area.org/
- 12 -
『Ubuntu 正體中文站』
— http://www.ubuntu.org.tw/
『Fedora 台灣愛用者社群』
— http://live.fect.com.tw/
小道透漏:
- 13 -
第 2 章 Linux 簡介
2-1 什麼是 Linux?
簡單的說,Linux 它是一個『作業系統』作為人類與電腦硬體之間
的溝通橋樑,大家可以透過 Linux 來達成自己的工作任務。
Linux 是一套自由、開放、而且免費的作業系統,由於開放源碼
(Open Source) 的特點,您可以任意的修改 Linux;從最底層的核心
(Kernel) 以至於上層的應用程式 (Application),都可以依照自己的需求,
親自動手修改,直到滿意為止。
藉由『自由、開放、免費』等特性,Linux 越來越受到大眾的喜愛;
尤其是那些電腦技術專精至深的專家 (Hackers),更是愛不釋手呢!
Linux 的由來:
- 14 -
第一個『Linux』(Kernel) 就這樣出現了!至今 Linux 已經蓬勃發展,
並也成為了世界上相當重要的作業系統之一。
Linux 能做的事情很多,多過於我們所能想到的。如同筆者在『1-4
Linux 能做什麼』章節所述 —您在 Windows 上能做的事情,來到 Linux
一樣都可以做,而且還能做更多!
『鳥哥的私房菜—什麼是 Linux』
— http://linux.vbird.org/linux_basic/0110whatislinux.php
『 Linux 維基百科,自由的百科全書』
— http://zh.wikipedia.org/wiki/Linux
『What is Linux』
— http://www.linux.org/info/
『 Unix 發展史簡記』
— http://www.ndhu.edu.tw/~comput/elearning/others/unix/chap1/1_1.htm
- 15 -
它們最主要的差別在於,有些 Linux 發行版本會擁有一些專門為了
自己的版本所設計的『專屬工具』,這些專屬工具只屬於自己的發行版本,
並不會出現在別的發行版本。再來就是『套件管理方式』的不同;每個發行
版本的套件管理方式都不太相同,就連套件管理的『前端程式』也是每個版
本都不太一樣。除了這些『系統層級』的軟體會有所不同以外,至於系統的
核心 (Kernel) 以及最上層的應用程式 (Application) 基本上都會是一樣的。
Linux Distribution:
每一個發行版本的『設計哲學』以及『管理方式』都不盡相同。
各位可以多嘗試不同的 distribution,然後選擇一套自己『特別喜歡』的
來深入研究;這樣的學習方式會更好玩,更有趣唷!
- 16 -
2-3 取得 Linux
下載位置:
『 Linux Distributions』
— http://www.linux.org/dist/
『LinuxISO』
— http://www.linuxiso.org/
『DistroWatch』
— http://distrowatch.com/
- 17 -
第 3 章 安裝 Linux
3-1 安裝的流程
3-2 磁碟分割與目錄規劃
在這一章節裡,筆者除了接續『3-1 安裝的概念』所說的安裝四個流程
之外,會在第二個流程 (切割硬碟、格式化硬碟) 介紹一些基礎的磁碟分割
以及目錄結構概念。
安裝 —第一個流程 :
- 18 -
安裝 —第二個流程 :
Linux 磁碟裝置的命名:
由於一顆硬碟最多只能切四個『主要磁區』(Primary Partition),
因此通常我們會切一個『延伸磁區』(Extended Partition),接著在延伸磁區
- 19 -
切割『邏輯磁區』(Logical Partition)。在 Windows 下,不管您的硬碟是
『主要磁區』還是『邏輯磁區』,它的代稱依舊還是『C、D、E』;但是
在 Linux 底下,磁碟的命名方式則完全不同,筆者將在下表中舉例說明。
Linux 磁碟裝置命名範例與解說:
在 Linux 底下,磁碟的分割與裝置名稱對應如同上表所述;在這裡要
特別注意的有下列三點:
1. 一個硬碟『最多』只能切割『四個』主要磁區。
2. 若要讓磁區多過於四個,則必須建立一個『延伸磁區』。
3. 只要是 ”第一個”『邏輯磁區』其裝置編號均以『5』為起始值,
其他的邏輯磁區編號會依序遞增。
有了 Linux 磁碟分割與裝置名稱編號的概念後,各位在面對安裝介面
的『磁碟分割』程式時,就能夠妥善的處理分割事宜。
知道如何分割硬碟後,接著就要來思考『要如何規劃分割區』?
要能夠妥善的規劃分割區,首先要大略的了解『Linux 樹狀目錄結構圖』。
- 20 -
底下是一個 Linux 樹狀目錄結構之範例圖示。
Linux 樹狀目錄結構圖:
(圖示來源: 柏青哥的網站)
在進行磁碟分割的同時,安裝介面會提示您要設定磁區的『掛載目錄』
;這時候就必須先認識一下 Linux 底下幾個重要的目錄,才能夠做設定。
筆者在下表列整一些比較重要的系統目錄來為各位說明:
Linux 重要目錄說明:
/ 根目錄 (所有的檔案與內容都從根目錄為起始)
/boot 存放核心與開機程式檔案
/etc 存放主要系統設定檔
/tmp 存放暫存資料
/root 超級使用者家目錄
/usr 存放系統大部分的資源與檔案
- 21 -
上表所述的目錄,除了『/etc』必須依附於『/』之上 (表示不能將
/etc 切割在 / 之外);其他的目錄都可以掛載於獨立的 partition 之上。
補充說明:
Swap 置換空間:
在 Linux 下必須建立一個磁區,格式化並設定為『swap』形式。
swap 是所謂的『交換區』或稱為『虛擬記憶體』;當實體記憶體 (Ram)
不敷使用時,就會將資料寫入 swap 磁區,將硬碟當作實體記憶體來使用。
在建立磁區與設定掛載目錄的同時,必須先規劃好這台機器的用途
(譬如:桌面應用、或者伺服器應用?) 不同的用途有不同的規劃方式。
舉例說明:
硬碟切割完成後,必須『格式化』才能使用。在 Windows 下,
檔案格式有 NTFS、FAT32 等;在 Linux 也有相關的檔案格式,常見的
例如:ext3、reiserfs、xfs 等。通常安裝介面的硬碟分割程式,大都會
自動幫您做『格式化』的動作;您可以自由選擇要格式化成哪種檔案格式。
對於要正式上線的網路伺服主機來說,做好妥善的磁碟規劃是必要的!
- 22 -
除了可避免因為『磁碟分割區不當配置』所引發的問題之外,對於主機的維
護與管理也是相當有益處哦!
主機的規劃與安裝前的認知:
『鳥哥的私房菜—Linux 主機的規劃』
— http://linux.vbird.org/linux_basic/0130designlinux.php
安裝 —第三個流程 :
經過了上述『磁碟分割與格式化』的第二流程後,接下來的安裝過程就
非常輕鬆了。在大部分的 distribution 裡,各位只要需要手動勾選自己要裝
的套件與相關內容,選完後按下『確認鈕』(Next),安裝介面程式會自動的
將 Linux 作業系統檔案『複製』到您配置的硬碟磁區上 (掛載目錄中)。
系統檔案複製完成後,大部份的安裝程式會提示使用者安裝
『開機管理程式』(Boot Loader),較先進的安裝程式會自動幫您配置好
『多重開機』的設定 (讓您的 Linux 可以與 Windows 系統並存)。
安裝 —第四個流程 (完成) :
所有安裝步驟已經完成。在退出安裝介面程式後,系統將進行第一次
重新開機,並進入到 Linux 系統。
- 23 -
3-3 安裝 Debian GNU/Linux
- 24 -
3-3-2 選擇『語系』以及『鍵盤配置』。
- 25 -
3-3-3 設定『主機名稱』以及『網域名稱』。
3-3-4 起始『磁碟分割程式』。
- 26 -
3-3-5 進行『磁碟分割作業』。
- 27 -
3-3-7 安裝『開機管理程式』(Boot Loader)。
3-3-8 『安裝完成』退出光碟片,準備第一次『重新開機』。
- 28 -
3-3-10 進入『Base System 設定作業』,先設定『時區』。
- 29 -
3-3-12 設定『一般使用者』帳號以及密碼。
- 30 -
3-3-14 選擇要安裝的軟體,採用『網路安裝』方式。
- 31 -
3-3-15 設定『Exim v4』郵件伺服器。
- 32 -
3-3-16 『Base System 設定作業』已經完成,可以登入系統囉!
更多資源:
『Debian 新手安裝圖解教學』
— http://moto.debian.org.tw/viewtopic.php?t=4962
『Debian 參考手冊』
— http://qref.sourceforge.net/
- 33 -
第 4 章 系統結構與目錄架構
4-1 Linux 系統結構
『作業系統』它是安裝在『硬碟』上的一套『完整的大程式』。
這套『大程式』的用途,就是用來『控制』電腦硬體,讓它來幫您做事!
它能幫助各位『竭盡所能』的榨乾硬體資源與功能。
HDD / Kernel
符合 FHS 標準規範 Hardware
- 34 -
Linux 系統結構 圖:
Applications 這裡又可以區分成專門作為『網路服務』
的伺服器程式以及專為『桌面應用』的
Server X-window X-window 程式等;還有不隸屬上述兩種
Apps Apps 的『其他程式』。
簡單來說,Linux 作業系統由以下幾個部分所組成:
補充資源:
『UNIX 架構簡圖』
— http://kalug.linux.org.tw/~lloyd/LLoyd_Hand_Book/book/unix-intronal.html
- 35 -
4-2 Linux 目錄架構
系統中常見的目錄與 說明:
/ 根目錄 (萬物的起源)
/bin 存放基本的執行檔,可供所有使用者使用
/boot 存放核心與開機程式檔案
/dev 裝置檔案目錄
/etc 存放主要系統設定檔
/home 使用者家目錄 (存放所有使用者的檔案)
/lib 函式庫目錄
/media/* 可卸除式媒體的掛載目錄
/mnt 暫時性儲存媒體或可提供掛載的檔案系統之掛載目錄
/opt 作為其他應用程式存放檔案與資料
/proc 虛擬的檔案系統目錄,存放系統的相關資訊
/root 超級使用者家目錄
/sbin 存放系統或超級使用者可使用的執行檔
/srv 存放一些網路服務 (Service) 的檔案與資料
/sys 存放系統相關資訊
/tmp 存放暫存檔案
/usr 存放系統大部分的資源與檔案
/var 存放經常變動的資料 (網路服務、資料庫、Mail..)
- 36 -
在 Linux 系統中,所有的目錄都是掛載於 / (根目錄) 底下,我們可以
使用『cd』這個指令來切換目錄。切換目錄的方式,有兩種:一種是使用
『絕對路徑』,另外一種是使用『相對路徑』,關於絕對路徑與相對路徑的
說明,筆者在下方來說明。
• 『絕對路徑』 —
只要路徑的表示是以『/』作為起始開頭,則屬於絕對路徑表示法。
cyj@debian:~$ cd / (到根目錄)
cyj@debian:/$ cd /home/cyj/ (到 home 底下的 cyj 目錄)
cyj@debian:~$ cd /etc/ (到 etc 目錄)
cyj@debian:/etc$ cd /usr/share/ (到 usr 底下的 share 目錄)
• 『相對路性』 —
只要路徑的表示,”不以”『/』作為開頭,則屬於相對路徑表示法。
提到『相對路徑』表示方法,在此有四個符號,大家一定要熟悉唷!
筆者在下面一樣舉些範例,讓各位可以清楚了解這四個符號的意義。
『.』(點) 符號應用例:
cyj@debian:~$ cd . (進入現行目錄)
cyj@debian:~$ pwd (使用 pwd 指令查看現在所在目錄位置)
/home/cyj (一樣在家目錄中,沒有更換位置)
- 37 -
『..』(點點) 符號應用例 :
『~』(波浪) 符號應用例:
『–』(連結) 符號應用例:
這個『cd –』,比較像是『上一頁』的意思!例如各位在瀏覽網頁時,
時常會按下『回上一頁』的按鈕一樣;這裡的『cd –』可以讓您從『當前
目錄』回到『上一個』使用過的目錄。 (建議大家,邊看講義時,可以一邊
實做來個現學現賣哦! )
在這一章節裡,筆者介紹了『Linux 目錄架構』以及『絕對路徑/
相對路徑』的基礎概念;假使各位對 FHS 的細節有興趣,不妨參考下列
資源。
- 38 -
補充資源:
- 39 -
Linux 基礎使用
第 5 章 上機使用 Linux
5-1 登入的方式
在 Linux 系統上有兩種主要的登入方式:
第一種:親自走到主機面前,拿起鍵盤,輸入帳號密碼。這是最基本
的登入方法了。一般而言,預設可登入的終端機 (Virtual Console)
有七個,分別是從 『tty1』到『tty7』(tty7 通常是作為 X-window
的使用)。如果各位想要在虛擬終端機之間切換,只要在鍵盤上按下
『Ctrl』+『Alt』+『F2』(三鍵一起按),就可以切換到『第二個虛擬
終端機 (tty2)』;以此類推,若按下『Ctrl』+『Alt』+『F1 到 F7』
就可以讓您從 tty1 切換到 tty7 囉!
遠端登入示意圖
虛擬終端機
Linux 主機 (Virtual Console)
鍵盤 (Keyboard)
提供的服務 Applications VT 1
VT 2
HTTP
Server X-window telnetd / sshd VT 3
FTP
MAIL Apps Apps VT 4
… VT 5
OS Utilities / Applications VT 6
Kernel VT 7
透過網路連結的電腦
Hardware (telnet client / ssh client)
- 40 -
如果各位的 Linux 是安裝在外地的電腦上,那就必須要『遠端登入』
才能在遠端的主機上進行練習與操作。假使您目前已經在 Linux 系統下,
使用系統的 ssh 或 telnet 指令就可以直接登入到遠端的機器啦!
5-2 登入與登出
登入時,必須填入帳號跟密碼,以下遠端登入的示範例子:
另外,在第一次登入系統後,最好先更改自己的登入密碼,以免系統預
設開給您的密碼太過於簡單,而導致系統被惡意人士入侵。更改密碼的指令
是 passwd,使用方式在下面介紹。
- 41 -
5-3 登入後的環境
Shell 環境示意圖
使用者登入
(Login)
Shell (Bash)
作業系統
(Linux)
Shell 的提示畫面類似這樣:
yenjinc @ riemann : ~ $
簡單的說,『yenjinc@riemann:~$』,所代表的意義是:
• [ yenjinc (姓名)]
• [ @ (在)]
• [ riemann (主機名稱)]
• [ : (分隔符號)]
• [ ~ (當前所在目錄)]
• [ $ (提示字元)]
- 42 -
筆者在下列表格為大家解說相關細節:
表示『主機名稱』(hostname)。譬如筆者登入到 riemann
riemann (主機名稱) 主機,所以在畫面第三欄位,就會顯示為『riemann』。
: (分隔符號) 只是單純的『分隔符號』,沒有其他的意思。
表示『當前所在目錄』(current directory)。上述這個例子
~ (當前所在目錄) 『~』代表的是『家目錄』。 預設的情況下,使用者登入後
,會進入『家目錄』(自己的家),因此若您在其他目錄時,
這個欄位就會顯示『相對應』的目錄位置。譬如:目前正在
/home/cyj 目錄中,這個欄位就會顯示『/home/cyj』。
我們來看下面提示字元範例:
- 43 -
5-4 切換使用者
『一般使用者』跟『系統管理者』之間的差異,從『提示字元』符號的
不同,以至於『控管系統』的權限也大不相同。接著筆者要介紹 su、sudo
的應用,它們可以讓您 (一般使用者) 在不用登出系統的狀況下『變身』為
root,進而處理一些系統管理的工作。
使用『man』查看一下 『su』的說 明 :
以下筆者將較為重要的部份節錄出來
NAME
su - Change user ID or become super-user
SYNOPSIS
su [OPTS] [-] [username [ARGS]]
OPTIONS
- make this a login shell
-c, --commmand=<command>
pass command to the invoked shell using its -c option
su 指令可以讓您在不登出系統的狀態中,切換成為其他的使用者,
或者切換成為超級使用者 (root),進行系統管理的工作。以下是針對 su
指令基本的使用範例介紹。
使用『su』切換使 用者:
- 44 -
cyj@debian:~$ su yenjinc (使用 su 將使用者切換為 yenjinc )
Password: (輸入 yenjinc 的密碼)
yenjinc@debian:/home/cyj$ whoami (已切換為 yenjinc )
yenjinc
yenjinc@debian:/home/cyj$ su (使用 su 切換為超級使用者 root )
Password: (輸入 root 的密碼)
debian:/home/cyj# whoami (使用 whoami 驗證一下)
root (已經切換為 root 了)
使用『exit』可以離開 su 切換後的環境
- 45 -
以上都是介紹如何使用 su 來切換使用者,接著下面要介紹 su 最好用
的一項功能—『不登入為 root,而使用 root 身份來執行命令!』這功能
其實等同於『sudo』的功能,在我們介紹 sudo 指令之前,先來看一下
『su –c 』的應用範例。
安裝『sudo』工具:
sudo 是一套工具程式,在預設的狀態下,系統可能沒有安裝。
在 Debian GNU/Linux 可以使用 apt-get install 指令來安裝。
(關於 apt-get install 的使用方法可參考『』章節)
- 46 -
使用『visudo』來設 定可使用 sudo 工具的人員名單:
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
# See the man page for details on how to write a sudoers file.
#
儲存離開後,即大功告成。
『sudo』使 用範例:
- 47 -
cyj@debian:~$ /sbin/reboot (以 cyj 身份執行 /sbin/reboot 重開機)
reboot: must be superuser. (系統告知:必須以 root 身份才能執行)
cyj@debian:~$ sudo /sbin/reboot (使用 sudo 來執行 /sbin/reboot 指令)
Password: (輸入 cyj 自己的密碼,非 root 密碼)
補充資源:
5-5 開機與關機
在 Linux 系統下,首先要學的第一件事情就是要知道『如何開機與
關機』。開機的部份只要將主機的 power 電源打開,在 Boot Loader 選擇
進入 Linux 系統,即完成開機動作。若要重新開機或關機時,切勿直接按下
主機的 reset 按鈕或者 power 按鈕來切斷電源,這會讓 Linux 系統受損。
- 48 -
Linux 就如同其他的作業系統一般,在關機或重開機時,需要由使用者下達
『關機指令』給系統,它才會遵照標準程序來進行關機或重新開機,這對於
硬碟以及系統才不會造成損害。
在 Linux 中,關機與重新開機的指令如下所列,筆者將一一介紹。
1. shutdown
2. reboot
3. halt
4. poweroff
使用『man』查看一下 『shutdown』的說明:
以下筆者將較為重要的部份節錄出來
NAME
shutdown - bring the system down
SYNOPSIS
/sbin/shutdown [-t sec] [-arkhncfFHP] time [warning-message]
OPTIONS
-t sec Tell init(8) to wait sec seconds between sending processes the
warning and the kill signal, before changing to another run-
level.
『shutdown』重新開機 範例:
- 49 -
cyj@debian:~$ sudo shutdown -r +10 "System will reboot"
(系統在 10 分鐘後會『重開機』,並顯示 ”System will reboot” 訊息)
cyj@debian:~$ sudo reboot (reboot 的功能等同於 shutdown –r now)
『shutdown』關機範例 :
『shutdown』傳送『警 告訊息』範 例:
補充資源:
- 50 -
第 6 章 認識 Bash Shell
6-1 基礎概念
Shell 環境示意圖
使用者登入
(Login)
Shell (Bash)
作業系統
(Linux)
Shell 的提示畫面類似這樣:
yenjinc@debian:~$
- 51 -
『指令下達』範例:
筆者在此以簡單的一些指令作為介紹
cyj@debian:~$ pwd (使用 pwd 指令查看所在位置)
/home/cyj
cyj@debian:~$ cd /tmp/ (使用 cd 指令,進入 /tmp/ 目錄)
( cd [←指令] /tmp/ [←參數] )
cyj@debian:/tmp$ ls (使用 ls 指令查看目錄內容)
cyj@debian:/tmp$ ls -a (加上 –a 選項,查看隱藏檔內容)
. .. .ICE-unix .X11-unix ( ls [←指令] –a [←選項] )
cyj@debian:/tmp$ touch file1 file2 file3 (使用 touch 指令建立三個檔案)
( touch [←指令] file* [←均為參數] )
cyj@debian:/tmp$ ls file* (使用 ls 顯示所有 file* 內容)
file1 file2 file3 ( ls [←指令] file* [←參數] *為萬用字元)
cyj@debian:/tmp$ rm * (使用 rm 指令刪除所有資料)
( rm [←指令] * [←參數] *為萬用字元)
cyj@debian:/tmp$ ls -a ( ls [←指令] –a [←選項] )
. .. .ICE-unix .X11-unix (所有 file* 相關檔案已經刪除)
在 Shell 底下還有兩個相當重要的功能要介紹給大家:
1. 命令編修與歷史命令 (history):
Bash Shell 有一個功能,它能紀錄您先前使用過的指令紀錄
(history)。在提示字元畫面,只要按下鍵盤的 ↑、↓ 按鍵,
就能在先前已經使用過的指令間相互切換。關於 history
指令的介紹,筆者在後面會做說明。
2. 命令與檔案補全 ( [TAB] ):
使用 Bash Shell 一定要記住一個按鍵,這個按鍵非常好用!
它就是 [TAB] 鍵 (Q的左邊)。當您在輸入指令時,按一下
[TAB] 鍵,Shell 會自動幫您補齊指令名稱。如果按一下沒有
作用時,這時候連按兩下時,Shell 會自動將名稱開頭符合的
指令統統列示出來。
- 52 -
[TAB] 鍵除了作為命令的自動補齊之外,還可以用於『檔案補全』。
也就是說,當您在輸入一串很長的路徑時 (或檔案名稱),按下 [TAB] 鍵後,
Shell 會自動將檔名或路徑名稱補全。
小道透漏:
在 Bash 下還有許多好用的組合命令,筆者在下方介紹。
命令補全
[TAB]
[Ctrl]+[i] (與 [TAB] 相同的作用)
移動游標
[Ctrl]+a (將游標移動到最前面)
[Ctrl]+e (將游標移動到最末端)
清除畫面
[Ctrl]+l (清除 Shell 畫面)
[Ctrl]+u (清除 Shell 當列的命令)
[Ctrl]+y (復原已清除的當列命令)
中斷命令
[Ctrl]+c (中斷當前命令)
[Ctrl]+d (EOF字符,於 Shell 底下使用等同於 logout )
『history』指令 範例:
輸入 history 會顯示出目前已經使用過的歷史命令紀錄
cyj@debian:~$ history
1 ls -l
2 rm test2
3 touch tmp1
4 history
- 53 -
可使用『!』(驚嘆號) 來呼叫先前已經使用過的歷史命令
cyj@debian:~$ !2 (呼叫 history 2 的歷史命令,即 rm test2 )
cyj@debian:~$ !to (呼叫以 to 為開頭的歷史命令,即 touch tmp1 )
cyj@debian:~$ !! (執行上一個歷史命令,即為 !to )
6-2 相對路徑與絕對路徑
• 『絕對路徑』 —
只要路徑的表示是以『/』作為起始開頭,則屬於絕對路徑表示法。
cyj@debian:~$ cd / (到根目錄)
cyj@debian:/$ cd /home/cyj/ (到 home 底下的 cyj 目錄)
cyj@debian:~$ cd /etc/ (到 etc 目錄)
cyj@debian:/etc$ cd /usr/share/ (到 usr 底下的 share 目錄)
• 『相對路性』 —
只要路徑的表示,”不以”『/』作為開頭,則屬於相對路徑表示法。
提到『相對路徑』,在此有四個符號,大家也稍微認識一下:
- 54 -
• 『.』(點) 符號: 代表『現行目錄 (current directory)』的意思。
• 『..』(點點) 符號: 代表『上一層目錄 (父目錄)』的意思。
• 『~』(波浪) 符號: 代表『使用者家目錄 (/home/$USER)』的意思。
• 『–』(連結) 符號: 代表『上一個使用目錄 (上一頁)』的意思。
筆者在下面一樣舉些範例,讓各位可以清楚了解這四個符號的意義。
『.』(點) 符號應用例:
cyj@debian:~$ cd . (進入現行目錄)
cyj@debian:~$ pwd (使用 pwd 指令查看現在所在目錄位置)
/home/cyj (一樣在家目錄中,沒有更換位置)
『..』(點點) 符號應用例 :
『~』(波浪) 符號應用例:
『–』(連結) 符號應用例:
- 55 -
cyj@debian:~$ cd - (回到『上一個』使用的目錄)
/home/yenjinc (於是又回到 yenjinc 的家目錄)
cyj@debian:/home/yenjinc$ cd - (又再回到『上一個』使用的目錄)
/home/cyj
cyj@debian:~$ cd - (再一次!)
/home/yenjinc (於是又回到 yenjinc 的家目錄)
這個『cd –』,比較像是『上一頁』的意思!例如各位在瀏覽網頁時,
時常會按下『回上一頁』的按鈕一樣;這裡的『cd –』可以讓您從『當前
目錄』回到『上一個』使用過的目錄。 (建議大家,邊看講義時,可以一邊
實做來個現學現賣哦! )
6-3 資料流重導向
終端顯示器
$ Command (指令)
(Shell 畫面)
- 56 -
指令執行過程的資料傳輸情況:
(圖示來源:鳥哥的私房菜)
資料流重導向總共分成三種類型:Standard input、Standard
output 以及 Standard error。它們在 Shell 底下都有各自對應的符號:
以下是範例說明。
cyj@debian:~$ echo "Test" > test.txt (使用 echo 輸出 “TEST” 轉向到 test.txt )
cyj@debian:~$ cat test.txt (查看一下 test.txt 內容)
Test (剛才 “標準輸出” 的結果已正確寫入)
cyj@debian:~$ echo "Test Test" >> test.txt (使用 >> 符號,將輸出累加到 test.txt)
cyj@debian:~$ cat test.txt (查看一下 test.txt 內容)
Test (← 原始檔案的內容不會被清除)
Test Test ( >> 符號表示將輸出 “累加” 至檔案)
cyj@debian:~$ > test.txt (不執行任何指令;直接將結果輸出)
cyj@debian:~$ cat test.txt (查看一下 test.txt,檔案已被清空)
cyj@debian:~$ cat > test.txt (將 cat 資料 “標準輸出” )
12345 (← cat 會等待使用者敲入資料)
<EOF> (← 敲入的資料直接寫入 test.txt)
(按下 Ctrl+d 中斷 —表示<EOF>字符)
cyj@debian:~$ cat test.txt (查看一下 test.txt 內容)
12345 (← 正確無誤!)
- 57 -
標準輸入『Standard input』應用範 例:
cyj@debian:~$ echo 'Hello! Yenjinc!' > file (使用 > 將 ‘Hello! Yenjinc!’ 寫入 file)
cyj@debian:~$ cat file (檢查 file 內容)
Hello! Yenjinc! (← 正確無誤)
cyj@debian:~$ mail -s "Hi" yenjinc < file (使用 mail 指令寫信給 yenjinc)
(-s 設定 title ) (信件內容以 file 標準輸入)
cyj@debian:~$ su - yenjinc (使用 su – 指令切換身份為 yenjinc)
Password: (← 輸入 yenjinc 的密碼)
&
- 58 -
cyj@debian:~$ cat file.txt (查看一下剛才的錯誤輸入結果)
total 0
-rw-r--r-- 1 cyj cyj 0 Feb 6 17:31 file.txt (← 剛才使用 >> 所以並不記載錯誤輸出)
以下為示範說明。
- 59 -
『;』應用:
『&&』、『 ||』應 用:
『&&』當左邊的命令為 ”真”,才會執行右邊的命令。
cyj@debian:~$ ls -l
total 0
-rw-r--r-- 1 cyj cyj 0 Feb 6 17:48 file1
-rw-r--r-- 1 cyj cyj 0 Feb 6 17:48 file2
cyj@debian:~$ rm * && echo "It's True" (刪除所有檔案,假使成真則顯示 It’s True)
It's True (刪除成功,所以秀出 It’s True)
cyj@debian:~$ ls -l (ls –l 已經找不到任何檔案了)
total 0
『||』當左邊的命令 ”不為真”,才會執行右邊的命令。
- 60 -
6-4 管線應用
在上一章節所談的『資料流重導向』不論輸出或者輸入,對象都必須
是『裝置或檔案』。這一章所談的『管線應用』,概念上與資料流重導向類
似,但是它可以將一個程式的輸出導向到另一個程式的輸入。使用導管符號
( | ) pipeline 可以將兩個以上的命令連結在一起。各位可從下列圖示認識
管線命令的運方式。
管線命令的處理示意圖:
(圖示來源:鳥哥的私房菜)
管線 (pipeline) 可用來連結一連串的命令,當連結的命令超過兩個
以上時,第一個命令的文字串流 (text stream) 會藉由『管線』傳遞到下一
個命令。如上圖所示,一個命令的 stdout 會接由下一個命令當作 stdin 來
接收,直到最後一個導管命令結束時,將把結果秀到螢幕上。以下是基本的
管線應用範例。
『管線 (pipeline)』基本應用 :
- 61 -
6-5 線上資源
相關資源:
『什麼是 Shell』
— http://linux.vbird.org/linux_basic/0320bash.php#bash_what
『指令的下達』
— http://linux.vbird.org/linux_basic/0320bash.php#bash_command
『命令別名與歷史命令』
— http://linux.vbird.org/linux_basic/0320bash.php#alias_history
『資料流重導向』
— http://linux.vbird.org/linux_basic/0320bash.php#redirect
『管線命令』
— http://linux.vbird.org/linux_basic/0320bash.php#pipe
- 62 -
第 7 章 Linux 基本工具
這裡要介紹的是 Linux 的基本工具使用,這些工具大多是 UNIX /
Linux 指令,因此不論您在任何 UNIX-Like 系統中,都能使用這些工具。
現在就帶領各位來熟悉 Linux 文字命令的使用,在第七章會提到的內容
分成以下七個部份:
1. 檔案與目錄操作
2. 打包與壓縮
3. 更改檔案權限
4. 搜尋檔案
5. 文字過濾器
6. 萬用字元
7. 正規表示式
在這裡筆者會介紹相關指令的基本概念以及範例應用,大家不妨一邊按
照講義的內容進行練習,用身體來記住每一個指令的使用哦!
7-1 檔案與目錄操作
在 Linux 純文字模式下,我們需要下達『指令』來完成所有的任務,
使用指令來管理檔案跟目錄是非常有效率的。各位可以想像一下,在圖形化
視窗系統中,假使您想要把系統中,所有的 *.txt 純文字檔全部都刪除,
這大概要花多少時間才能完成呢?
在文字命令模式下,只要打一行指令就能馬上解決,剩下的時間,
不妨呵杯咖啡,休息一下呢!
只要打『一行』指令就能搞定!
cyj@debian:~$ sudo find / -name *.txt -exec rm {} \; (刪除系統所有的 *.txt 檔案)
- 63 -
在這部份我們會談到的指令列整如下:
查詢狀態列
ls 查看目錄內容
pwd 查看目前所在目錄位置
目錄類
cd 切換目錄
mkdir 建立目錄
rmdir 刪除空目錄 (如果目錄裡有資料,要用 rm -R )
檔案類
touch 建立空檔案 (touch 實際的用法是改變檔案建立時間)
rm 刪除檔案 (刪除目錄可打 rm -R)
cp 複製檔案 (複製目錄可打 cp -R)
mv 搬移檔案或更名
ln 連結檔案 (類似建立捷徑的意思)
觀看檔案類
cat 觀看檔案內容
less 觀看檔案內容 (以頁顯示,可以上下捲動)
more 觀看檔案內容 (以頁顯示,不能上下捲動)
head 觀看檔案的開頭起始行 (預設為開頭 10 行)
tail 觀看檔案的結尾倒數行 (預設為倒數 10 行)
查詢手冊類
man 查看指令的用法 (manpage)
info 查看指令的用法 (同 manpage,但具有超連結)
yenjinc @ riemann : ~ $
- 64 -
使用『man』查看一下 『ls』的說明 :
以下筆者將較為重要的部份節錄出來
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
OPTIONS
-a, --all
do not hide entries starting with .
-d, --directory
list directory entries instead of contents, and do not derefer-
ence symbolic links
-i, --inode
print index number of each file
『ls』使用範例 (一):
- 65 -
『ls –l』長格式所顯示的各欄位涵意,筆者由下方說明:
各欄位代表意義:
(1) 檔案類型 ( "d" 代表目錄,"–" 代表檔案)
(2) 權限 (在『』章節會說明)
(3) 硬式連結的數目 (在『』章節會說明)
(4) 擁有者
(5) 群組
(6) 檔案大小 (或儲存目錄資訊所佔用的空間)
(7) 最後變更的日期
(8) 檔名
詳細的意義內容,筆者在後面的章節中,會陸續介紹給各位認識。
『ls』使用範例 (二):
- 66 -
接著下來,我們要一口氣將這些檔案與目錄管理指令看完。建議大家可
以跟著講義練習,也不妨查看各個指令的 manpage,相信會更加熟悉指令
的用法唷!
『檔案與目錄』相關 指令應用:
cyj@debian:/tmp/TEST$ ls MP3/
A.mp3 B.mp3 C.mp3
cyj@debian:/tmp/TEST$ cp MP3/* .
(← 使用 cp 指令,將 MP3/* 的所有檔案複製到當前目錄)
- 67 -
cyj@debian:/tmp/TEST$ ls
A.mp3 B.mp3 C.mp3 MP3
cyj@debian:/tmp/TEST$ rm *
cyj@debian:/tmp/TEST$ cd ..
cyj@debian:/tmp$ rmdir TEST/
以上是基本的檔案與目錄操作範例介紹,接下來,我們要來認識『ln』
連結檔案的指令。在這之前,筆者先簡略的介紹一下『inode』的概念,不
然大家可能會被 ln 的硬連結、軟連結,搞的頭昏腦脹唷!
在系統中,任何的檔案都有一個『獨一無二』的編號,它就是 inode
編號。inode 編號存放著有關這個檔案的相關資訊,這些相關資訊都可以
從 inode table 找到相對應的內容。
- 68 -
inode table 的 162 時,在此會紀錄著有關 File1 的相關資訊,譬如:檔案
擁有人、權限、最後更動日期等。
有了 inode 的概念後,我們接著來看『ln』的使用方式。
『硬式連結』 —
無 “來源檔” 與 “目的檔” 的分別,因為都是同樣的 Inode。
來源檔案
硬碟
$ ln [來源檔] [目的檔]
( 使用同一 inode。)
目的檔案
『軟式連結』 —
有 “來源檔” 與 “目的檔” 的分別,兩者屬於不同的 Inode。
來源檔案
硬碟
$ ln -s [來源檔] [目的檔]
( 建立捷徑,分屬於不同 inode。)
目的檔案
- 69 -
使用『man』查看一下 『ln』的說 明 :
以下筆者將較為重要的部份節錄出來
NAME
ln - make links between files
SYNOPSIS
ln [OPTION]... TARGET [LINK_NAME]
ln [OPTION]... TARGET... DIRECTORY
ln [OPTION]... --target-directory=DIRECTORY TARGET...
OPTIONS
-s, --symbolic
make symbolic links instead of hard links
『ln –s』建立軟式連結:
使用 ln –s 建立軟連結,產生的『捷徑』會以 → 符號指向來源檔案,
而且兩者的 inode 並不相同,表示兩個是個別的檔案,彼此有相依關係。
『ln』建立硬式連 結:
- 70 -
343394 -rw-r--r-- 2 cyj cyj 0 Oct 15 15:40 File1-HardLink
343395 lrwxrwxrwx 1 cyj cyj 10 Oct 15 15:40 File1-SoftLink -> File1
為了區別兩者的差異,筆者在下面舉一個應用範例:
因為『軟式連結』所指向的原始檔已經被刪除了,所以當我們查看
File1-SoftLink 的內容時,它會出現『找不到檔案』的錯誤訊息;相對的
,若您去查看 File1-HardLink 的內容時,則不會有任何的問題。這是因為
『硬式連結』本來就沒有來源檔與目的檔的差別 (兩者屬於同一個 inode )
,不管您刪除哪一個,對它本身並不會有任何的影響唷!
以上是 ln 的基本介紹,各位若有興趣不妨也參考以下資源。
相關資源:
- 71 -
最後,筆者要來介紹『觀看檔案類』以及『查詢使用手冊類』的指令應
用。在 Linux 系統中,各位可以使用下面這些指令來查看檔案的內容。
觀看檔案類
cat 觀看檔案內容
less 觀看檔案內容 (以頁顯示,可以上下捲動)
more 觀看檔案內容 (以頁顯示,不能上下捲動)
head 觀看檔案的開頭起始行 (預設為開頭 10 行)
tail 觀看檔案的結尾倒數行 (預設為倒數 10 行)
『cat、less、more』指令應用 :
這些指令都可以用來查看檔案的內容。cat 會一次秀完檔案的內容;
more 是以頁顯示,但不能上下捲頁。筆者認為最好用的還是 less,因為
less 可以讓您自由的上下捲頁唷!
『head』指 令應用:
head 在不加任何選項下,預設為顯示檔案的『開頭』10行。
cyj@debian:~$ head /etc/inittab
1. # /etc/inittab: init(8) configuration.
2. # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $
3.
4. # The default runlevel.
5. id:2:initdefault:
6.
7. # Boot-time system configuration/initialization script.
8. # This is run first except when booting in emergency (-b) mode.
9. si::sysinit:/etc/init.d/rcS
10.
- 72 -
『tail』指令應用:
tail 在不加任何選項下,預設為顯示檔案的『倒數』10行。
cyj@debian:~$ tail /etc/inittab
1.
2. # Example how to put a getty on a serial line (for a terminal)
3. #
4. #T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
5. #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
6.
7. # Example how to put a getty on a modem line.
8. #
9. #T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3
10.
這個範例應用到『>』redirection、『|』Pipeline 等觀念,
如果各位還不太熟悉,可以回到『』章節補充一些背景知識唷!
- 73 -
要查看指令的使用說明 (manpage) 有兩種方式:
相關資源:
『Linux 基本工具介紹』
— http://kalug.linux.org.tw/~lloyd/LLoyd_Hand_Book/book/linux-base-file-utils.html
『鳥哥的私房菜—Linux 檔案與目錄管理』
— http://linux.vbird.org/linux_basic/0220filemanager.php
『鳥哥的私房菜—Linux系統上的線上求助』
— http://linux.vbird.org/linux_basic/0160startlinux.php#manual
- 74 -
7-2 打包與壓縮
打包的概念其實就是『集結檔案』的意思,好比今天各位去超商買了一
大堆的東西,如果我們不買袋子的話,那就需要很多人幫忙拿,可是假使我
們用一個大袋子把它們都裝起來後,那就會變得很好拿了。
在檔案處理上,假如您要傳一百個檔案給對方,我們可以把這一百個檔
案『打包』起來後,直接傳一個檔案就行了。假使這個打包檔案太大了,這
時候就需要用到『檔案壓縮』的工具囉!
打包工具
tar 將檔案集結 (打包起來)
壓縮工具
gzip 把檔案壓縮
gunzip 把 gzip 檔案解壓縮 (同 gzip -d)
bzip2 把檔案壓縮 (較佳的壓縮比)
bunzip2 把 bzip2 檔案解壓縮 (同 bzip2 -d)
打包與壓縮檔案之副 檔名
tar *.tar
gzip *.tar.gz 或 *.tgz
bzip2 *.bz2
- 75 -
使用『man』查看一下 『tar』的 說 明:
以下筆者將較為重要的部份節錄出來
NAME
tar - The GNU version of the tar archiving utility
SYNOPSIS
tar [ - ] A --catenate --concatenate | c --create | d --diff --compare
| --delete | r --append | t --list | u --update | x --extract --get
[ options ]
EXAMPLES
tar -xvvf foo.tar
extract foo.tar
FUNCTION LETTERS
One of the following options must be used:
-c, --create
create a new archive
-t, --list
list the contents of an archive
- 76 -
OTHER OPTIONS
-j, --bzip2
filter archive through bzip2, use to decompress .bz2 files.
-v, --verbose
verbosely list files processed
『tar』常用的基 本選項:
『打包檔案』:
cyj@debian:~$ ls -l (← 先查看目錄下有那些檔案)
total 20
drwxr-xr-x 2 cyj cyj 4096 Aug 7 13:49 File
drwxr-xr-x 9 cyj cyj 4096 Aug 17 15:57 Project
drwxr-xr-x 2 cyj cyj 4096 Aug 13 09:40 bin
drwxr-xr-x 2 cyj cyj 4096 Aug 13 11:33 conf
drwxr-xr-x 2 cyj cyj 4096 Aug 12 09:28 public_html
- 77 -
cyj@debian:~$ tar -cvf File1.tar bin conf public_html
(← 常用的打包選項為『-cvf』)
(← 上述的例子表示,將 bin、conf、public_html 三個目錄打包成 File1.tar )
bin/
bin/tmp.sh
conf/
conf/httpd.conf
conf/httpd-ssl.conf
conf/vsftpd.conf
conf/vsftpd.conf.ori
conf/vsftpd.pem
conf/vsftpd.user_list
public_html/
public_html/index.php
(← 因為有加上『-v』,所以會顯示打包過程)
『解包檔案』:
- 78 -
『顯示包裝檔案內容 』:
『gzip』壓縮 與解壓縮:
gzip 壓縮
cyj@debian:~$ gzip File1.tar (← 在 gzip 後面直接加上檔名就可以壓縮了)
cyj@debian:~$ ls -l File1.tar.gz (← 壓縮後副檔名變成了 .tar.gz )
-rw-r--r-- 1 cyj cyj 32055 Oct 15 22:56 File1.tar.gz
gzip 解壓縮
cyj@debian:~$ gzip -d File1.tar.gz
(← 加上『-d』就可以解壓縮了)
(←『gzip -d』等同於『gunzip』)
(← 因此也可以使用『gunzip File1.tar.gz』來解壓縮)
- 79 -
『bzip2』壓 縮與解壓縮:
bzip2 壓縮
cyj@debian:~$ bzip2 File1.tar (← 在 bzip2 後面直接加上檔名就可以壓縮了)
cyj@debian:~$ ls -l File1.tar.bz2 (← 壓縮後副檔名變成了 .tar.bz2 )
-rw-r--r-- 1 cyj cyj 22664 Oct 15 22:56 File1.tar.bz2
(← 因為演算法的不同,採用 bzip2 壓縮後的檔案會比 gzip 壓的要小)
bzip2 解壓縮
cyj@debian:~$ bzip2 -d File1.tar.bz2
(← 加上『-d』就可以解壓縮了)
(←『bzip2 -d』等同於『bunzip2』)
(← 因此也可以使用『bunzip2 File1.tar.bz2』來解壓縮)
cyj@debian:~$ ls (← 查看目錄現有那些檔案)
File Project bin conf public_html File1.tar
- 80 -
cyj@debian:~$ mkdir TMP1 TMP2 (← 建立兩個空目錄)
cyj@debian:~$ tar -zxvf File1.tgz -C TMP1 (← 將 File1.tgz 解壓縮至 TMP1)
public_html/
public_html/index.php
(← 加上『-z』可使 tar 針對 .gz/.tgz 的包裝檔案,以 gzip 解壓縮)
cyj@debian:~$ ls TMP*
TMP1:
public_html
TMP2:
public_html
(← 驗證一下,剛才的解壓縮例子,順利成功!)
各位若有興趣,不妨參考各指令的 manpage,然後實地的操作一番,
相信很快就能駕輕就熟了唷!本章節是筆者對於『打包與壓縮』指令的應用
介紹。假使各位想了解更多資訊,建議大家不妨參考以下資源。
相關資源:
『鳥哥的私房菜—檔案的壓縮與打包』
— http://linux.vbird.org/linux_basic/0240tarcompress.php
- 81 -
7-3 更改檔案權限
在 Linux 系統下,每一個檔案都有著相關的屬性,這些屬性背後所代
表的意義也是一門重要的課題。在『7-1 檔案與目錄操作』我們提到了 ls –l
的長格式屬性,其中第一欄位即是權限的意思,筆者在下面為各位說明權限
欄位中各符號的代表的意義。
cyj@debian:~$ ls -l
total 20
drwxr-xr-x 2 cyj cyj 4096 Aug 7 13:49 File
drwxr-xr-x 9 cyj cyj 4096 Aug 17 15:57 Project
drwxr-xr-x 2 cyj cyj 4096 Aug 13 09:40 bin
drwxr-xr-x 2 cyj cyj 4096 Aug 13 11:33 conf
drwxr-xr-x 2 cyj cyj 4096 Aug 12 09:28 public_html
《檔案的權限》
『權 限符號』的代 表意義:
Other 權限
(其他人的權限)
Group 權限
檔案類型 User 權限
(擁有群組的權限)
代表符號 (擁有人的權限)
任何檔案都有其相關的『權限屬性』,在此分成三種:
- 82 -
筆者將所有相關的符號意義整理如下:
檔案類型代表符號
– Regular Files (表示一般的檔案)
d Directory (目錄)
l Link Files (連結檔案)
對於檔案而言:
若它具有『r』的權限,表示各位可使用任何的工具來『讀取』檔案的
內容。如果它擁有『w』的權限,表示各位可以任意的『寫入與變更』檔案
;如果它具有『x』的權限,表示可以把檔案『當作程式』來執行。
對於目錄而言:
若它具有『r』的權限,表示各位可以使用類似 ls 等指令來『列示』
目錄的內容。如果它擁有『w』的權限,表示各位可以對於該目錄中的檔案
做『任何的處置』(建立、刪除或變更等)。若它具有『x』的權限,表示這個
目錄允許使用者切換 (cd 進入) 到目錄中;換句話說,假使目錄不賦予『x』
權限的話,那麼大家將無法進入 (cd) 到目錄之中唷!
我們來看一些示範的例子:
cyj@debian:~$ ls -l
total 20
drwxr-xr-x 9 cyj cyj 4096 Aug 17 15:57 Project
-rw-r--r-- 1 cyj cyj 0 Oct 16 12:47 File1
(← 這裡可以看到一個 Project 目錄,一個 File 檔案)
(← 檔案的擁有人與群組都是 cyj )
- 83 -
Project 目錄的屬性
User : rwx 可讀,可寫入,可執行。
Group : r-x 可讀,不可寫入,可執行。
Other : r-x 可讀,不可寫入,可執行。
(← cyj 使用者 擁有最大的權限,可以做任何事情 )
(← cyj 群組 可以『讀取、進入』,但是無法『寫入』任何東西 )
(← 其他人 同樣只有『讀取、進入』的權限而已,無法『寫入』)
File1 檔案的屬性
User : rw- 可讀,可寫入,不可執行。
Group : r-- 可讀,不可寫入,不可執行。
Other : r-- 可讀, 不可寫入,不可執行。
(← cyj 使用者 可以『讀取、寫入 / 修改』檔案,但是不能『執行』它 )
(← cyj 群組 可以『讀取』檔案,但是不能『寫入』與『執行』它 )
(← 其他人 同樣只能夠『讀取』而已 )
更改檔案權限
chmod 更改檔案的存取權限
chown 更改檔案的擁有者或擁有群組
chgrp 更改檔案的擁有群組
『chmod』基 礎用法:
『遞迴式、強制』的將目錄 權限設定有兩種方式,分別為『符號
底下所有的檔案更改為新的 表示法』與『數字表示法』,筆者在
權限。 下面為各位做說明與示範。
- 84 -
符號表示法:
(User) u + r 應用範例:
數字表示法:
r 4 應用範例:
$ chmod 755 File.txt (755 表示 rwxr-xr-x)
w 2 $ chmod 644 File.txt (644 表示 rw-r--r--)
$ chmod 730 File.txt (730 表示 rwx-wx---)
x 1 $ chmod 102 File.txt (102 表示 --x----w-)
以 ls -l 查看檔案 的原始權限
cyj@debian:~$ ls -l
total 0
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:12 File01
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:12 File02
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:12 File03
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:12 File04
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:12 File05
- 85 -
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:12 File06
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:12 File07
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:12 File08
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:12 File09
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:12 File10
以『數字表示法』更改 檔案權限
cyj@debian:~$ chmod 742 File01
cyj@debian:~$ chmod 135 File02
cyj@debian:~$ chmod 246 File03
cyj@debian:~$ chmod 341 File04
cyj@debian:~$ chmod 271 File05
以『符號表示法』更改 檔案權限
cyj@debian:~$ chmod u=rw,g=x,o=wx File06
cyj@debian:~$ chmod g-wx,o+x File07
cyj@debian:~$ chmod a-wx File08
cyj@debian:~$ chmod u+rx,o-x File-9
cyj@debian:~$ chmod a-rwx File10
更改完成後的檔案權限
cyj@debian:~$ ls -l
total 0
-rwxr---w- 1 cyj cyj 0 Oct 16 20:12 File01
---x-wxr-x 1 cyj cyj 0 Oct 16 20:12 File02
--w-r--rw- 1 cyj cyj 0 Oct 16 20:12 File03
--wxr----x 1 cyj cyj 0 Oct 16 20:12 File04
--w-rwx--x 1 cyj cyj 0 Oct 16 20:12 File05
-rw---x-wx 1 cyj cyj 0 Oct 16 20:12 File06
-rw-r--r-x 1 cyj cyj 0 Oct 16 20:12 File07
-r--r--r-- 1 cyj cyj 0 Oct 16 20:12 File08
-rwxr--r-- 1 cyj cyj 0 Oct 16 20:12 File09
---------- 1 cyj cyj 0 Oct 16 20:12 File10
- 86 -
chown 更改檔案的擁有者或擁有群組
chgrp 更改檔案的擁有群組
cyj@riemann:~$ ls -l
total 20
drwxr-xr-x 2 cyj cyj 4096 Aug 7 13:49 File
drwxr-xr-x 9 cyj cyj 4096 Aug 17 15:57 Project
drwxr-xr-x 2 cyj cyj 4096 Aug 13 09:40 bin
drwxr-xr-x 2 cyj cyj 4096 Aug 13 11:33 conf
drwxr-xr-x 2 cyj cyj 4096 Aug 12 09:28 public_html
《檔案擁有人》 《檔案擁有群組》
cyj@riemann:~$ ls -l /home/
total 220
drwxr-xr-x 5 apua apua 4096 Oct 16 11:19 apua
drwxr-xr-x 3 bill bill 4096 Sep 18 09:55 bill
drwxr-xr-x 4 bluelight bluelight 4096 Sep 18 10:11 bluelight
drwxr-xr-x 4 board board 4096 Aug 24 12:01 board
drwxr-xr-x 3 chang chang 4096 Aug 11 13:16 chang
drwxr-xr-x 3 chenmvm0 chenmvm0 4096 Aug 11 13:16 chenmvm0
drwxr-xr-x 9 cyj cyj 4096 Oct 16 20:12 cyj
drwxr-xr-x 7 czhsu czhsu 4096 Oct 9 22:57 czhsu
《檔案擁有人》《檔案擁有群組》
在系統中,每一個檔案都會有擁有者與擁有群組,我們可以從家目錄
(/home) 中清楚的看出來:『每一位使用者都是他們家目錄的擁有者以及
擁有群組』。 chown、chgrp 這兩個指令的功用,即是用來更改檔案擁有
人以及擁有群組。
- 87 -
這兩個指令的使用方式,筆者由下方的範例來為各位介紹。
查看一下『chown、chgrp』 的 manpage:
NAME
chown - change file owner and group
SYNOPSIS
chown [OPTION]... OWNER[:[GROUP]] FILE...
chown [OPTION]... :GROUP FILE...
chown [OPTION]... --reference=RFILE FILE...
OPTIONS
-R, --recursive
operate on files and directories recursively
NAME
chgrp - change group ownership
SYNOPSIS
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
OPTIONS
-R, --recursive
operate on files and directories recursively
- 88 -
『chown』基礎用 法:
『chgrp』基 礎用法:
cyj@riemann:~$ ls -l
total 0
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:46 File1
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:46 File2
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:46 File3
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:47 File4
-rw-r--r-- 1 cyj cyj 0 Oct 16 20:47 File5 (← 所有檔案的擁有者與群組都屬於 cyj )
- 89 -
riemann:~# chown cyj:yenlung File1
(← 把 File1 的擁有人改為 cyj,把擁有群組改為 yenlung )
riemann:~# ls -l
total 0
-rw-r--r-- 1 cyj yenlung 0 Oct 16 20:46 File1
-rw-r--r-- 1 yenlung cyj 0 Oct 16 20:46 File2
-rw-r--r-- 1 cyj kkd 0 Oct 16 20:46 File3
-rw-r--r-- 1 cyj apua 0 Oct 16 20:47 File4
-rw-r--r-- 1 yenlung apua 0 Oct 16 20:47 File5
(← 驗證一下,剛才的更改動作全部都成功囉!)
riemann:~# ls -l
total 0
-rw-r--r-- 1 cyj jimyeh 0 Oct 16 20:46 File1
-rw-r--r-- 1 yenlung jimyeh 0 Oct 16 20:46 File2
-rw-r--r-- 1 cyj jimyeh 0 Oct 16 20:46 File3
-rw-r--r-- 1 cyj jimyeh 0 Oct 16 20:47 File4
-rw-r--r-- 1 yenlung jimyeh 0 Oct 16 20:47 File5
(← 驗證一下,剛才的更改動作全部成功囉!)
- 90 -
相關資源:
『鳥哥的私房菜—Linux的檔案權限概念』
— http://linux.vbird.org/linux_basic/0210filepermission.php#filepermission
『鳥哥的私房菜—檔案與目錄的預設權限與隱藏權限』
— http://linux.vbird.org/linux_basic/0220filemanager.php#fileperm
- 91 -
7-4 搜尋檔案
尋找系統檔案
find 搜尋系統中的檔案
locate 搜尋系統中的檔案 (透過已整理的資料庫)
查詢指令相關檔案
whereis 搜尋指令名稱的相關檔案
which 搜尋指令名稱所存在的位置 (根據 PATH)
type 查詢指令名稱所存在的位置以及種類
『find』與『locate』都是用來搜尋系統檔案的工具,不過它們的搜尋
方式不太一樣。find 是直接從 File System 來搜尋檔案,因此搜尋速度會比
較慢一些,也比較耗費系統資源;locate 的搜尋方式,是透過一個已經對
File System 索引 (index) 過後的資料庫來尋找檔案,因此 locate 的速度
會較快些,也比較不會耗費系統資源。不過在使用 locate 之前,要先使用
『updatedb』指令,來建立『檔案索引資料庫』。以下是 find 與 locate
搜尋檔案的示意圖,讓大家了解其中的差異。
『find、locate』搜 尋檔案示意圖 :
Linux
find 直接到 File System 搜尋
File
System
locate
updatedb
由 updatedb 指令建立索引,
從索引資料庫來搜尋檔案。
- 92 -
這兩個指令的使用方式,筆者由下方的範例來為各位介紹。
查看一下『find』的 manpage:
NAME
find - search for files in a directory hierarchy
SYNOPSIS
find [path...] [expression]
EXPRESSIONS
The expression is made up of options (which affect overall operation
rather than the processing of a specific file, and always return true),
tests (which return a true or false value), and actions (which have
side effects and return a true or false value), all separated by opera-
tors.
-amin n
File was last accessed n minutes ago.
-atime n
File was last accessed n*24 hours ago.
-cmin n
File's status was last changed n minutes ago.
-ctime n
File's status was last changed n*24 hours ago.
-mmin n
File's data was last modified n minutes ago.
-mtime n
File's data was last modified n*24 hours ago.
-name pattern
Base of file name (the path with the leading directories
removed) matches shell pattern pattern.
- 93 -
-exec command ;
Execute command; true if 0 status is returned. All following
arguments to find are taken to be arguments to the command until
an argument consisting of `;' is encountered. The string `{}'
is replaced by the current file name being processed everywhere
it occurs in the arguments to the command, not just in arguments
where it is alone, as in some versions of find. Both of these
constructions might need to be escaped (with a `\') or quoted to
protect them from expansion by the shell. The command is exe-
cuted in the starting directory.
備註:
find 的 manpage 相當重要,若各位有興趣不妨親自查看,並練習操作。
以上這些介紹內容僅擷取下列會舉例示範的部份而已。
『find』基礎用法 :
find 指令的使用方式
$ find [目錄] [選項] 要搜尋的字串 [要執行的動作]
$ find /home -name "yenjinc.info"
$ find /home -name "yenjinc.info" -exec rm {} \;
使用 find 搜尋檔案:
一個典型的搜尋檔案的範例
cyj@debian:~$ ls -l
total 24
drwxr-xr-x 2 cyj cyj 4096 Aug 7 13:49 File
drwxr-xr-x 9 cyj cyj 4096 Aug 17 15:57 Project
drwxr-xr-x 2 cyj cyj 4096 Aug 13 09:40 bin
drwxr-xr-x 2 cyj cyj 4096 Aug 13 11:33 conf
- 94 -
搜尋檔案並執行相關的動作 ( –exec ):
驗證一下:
cyj@debian:~$ find . -name "Test.txt"
(← 由於 Test.txt 已經被刪除,所以搜尋不到囉!)
搜尋『幾天前』變更的檔案 ( –atime、–ctime、–mtime ):
節錄 –atime、–ctime、–mtime 的說明
-atime n
File was last accessed n*24 hours ago.
(Access: 表示 "存取、Read" )
-ctime n
File's status was last changed n*24 hours ago.
(Change: 改變過狀態,例如: "改名、修改權限" 等)
-mtime n
File's data was last modified n*24 hours ago.
(Modify: 表示 "修改過內容" )
以下為實際應用示範:
- 95 -
cyj@debian:/$ cd / (← 切換到根目錄下)
cyj@debian:/$ date (← 使用 date 查看目前的日期與時間)
Tue Oct 17 21:38:47 CST 2006 (← 2006年10月17日)
搜尋『幾分鐘前』變更的檔案 ( –amin、–cmin、–mmin ):
節錄 –amin、–cmin、–mmin 的說明
- 96 -
Reformatting find(1), please wait...
-amin n
File was last accessed n minutes ago.
(Access: 表示 "存取"、Read" )
-cmin n
File's status was last changed n minutes ago.
(Change: 改變過狀態,例如: "改名、修改權限" 等)
-mmin n
File's data was last modified n minutes ago.
(Modify: 表示 "修改過內容" )
『locate』基礎用法:
locate 指令的使用方式
$ locate [要搜尋的檔案名稱]
$ locate yenjinc.info.txt
使用 locate 搜尋檔案:
- 97 -
locate 搜尋檔案範例:
以下是筆者針對上述的狀況所做的示範:
cyj@debian:~$ ls
Desktop Documents Library Movies Music Pictures Public Sites
- 98 -
以上是 find、locate 的基礎應用介紹。接下來要介紹各位『查詢指令
相關檔案』的搜尋工具,例如 whereis 、which、type 等。下面筆者以常用
的範例來為各位介紹這些 UNIX 工具。
查詢指令相關檔案
whereis 搜尋指令名稱的相關檔案
which 搜尋指令名稱所存在的位置 (根據 PATH)
type 查詢指令名稱所存在的位置以及種類
『whereis』基礎 用法:
whereis 指令的使用方式
$ whereis [選項] 查詢的檔案名稱
$ whereis -b man
$ whereis man
whereis 的相關選項
-b Search only for binaries.
-m Search only for manual sections.
-s Search only for sources.
『whereis』查詢 指令名稱的相 關檔 案:
- 99 -
『which』基礎用法:
which 指令的使用方式
$ which [查詢的指令名稱]
$ which ls
$ which mkdir
cyj@debian:~$ which ls
/bin/ls
(← 根據 PATH 找到 ls 所在位置為 /bin/ls)
『type』基礎用法:
type 指令的使用方式
$ type [查詢的指令名稱]
$ type mkdir
『type』查詢指令名稱所存在 的位 置以及種類 :
- 100 -
cyj@debian:~$ type mkdir
mkdir is /bin/mkdir
(← 查詢的結果表示,mkdir 在 /bin/mkdir)
cyj@debian:~$ type cd
cd is a shell builtin
(← 查詢的結果表示,cd 是 shell 內建的指令)
cyj@debian:~$ type ls
ls is aliased to `ls --color=auto'
(← 查詢的結果表示,ls 是一個『Alias』其內容是『ls --color=auto』)
相關資源:
『鳥哥的私房菜 — 檔案搜尋』
— http://linux.vbird.org/linux_basic/0220filemanager.php#file_find
- 101 -
7-5 文字過濾器
在 Linux 上有許多命令可以用來『擷取檔案字串內容』。這些命令必
須透過 PipeLine (管線) 來處理,所以有人稱之為『管線命令』,另外的一
種稱呼也叫做『文字過濾器 (Text Stream Filter)』。這類命令會將檔案文
字的內容,依照使用者的需求『修整』後,將結果送往標準輸出或存入檔案
中,甚至還能透過 pipeline 再把結果交由下一個文字過濾器來處理。常見的
文字過濾器,例如有下列這些 (僅列出一些,仍有許多尚未列出):
這時候就需要使用『grep』這個工具來搜尋了!我們先來看一下 grep
的 manpage。
- 102 -
查看一下『grep』的 manpage:
NAME
grep, egrep, fgrep, rgrep - print lines matching a pattern
SYNOPSIS
grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]
DESCRIPTION
Grep searches the named input FILEs (or standard input if no files are
named, or the file name - is given) for lines containing a match to the
given PATTERN. By default, grep prints the matching lines.
In addition, three variant programs egrep, fgrep and rgrep are avail-
able. Egrep is the same as grep -E. Fgrep is the same as grep -F.
Rgrep is the same as grep -r.
OPTIONS
-H, --with-filename
Print the filename for each match.
-n, --line-number
Prefix each line of output with the line number within its input
file.
-v, --invert-match
Invert the sense of matching, to select non-matching lines.
『grep』基本 用法:
grep 指令的使用方式
$ grep [選項] 相關字串 [檔案]
$ grep "yenjinc" /
$ grep -n "Denny" /etc/passwd
- 103 -
『grep』基本 應用範例:
『grep』日常 應用範例介紹 :
- 104 -
PowerBook-G4-12:~ Denny$ history | grep ssh | grep cyj
78 ssh cyj@140.119.175.XX
228 ssh cyj@140.119.175.XX
347 ssh cyj@140.119.175.XX
349 ssh cyj@140.119.175.XX
(←『grep』以及『pipeline』複合應用)
(← 將 history 中,包含 ssh 以及 cyj 的結果顯示出來)
- 105 -
接著我們來看 head 與 tail 的應用:
『head』指令應 用:
head 在不加任何選項下,預設為顯示檔案的『開頭』10行。
cyj@debian:~$ head /etc/inittab
1. # /etc/inittab: init(8) configuration.
2. # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $
3.
4. # The default runlevel.
5. id:2:initdefault:
6.
7. # Boot-time system configuration/initialization script.
8. # This is run first except when booting in emergency (-b) mode.
9. si::sysinit:/etc/init.d/rcS
10.
『tail』指令應用:
tail 在不加任何選項下,預設為顯示檔案的『倒數』10行。
cyj@debian:~$ tail /etc/inittab
1.
2. # Example how to put a getty on a serial line (for a terminal)
3. #
4. #T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
5. #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
6.
7. # Example how to put a getty on a modem line.
8. #
9. #T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3
10.
- 106 -
cyj@debian:~$ nl /etc/inittab > TMP
(← 將 /etc/inittab 使用 nl 指令分行後,將結果儲存為 TMP 檔案)
相關資源:
『鳥哥的私房菜 — 管線命令』
— http://linux.vbird.org/linux_basic/0320bash.php#pipe
- 107 -
7-6 萬用字元
以下是基礎的『萬用字元』字符代表意義介紹:
符號 說明
? 萬用字元,代表此處一定要有『一個字元』
* 萬用字元,代表此處可以有『0或多個字元』
File? FileA
FileB
File?? FileAa
FileBb
File* File
FileA
FileAB
FileABC
FileDenny
FileYenjin
?ile* File
file
Aile
aileA
BileABC
bile1
Cile123
接著我們來看些操作範例:
- 108 -
『萬用字元』基礎應用:
cyj@debian:~$ ls (← 目錄下有以下這些檔案)
1.mp3 12.mp3 14.mp3 16.mp3 3.mp3 5.mp3 7.mp3 9.mp3 index.txt
11.mp3 13.mp3 15.mp3 2.mp3 4.mp3 6.mp3 8.mp3 Readme.txt
install.txt
cyj@debian:~$ ls ????.txt
ls: ????.txt: No such file or directory
(← 將檔名共有『四個位元』的 txt 檔案列示出來)
(← 目錄下沒有找到符合的結果,所以出現『找不到』的訊息)
以上是簡單的萬用字元範例介紹,大家不妨也參考下面的相關資源。
接著下一章節要帶各位來認識『正規表示式』囉!
- 109 -
相關資源:
『鳥哥的私房菜—萬用字元與特殊符號』
— http://linux.vbird.org/linux_basic/0320bash.php#settings_wildcard
7-7 正規表示式
初學者對於『正規表示式』與『萬用字元』常常會搞混,因此正確的
觀念釐清是很重要的喔!『正規表示式』在 UNIX 系統中,扮演著很重要的
角色,詳細的介紹與說明可以深入到一本書的容量了。不過在這一章節裡,
筆者只先介紹基礎的入門範例,至於詳細的內容就留給各位研究與摸索囉!
以下是『正規表示式』的符號意義與常用範例介紹:
符號 說明 舉例
^ 行的開頭 ^The: 搜尋開頭為The的內容。
$ 行的結尾 End$: 搜尋結尾為End的內容。
[abc] 符合集合中的字 [abc]: 檔案中只要有 "a"、"b"、"c"
任一字即符合搜尋。
[a-z]、[A-Z] 符合集合範圍中的字 [a-z]: 符合 "a" 到 "z" 所有字元。
[A-Z]: 符合 "A" 到 "Z" 所有字元。
[0-9]: 符合 "0" 到 "9" 所有字元。
. 任何單一字元 file.: 符合 file1、file2,
但不符合 file10。
+ 一個或多個字元 [0-9]+:符合所有數字字元,表示檔
案中只要有數字即符合搜尋。
* 0個或多個表示式 file.*: 符合 file、file2、file10。
? 0個或一個表示式 file1?2:符合 file2、file12。
| 符合前面或者後面 file|File:符合 file也符合 File。
- 110 -
綜合使用 (以身份證字號為例)
[A-Z][12][0-9]{8} [P] [1] [12345678]
(男性的身份證字號)
[R] [2] [12345678]
(女性的身份證字號)
在這一章節裡,筆者只先介紹基礎的入門範例,至於詳細的內容就留給
各位研究與摸索囉!另外值得強調的是,大家不妨跟著下列參考資源的內容
來練習與操作,相信對於『正規表示式』能夠更加熟練唷!
相關資源:
『鳥哥的私房菜—正規表示法』
— http://linux.vbird.org/linux_basic/0330regularex.php
『正規表示式的入門與應用(一)』
— http://www.rtfiber.com.tw/~changyj/regex.1/index.html
『正規表示式的入門與應用(二)』
— http://www.rtfiber.com.tw/~changyj/regex.2/index.html
『正規表示式的入門與應用(三)』
— http://www.rtfiber.com.tw/~changyj/regex.3/index.html
- 111 -
第 8 章 文字編輯器
在 Linux / UNIX 系統中,大部份的檔案都是 ASCII 純文字檔,
於是若要更改系統設定或任何檔案時,就必須要有一套『文字編輯器』
來處理這些事情。在這一章,筆者要為各位介紹 vi 編輯器的使用。
8-1 Vi 模式介紹
基本上 vi 共分為三種模式,分別是:
(1). 一般模式
(2). 編輯模式
(3). 指令列命 令模式
各位可從下圖了解各模式的作用。
Vi 模式介紹圖:
[:] [ESC] [a]、[i] Vi 編輯器畫面
啟動後的畫面
指令列 一般 編輯
模式 模式 模式 Text (內容 )
存檔 遊走 編寫內容
離開 Copy 複製
Paste 貼上 狀態列
(其他額外功能
如:搜尋、取代) 幾行, 幾列 百分比%
- 112 -
以上的三種模式,為了讓大家可以更淺顯易懂,簡單的說『編輯模 式
』是用來『key in (打字輸入資料)』的模式;『一 般模式』是用來『複製、
剪下、貼上..』以及『移動游標、遊走』的模式;『指令列 模式』是用來
『存檔、另存新檔..』等相關的模式。
當各位進入到 Vi 編輯畫面後,在畫面的最下方有一個『狀態列』
,此狀態列的右方,會即時顯示游標目前所在位置在『幾 行, 幾列』以及
游標所在位置的『百分比 %』狀態。
8-2 Vi 指令操作
了解 vi 模式概念後,接著筆者將 vi 常用的指令整理成下列表格給
各位參考。建議大家不妨一邊看講義一邊跟著實際練習看看,由於 vi 本身
是編輯器的關係,於是筆者比較難以用『應用示範』來為各位解說,所以
『實機操作』就留給各位親自操刀囉!
以下是常用的 Vi 指令整理列表:
游標移動按鍵:
h j k l
《左》 《下》 《上》 《右》
編輯 (插入) 模式
[i] 從『目前位置』開始編輯
[I] 從『行首』開始編輯
[a] 從『下個字元』開始編輯
[A] 從『行尾』開始編輯
- 113 -
[o] 產生『下一行』空白行
[O] 在『游標位置』建立空白行
[ESC] 切換回『一般模式』
一般模式
[0] 到『行首』
[ 1G ] 到『檔頭』
[$] 到『行尾』
[G] 到『檔尾』
[w] 跳到『下一個字』
[x] 刪除『目前游標字元』
[X] 刪除『游標前一個字元』
[ NUM ] + [十] 往下『NUM』行
[ NUM ] + [—] 往上『NUM』行
[:] + [ NUM ] 跳到『NUM』行
[v] 選取範圍
[ Ctrl ] + [ v ] 區塊選取
[y] 複製
[y][y] 複製一整行
[d] 刪除
[d][d] 刪除一整行
[d][0] 刪除至『行首』
[d][$] 刪除至『行尾』
[ d ] [ 1G ] 刪除至『檔頭』
[d][G] 刪除至『檔尾』
[ NUM ] + [..] + [..] 例如: [3] + [d] + [d] 刪除三行
[..] + [ NUM ] + [..] 例如: [d] + [3] + [w] 刪除三個字
[x] 剪下 / 刪除
[p] 貼上
[u] 將字母『換成小寫』
[U] 將字母『換成大寫』
[~] 將字母『大小寫互換』
- 114 -
[ r] 取代『一個』字元
[ R] 『連續』取代
[ u] 『復原』上一個動作
[ Ctrl ] + [ r ] 『取消復原』 (重作的意思)
分頁編輯
[ Ctrl ] + [ w ] + [n] 建立新分頁
[ Ctrl ] + [ w ] + [↑] 切換到『上方分頁』
[ Ctrl ] + [ w ] + [↓] 切換到『下方分頁』
[ Ctrl ] + [ w ] + [q] 關閉所在分頁
指令列模式
[:][e] 編輯新檔
[:][w] 儲存檔案
[:][w][q] 儲存檔案後離開 (也可以使用『:x』或『ZZ』)
[ : ] [ w ] [ q ] [!] 『強制』儲存檔案後離開 (!表示『強制』之意)
[:][q] 不儲存離開
[ : ] [ q ] [!] 『強制』不儲存離開
搜尋與取代
[/] 向下搜尋 ( N 切換至上一個,n 切換至下一個)
[?] 向上搜尋 ( N 切換至上一個,n 切換至下一個)
: s/[old]/[new]/g 將所有的 [old] 替換成 [new]
:1,30s/[old]/[new]/g 將『第一行』至『第三十行』的 [old] 替換成 [new]
:1,$s/[old]/[new]/g 將『整個檔案』的 [old] 替換成 [new]
:1,$s/^/ /g 將『檔案的開頭』都往後移四個空白 (用於排版用)
[ Ctrl ] + A 自動將數字累加
以上都是基礎常用的編輯方法,基本上熟悉這些用法後,應該就沒有什
麼大問題囉! vi 編輯器的使用也是一門重要的課題,以下筆者列整一些網路
教學文章給各位參考。
- 115 -
相關資源:
『鳥哥的私房菜—Vi文書處理器』
— http://linux.vbird.org/linux_basic/0310vi.php
『Vi 使令說明完整版』
— http://www2.nsysu.edu.tw/csmlab/unix/vi_command.htm
『Vi 小抄 手工版』
— http://www.artweb-design.de/articles/2006/04/15/learning-by-cheating-finally-got-used-to-use-vim
『Vi 手工小抄完整版』
— http://www.gentoo.org/doc/zh_tw/vi-guide.xml
『Vi 小抄之彩色鍵盤版』
— http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
- 116 -
Linux 基礎管理
第 9 章 帳號管理
9-1 使用者與群組概念
使用者與群組概念
- 117 -
9-2 相關設定檔
相關設定檔
- 118 -
9-3 基本指令操作
基本指令操作
- 119 -
第 10 章 套件管理
10-1 背景知識
背景知識
- 120 -
10-2 套件管理工具
套件管理工具
- 121 -
10-3 原始碼安裝軟體
原始碼安裝軟體
- 122 -
10-4 手動安裝 (一)
手動安裝
- 123 -
10-5 手動安裝 (二)
手動安裝
- 124 -
第 11 章 行程管理
11-1 背景與前景工作
背景與前景工作
- 125 -
11-2 基本指令操作
基本指令操作
- 126 -
第 12 章 工作排程
12-1 背景知識
背景知識
- 127 -
12-2 相關設定檔
相關設定檔
- 128 -
12-3 基本指令操作
基本指令操作
- 129 -
Linux 進階管理
第 13 章 檔案系統管理
13-1 磁碟分割與格式化
磁碟分割與格式化
13-2 檔案系統掛載
檔案系統掛載
13-3 相關設定檔
相關設定檔
13-4 相關工具使用
相關工具使用
13-5 磁碟配額
磁碟配額
- 130 -
第 14 章 系統開機流程
14-1 開機管理程式
使用者與群組概念
14-2 系統運作層級
系統運作層級
14-3 相關設定檔
相關設定檔
14-4 相關工具使用
相關工具使用
- 131 -
第 15 章 系統備份與救援
15-1 備份策略
備份策略
15-2 相關工具使用
相關工具使用
救援模式
救援模式
- 132 -
第 16 章 系統紀錄檢視
16-1 背景知識
背景知識
16-2 相關設定檔
相關設定檔
16-3 相關工具使用
相關工具使用
- 133 -