[ 上一頁 ] [ 目錄 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一頁 ]

Debian 參考手冊
第 4 章 - Debian 教學


本章為初涉 Linux 世界的新手指出了一個基本的方向。如果你接觸 Linux 已有一段時間,可以當成是一次實戰測驗。


4.1 資訊來源

Debian Documentation Project (DDP) 看看,那兒有最權威的 Debian 參考資料。其中的許多文件通常都安裝在 /usr/share/doc/。也可以到 /usr/share/doc-base/ 看看,那裡提供了系統之中文件的指引。在 ~/.bash_profile 中加入 export CDPATH=.:/usr/share/doc:/usr/src/local,這樣可以更容易地讀取這些文件目錄。

Linux Documentation Project (LDP) 中有最權威的 Linux 通用參考資料。 LDP 的資料通常安裝在 /usr/share/doc/HOWTO/ 目錄下。

如果要瀏覽本地或遠端 FTP 站台的文件的話,在 Midnight Commander 中按下 F9 試試 (參閱 Midnight Commander (MC), 第 4.3 節)。


4.2 Linux 控制台 (console)


4.2.1 登入

在一般 Linux 系統中,會有六個獨立的偽終端 (pseudo-terminals)。同時按下 Left-Alt 鍵和 F1–F6 鍵可在這些偽終端間切換。每個偽終端均需分別登入。多使用者環境是 Unix 重要的特性,你一定會用上癮的。

使用一般使用者帳號工作是使用 Unix 的好習慣。不得不承認,我過去常僅僅為圖個方便而濫用超級使用者帳號 (root)。

現在,我通常使用一般的帳號,再利用 sudosupersu -c 來獲得有限的 root 權限。


4.2.2 增加使用者帳號

系統安裝完畢後,我通常會新增一個一般使用者帳號。如果使用者名稱為 "penguin",則

     # adduser penguin

就可以建立帳號。

我使用 vigr 命令來編輯 /etc/group

     adm:x:4:admin
     src:x:40:admin, debian, ...
     ...

在系統預設安裝狀態下, adm 群組成員可以讀取在 /var/log/ 下的許多記錄檔,並且可以使用 xconsole/home 是由 staff 群組所擁有,所以其成員適合於進行使用者帳號維護的工作,而 src 群組擁有 /usr/src/ ,所以其成員可以編譯核心等等。有關使用者及群組的規範描述可參閱最新的 users-and-groups 文件。

我個人使用 adm 群組來管理那些具有管理員職責和排它性的 su 特權的使用者 (參閱 "Why GNU su does not support the wheel group", 第 9.2.2 節),而將 CVS 用戶歸屬 src 群組 (參閱 Concurrent Versions System (CVS), 第 12.1 節)。

adduseraddgroupvipwvipw -svigr ,以及 vigr -s 檢查一下使用者及群組是否配置得當。


4.2.3 如何關機

Linux 和任何現代的 OS 一樣,檔案會暫存於記憶體中,所以在安全切斷電源之前需要完成適當的關機程序。這裡是多使用者模式下使用的指令:

     # shutdown -h now

這是單一使用者模式下使用的命令:

     # poweroff -i -f

等待螢幕上顯示 "System halted" 文字之後切斷電源。如果 BIOS 和 Linux 開啟了 APM ,系統會自動切斷電源。詳情參閱 大記憶體和關機自動斷電, 第 3.7.4 節


4.2.4 命令列編輯

預設的 shell 是 bash ,它能記住使用過的命令 (history-editing)。只需按上下鍵就會出現之前的命令,然後就可以用游標 (cursor) 來輸入。其它需要牢記的重要按鍵有:

     Ctrl-U:                    清除一行中游標之前的文字
     Ctrl-D:                    結束輸入
     Left-click-and-drag mouse: 選取並拷貝至剪貼簿 (gpm)
     Click middle mouse button: 將剪貼簿內容貼至游標處 (gpm)
     Ctrl-V TAB:                輸入 TAB,而不是命令列擴展

在一般的 Linux console 中,只有左邊的 Ctrl 和 Alt 鍵有作用。


