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所有的錯誤消息。