UNIX中的所有數據被組織成文件。所有檔被組織成目錄。這些目錄被組織成一個樹形結構,稱為檔系統。
當使用UNIX工作以這種或那種方式,大部分的時間花在工作的檔。本教學將教你如何創建和刪除檔,複製和重命名,創建鏈接到它們等。
在UNIX中,有三種基本類型的檔:
-
普通檔: 普通檔在系統上的檔包含數據,文字,或程式指令。在本教程中,以操作普通的檔為例。
-
目錄: 目錄特別及普通檔存儲。對於用戶熟悉Windows或Mac OS,UNIX目錄相當於檔夾。
-
特殊檔: 一些特殊的檔提供訪問硬體,如硬碟,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 $
這裏是所有列出的列資訊:
-
第一列:表示授予該檔的檔類型和許可權。下麵是描述所有類型的檔。
-
第二列:代表所採取的記憶體塊的檔或目錄的數量。
-
第三欄:表示檔所有者。是誰創建了這個檔的Unix用戶。
-
第四列:代表組的所有者。每個Unix用戶將有關聯的組。
-
第五欄:表示檔大小(以位元組為單位)。
-
第六欄:表示當這個檔被創建或修改的最後一次的日期和時間。
-
第七欄:表示檔案名或目錄名。
在 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 $
這裏是所有的四列的細節:
-
第一欄:表示檔中的行的總數。
-
第二欄:表示檔中的總字數。
-
第三欄:表示檔中的位元組總數。這是實際的檔大小。
-
第四欄:表示檔案名。
在同一時間,以獲得有關這些檔的資訊,可以給多個檔。下麵是簡單的語法:
$ 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程式有三個流(檔)打開它時,它啟動:
-
stdin : 這被稱為作為標準輸入和與其相關的檔的描述符是0。這也表示標準輸入。 UNIX程式會從STDIN讀取默認的輸入。
-
stdout : 這被稱為作為標準輸出和1相關的檔描述符。這也表示STDOUT。 UNIX程式會寫入默認輸出STDOUT
-
stderr : 這是被稱為標準錯誤和2相關的檔描述符。這也代表STDERR。 UNIX程式會寫在STDERR所有的錯誤消息。