UNIX 文件管理

2022-09-27 15:04 更新

在 UNIX 中的所有數(shù)據(jù)被都組織成文件。所有文件被都組織成目錄。這些目錄被組織成一個(gè)稱為文件系統(tǒng)的樹(shù)狀結(jié)構(gòu)。

當(dāng)您使用 UNIX 時(shí),你將花費(fèi)大部分時(shí)間用一種方式或另一種方式去處理文件。本教程將教你如何創(chuàng)建和刪除文件,復(fù)制和重命名它們,創(chuàng)建鏈接到它們等。

在 UNIX 中有三種基本類型的文件:

  1. 普通文件: 一個(gè)普通的文件是系統(tǒng)上包含數(shù)據(jù)、 文本或程序指令的文件。在本教程中,你將使用普通文件。

  2. 目錄: 目錄存儲(chǔ)特殊和普通文件。 UNIX 目錄對(duì)于熟悉 Windows 或者 Mac OS 的用戶,相當(dāng)于文件夾。

  3. 特殊文件: 一些特殊的文件提供訪問(wèn)硬件,例如硬盤、 CD - ROM 驅(qū)動(dòng)器、 調(diào)制解調(diào)器和以太網(wǎng)適配器。其他特殊文件類似于別名或快捷方式,使您能夠訪問(wèn)單個(gè)文件使用不同的名稱。

文件列表

為了列出存儲(chǔ)在當(dāng)前目錄中的文件和目錄。使用下面的命令:

    $ls

這里是上述命令的示例輸出:

    $ls

    binhosts  lib res.03
    ch07   hw1pub test_results
    ch07.bak   hw2res.01  users
    docs   hw3res.02  work

命令 ls 支持 -l 選項(xiàng),將幫助您獲得有關(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)所有列出的列信息:

  1. 第一列: 表示文件類型,給出了該文件的權(quán)限。后面是所有類型的文件的說(shuō)明。

  2. 第二列: 表示文件或目錄所采取的內(nèi)存塊的數(shù)目。

  3. 第三列: 表示該文件的所有者。這是創(chuàng)建此文件的 UNIX 用戶。

  4. 第四列: 表示用戶組。每個(gè) UNIX 用戶會(huì)有一個(gè)相關(guān)聯(lián)的組。

  5. 第五列: 表示文件大小以字節(jié)為單位。

  6. 第六列: 表示此文件被創(chuàng)建或最后一次修改的日期和時(shí)間。

  7. 第七列: 表示文件或目錄的名稱。

ls -l 清單示例中,每個(gè)文件的行開(kāi)頭為 d ,- ,或 l。這些字符指示列出的文件的類型。

前綴 描述
- 常規(guī)的文件,如 ASCII 文本文件,二進(jìn)制可執(zhí)行文件,或硬鏈接。
b 特殊塊文件。塊輸入輸出設(shè)備文件如物理硬盤驅(qū)動(dòng)器。
c 字符特殊文件。原始的輸入/輸出設(shè)備文件如物理硬盤驅(qū)動(dòng)器。
d 包含其他文件和目錄列表的目錄文件。
l 符號(hào)鏈接文件。鏈接到任何一個(gè)普通的文件。
p 命名的管道。進(jìn)程間通信機(jī)制。
s 用于進(jìn)程間通信的套接字。

元字符

元字符在 UNIX 中具有特殊的意義。例如 *? 是元字符。我們使用 * 匹配 0 或多個(gè)字符,問(wèn)號(hào) ? 與單個(gè)字符匹配。

舉個(gè)例子:

    $ls ch*.doc

顯示名稱以 ch 開(kāi)頭,并以 .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

隱藏文件

隱藏文件,是第一個(gè)字符是圓點(diǎn)或句點(diǎn)字符 (.) 的文件。 UNIX 程序 ( 包括 shell ) 大多數(shù)使用這些文件來(lái)存儲(chǔ)配置信息。

隱藏文件的一些常見(jiàn)的例子包括文件:

  • .profile: Bourne shell ( sh ) 初始化腳本。
  • .kshrc: Korn shell ( ksh ) 初始化腳本。
  • .cshrc: C shell ( csh ) 初始化腳本。
  • .rhosts: remote shell 配置文件。

若要列出不可見(jiàn)文件,請(qǐng)指定到 ls -a 選項(xiàng):

    $ ls -a

    . .profile   docs lib test_results
    ...rhostshostspub users
    .emacsbinhw1  res.01  work
    .exrc ch07   hw2  res.02
    .kshrcch07.bak   hw3  res.03
    $
  • 單個(gè)點(diǎn) . : 這個(gè)代表當(dāng)前目錄。
  • 兩個(gè)點(diǎn) .. : 這個(gè)代表父目錄。

創(chuàng)建文件

您可以使用 vi 編輯器來(lái)創(chuàng)建任何 UNIX 系統(tǒng)上的普通文件。你只需要給出以下命令:

    $ vi filename

