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


Debian 參考手冊
第 4 章 - Debian指南


本章為那些初涉 Debian 世界的新手指出了基本方向。如果你接觸 Unix-like 系統已有一段時間,就能了解我底下說明的部份。請將此文件當成實戰測試吧。


4.1 準備開始

從安裝 Debian 到電腦之後,您需要學會一些技巧才能活用它。讓我們給您一些簡單的練習。


4.1.1 用 root 登入 shell 提示符號

在開機的過程中,您會看到圖形或文字介面的登入畫面(基於安裝的套件)。為了簡化說明,如果您看到的是圖形登入介面,請按下 Ctrl-Alt-F1 [3] 切換到文字介面的登入模式。

假設您的主機名稱為 foo,那麼登入提示符號則類似:

     foo login:

輸入 root,按下 Enter 後並輸入安裝過程設定的密碼。Debian 系統跟 Unix 一樣,密碼是分辨大小寫的。接下來系統會出現一個問候訊息並留下 root 提示符號等您輸入指令。 [4]

     foo login: root
     Password: 
     Last login: Sun Oct 26 19:04:09 2003 on tty3
     Linux foo 2.4.22-1-686 #6 Sat Oct 4 14:09:08 EST 2003 i686 GNU/Linux
     
     Most of the programs included with the Debian GNU/Linux system are
     freely redistributable; the exact distribution terms for each program
     are described in the individual files in /usr/share/doc/*/copyright
     
     Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
     permitted by applicable law.
     
     root@foo:root#

透過 root 命令提示符號,您就準備進行系統管理了。root 帳號稱為超級使用者(superuser)或特權使用者(privileged user)。使用 root 帳號,您可以達成:

分享 root 密碼來取得 root 帳號是非常不好的方法。請使用如 sudo(8) 的軟體就是一個較好的方式來分享管理者權限。

先登入非特權帳號再進行管理動作是值得學習的 Unix 習慣。等需要 root 權限時再使用 sudosupersu -c來取得特定的功能。請參閱 更安全的工作環境 – sudo, 第 9.2.4 節。 [5]


4.1.2 針對新手設定的最精簡環境

我認為學習電腦系統就像是學習一套外國語言。雖然學習指南很有幫助,但您需要去練習並使用這些工具。這個情況下,我建議額外安裝一些套件來輔助,例如 mc, vim, lynx, doc-linux-textdebian-policy。 [6]

     # apt-get update
      ...
     # apt-get install mc vim lynx doc-linux-text debian-policy 
      ...

如果您已經安裝這些套件,則執行上述指令就不會重新安裝。


4.1.3 增加帳號

系統安裝完畢,通常會添加一個普通用戶帳號,而該帳號會收到寄給 root 的信件。 [7] 如果您不想使用這個特殊帳號來練習以下的指令則必須建立一個新的使用者帳號。

如果新的帳號為 penguin,請輸入:

     root@foo:root# adduser penguin
     ... 回答完所有的問題

就會建立該帳號了。 [8] 在進行下面的步驟前,我們先學習一些基礎。


4.1.4 切換虛擬主控台

在未調整過的 Debian 系統中,總共有六個獨立的虛擬終端機。也就是說您可以在文字介面的主控台中使用六個可切換的 VT-100 終端機。按下左邊的 Alt 加上 F1–F6 可以切換到另外一個終端機。每一個虛擬終端機允許不同的帳號登入且不受其他終端機影響。多人環境是 Unix 偉大的設計且容易讓人上癮。

如果您不小心在執行 X 視窗系統的機器按下 Alt-F7,則主控台螢幕會切換到視窗介面,按下 Ctrl-Alt-F1 就能回到文字主控台。試著練習切換不同的主控台並跳回到原來這一個來習慣這些特性。


4.1.5 如何關機

和其他現代的作業系統一樣,系統檔案會快取到記憶體中,在切斷電源之前 Debian 系統需要完成特定的關機程序才能維持檔案的完整性。使用 root 提示命令列來執行以下的關機指令:

     # shutdown -h now

這是多用戶模式下的關機命令。如果是單一使用者模式,請執行以下的命令:

     # poweroff -i -f

您也能按下 Ctrl-Alt-Delete 來關機。 [9]

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


4.1.6 把玩時間

現在您可以大膽地使用 Debian 系統而不用擔心任何危險,因為您使用的是非特權帳號:penguin。 [10]

我們來試著登入 penguin,如果您在 root 命令提示列,請按下 Ctrl-D [11] 結束 root 的動作回到登入提示符號。現在請輸入新建立的帳號 penguin 及密碼。 [12] 您就會顯示以下的提示命令列。

     penguin@foo:penguin$

從現在開始,底下的範皆使用簡化的命令提示列來說明。我將會使用

我們將以最簡單的方式 Midnight Commander (MC), 第 4.2 節 和適當的方法 Unix-like 工作環境, 第 4.3 節 來學習 Debian 系統。


4.2 Midnight Commander (MC)

Midnight Commander (MC)是 Linux 主控台和其它終端環境中的 GNU "瑞士軍刀"。對於新手來說,選單式的控制會比傳統 Unix 指令好上手多了。

使用這個指令來流覽 Debian 系統。這是最好的方式來學習。請使用方向鍵和 Enter 鍵來流覽主要的檔案系統。


4.2.1 加強您的 MC

為了使 MC 在離開時改變工作目錄,您需要修改 ~/.bashrc (或 /etc/bash.bashrc, 由 .bashrc 呼叫),使用 -P 選項,就像在說明頁面 mc(1) 中的敘述。 [13]


4.2.2 啟動 MC

     $ mc

在 MC 中可使用選單來完成所有的檔案操作,只需要使用者小小的嚐試一下就行了。按下 F1 顯示說明視窗。您可以搭配方向鍵和功能鍵來使用 MC。 [14]


4.2.3 MC 的檔案管理功能

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


4.2.4 MC 的命令列技巧


4.2.5 MC 的編輯器

內建編輯器的剪下-貼上方式很有意思。按 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 世界裡你總找得到它們。 [15]


4.2.6 MC 的檢視器

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

     $ mc -v filename_to_view

4.2.7 MC 自動啟動特性

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

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

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


4.2.8 MC 的FTP虛擬檔案系統

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

試著流覽 http.us.debian.org/debian 中的 Debian 檔案。請參閱 Debian archives, 第 2.1 節 了解這些是如何組織起來的。


4.3 Unix-like 工作環境

雖然 MC 能幫助你完成許多事情,但是學會如何從 shell 命令列執行指令並熟習 Unix-like 環境是非常重要的。 [16]


4.3.1 特殊的組合鍵

在 Unix-like 環境中,有許多組合鍵有特別的意義。 [17]

預設的 shell 是 bash ,它能記住使用過的命令 (history-editing) 和命令列擴展 (tab-completion) 的功能來輔助互動式的使用。

其他重要的組合鍵:

為了在 Linux 文字主控台中使用滑鼠,您必須使用 gpm 服務。 [19] 參閱 滑鼠設定, 第 3.3 節


4.3.2 基本的 Unix 指令

我們來學一些基本的 Unix 指令吧。 [20] 試著由非特權帳號penguin來執行下列的指令:

請先使用上述的指令當作測試來探勘系統目錄。如果您有任何指令上的問題,請閱讀說明文件。比如說,這些指令是好的出發點:

     $ man man
     $ man bash
     $ man ls

現在使用 vim 的好機會,請按下 F1。您應該會看到至少前 35 行。然後實作線上測驗,將游標移至 |tutor| 並按下 Ctrl-]。參閱 編輯器, 第 11 章 了解更多編輯器。

請注意,許多從 GNU 和 BSD 來的 Unix-like 指令皆有簡潔的說明,您可以使用以下其一的方法叫出來(有些情況是不用加任何參數):

     $ commandname --help
     $ commandname -h

也順便練習一下Debian技巧, 第 8 章的範例來練功吧。


4.3.3 The command execution

相信您現在比較清楚如何使用 Debian 系統了。我們來探勘 Debian 中更進階的指令技巧。 [27]


4.3.4 簡單的命令

一個簡單的指令是以下的排列

  • 變數宣告 (額外的)

  • 指令名稱

  • 參數 (額外的)

  • 導向 (額外的:> , >> ,< , << ...等)

  • 控制運算子 (額外的:&& , || ;<newline> , ; , & , ( , ))

  • 對於置換和引用,參閱 命令列操作, 第 13.2.6 節


    4.3.5 指令執行和環境變數

    典型的指令執行是使用下述的 shell 指令列: [28]

         $ date
         Sun Oct 26 08:17:20 CET 2003
         $ LC_ALL=fr_FR date
         dim oct 26 08:17:39 CET 2003
    

    在這裡,date是前景工作。至於環境變數 LC_ALL 是指:

    大部份的指令在執行時不會比環境變數更早執行。對於上面的範例來說,你也可以這樣做:

         $ LC_ALL=fr_FR
         $ date
         dim oct 26 08:17:39 CET 2003
    

    當你看到這裡時,輸出的結果是受到環境變數的影響而產生 French 的文字。如果您想要環境變數也影響到子程序(舉例來說,當使用 shell script),您必須 "export" 它:

         $ export LC_ALL
    

    4.3.6 指令收尋路徑

    當您在 shell 輸入指令時,shell 會 PATH 這個環境變數中列舉的目錄來找指令。PATH 同時也是 shell 的收尋路徑。

    在預設安裝的 Debian 下,使用者的PATH 不會包含/sbin/。所以當您需要從 /sbin/ 執行一些像 ifconfig的指令時,您必須修改 PATH 的值並包含該路徑。PATH通常是設定在 ~/.bash_profile 之中,參閱 Bash 設定, 第 3.2 節


    4.3.7 命令列參數

    部份的指令需要額外的參數才能執行,這些參數通常是以 --- 開頭並透過指令來呼叫。

         $ date
         Mon Oct 27 23:02:09 CET 2003
         $ date -R
         Mon, 27 Oct 2003 23:02:40 +0100
    

    這裡的參數 -R 會改變 date 的輸出結果而變成 RFC-2822 相容的字串。


    4.3.8 Shell wildcards

    有時候您希望能同時處理相同類別的檔案但不想一個一個輸入時,shell wildcards的 "檔名原型擴展" 就能解決這樣的問題。

    舉例來說,思考一下底下的範例:

         $ mkdir junk; cd junk; touch 1.txt 2.txt 3.c 4.h .5.txt
         $ echo *.txt
         1.txt 2.txt
         $ echo *
         1.txt 2.txt 3.c 4.h
         $ echo *.[hc]
         3.c 4.h
         $ echo .*
         . .. .5.txt
         $ echo .[^.]*
         .5.txt
         $ echo [^1-3]*
         4.h
         $ cd ..; rm -rf junk
    

    4.3.9 指令的傳回值

    每個指令會回傳 exit 狀態當成回傳值。

    執行後的回傳值可經由 $? 環境變數來存取。

         $ [ 1 = 1 ] ; echo $?
         0
         $ [ 1 = 2 ] ; echo $?
         1
    

    請注意,shell 使用邏輯計算回傳值時,success的話就當成邏輯 TRUE。這並不是那麼直覺,因為success有代表 zero 的意思。

    參閱 Shell 條件式, 第 13.2.5 節


    4.3.10 標準的指令順序

    我們試著記憶底下的 shell 指令用法。閱讀過這些用法後也請參考 Shell 參數, 第 13.2.3 節, Shell 重導 (redirection), 第 13.2.4 節, Shell 條件式, 第 13.2.5 節命令列操作, 第 13.2.6 節


    4.3.10.1 command &

    command 指令是在 背景中的子 shell 執行。背景的工作允許使用者在一個 shell 中執行多個程式。

    背景程序的管理包含了 shell 本身的 jobs, fg, bgkill。請閱讀 bash(1) 中的 "SIGNALS", "JOB CONTROL" 和 "SHELL BUILTIN COMMANDS"。 [29]


    4.3.10.2 command1 | command2

    command1 的 standard output 是餵給 command2 的stand input。兩個指令可以同時執行。這就叫作 pipeline


    4.3.10.3 command1 ; command2

    command1command2 是按照順序地執行。


    4.3.10.4 command1 && command2

    command1 先被執行。如果成功的話,則command2也會依序的執行。command1 command2皆成功執行,則傳回 success。


    4.3.10.5 command1 || command2

    command1 先被執行。如果不成功的話,則command2還是會依序的執行。command1 command2其一成功執行的話,則傳回 success。


    4.3.10.6 command > foo

    command的結果重導到foo檔案。(會覆寫)


    4.3.10.7 command >> foo

    command的結果重導到foo檔案。(會附加)


    4.3.10.8 command > foo 2>&1

    command的 standard output 和 standard error 重導到foo檔案。


    4.3.10.9 command < foo

    command的 standard input 導到foo檔案。試試看以下的例子:

         $ </etc/motd pager
          ... (the greetings)
         $ pager </etc/motd
          ... (the greetings)
         $ pager /etc/motd
          ... (the greetings)
         $ cat /etc/motd | pager
          ... (the greetings)
    

    雖然四個用法皆顯示同樣的結果,但最後的例子會再跑一次 cat 指令,這會多浪費一些資源。


    4.3.11 指令別名

    您可以為常用的指令設定別名。例如:

         $ alias la='ls -la'
    

    現在,la 會以長清單格式來列出所有的檔案,也就是 ls -la 的縮寫。

    您可以使用 type 指令來辨識真正的路徑。例如:

         $ type ls
         ls is hashed (/bin/ls)
         $ type la
         la is aliased to `ls -la'
         $ type echo
         echo is a shell builtin
         $ type file
         file is /usr/bin/file
    

    這裡的 ls 是最近被查詢到的,然而 file 並沒有,因此 ls 是 "hashed",也就是說 shell 有一個紀錄可以快速找到 ls 的位置。


    4.4 Unix-like 文字處理

    在 Unix-like 系統上有一些常用的標準文字處理工具。

    參閱 Regular-expression substitution, 第 8.6.13 節, 精巧的管道指令輔助script, 第 8.6.18 節輕巧的 Perl Script, 第 8.6.20 節 取得更多 script 範例。


    4.4.1 正規表示法

    正規表示法是用在許多文字處理的工具上。有點類似 shell wildcards (參閱 Shell wildcards, 第 4.3.8 節),但卻更複雜與強大。

    正規表示法可用文字或metacharacters來描述比對原型。metacharacter 是具有特殊意義的字元。有兩種主要的類別:BRE 和 ERE,端看您使用的文字工具(Unix-like 文字處理, 第 4.4 節)決定。

    對 EREs 來說,metacharacters 包含 "\ . [ ] ^ $ * + ? ( ) { } |"。這個表示法意思是:

    在 BREs 裡,metacharacters:"+ ? ( ) { } |" 是無作用的,取而代之的是倒斜線的 "\+ \? \( \) \{ \} \|"。所以說,使用 BREs 時,(r1|r2) 必須像 \(r1|r2\) 用倒斜線隔開。雖然 emacs 也支援 BRE,但改用 "+ ?" 來當作metacharacters。所以不需要使用雙引號來隔開。參閱 置換表示法, 第 4.4.2 節 了解這些metacharacters組合怎麼使用。

    舉例來說,grep 可以使用正規表示法來收尋文字:

         $ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL
                             GNU GENERAL PUBLIC LICENSE
                             GNU GENERAL PUBLIC LICENSE
           Yoyodyne, Inc., hereby disclaims all copyright interest in the program
    

    4.4.2 置換表示法

    在置換表示法中,底下的字元有特別的意義:

    如要使用 Perl 置換字串,請改用 $n 代替\n&。因為後兩各在 Perl 中是無意義的。

    舉例說明:

         $ echo zzz1abc2efg3hij4 | \
           sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/'
         zzz=1abc2efg3hij4=
         $ echo zzz1abc2efg3hij4 | \
           sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/'
         zzzefg3hij4===1abc
         $ echo zzz1abc2efg3hij4 | \
           perl -pe 's/(1[a-z]*)[0-9]*(.*)$/$2===$1/'
         zzzefg3hij4===1abc
         $ echo zzz1abc2efg3hij4 | \
           perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=&=/'
         zzz=&=
    

    請特別注意各處理工具在置換時所使用的分隔符號,以及軟體如何用正規表示法比對這些文字的方式。

    在編輯器中使用這些表示法也可以用來移動游標和置換文字。

    請閱讀以上這些指令相關的說明文件。


    4.5 Unix-like 檔案系統

    在 GNU/Linux 和其他 Unix-like 的系統上,檔案是有組織地放置在目錄下。 [30] 全部的檔案目錄被整理放在一個階乘和樹狀的根目錄(/)。

    這些檔案和目錄可以放在不同的硬體裝置上。mount(8) 指令能掛載硬體裝置並加入到這巨大的檔案樹系統上。反過來說,umount(8)則可以卸載這些裝置。


    4.5.1 Unix 檔案基礎

    以下是一些基礎觀念:

    有興趣的話可以參閱Filesystem Hierarchy Standard,該文件詳細說明了階層式檔案系統的細節。您要記住的是底下這些目錄的用途:


    4.5.2 Debian 的檔案系統

    同於 Unix,Debian 系統提供了一個檔案系統,能夠統一化所有硬碟,儲存媒體,主控台或透過串列埠遠端存取硬體的動作。

    Debian 系統中每個檔案,目錄,named pipe 或硬體裝置都有一個inode 的資料結構,記載該檔案的相關屬性,例如:使用者所擁有 (擁有者),屬於那一個群組,最後存取的時間等。參閱 /usr/include/linux/fs.h 了解 Debian GNU/Linux 系統中的 inode結構的意義。

    將硬體統一化成檔案的表示法是非常有用的,這允許我們可以使用相同的方法來存取完全不同的硬體。

    全部的檔案可以存放在一個硬碟,或者 20 個硬碟,有些硬碟甚至是分散在網路上不同的電腦。您無法想像在查詢檔案或目錄時,所有的指令都能正常運作且不用理會真正的檔案是放在哪一個實體裝置上。


    4.5.3 檔案和目錄的存取權限

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

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

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

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

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

    在 root 帳號下可使用 chown 改變檔案的擁有者。要改變檔案的所屬群組,可以用檔案擁有者或 root 的身份來執行 chgrp。要改變目錄的存取權限,可以用檔案擁有者或 root 的身份來執行 chmod。控制foo檔案的語法是:

         # chown newowner foo
         # chgrp newgroup foo 
         # chmod  [ugoa][+-=][rwx][,...] foo
    

    請參閱 chown(1), chgrp(1)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
    

    另外的辦法是使用數字並搭配 chmod(1) 來設定檔案權限。數字模式使用 3 到 4 數字寬的八進制數字。每個數字皆有其代表意義:

    這聽起來很複雜,但其實是相當簡單的。如果您觀察ls -l的結果就能發現前面幾行(2-10)是代表檔案權限(請用二進制,"-"表示 "0","rwx"表示"1")。這些數字如果用八進制來代表檔案權限的話,相信您一定能夠了解。 [33] 舉個例子,比如:

         $ touch foo bar
         $ chmod u=rw,go=r foo
         $ chmod 644 bar
         $ ls -l foo bar
         -rw-r--r--    1 penguin  penguin  0 Nov  3 23:30  foo
         -rw-r--r--    1 penguin  penguin  0 Nov  3 23:30  bar
    

    預設的檔案權限遮罩可使用 shell 內建的 umask 來設定。參閱builtins(7)


    4.5.4 時間戳記

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

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

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

    使用 touch(1) 中的指令來改變檔案的時間戳記。


    4.5.5 連結

    有兩種方法可以把一個叫 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.6 Named pipes (FIFOs)

    named pipe 是類似管線的檔案。您可以輸入資料到這個檔案,然後他會輸出到別的地方。因此他也就作 FIFO(First-In-First-Out):第一個送入管線的資料也是第一個送出管線的資料。

    如果寫入 named pipe 時,寫入的程序並不會中斷直到該管線讀入為止。如果讀取 named pipe,讀取的程序會一直等待直到資料讀取完畢才停止。管線的大小永遠是零,因為它並不儲存資料,它主要是連結兩個程序,就像 shell 的 |。但是,自從管線被命名之後,兩個程序不需要在同一行執行或同一個使用者執行。

    試著執行以下的例子:

         $ cd; mkfifo mypipe
         $ echo "hello" >mypipe & # put into background
         [1] 5952
         $ ls -l mypipe
         prw-r--r--    1 penguin penguin  0 2003-11-06 23:18 mypipe
         $ cat mypipe
         hello
         [1]+  Done                    echo hello >mypipe
         $ ls mypipe
         prw-r--r--    1 penguin penguin  0 2003-11-06 23:20 mypipe
         $ rm mypipe
    

    4.5.7 Sockets

    socket 有點類似 named pipe (FIFO) 且允許程序與程序之間可以交換資料。針對 socket 來說,這些程序不需要在同一個時間執行或者同一個父程序產生的子程序。這是 inter process communication 的 ENDPOINT。網路上不同的主機透過 socket 也能夠互換資料。


    4.5.8 Device files

    任何的硬體或虛擬裝置,例如硬碟,顯示卡,螢幕或鍵盤等,皆視為裝置檔案。/dev/console,主控台是最常見的虛擬裝置。

    裝置有兩種型別:

    您可以讀寫裝置檔案,即使是這些檔案可能採用二進制而讓人難以理解。直接寫入資料到這些檔案有時候是測試硬體是否已經連線的好方法。例如,您可以列印文字檔到印表機裝置:/dev/lp0或送指令到連接數據機的串列埠上:/dev/ttyS0。但請小心操作,也許會造成重大的損壞。所以要特別小心。


    4.5.8.1 /dev/null 類別

    /dev/null 是一個特別的裝置檔案,它會捨棄所有寫入的資料。如果您不需要某些資料,直接丟到 /dev/null。它基本上就是個黑洞。如果您讀取/dev/null,您會馬上得到 end-of-file (EOF) 字元。

    /dev/zero 也是一樣,差別在於讀取時會得到\0字元(不是數字 0 喔)。參閱 空檔案, 第 8.6.34 節


    4.5.8.2 裝置節點編號

    執行 ls 您就可以得到裝置節點的號碼:

         $ ls -l /dev/hda /dev/ttyS0 /dev/zero
         brw-rw----    1 root     disk       3,   0 Mar 14  2002 /dev/hda
         crw-rw----    1 root     dialout    4,  64 Nov 15 09:51 /dev/ttyS0
         crw-rw-rw-    1 root     root       1,   5 Aug 31 03:03 /dev/zero
    

    請看底下說明:

    在舊式的系統上,安裝過程會使用 /sbin/MAKEDEV 建立裝置節點。參閱 MAKEDEV(8)

    較新的系統上,/dev 下的檔案系統是經由類似 /proc 的檔案系統自動產生。


    4.5.9 /proc 檔案系統

    /proc 檔案系統是虛擬的檔案系統,紀錄著系統資訊和執行中的程式。

    許多人常常因為 /proc/kcore 太大而傷腦筋。該檔案的大小跟您電腦安裝的記憶體一樣大。它主要用來進行核心偵錯,但本身並不存在任何地方,所以請別擔心它的容量大小。

    參閱 透過 proc 檔案系統調整核心, 第 7.2 節proc(5)


    4.6 X Window 系統

    請參閱 X, 第 9.4 節


    4.6.1 啟動 X Window System

    X Window 系統會跟著 xdm-like 等圖形登入軟體執行時啟動,或者在主控台輸入:

         $ exec startx
    

    4.6.2 X Window 系統的選單功能

    自從 X 環境提供了許多的視窗管理器之後,他們的使用者介面都有些許的差異。請牢記按下右鍵會帶出系統選單。該功能一直都有。

    如果您找不到 menu,請安裝相關的套件。參閱 體驗 Debian 套件管理, 第 6.2 節


    4.6.3 X Window 系統的鍵盤順序

    底下是執行 X Window 系統時重要的組合控制鍵。


    4.7 後續的學習指南

    現在,我推薦您閱讀 The Linux Documentation Project: Guides 網站上主要的引導書籍:

    參閱 Debian 的技術支援, 第 15 章 取得更多的學習資源。


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


    Debian 參考手冊

    CVS, 週四 一月 18 11:53:38 UTC 2007

    Osamu Aoki osamu#at#debian.org
    Asho Yeh asho#at#debian.org.tw
    作者, 第 A.1 節