4.2.5 執行命令

典型的命令執行方法是使用如下的 shell 命令列:

     $ LC_ALL=fr ls -la

在此,程式 ls 是在前景執行,並以 -la 為參數以詳細列出目錄中所有的內容,並將其執行時的環境變數 LC_ALL 設為 fr 以設定為法國區域 (locale)。如果命令列是以 & 為結尾的話,則此命令會在背景執行。使用者在單一 shell 中允許以背景執行的工作來執行多個程式。

可用下列的按鍵來管理命令的執行。

     Ctrl-C:                  中止程式
     Ctrl-Z:                  暫停程式
     Ctrl-S:                  停止畫面輸出
     Ctrl-Q:                  恢復畫面輸出
     Ctrl-Alt-Del:            重開/關閉系統 (參閱 /etc/inittab)

有關如何管理程式運行,可參閱 bash(1) 中的 jobsfgbgkill


4.2.6 需要牢記的基本指令

下列是最基本的 Unix 指令:

     ls, ls -al, ls -d, pwd, cd, cd ~user, cd -, 
     cat /etc/passwd, less, bg, fg, kill, killall, 
     uname -a, type commandname, sync, netstat,
     ping, traceroute, top, vi, ps aux, tar, zcat, 
     grep, ifconfig, ...

在命令提示符號後輸入 maninfo 再加相關指令名稱,就可查看該指令的意思。許多 Linux 指令都可使用下列的方式來獲得簡要的說明資訊:

     $ commandname --help
     $ commandname -h

如果系統中的指令有說明文件的話,則 whatis commandname 則會顯示一行摘要資訊。


4.2.7 X Window 系統

從 console 啟動 X Window 系統:

     # exec startx

在根視窗上按右鍵可以帶出選單。


4.2.8 重要的鍵盤指令

在 Linux 控制台中要記住的一些重要按鍵 ("plus" 、 "minus" 指數字盤上的按鍵):

     Alt-F1 至 F6:         切換至其他的偽終端 (pseudo-terminals)
     Ctrl-Alt-F1 thru F6:  切換至其他的偽終端
                           (由 X window, DOSEMU 等環境中)
     Alt-F7:               切換回 X window
     Ctrl-Alt-minus:       在 X window 中改變螢幕解析度
     Ctrl-Alt-plus:        在 X window 中以相反的方向來改變螢幕解析度
     Ctrl-Alt-Backspace:   結束 X11 server 程式
     Alt-X, Alt-C, Alt-V:  使用 Windows/Mac 剪下,複製,貼上鍵
             在如 Netscape Composer 等程式中,這些結合 Alt- 的按鍵取代了結合 Ctrl- 的按鍵。

4.3 Midnight Commander (MC)

Midnight Commander (MC) 是 GNU 在 Linux 控制台和其他終端環境的一把 "瑞士刀"。


4.3.1 安裝 MC

     # apt-get install mc

然後修改 ~/.bashrc (或是由 .bashrc 呼叫的 /etc/bash.bashrc),使用 -P 選項,就像在說明頁面 mc(1) 中的敘述,這會使得 MC 在退出時就更改其工作目錄。

如果是在像 konKterm for Japanese 等使用某些圖形特性的終端的話,則在命令列中加上 -a 可以預防 MC 出現一些問題。


4.3.2 啟動 MC

     $ mc

在 MC 中可使用選單來完成所有的檔案操作,只需要使用者小小的嚐試一下就行了。


4.3.3 檔案管理

預設狀態是兩個目錄面板列出檔案列表。另一種好用的模式是將右邊視窗設定為 "information" ,以查看檔案存取權限等資訊。下面是一些基本的按鍵。如果 gpm daemon 在運作的話,你還可以使用滑鼠。 (在 MC 中進行剪下和貼上操作時別忘了按下 shift 鍵。)


4.3.4 命令列的技巧


4.3.5 編輯器

內建編輯器的剪下-貼上方式很有意思。按 F3 標記起始點,再次按 F3 標記終止點,而中間的選取部分會高亮度顯示。然後你可以移動游標到某處按下 F6 ,被選取部分就會移到該處。如果你按下的是 F5 ,選中部分就會複製到該處。 F2 會儲存檔案, F10 是退出,所有方向鍵的作用則和它們的名字一樣直觀。

可用編輯器直接打開某個檔案:

     $ mc -e filename_to_edit
     $ mcedit filename_to_edit

雖然它不是多視窗編輯器,但你可利用多個 Linux 控制台來達成相同的效果。要在視窗間進行複製動作,可使用 Alt-Fn 來切換虛擬控制台,然後使用 "File->Insert file" 或 "File->Copy to file" 將一個檔案中的內容複製到另一個檔案。

可指定任何外部編輯器來取代內建的編輯器。

許多程式使用環境變數 EDITORVISUAL 來決定使用哪個編輯器。如果你用不慣 vim,可在 ~/.bashrc 中加上幾行來指定使用 mcedit

     ...
     export EDITOR=mcedit
     export VISUAL=mcedit
     ...

我推薦設定為 vim 。習慣 vi(m) 是件好事,因為在 Linux/Unix 世界裡你總找得到它們。


4.3.6 檢視器

非常聰明的檢視器。它是在文件中搜索單詞的利器。我總是用它在 /usr/share/doc 目錄下找檔案,用它來瀏覽大量的 Linux 資料是最快的方法。檢視器可以像這樣直接啟動:

     $ mc -v filename_to_view

(注意,有些違反規範的套件仍將它們的文件放在 /usr/doc 目錄下。)


4.3.7 自動啟動特性

在檔案上按 Enter,會啟動相關的程式來處理該檔案。這是 MC 的一個極方便的特性。

     executable:        執行命令
     man, html file:    將檔案內容導向 (Pipe) 至檢視軟體
     tar, gz, rpm file: 像子目錄般的瀏覽其內容

為了使這些文件特性生效,不要將可閱讀的檔案設成可執行檔。可使用 MC 的檔案選單或使用 chmod 來改變檔案屬性。


4.3.8 FTP 虛擬檔案系統

