Linux操作之目錄和文件管理

Linux操作之目錄和文件管理

Linux文件類型

在Linux系統中,基本上所有的目錄和設備都是以文件的形式存在的。

1. 普通文件

純文本文件、二進制文件、數據格式的文件、壓縮文件都是此類,第一個屬性爲【-】

2. 目錄文件

類似於windows中的目錄,能用cd命令進入,第一個屬性爲【d]

3. 設備文件

a.塊設備文件,即存儲數據以供系統存取的接口設備,第一個屬性爲【b】
b,字符設備文件,即串行端口的接口設備,第一個屬性爲【c]

4. 管道文件

特殊文件類型,主要是用來解決多個程序同時存取一個文件所造成的錯誤,第一個屬性爲【p】

5. 鏈接文件

a.軟鏈接文件,類似於windows下的快捷方式
b.硬鏈接文件

Linux目錄結構

Linux系統都有根文件系統,它包含系統引導和使其他文件系統得以掛載所必要的文件。Linux系統的目錄是分層的樹狀結構,都是掛載在根文件系統"/"下

目錄 描述
/home 包含Linux系統中各用戶的主目錄,子目錄默認以該用戶命名
/root 是root用戶的主目錄
/bin 包含常用的命令文件,不能包含子目錄
/sbin 包含系統管理員和root用戶所使用的命令文件
/dev 包含大部分的設備文件,比如磁盤、光驅等
/lib 包含Linux系統的共享文件和內核模塊文件。/lib/modules目錄存放核心可加載模塊
/lib64 包含64版本Linux系統的共享文件和內核模塊文件
/tmp 包含一些臨時文件
/mnt 手動爲某些設備(比如硬盤)掛載提供掛載目錄
/boot 包含Linux系統的內核文件和引導裝載程序的文件
/opt 包含某些第三方應用程序的安裝設備
/media 由系統自動爲某些設備(一般爲光盤、U盤等設備)掛載提供掛載目錄
/var 該目錄存放不經常變化的數據,如系統日誌、打印隊列、DNS數據庫文件等
/etc 包含Linux系統上大部分的配置文件,建議修改配置文件之前先備份
/usr 包含可以供所有用戶使用的數據和程序
/srv 存儲一些服務啓動之後所需要取用的資料目錄
/run 一個臨時文件系統,一些程序或服務啓動之後,會將它們的PID放置在該目錄中
/sys 在Linux系統提供熱插拔能力的同時,該目錄包含所檢測到的硬件設置,它們會被轉換成/dev目錄中的設備文件
/proc 是一個虛擬的文件系統,它不存在磁盤中,而是由內核在內存中產生的,用於提供系統的相關信息。 /proc/cpuinfo :該文件保存計算機CPU信息。 /proc/filesystems:該文件保存Linux文件系統信息 /proc/ioports:該文件保存計算機I/O端口號信息 /proc./version:該文件保存Linux系統版本信息 /proc/meminfo :該文件保存計算機內存信息

文件和目錄操作

1. pwd

用於顯示工作目錄,執行該指令可立刻得知你目前所在工作目錄的絕對路徑名稱
在這裏插入圖片描述

2. cd

用於更改用戶的工作目錄路徑。工作路徑可以使用絕對路徑或相對路徑,絕對路徑從/(根)開始,然後循序到所需的目錄下,相對路徑從當前目錄開始。"~“也表示home目錄的意思,”.“則是表示目前所在的目錄,”…"則表示目前目錄位置的上一層目錄。

cd  具體路徑
cd  ./
cd ../
cd ~
cd

在這裏插入圖片描述

3. ls

顯示指定工作目錄下的內容,對於目錄而言將列出其中的所有子目錄和文件信息;對於文件而言,將輸出其文件名以及所要求的其他信息。

ls [選項][文件名]
相關選項 功能
-a 顯示全部的文件,包含隱藏文件(開頭爲.的文件)也一起羅列出來,這是最常用的選項之一
-A 顯示全部的文件,連同隱藏文件,但不包括.與…這兩個目錄
-d 僅列出目錄本身,而不是列出目錄內的文件與數據
-f ls會默認以文件名排序,使用-f選項會直接列出結果,而不進行排序
-F 在文件或目錄後加上文件類型的指示符號
-h 以人們易讀的方式顯示文件或目錄大小
-i 顯示inode節點信息
-l 使用長格式列出文件或目錄信息
-n 以UID或GID分別代替文件用戶名和羣組名顯示出來
-r 將排序結果反向輸出
-R 連同子目錄內容一起列出來,等於將該目錄下的所有文件都顯示出來
-S 以文件容量大小排序,而不是以文件名排序
-t 以時間排序,而不是以文件名排序
–color=never 不依據文件特性給予顏色顯示
–color=always 顯示顏色,是默認方式
–color=auto 表示讓系統自行依據配置來判斷是否給予顏色
–full-time 以完整時間模式(包含年、月、日、時、分)輸出
–time=(atime,ctime) 輸出acess時間或改變權限事件,而不是內容變更時間

PS:常用的不常用的全在上面,先一個個試試唄,常用的就看看,不常用的用的時候百度一下即可。

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
PS:root模式下,一樣的,就不用放圖了。

4. touch

該指令用於創建空文件以及更改文件的時間。

touch [選項] [文件]   #語法
touch --help   #個人覺得這個最有用

在這裏插入圖片描述
PS:基本操作-a和-m,我不會用,自己練習也沒有成功過。。。

5. mkdir

該指令可在Linux系統中創建目錄

mkdir [-p] dirname   #語法,-P確保了目錄實際存在,不存在的就建一個

在這裏插入圖片描述
PS:大致就是這樣,但查詢創建的目錄,我還沒有學習到

6. rmdir

用於刪除空目錄

rmdir [-p] dirname   #語法,-P是當子目錄被刪除後使它也成爲空目錄的話,則順便一併刪除

在這裏插入圖片描述
PS:很清晰的可以看到當目錄非空時,無法刪除該目錄,只能先將該子目錄刪掉之後再來刪除該目錄。

7. rm

用於刪除系統中的文件或目錄

rm [選項][文件|目錄]
rm -i  #刪除前逐一詢問確認
rm -f  #即使原檔案屬性設爲只讀,也直接刪除,無需一一確認
rm -r  #將目錄及以下的檔案逐一刪除

在這裏插入圖片描述
PS:這裏rm -r奏效,我去試試root模式下的情況
在這裏插入圖片描述

8. cp

複製文件和目錄到其他文件中。如果指定兩個以上的文件或目錄,且最後的目的地是一個已經存在的目錄,則它會把前面指定的所有文件或目錄複製到該新目錄中。若同時指定多個文件或目錄,且最後的目的地並非是一個已存在的目錄,則會出現錯誤信息。

cp [選項][源文件|目錄][目標文件|目錄]
相關選項 功能
-a 此選項通常在複製目錄時使用,它保留鏈接、文件屬性,並複製目錄下的所有內容
-d 複製時保留鏈接
-f 覆蓋已經保存的目標文件而不給出提示
-i 在覆蓋文件之前給出提示,要求用戶確認是否覆蓋,回答”y“時目標文件將被覆蓋
-p 除複製文件的內容外,還把修改時間和訪問權限也複製到新文件中
-r 若給出的源文件是一個目錄文件,此時將複製該目錄下所有的子目錄和文件
-l 不復制文件,只是生成鏈接文件。

9. mv

對文件和目錄更改名稱以及移動文件和目錄的路徑

mv [選項][源文件|目錄][目標文件|目錄]
相關選項 功能
-i 若指定目錄已有同名文件,則先詢問是否覆蓋舊文件
-f 在mv操作要覆蓋某已有的目標文件時不給任何提示

10. locate

用於查找符合條件的文件,不搜索具體目錄,而是搜索一個數據庫(/var/lib/located),這個數據庫中含有所有本地所有文件信息。Linux系統自動創建這個數據庫,並且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。爲了避免這種情況,可以在使用該命令之前,先使用updatedb命令,手動更新數據庫。

