在 UNIX 中的所有數(shù)據(jù)被都組織成文件。所有文件被都組織成目錄。這些目錄被組織成一個稱為文件系統(tǒng)的樹狀結(jié)構(gòu)。
當(dāng)您使用 UNIX 時,你將花費大部分時間用一種方式或另一種方式去處理文件。本教程將教你如何創(chuàng)建和刪除文件,復(fù)制和重命名它們,創(chuàng)建鏈接到它們等。
在 UNIX 中有三種基本類型的文件:
普通文件: 一個普通的文件是系統(tǒng)上包含數(shù)據(jù)、 文本或程序指令的文件。在本教程中,你將使用普通文件。
目錄: 目錄存儲特殊和普通文件。 UNIX 目錄對于熟悉 Windows 或者 Mac OS 的用戶,相當(dāng)于文件夾。
為了列出存儲在當(dāng)前目錄中的文件和目錄。使用下面的命令:
$ls
這里是上述命令的示例輸出:
$ls
binhosts lib res.03
ch07 hw1pub test_results
ch07.bak hw2res.01 users
docs hw3res.02 work
命令 ls 支持 -l 選項,將幫助您獲得有關(guān)列出的文件的詳細(xì)信息:
$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 root4096 Dec 9 2007 urlspedia
-rw-r--r-- 1 root root 276480 Dec 9 2007 urlspedia.tar
drwxr-xr-x 8 root root4096 Nov 25 2007 usr
drwxr-xr-x 2200300 4096 Nov 25 2007 webthumb-1.01
-rwxr-xr-x 1 root root3192 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 amrood166255 Aug 9 2007 yourfile.swf
drwxr-xr-x 11 amrood amrood 4096 May 29 2007 zlib-1.2.3
$
這里是有關(guān)所有列出的列信息:
第一列: 表示文件類型,給出了該文件的權(quán)限。后面是所有類型的文件的說明。
第二列: 表示文件或目錄所采取的內(nèi)存塊的數(shù)目。
第三列: 表示該文件的所有者。這是創(chuàng)建此文件的 UNIX 用戶。
第四列: 表示用戶組。每個 UNIX 用戶會有一個相關(guān)聯(lián)的組。
第五列: 表示文件大小以字節(jié)為單位。
第六列: 表示此文件被創(chuàng)建或最后一次修改的日期和時間。
在 ls -l
清單示例中,每個文件的行開頭為 d
,-
,或 l
。這些字符指示列出的文件的類型。
前綴 | 描述 |
---|---|
- | 常規(guī)的文件,如 ASCII 文本文件,二進(jìn)制可執(zhí)行文件,或硬鏈接。 |
b | 特殊塊文件。塊輸入輸出設(shè)備文件如物理硬盤驅(qū)動器。 |
c | 字符特殊文件。原始的輸入/輸出設(shè)備文件如物理硬盤驅(qū)動器。 |
d | 包含其他文件和目錄列表的目錄文件。 |
l | 符號鏈接文件。鏈接到任何一個普通的文件。 |
p | 命名的管道。進(jìn)程間通信機(jī)制。 |
s | 用于進(jìn)程間通信的套接字。 |
元字符在 UNIX 中具有特殊的意義。例如 *
和 ?
是元字符。我們使用 *
匹配 0 或多個字符,問號 ?
與單個字符匹配。
舉個例子:
$ls ch*.doc
顯示名稱以 ch 開頭,并以 .doc 結(jié)束的所有文件:
ch01-1.doc ch010.doc ch02.docch03-2.doc
ch04-1.doc ch040.doc ch05.docch06-2.doc
ch01-2.doc ch02-1.doc c
在這里 * 作為元字符可以和任何字符相匹配。如果你只是想要顯示以 .doc 結(jié)尾的所有文件,你可以使用以下命令:
$ls *.doc
隱藏文件,是第一個字符是圓點或句點字符 (.)
的文件。 UNIX 程序 ( 包括 shell ) 大多數(shù)使用這些文件來存儲配置信息。
隱藏文件的一些常見的例子包括文件:
若要列出不可見文件,請指定到 ls -a
選項:
$ ls -a
. .profile docs lib test_results
...rhostshostspub users
.emacsbinhw1 res.01 work
.exrc ch07 hw2 res.02
.kshrcch07.bak hw3 res.03
$
您可以使用 vi 編輯器來創(chuàng)建任何 UNIX 系統(tǒng)上的普通文件。你只需要給出以下命令:
$ vi filename
上面的命令會打開一個給定的文件名的文件。您將需要按鍵 i 來進(jìn)入編輯模式。一旦您處于編輯模式下你可以在如下圖所示文件中寫入您的內(nèi)容:
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
一旦你做完上一步,請執(zhí)行以下步驟:
現(xiàn)在你會有一個已經(jīng)創(chuàng)建好的叫 filename 的文件在當(dāng)前目錄中。
$ vi filename
$
您可以使用 vi 編輯器編輯現(xiàn)有的文件。我們將在一個單獨的教程中詳細(xì)介紹。但總之,您可以打開現(xiàn)有的文件,如下所示:
$ vi filename
一旦文件被打開,您將能在編輯模式下按鍵 i ,然后您可以如您所想的編輯文件。如果您想要在一個文件里左右移動首先您需要按下鍵 esc 退出編輯模式來,然后您可以使用下列鍵在文件內(nèi)部移動:
使用上面的鍵您可以將光標(biāo)放在任何您想要編輯的地方。一旦您定位好然后您可以使用 i 鍵來在編輯模式下編輯該文件。當(dāng)您編輯完文件您可以按下 esc 鍵然后按下 Shift + ZZ 鍵來從文件完全的退出。
你可以使用 cat 命令來查看文件的內(nèi)容。以下是簡單的示例來查看上面創(chuàng)建文件的內(nèi)容:
$ 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 -b filename
1 This is unix file....I created it for the first time.....
2 I'm going to save this content in this file.
$
你可以使用 wc 命令來獲取一個文件中的總的行數(shù),字?jǐn)?shù)和字符數(shù)。以下是簡單的示例來查看有關(guān)上面創(chuàng)建的文件的信息:
$ wc filename
2 19 103 filename
$
這里是所有四個列的細(xì)節(jié):
第一列: 代表文件中的行數(shù)。
第二列: 代表文件中的字?jǐn)?shù)。
第三列: 代表文件中的字符數(shù)。這是文件的實際大小。
在獲取有關(guān)這些文件的信息的時候,你可以給多個文件。這里是簡單的語法:
$ wc filename1 filename2 filename3
要使用 cp 命令文件的副本。該命令的基本語法如下:
$ cp source_file destination_file
下面是創(chuàng)建一個已有文件 filename 的副本的例子。
$ cp filename copyfile
$
現(xiàn)在你會發(fā)現(xiàn)多了一個文件 copyfile 在您的當(dāng)前目錄。此文件與原始文件 filename 完全相同。
若要更改文件的名稱使用 mv 命令。其基本的語法是:
$ mv old_file new_file
下面是把現(xiàn)有文件 filename 重命名為 newfile 的示例:
$ mv filename newfile
$
mv 命令將現(xiàn)有文件完全移動到新的文件。所以在這種情況下你只能發(fā)現(xiàn) newfile 在你當(dāng)前的目錄中。
若要刪除現(xiàn)有文件使用 rm 命令。其基本的語法是:
$ rm filename
警告: 要刪除一個文件可能會很危險,因為它可能包含有用的信息。所以在使用此命令時要小心。這推薦使用 -i 選項和 rm 命令。
以下是完全刪除現(xiàn)有文件 filename 的示例:
$ rm filename
$
您可以在一行中刪除多個文件,如下所示:
$ rm filename1 filename2 filename3
$
在正常情況下每個 UNIX 程序在它啟動時打開的三個流 ( 文件 ):
更多建議: