在 Linux 系統中,文件操作與管理是日常使用和系統管理的重要組成部分。下面將詳細介紹文件的復制、移動、鏈接創建,以及文件查找、文本處理、排序、權限管理等相關知識。
一、文件的復制
在 Linux 里,cp
?命令可用于復制文件或目錄,生成其副本。其語法結構為:cp [選項] 源文件或目錄 目標文件或目錄
。以下是一些常用選項:
-r
:遞歸復制整個目錄及其子目錄。若要復制一個包含子目錄的文件夾,就需要使用該選項。-i
:在覆蓋目標文件之前會提醒用戶,避免誤操作覆蓋重要文件。-f
:強制復制,會忽略錯誤繼續復制,即便遇到一些小問題也會盡力完成復制操作。
二、文件的移動
mv
?命令用于移動文件或目錄,語法結構為:mv [選項] 源文件或目錄 目標文件或目錄
。常用選項?-i
?為交互式操作,當目標文件存在時,會提醒用戶是否覆蓋。
此外,mv
?還有其他使用方式。可以使用?mv [多個]文件 目錄
,如果文件不在目標目錄中,就會被移入該文件夾;也能使用?mv [多個]目錄 目標目錄
,實現目錄的移動。
三、創建鏈接文件
ln
?命令可以為文件創建鏈接文件,它不會生成副本,而是與原文件相關聯。其語法結構是:ln [選項] 源文件 目標文件
。常用選項?-s
?用于創建軟鏈接文件。
硬鏈接與軟鏈接的區別
- 硬鏈接:鏈接文件和源文件具有相同的索引號,鏈接讓它們有不同的名稱。硬鏈接不能跨文件系統,并且不能為目錄創建硬鏈接。
- 軟鏈接:只是指向另一個文件名,包含的是另外一個文件的路徑名的文本指針。軟鏈接可以跨文件系統,也可以為目錄創建軟鏈接。
目錄的鏈接方面,子目錄數一開始創建默認是 2(.
?和?..
)。可以通過?ls -dl
?來展示詳細的信息,-d
?選項能讓目錄像文件一樣顯示。
文件名替換功能
在 Linux 中,可以使用特定字符去匹配字符(正則表達式):
?
:匹配單個字符。*
:匹配 0 到 n 個字符。[字符列表]
:匹配文件名中任意在字符列表中的字符。[!字符列表]
:匹配文件名中任意不在字符列表中的字符。
系統會先處理通配符,再去匹配(文件名擴展),命令本身并不知道通配符的存在。
四、文件查找和文本處理
查找文件
find
?命令可在層次目錄中根據文件名或文件屬性名去定位文件,還能對定位的文件執行刪除、打印等操作。其語法格式為:find [目錄] [條件] [動作]
。例如,find ./ -name filea -print
?會在當前目錄中通過名字查找?filea
,找到后將其打印出來。
常見選項
-name
:根據文件名查找,使用時可以結合通配符,但要使用雙引號包起來。-type
:根據文件類型查找,常見的文件類型有?b
(塊設備)、c
(字符特殊設備)、d
(目錄文件)、f
(普通文件)。- 可以使用操作符實現多個條件的查找:
-a
:與操作(默認)。-o
:或操作。!
:非操作。()
:邏輯組,指定哪些條件優先評估。
-size +-n
:根據文件大小(塊)查找。-mtime +-n
:根據最后修改的時間(天)查找。
常見動作
-exec 命令名 {} \;
:把找到的文件當做參數去執行新的命令。-ok 命令名 {} \;
:同上,但為交互式操作,執行前會詢問用戶是否繼續。
也可以使用?+
?去替換?\;
。
文本查找
grep
?命令用于在一個或多個文件中查找滿足特定格式的行。其語法格式為:grep [選項] 搜索的字符串 文件名
,輸出的是包含搜索字符串的行。
常見選項
-i
:忽略大小寫。-n
:顯示匹配的行號。-v
:顯示不匹配的行。-w
:匹配整個字符串。-c
:顯示匹配行的數量。-r
:遞歸搜索。
字段提取
cut
?命令可從文件中取出指定的字段或列,語法格式為:cut 選項 文件
。
常見選項
-b
:指定字節,如?1,3,5
?或?1 - 3,5
。-c
:指定字符,如?1 - 4
?表示輸出第一個到第四個字符。-d
:指定分隔符,默認是制表符。如果分隔符有特殊意義或為空格,需要用雙引號括起來,例如?cut -d " " -f 1 phones
。-f
:指定字段的位置。
cut
?命令的輸出會顯示在標準輸出中。
文件排序
sort
?命令用于對文件進行排序,語法格式為:sort [選項] 文件
。
常見選項
-n
:以數值來排序,包含負數和小數。-r
:逆序排序。-o
:輸出到指定的文件。-k
:指定排序的依據字段,如?1,2
?表示先用第一個字段排序,若相同再用第二個字段排序。
五、文件權限管理
文件權限的含義
文件
- 讀(
r
):可以讀取文件內容。 - 寫(
w
):可以修改文件內容,也能刪除文件。 - 執行(
x
):可以將文件作為程序文件執行。
目錄
- 讀(
r
):可以列出目錄內容。 - 寫(
w
):可以在目錄內部創建、刪除、重命名文件和子目錄。 - 執行(
x
):可以進入該目錄。
umask 掩碼
umask
?掩碼用于設置哪些權限不會被賦予新文件。文件的默認權限是 666,目錄的默認權限是 777。例如,umask 022
?會將初始權限設置為?777 - 022
(目錄)和?666 - 022
(文件)。如果?umask
?是 4 位,第一位表示特殊權限。
修改權限
chmod
?命令用于修改文件權限,有兩種方式:
- 字符串方式:字符串包括三個部分,
u
(用戶)、g
(組)、o
(其他)、a
(所有);+
、-
、=
;r
、w
、x
?或?-
。例如,chmod u+x file
?表示給文件的所有者添加執行權限。 - 三位八進制方式:例如,
chmod 755 file
?。
六、Linux 文件組織方式
Linux 基于索引節點來組織文件,索引節點的最大數量在初始化的時候就確定了。刪除一個文件會釋放其占用的索引節點。目錄包含索引節點號,通過索引節點號可以找到對應的索引節點,而索引節點指向文件的數據。