UNIX 檔案管理


UNIX中的所有資料被組織成檔案。所有檔案被組織成目錄。這些目錄被組織成一個樹形結構,稱為檔案系統。

當使用UNIX工作以這種或那種方式,大部分的時間花在工作的檔案。本教學將教你如何建立和刪除檔案,複製和重新命名,建立連結到它們等。

在UNIX中,有三種基本型別的檔案:

  1. 普通檔案: 普通檔案在系統上的檔案包含資料,文字,或程式指令。在本教學中,以操作普通的檔案為例。

  2. 目錄: 目錄特別及普通檔案儲存。對於使用者熟悉Windows或Mac OS,UNIX目錄相當於檔案夾。

  3. 特殊檔案: 一些特殊的檔案提供存取硬體,如硬碟,CD-ROM驅動器,調變解調器和乙太網介面卡。其他特殊檔案是類似的別名或快捷鍵,使您能夠存取一個單一的檔案使用不同的名稱。

檔案列表:

要列出儲存在當前目錄中的檔案和目錄。使用下面的命令:

$ls

下面是上述命令的範例輸出:

$ls

bin        hosts  lib     res.03
ch07       hw1    pub     test_results
ch07.bak   hw2    res.01  users
docs       hw3    res.02  work

ls命令支援,這將有助於獲得更多的資訊有關所列出的檔案使用-1選項:

$ls -l
total 1962188

drwxrwxr-x  2 amrood amrood      4096 Dec 25 09:59 uml
-rw-rw-r--  1 amrood amrood      5341 Dec 25 08:38 uml.jpg
drwxr-xr-x  2 amrood amrood      4096 Feb 15  2006 univ
drwxr-xr-x  2 root   root        4096 Dec  9  2007 urlspedia
-rw-r--r--  1 root   root      276480 Dec  9  2007 urlspedia.tar
drwxr-xr-x  8 root   root        4096 Nov 25  2007 usr
drwxr-xr-x  2    200    300      4096 Nov 25  2007 webthumb-1.01
-rwxr-xr-x  1 root   root        3192 Nov 25  2007 webthumb.php
-rw-rw-r--  1 amrood amrood     20480 Nov 25  2007 webthumb.tar
-rw-rw-r--  1 amrood amrood      5654 Aug  9  2007 yourfile.mid
-rw-rw-r--  1 amrood amrood    166255 Aug  9  2007 yourfile.swf
drwxr-xr-x 11 amrood amrood      4096 May 29  2007 zlib-1.2.3
$

這裡是所有列出的列資訊:

  1. 第一列:表示授予該檔案的檔案型別和許可權。下面是描述所有型別的檔案。

  2. 第二列:代表所採取的記憶體塊的檔案或目錄的數量。

  3. 第三欄:表示檔案所有者。是誰建立了這個檔案的Unix使用者。

  4. 第四列:代表組的所有者。每個Unix使用者將有關聯的組。

  5. 第五欄:表示檔案大小(以位元組為單位)。

  6. 第六欄:表示當這個檔案被建立或修改的最後一次的日期和時間。

  7. 第七欄:表示檔案名或目錄名。

在 ls -l清單的例子,每一個檔案的行開始d, -,或l。這些字元表示的檔案型別列出。 

Prefix 描述
- Regular file, such as an ASCII text file, binary executable, or hard link.
b Block special file. Block input/output device file such as a physical hard drive.
c Character special file. Raw input/output device file such as a physical hard drive
d Directory file that contains a listing of other files and directories.
l Symbolic link file. Links on any regular file.
p Named pipe. A mechanism for interprocess communications
s Socket used for interprocess communication.

元字元:

在Unix元字元有特殊的含義。例如*和?是元字元。我們使用*匹配0個或多個字元,問號?匹配單個字元。

範例:

$ls ch*.doc

顯示所有檔案,其名稱以ch開始和結束的。doc:

ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc ch02-1.doc c

*元字元匹配任何字元。如果想顯示所有檔案只是檔案結束,那麼可以使用下面的命令:

$ls *.doc

隱藏檔案:

一個無形的檔案是一個點或者句號(.)的第一個字元是。 UNIX程式(包括shell)使用這些檔案來儲存組態資訊。

隱藏檔案的一些常見的例子包括以下檔案:

  • .profile: 是Bourne shell(sh)的初始化指令碼

  • .kshrc: Korn shell程式(KSH)初始化指令碼

  • .cshrc: C shell(csh)的初始化指令碼

  • .rhosts: 遠端shell組態檔案

要列出隱形檔案,指定給ls-a選項:

$ ls -a

.         .profile       docs     lib     test_results
..        .rhosts        hosts    pub     users
.emacs    bin            hw1      res.01  work
.exrc     ch07           hw2      res.02
.kshrc    ch07.bak       hw3      res.03
$
  • 單一點 . :這表示當前目錄。

  • 雙點 ..:這表示父目錄。

註:我已經把星號(*),只是為了顯示位置,需要輸入當前密碼和新密碼,否則系統,它不會告訴你,當鍵入任何字元。

建立檔案:

可以使用vi編輯器來建立任何類Unix系統上的普通檔案。只需給下面的命令:

$ vi filename

上面的命令,將開啟一個給定檔案名的檔案。會需要按鍵來進入編輯模式。一旦在編輯模式下,就可以開始寫內容在檔案,如下:

This is unix file....I created it for the first time.....
I'm going to save this content in this file.

一旦完成,請執行以下步驟:

  • 按Esc鍵出來的編輯模式。

  • 按兩個鍵Shift+ ZZ一起完全退出來的檔案。

現在,就可以把filemame建立的檔案在當前目錄中。

$ vi filename
$

編輯檔案:

使用vi編輯器,可以編輯現有的檔案。我們將覆蓋在一個單獨的教學中詳細。但總之,可以開啟現有的檔案如下:

$ vi filename

一旦檔案被開啟,在編輯模式下,可以使用 i 按鍵,然後,可以編輯檔案。如果想在這裡和那裡的檔案內,那麼首先需要走出來的編輯模式下按ESC鍵,那麼可以使用下面的鍵,將裡面的一個檔案:

  • l 鍵移動到右側。

  • h 鍵移動到左側。

  • k 鍵向上移動在檔案中。

  • j 鍵向下移動一邊在檔案中。

因此,使用上面的鍵就可以將游標定位在任何想要的編輯。然後在編輯模式下,可以使用i鍵。編輯該檔案,一旦完成後,按ESC和最後兩個鍵Shift+ ZZ一起退出的檔案。

顯示檔案的內容:

可以使用cat命令來檢視一個檔案的??內容。下面是一個簡單的例子,看看上面建立的檔案的內容:

$ cat filename
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
$

可以通過使用-b選項一起cat命令如下顯示行號:

$ cat filename -b
1   This is unix file....I created it for the first time.....
2   I'm going to save this content in this file.
$

計算在一個檔案中的單詞:

可以使用wc命令列,字,字元包含在一個檔案總數計數。以下是一個簡單的例子來看看上面建立的檔案的資訊:

$ wc filename
2  19 103 filename
$

這裡是所有的四列的細節:

  1. 第一欄:表示檔案中的行的總數。

  2. 第二欄:表示檔案中的總字數。

  3. 第三欄:表示檔案中的位元組總數。這是實際的檔案大小。

  4. 第四欄:表示檔案名。

在同一時間,以獲得有關這些檔案的資訊,可以給多個檔案。下面是簡單的語法:

$ wc filename1 filename2 filename3

複製檔案:

要複製的檔案,請使用cp命令。該命令的基本語法是:

$ cp source_file destination_file

下面的例子,現有的檔案的檔案名建立一個副本。

$ cp filename copyfile
$

現在,發現多了一個檔案在當前目錄copyfile 。該檔案將作為原始檔案的filename完全相同。

重新命名檔案:

要更改名稱的檔案,使用mv命令。它的基本語法是:

$ mv old_file new_file

下面的例子將重新命名現有檔案 filename 修改為 newfile :

$ mv filename newfile
$

mv命令將現有的檔案移動到新的檔案完全。因此在這種情況下,在當前目錄中有 newfile。

刪除檔案:

要刪除現有的檔案使用rm命令。它的基本語法是:

$ rm filename

注意:這可能是危險的,刪除一個檔案,因為它可能包含有用的資訊。所以,要小心使用此命令時。建議使用-i選項的rm命令一起使用。

下面的例子將完全刪除現有檔案的檔案名 filename:

$ rm filename
$

可以刪除多個檔案如下:

$ rm filename1 filename2 filename3
$

標準的UNIX流:

在正常情況下,每個Unix程式有三個流(檔案)開啟它時,它啟動:

  1. stdin : 這被稱為作為標准輸入和與其相關的檔案的描述符是0。這也表示標準輸入。 UNIX程式會從STDIN讀取預設的輸入。

  2. stdout : 這被稱為作為標準輸出和1相關的檔案描述符。這也表示STDOUT。 UNIX程式會寫入預設輸出STDOUT

  3. stderr : 這是被稱為標準錯誤和2相關的檔案描述符。這也代表STDERR。 UNIX程式會寫在STDERR所有的錯誤訊息。