Linux 檔案管理



什麼是 Linux 檔案管理?

在使用 Linux 時,我們需要許多文字檔案和二進位制檔案,例如所有 Linux 程式都以二進位制檔案的形式出現,而它們的原始碼則以文字檔案的形式出現。作為作業系統的使用者,我們還會建立許多檔案來管理我們的日常活動。使用者生成的檔案包括文字檔案、Excel 檔案、PowerPoint 簡報以及許多其他文字檔案。

在本章中,我們將詳細討論 Linux/Unix 中的檔案管理。Linux 中的所有資料都組織成檔案,所有這些檔案都組織成不同的目錄。這些目錄組織成一個稱為檔案系統的樹狀結構。

檔案系統負責將資訊儲存在硬碟驅動器上,並在以後檢索和更新它。Linux 檔案系統的示例包括 FAT16、FAT32、NTFS、Ext2、Ext3、Ext4 等。

Linux 中的檔案型別

實際上,Linux 中的一切都是一個檔案。因此,當您使用 Linux 時,無論如何,您都會花費大部分時間處理檔案。本教程將幫助您瞭解如何建立和刪除檔案、複製和重新命名檔案、建立指向它們的連結等。

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

  • 普通檔案 - 普通檔案是系統上包含資料、文字或程式指令的檔案。在本教程中,您將瞭解如何使用普通檔案。

  • 目錄 - 目錄儲存特殊檔案和普通檔案。對於熟悉 Windows 或 Mac OS 的使用者,Unix 目錄相當於資料夾。

  • 特殊檔案 - 一些特殊檔案提供對硬體的訪問,例如硬碟驅動器、CD-ROM 驅動器、調變解調器和乙太網介面卡。其他特殊檔案類似於別名或快捷方式,使您可以使用不同的名稱訪問單個檔案。

Linux 中的檔案管理命令

讓我們學習最重要的 Linux 命令,以列出可用檔案、建立和刪除檔案、複製和重新命名檔案、建立指向檔案的連結等。

列出檔案

要列出 Linux 系統當前目錄中儲存的所有檔案和目錄,請使用以下命令:

$ ls

以下是上述命令的示例輸出:

$ls

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

命令ls支援-l選項,這將幫助您獲得有關列出檔案的更多資訊:

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

以下是所有列出的列的資訊:

  • 第一列 - 表示檔案型別和對檔案授予的許可權。以下是所有檔案型別的說明。

  • 第二列 - 表示檔案或目錄佔用的記憶體塊數。

  • 第三列 - 表示檔案的擁有者。這是建立此檔案的 Linux 使用者。

  • 第四列 - 表示所有者的組。每個 Linux 使用者都將有一個關聯的組。

  • 第五列 - 表示檔案大小(以位元組為單位)。

  • 第六列 - 表示上次建立或修改此檔案的時間和日期。

  • 第七列 - 表示檔案或目錄名稱。

ls -l列表示例中,每一行檔案都以d-l開頭。這些字元指示列出的檔案的型別。

字首 描述
-

普通檔案,例如 ASCII 文字檔案、二進位制可執行檔案或硬連結。

b

塊特殊檔案。塊輸入/輸出裝置檔案,例如物理硬碟驅動器。

c

字元特殊檔案。原始輸入/輸出裝置檔案,例如物理硬碟驅動器。

d

目錄,其中包含其他檔案和目錄的列表。

l

符號連結檔案。任何普通檔案的連結。

p

命名管道。程序間通訊的一種機制。

s

套接字,用於程序間通訊。

Linux 中的元字元

Linux 元字元在 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

這裡,*用作元字元,與任何字元匹配。如果要顯示所有以.doc結尾的檔案,則可以使用以下命令:

$ls *.doc

Linux 中的隱藏檔案

Linux 和 Unix 有一些隱藏檔案,對使用者不可見。這些檔案的名稱以點或句點字元 (.) 開頭。Linux 程式(包括 shell)使用大部分這些檔案來儲存系統配置資訊。

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

檔案 描述
.profile

Bourne shell (sh) 初始化指令碼

.kshrc

Korn shell (ksh) 初始化指令碼

.cshrc

C shell (csh) 初始化指令碼

.rhosts

遠端 shell 配置檔案

要列出這些隱藏的(或不可見的)檔案,我們必須使用-a選項和ls命令:

$ 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
$
  • 單點 (.) - 這表示當前目錄。

  • 雙點 (..) - 這表示父目錄。

在 Linux 中建立檔案