上面的命令會(huì)打開(kāi)一個(gè)給定的文件名的文件。您將需要按鍵 i 來(lá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.

一旦你做完上一步,請(qǐng)執(zhí)行以下步驟:

  • 按鍵 esc 退出編輯模式。
  • 一起按兩個(gè)鍵 Shift + ZZ 完全退出文件。

現(xiàn)在你會(huì)有一個(gè)已經(jīng)創(chuàng)建好的叫 filename 的文件在當(dāng)前目錄中。

    $ vi filename
    $

編輯文件

您可以使用 vi 編輯器編輯現(xiàn)有的文件。我們將在一個(gè)單獨(dú)的教程中詳細(xì)介紹。但總之,您可以打開(kāi)現(xiàn)有的文件,如下所示:

    $ vi filename

一旦文件被打開(kāi),您將能在編輯模式下按鍵 i ,然后您可以如您所想的編輯文件。如果您想要在一個(gè)文件里左右移動(dòng)首先您需要按下鍵 esc 退出編輯模式來(lái),然后您可以使用下列鍵在文件內(nèi)部移動(dòng):

  • l 鍵移動(dòng)到右側(cè)。
  • h 鍵移動(dòng)到左側(cè)。
  • k 鍵移動(dòng)到上面。
  • j 鍵移動(dòng)到下面。

使用上面的鍵您可以將光標(biāo)放在任何您想要編輯的地方。一旦您定位好然后您可以使用 i 鍵來(lái)在編輯模式下編輯該文件。當(dāng)您編輯完文件您可以按下 esc 鍵然后按下 Shift + ZZ 鍵來(lái)從文件完全的退出。

顯示文件的內(nèi)容

你可以使用 cat 命令來(lái)查看文件的內(nèi)容。以下是簡(jiǎn)單的示例來(lá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.
    $

你可以通過(guò)按如下方式使用 -b 選項(xiàng)和 cat 命令顯示行號(hào):

    $ 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.
    $

統(tǒng)計(jì)文件中字?jǐn)?shù)

你可以使用 wc 命令來(lái)獲取一個(gè)文件中的總的行數(shù),字?jǐn)?shù)和字符數(shù)。以下是簡(jiǎn)單的示例來(lái)查看有關(guān)上面創(chuàng)建的文件的信息:

    $ wc filename
    2  19 103 filename
    $

這里是所有四個(gè)列的細(xì)節(jié):

  1. 第一列: 代表文件中的行數(shù)。

  2. 第二列: 代表文件中的字?jǐn)?shù)。

  3. 第三列: 代表文件中的字符數(shù)。這是文件的實(shí)際大小。

  4. 第四列: 代表文件名。

在獲取有關(guān)這些文件的信息的時(shí)候,你可以給多個(gè)文件。這里是簡(jiǎn)單的語(yǔ)法:

    $ wc filename1 filename2 filename3

復(fù)制文件

要使用 cp 命令文件的副本。該命令的基本語(yǔ)法如下:

    $ cp source_file destination_file

下面是創(chuàng)建一個(gè)已有文件 filename 的副本的例子。

    $ cp filename copyfile
    $

現(xiàn)在你會(huì)發(fā)現(xiàn)多了一個(gè)文件 copyfile 在您的當(dāng)前目錄。此文件與原始文件 filename 完全相同。

移動(dòng)文件

若要更改文件的名稱使用 mv 命令。其基本的語(yǔ)法是:

    $ mv old_file new_file

下面是把現(xiàn)有文件 filename 重命名為 newfile 的示例:

    $ mv filename newfile
    $

mv 命令將現(xiàn)有文件完全移動(dòng)到新的文件。所以在這種情況下你只能發(fā)現(xiàn) newfile 在你當(dāng)前的目錄中。

刪除文件

若要?jiǎng)h除現(xiàn)有文件使用 rm 命令。其基本的語(yǔ)法是:

    $ rm filename

警告: 要?jiǎng)h除一個(gè)文件可能會(huì)很危險(xiǎn),因?yàn)樗赡馨杏玫男畔ⅰK栽谑褂么嗣顣r(shí)要小心。這推薦使用 -i 選項(xiàng)和 rm 命令。

以下是完全刪除現(xiàn)有文件 filename 的示例:

    $ rm filename
    $

您可以在一行中刪除多個(gè)文件,如下所示:

    $ rm filename1 filename2 filename3
    $

標(biāo)準(zhǔn) UNIX 流

在正常情況下每個(gè) UNIX 程序在它啟動(dòng)時(shí)打開(kāi)的三個(gè)流 ( 文件 ):

  • stdin : 這指作為標(biāo)準(zhǔn)輸入,關(guān)聯(lián)文件描述符為 0。它也可以表示為 STDIN 。UNIX 程序默認(rèn)從 STDIN 中讀取。
  • stdout : 這指作為標(biāo)準(zhǔn)輸出,關(guān)聯(lián)文件描述符為 1。它也可以表示為 STDOUT 。UNIX 程序默認(rèn)從 STDOUT 中讀取。
  • stderr : 這指作為標(biāo)準(zhǔn)錯(cuò)誤,關(guān)聯(lián)文件描述符為 2。它也可以表示為 STDERR 。UNIX 程序會(huì)將所有的錯(cuò)誤信息寫入 STDERR。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)