MC 可通過 FTP 來存取網路上的檔案。按 F9 轉到選單列,輸入 `p' 啟動 FTP 虛擬檔案系統。以 username:passwd@hostname.domainname 格式輸入 URL ,遠端的目錄就會像本地端目錄一樣顯示出來。


4.4 GNU/Linux 檔案系統基礎

在 GNU/Linux 系統中每個檔案和目錄都與由一個使用者所擁有 (擁有者) 並屬於一個群組。所有的檔案資訊都保存在一個稱為 inode 的資料結構中。


4.4.1 檔案和目錄的存取權限

檔案和目錄的存取權限對下面三種使用者分別定義:

對檔案來說,每個權限分別對應到一些可做的動作:

對目錄來說,每個權限分別對應到一些可做的動作:

在這裡, 目錄的執行權限不只代表允許讀取目錄內的檔案,也代表允許看到它們的屬性,像是檔案大小和更動時間等。

使用 ls 來顯示檔案和目錄的權限資訊 (和更多其他的資訊). 請參閱 ls(1) 。當使用 ls-l 選項,則會依下列順序來顯示相關資訊:

在 root 帳號下可使用 chown 改變檔案的擁有者,參閱 chown(1)。要改變檔案的所屬群組,可以用檔案擁有者或 root 的身份來執行 chgrp,參閱 chgrp(1) 。要改變目錄的存取權限,可以用檔案擁有者或 root 的身份來執行 chmod ,參閱 chmod(1)

例如,要建立一個目錄樹,其擁有者為 foo ,所屬群組為 bar 的話,用 root 帳號執行下列的指令:

     # cd /some/location/
     # chown -R foo:bar .
     # chmod -R ug+rwX,o=rX .

有 3 個更特殊的權限位元:

在這裡,如果設定這些特殊權限設定後蓋住了原本顯示的執行權限的話,則 ls -l 的輸出就會用大寫來表示。

在可執行檔上設定 set user ID 的話,會以這個檔案擁有者的身份 (如 root) 來執行這個可執行檔。同樣地,在可執行檔上設定 set group ID 的話,會以這個檔案的群組身份 (如 root) 來執行這個可執行檔。因為這些設定會導致安全性上的問題,要打開它們的話要格外小心。

在目錄上設定 set group ID 的話,會使用類似 BSD 的檔案建立規則,也就是在此目錄中建立的檔案都會屬於此目錄的群組

在目錄上設定e sticky bit 可以防止非檔案擁有者來刪除此目錄中的檔案。在一些大家可以寫入的目錄,如 /tmp 或是在允許群組寫入的目錄下,為了要保持檔案內容的安全,不只要關上檔案的寫入權限,還要在目錄上設定 sticky bit 。不然的話,任何擁有目錄寫入權限的人都可以刪除檔案,並且建立一個新的同名檔案。

這裡有些關於檔案權限的有趣例子。

     $ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/pppd
     crw-rw----    1 root     dip      108,   0 Jan 18 13:32 /dev/ppp
     -rw-r--r--    1 root     root         1051 Jan 26 08:29 /etc/passwd
     -rw-r-----    1 root     shadow        746 Jan 26 08:29 /etc/shadow
     -rwsr-xr--    1 root     dip        234504 Nov 24 03:58 /usr/sbin/pppd
     $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src
     drwxrwxrwt    4 root     root         4096 Feb  9 16:35 /tmp
     drwxrwsr-x   10 root     staff        4096 Jan 18 13:31 /usr/local
     drwxrwsr-x    3 root     src          4096 Jan 19 08:36 /usr/src
     drwxrwsr-x    2 root     mail         4096 Feb  2 22:19 /var/mail
     drwxrwxrwt    3 root     root         4096 Jan 25 02:48 /var/tmp

4.4.2 時間戳記

在 GNU/Linux 檔案中,有三個時間戳記:

注意, ctime 並不是檔案建立時間。

要注意的是,在 GNU/Linux 系統中,即使只是簡單的讀取檔案,通常也會為了要更新 inode 中的 atime 而導致寫入的動作。如果以 noatime 選項來掛上檔案系統的話,就可以略過這個動作而使讀取的動作加快。請參閱 mount(8)


4.4.3 連結

有兩種方法可以把一個叫 foo 的檔案關連到另一個檔名 bar

下面的例子顯示了在使用 rm 指令後,連結數的改變和一些微妙的差異。

     $ echo "Original Content" > foo
     $ ls -l foo
     -rw-r--r--    1 osamu    osamu           4 Feb  9 22:26 foo
     $ ln foo bar     # 硬式連結
     $ ln -s foo baz  # 符號連結
     $ ls -l foo bar baz
     -rw-r--r--    2 osamu    osamu           4 Feb  9 22:26 bar
     lrwxrwxrwx    1 osamu    osamu           3 Feb  9 22:28 baz -> foo
     -rw-r--r--    2 osamu    osamu           4 Feb  9 22:26 foo
     $ rm foo
     $ echo "New Content" > foo
     $ cat bar
     Original Content
     $ cat baz
     New Content

就像上面的例子所顯示的,符號連結的一般檔案存取權限為 "rwxrwxrwx" ,而實際的存取權限均由它們所指向的檔案來決定。

. 目錄是連結到其所出現的目錄,所以任何新目錄的連結數都是由 2 起跳的。而 .. 目錄是連結到其所上層目錄,所以目錄的連結數會隨著子目錄數目而增加。


4.5 後續的學習

還有許多 Unix 好的入門級參考書,在計算機的各個領域,想買到優秀的指導書, O'Reilly 不會讓你失望。 LDP 的文件 Tips-HOWTO 是另一個資源。更多資源請參閱 Debian 的技術支援, 第 15 章


[ 上一頁 ] [ 目錄 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一頁 ]

Debian 參考手冊

1.07-6, 週三 六月 23 21:21:03 UTC 2004

青木 修 (Osamu Aoki) osamu@debian.org
翻譯者:唐偉清 (Tang Wei-Ching) wctang@csie.nctu.edu.tw
作者, 第 A.1 節