許多檔案編輯器預裝在 Linux 系統上。我最喜歡的是vim或簡稱vi編輯器,我用它在我的 Ubuntu Linux 系統上建立和更新不同的文字檔案。

因此,讓我們使用vi編輯器在任何 Linux 系統上建立普通檔案。您只需執行以下命令:

$ vi filename

上述命令將開啟一個具有給定檔名檔案。現在,按i鍵進入編輯模式。一旦進入編輯模式,就可以開始在檔案中寫入內容。

讓我們在文字檔案中寫入以下內容:

This is a text file in Linux....I created it using vi text editor.....
I'm going to save this content in this file.

完成在檔案中寫入內容後,請執行以下步驟:

  • esc鍵退出編輯模式。

  • 同時按Shift + ZZ兩鍵完全退出檔案。

您現在將在當前目錄中建立一個名為filename的檔案。

$ vi filename
$

在 Linux 中編輯檔案

您可以使用vi編輯器編輯現有檔案。我們將簡要討論如何開啟現有檔案:

$ vi filename

開啟檔案後,您可以按i鍵進入編輯模式,然後您可以繼續編輯檔案。如果要在此處和檔案內移動,則首先需要按Esc鍵退出編輯模式。之後,您可以使用以下鍵在檔案中移動:

  • l鍵向右移動。

  • h鍵向左移動。

  • k鍵向上移動檔案。

  • j鍵向下移動檔案。

因此,使用上述鍵,您可以將游標定位在要編輯的任何位置。定位後,您可以使用i鍵進入編輯模式。完成檔案編輯後,按Esc鍵,最後同時按Shift + ZZ兩鍵完全退出檔案。

顯示檔案內容

您可以使用cat命令檢視檔案的內容。以下是如何檢視上面建立的檔案內容的簡單示例:

$ cat filename
This is a text file in Linux....I created it using vi text editor.....
I'm going to save this content in this file.

$

您可以透過使用-b選項以及cat命令來顯示行號,如下所示:

$ cat -b filename
1    This is a text file in Linux....I created it using vi text editor.....
2    I'm going to save this content in this file.

$

計算檔案中的單詞數

您可以使用wc命令獲取檔案中包含的總行數、單詞數和字元數。以下是如何檢視上面建立的檔案資訊的簡單示例:

$ wc filename
2  22 116 filename

$

以下是所有四列的詳細資訊:

  • 第一列 - 表示檔案中總行數。

  • 第二列 - 表示檔案中總單詞數。

  • 第三列 - 表示檔案中總位元組數。這是檔案的實際大小。

  • 第四列 - 表示檔名。

您可以同時提供多個檔案並獲取有關這些檔案的資訊。以下是簡單的語法:

$ wc filename1 filename2 filename3

在 Linux 中複製檔案

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

$ cp source_file destination_file

以下是如何建立現有檔案filename副本的示例。

$ cp filename copyfile

$

您現在將在當前目錄中找到另一個檔案copyfile。此檔案將與原始檔案filename完全相同。

在 Linux 中重新命名檔案

要更改現有檔案的名稱,請使用mv Linux 命令。以下是基本語法:

$ mv old_file new_file

以下程式將現有檔案filename重新命名為newfile

$ mv filename newfile

$

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

在 Linux 中刪除檔案

要從 Linux 檔案系統中刪除現有檔案,請使用rm命令。以下是基本語法:

$ rm filename
警告 − 檔案可能包含有用資訊。使用此刪除命令時,務必謹慎。最好結合使用-i選項和rm命令。

以下是完全刪除現有檔案filename的示例。

$ rm filename

$

您可以使用以下命令一次刪除多個檔案:

$ rm filename1 filename2 filename3

$

建立檔案連結

Linux 提供連結機制,用於從另一個位置訪問檔案。您可以將這些連結視為現有檔案的替代名稱。這些連結可以是符號連結或硬連結。

以下是建立指向 filename 的符號連結的命令:

$ ln -s filename symlink

$

以下是建立指向現有檔案的硬連結的命令:

$ ln filename hardlink

$

現在您可以檢查您建立的連結了。

$ ls -l
total 8
-rw-r--r-- 2 root root 132 May  1 07:18 filename
-rw-r--r-- 2 root root 132 May  1 07:18 hardlink
lrwxrwxrwx 1 root root   8 May  1 07:17 symlink -> filename

$

建立符號連結或硬連結後,您可以使用這些連結訪問原始檔案。您可以使用連結編輯這些檔案,但如果您刪除連結檔案,則原始檔案將保持未刪除且不變。

廣告