locate [option] filename
相關選項 功能
-r 使用正則表達式作爲搜索條件
-i 忽略大小寫
-c 顯示查找到的條目數
-d 用DBPATH替代默認的數據庫

在這裏插入圖片描述

11. find

在目錄結構中搜獲文件,並執行指定的操作。從指定的目錄開始,遞歸地搜索其各個子目錄,查找滿足尋找條件我文件,可以指定文件的名稱、類別、時間、大小以及權限等不同信息的組合,只有完成相符的文件纔會被列出來。

find [路徑][選項]
相關選項 功能
-name 查找名爲filename的文件
-perm 按執行權限來查找
-user username 按文件屬主來查找
-group groupname 按組來查找
-mtime -n +n 按文件更改時間來查找文件,-n指n天之內,+n指n天之前
-atime -n +n 按文件訪問時間來查GIN:Opx
-ctime -n +n 按文件創建時間來查找文件,-n指n天之內,+n指n天之前
-nogroup 查無有效屬組的文件
-nouser 查無效屬主的文件
-newer f1 !f2 查更改時間比f1新但比f2舊的文件
-type b/d/c/p/l/f 查是塊設備、目錄、字符設備、管道、符號鏈接、普通文件
-size n[c] 查長度爲n或n字節的文件
-depth 使查找在進入子目錄前先行查找完本目錄
-fstype 查位於某一類型文件系統中的文件
- mount 查文件時不跨越文件系統mount點
-follow 如果遇到符號鏈接文件,就跟蹤鏈接所指的文件
-cpio % 查位於某一類型文件系統中的文件
-cpio] 對匹配的文件使用cpio命令,將他們備份到磁帶設備中
-prune 忽略某個目錄
-amin 查找在系統中最後N分鐘訪問的文件
- mmiin 查找在系統中最後N分鐘裏修改過的文件

按照文件名檢索

find -name  #按照文件名搜索
find -iname #按照文件名搜索,不區分文件名大小
find -inum  #按照inode號搜索

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
PS:進來root模式下進行該指令,這樣應該有足夠的權限查詢

根據文件類型檢索

find -type f       #在當前工作目錄下查找所有普通文件
find -type d       #在當前工作目錄下查找所有目錄文件
find /dev -type c      #從dev目錄下查找所有字符設備文件
find /dev -type b       #從dev目錄下查找所有塊設備文件
find /dev -type b -iname '*sd*'       #從dev目錄下查找塊設備和文件名包含sd

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

根據所有者和所屬組搜索

find -user root #在當前目錄下查找所有者是root的文件
find -user 用戶名 #在當前目錄下查找所有者是對應用戶名的文件
find / -group root #在根目錄下查找所屬組爲root文件
find / -nouser #在根目錄下查找所有無主文件
find / -nogroup #在根目錄下查找所有沒有所屬組的文件

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述
PS:個人建議,第二個查找用戶名對應的指令,別輕易嘗試,有點多

根據文件搜索大小搜索

find / -size +50M
find / -size -50M
find / -size +50M -size -50M
find / -nouser
find . -empty

在這裏插入圖片描述
在這裏插入圖片描述
PS:前面三個沒有成功,原因在於後面那個是大寫的m,empty儘量別試

根據時間查找文件和目錄(天爲單位)

find / -mtime -5 #查找第五天之內修改過的文件
find / -mtime  5 #查找第五天修改過的文件
find / -mtime +5 #查找五天以前修改過的文件
find / -mtime  0 #查找24小時修改過的文件

五天內修改的文件挺多
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
PS:我昨天才重裝的虛擬機,我也不知道會有這麼多修改的文件

根據時間查找文件和目錄(分鐘爲單位)

find / -mmin -5 #查找五分鐘之內修改過的文件
find / -mmin 5 #查找第五分鐘修改過的文件
find / -mmin +5 #查找五分鐘以前修改過的文件
find / -mmin 1 #查找一分鐘修改過的文件

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
PS:我也不知道,幾分鐘之內,我修改的文件有這麼多,多半是自動記錄或者修改的吧,我不背鍋。。。

按照權限搜索

相關選項 功能
-perm 權限模式 查找文件權限剛好等於“權限模式”的文件
-perm -權限模式 查找文件權限剛好全部包含“權限模式”的文件
-perm +權限模式 查找文件權限剛好包含“權限模式”的任意一個權限的文件

邏輯運算符

相關選項 功能
-a and邏輯與
-o or邏輯或
-not not邏輯非

對查找出來的文件執行其他命令

 - exec cpmmand {}\;  #command代表要執行的命令,{}代表前面find查找出來的文件名,;exec語句結束符號,必須要,不能省略

12. whereis

用於查找文件,只能用於查找二進制文件、源代碼文件和man手冊頁。

whereis [option] filename
相關選項 功能
-b 只查找
-B<目錄> 只在設置的目錄下查找二進制文件
-f 不顯示文件名前的路徑名稱
-m 只查找說明文件
-M<目錄> 只在設置的目錄下查找說明文件
-s 只查找原始代碼文件
-S<目錄> 只在設置的目錄下查找原始代碼文件
-u 查找不包含指定類型的文件

在這裏插入圖片描述

13. which

在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。即使用該命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。

which [option] filename
相關選項 功能
-n 指定文件名長度,指定的長度必須大於或等於所有文件中最長的文件名
-p 與-n參數相同,但此外包括了文件的路徑
-w 指定輸出時欄位的寬度
-V 顯示版本信息舉例

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

鏈接文件

EXIT 4 文件系統

該系統會把分區主要分爲兩大部分,小部分用於保存文件的inode(i節點)信息;剩餘的大部分用於保存block信息。

每個文件都獨自佔用一個inode,文件內容由inode的記錄來指向;如果想要讀取文件的內容,就必須藉助目錄中的記錄文件名找到該文件的inode,才能成功找到文件內容所在的block塊。

inode

默認大小爲128Byte,用來記錄文件的權限、文件的所有者和屬組、文件的大小、文件的狀態改變時間、文件的最近一次讀取時間、文件的最後一次修改時間、**文件的數據真正保存的block編號。**每個文件需要佔用一個inode。

block

大小可以爲1KB,2KB,4KB,默認爲最後一個。用於實際的數據存儲

分類

一般可分爲軟鏈接和硬鏈接。

軟鏈接

軟鏈接可以鏈接目錄。

軟鏈接可以跨分區。

軟鏈接會新建自己的inode信息和block,只是在block中不存儲實際文件數據,而存儲的是源文件的文件名和inode好。

不論是修改源文件,還是修改鏈接文件,另一個文件中的數據都會發生改變。

刪除軟鏈接文件,源文件不受影響。

刪除源文件,軟鏈接文件將找不到實際的數據,從而顯示文件不存在。

硬鏈接

硬鏈接不能跨文件系統(分區)建立,因爲在不同的文件系統中,inode號是重新計算的。

硬鏈接不能鏈接目錄。因爲如果給目錄建立鏈接,那麼不僅目錄本身需要重新建立,目錄下所有的子文件,包括子目錄中的所有子文件都需要建立硬鏈接,這對當前的Linux來講過於複雜。

硬鏈接不會建立新的inode信息,也不會更改inode的總數。

不論是修改源文件,還是修改硬鏈接文件,另一個文件中的數據都會發生改變。

不論是刪除源文件,還是刪除硬鏈接文件,只要還有一個文件存在,這個文件都可以被訪問。

相關命令

ln命令用於給文件創建鏈接。

ln [選項]源文件(實實在在的文件)目標文件(鏈接文件)
相關選項 功能
-s 建立軟鏈接文件。如果不加該選項,則建立硬鏈接文件
-f 強制,如果目標文件已經存在,則刪除目標文件後再建立鏈接文件

一般舉例
在這裏插入圖片描述
在這裏插入圖片描述
硬鏈接舉例
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
軟鏈接舉例
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章